Handel algorytmiczny z Pythonem i Robinhood

Feb 20 2023
Zarabianie pieniędzy na giełdzie często wiąże się z dużym stresem, czasem i ryzykiem. Co by było, gdyby istniał sposób na zmniejszenie stresu i czasu potrzebnego do inwestowania? Dołączanie do Robinhood Robinhood to bezpłatna aplikacja do handlu akcjami i inwestowania, która pozwala szybko i łatwo rozpocząć inwestowanie na giełdzie.
Zdjęcie Tech Daily na Unsplash

Zarabianie pieniędzy na giełdzie często wiąże się z dużym stresem, czasem i ryzykiem. Co by było, gdyby istniał sposób na zmniejszenie stresu i czasu potrzebnego do inwestowania?

Dołączenie do Robinhood

Robinhood to bezpłatna aplikacja do handlu akcjami i inwestowania, która pozwala ludziom szybko i łatwo rozpocząć inwestowanie na giełdzie. Firma ma wiele zalet, takich jak brak minimum konta, brak prowizji od transakcji i możliwość handlu opcjami.

Ponadto platforma jest intuicyjna i zapewnia użytkownikom informacje, takie jak 50-dniowa i 200-dniowa średnia krocząca, oceny analityków dotyczące kupna lub sprzedaży akcji oraz najnowsze wiadomości z różnych źródeł.

Możesz dołączyć do Robinhood, korzystając z mojego linku poniżej, a oboje otrzymamy darmowe akcje o wartości od 5 USD aż do 200 USD.

Algorytm

Algorytm, którego użyjemy, to skrzyżowanie średniej ruchomej, które jest powszechnie stosowane przez analityków giełdowych. Algorytm ten monitoruje prostą średnią ruchomą (SMA), średnią arytmetyczną ceny akcji w krótkim okresie i porównuje ją ze średnią ruchomą z okresu długoterminowego.

Sygnałem do zakupu akcji jest przekroczenie krótkoterminowego SMA powyżej długoterminowego SMA, co określa się mianem złotego krzyża. Wręcz przeciwnie, sygnałem do sprzedaży akcji jest przejście krótkoterminowego SMA poniżej długoterminowego SMA, znanego jako krzyż śmierci.

Kodowanie

Aby rozpocząć, najpierw musimy zainstalować bibliotekę robin_stocks, która pozwoli nam połączyć się z kontem Robinhood.

pip install robin_stocks

Następnie zaimportujemy wymagane biblioteki i podamy poświadczenia konta 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)

Mam nadzieję, że spodoba ci się wdrażanie własnych algorytmów handlowych za pomocą Pythona, a jeśli masz jakieś pytania, skomentuj poniżej, a z przyjemnością na nie odpowiem!