Handel algorytmiczny z Pythonem i Robinhood
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!

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































