Алгоритмическая торговля с Python и Robinhood

Feb 20 2023
Зарабатывание денег на фондовом рынке часто связано с большим стрессом, временем и риском. Что, если бы был способ уменьшить стресс и время, необходимое для инвестиций? Присоединение к Robinhood Robinhood — это бесплатное приложение для торговли акциями и инвестирования, которое позволяет людям быстро и легко начать инвестировать в фондовый рынок.
Фото Tech Daily на Unsplash

Зарабатывание денег на фондовом рынке часто связано с большим стрессом, временем и риском. Что, если бы был способ уменьшить стресс и время, необходимое для инвестиций?

Присоединение к Робингуду

Robinhood — это приложение для торговли акциями и инвестирования без комиссии, которое позволяет людям быстро и легко начать инвестировать в фондовый рынок. Компания имеет много преимуществ, таких как отсутствие минимального счета, отсутствие комиссий по сделкам и возможность торговать опционами.

Кроме того, платформа интуитивно понятна и предоставляет пользователям такую ​​информацию, как 50-дневная и 200-дневная скользящая средняя, ​​рейтинги аналитиков о том, следует ли покупать или продавать акции, а также последние новости из различных источников.

Вы можете присоединиться к Robinhood, используя мою ссылку ниже, и мы оба получим бесплатные акции стоимостью от 5 до 200 долларов.

Алгоритм

Алгоритм, который мы будем использовать, представляет собой пересечение скользящих средних, который обычно используется аналитиками фондового рынка. Этот алгоритм отслеживает простую скользящую среднюю (SMA), среднее арифметическое цены акции за краткосрочный период, и сравнивает ее со скользящей средней за долгосрочный период.

Сигналом к ​​покупке акции является пересечение краткосрочной SMA выше долгосрочной SMA, что называется золотым крестом. Напротив, сигналом к ​​продаже акции является пересечение краткосрочной SMA ниже долгосрочной SMA, известное как крест смерти.

Кодирование

Для начала нам нужно установить библиотеку robin_stocks, которая позволит нам подключиться к учетной записи Robinhood.

pip install robin_stocks

Затем мы импортируем необходимые библиотеки и предоставим учетные данные учетной записи Robinhood.

import robin_stocks as r
import time

# Replace "your_username" and "your_password" with your own credentials
r.login(username="your_username", password="your_password")

# Desired stock symbol
stock_symbol = "AAPL"

# Obtain moving averages
MA_50 = r.stocks.get_crypto_historicals(symbol=stock_symbol, interval='day', span='50day')[0]['close_price']
MA_200 = r.stocks.get_crypto_historicals(symbol=stock_symbol, interval='day', span='200day')[0]['close_price']

while True:
    # Current stock price
    current_price = float(r.stocks.get_latest_price(stock_symbol)[0])
    
    # Calculate new moving averages
    MA_50 = (49 * MA_50 + current_price) / 50
    MA_200 = (199 * MA_200 + current_price) / 200
    
    # Condition to buy or sell
    if MA_50 > MA_200:
        # Buy
        invest_amount = 1000
        account_balance = float(r.crypto.get_crypto_currency_balance('USD')['quantity'])
        if account_balance >= invest_amount:
            r.orders.order_sell_crypto_by_price(stock_symbol, invest_amount)
            print("Bought", stock_symbol, "at", current_price, "on", time.strftime("%c"))
    else:
        # Sell
        sell_amount = 1000
        position = r.crypto.get_crypto_currency_balance(stock_symbol)
        if float(position['quantity']) >= sell_amount:
            r.orders.order_sell_crypto_by_price(stock_symbol, -sell_amount)
            print("Sold", stock_symbol, "at", current_price, "on", time.strftime("%c"))
    
    # Wait for one minute before checking the new stock price
    time.sleep(60)

import robin_stocks as r
import time

# Replace "your_username" and "your_password" with your own credentials
r.login(username="your_username", password="your_password")

# Desired stock symbol
stock_symbol = "AAPL"

# Obtain moving averages
MA_50 = r.stocks.get_crypto_historicals(symbol=stock_symbol, interval='day', span='50day')[0]['close_price']
MA_200 = r.stocks.get_crypto_historicals(symbol=stock_symbol, interval='day', span='200day')[0]['close_price']

while True:
    # Current stock price
    current_price = float(r.stocks.get_latest_price(stock_symbol)[0])
    
    # Calculate new moving averages
    MA_50 = (49 * MA_50 + current_price) / 50
    MA_200 = (199 * MA_200 + current_price) / 200
    
    # Condition to buy or sell
    if MA_50 > MA_200:
        # Buy
        invest_amount = 1000
        account_balance = float(r.crypto.get_crypto_currency_balance('USD')['quantity'])
        if account_balance >= invest_amount:
            r.orders.order_sell_crypto_by_price(stock_symbol, invest_amount)
            print("Bought", stock_symbol, "at", current_price, "on", time.strftime("%c"))
    else:
        # Sell
        sell_amount = 1000
        position = r.crypto.get_crypto_currency_balance(stock_symbol)
        if float(position['quantity']) >= sell_amount:
            r.orders.order_sell_crypto_by_price(stock_symbol, -sell_amount)
            print("Sold", stock_symbol, "at", current_price, "on", time.strftime("%c"))
    
    # Wait for one minute before checking the new stock price
    time.sleep(60)

Надеюсь, вам понравится реализовывать собственные торговые алгоритмы с помощью Python, а если у вас есть какие-либо вопросы, оставьте комментарий ниже, и я буду рад на них ответить!