Trading algoritmico con Python e Robinhood
Fare soldi nel mercato azionario spesso comporta molto stress, tempo e rischi. E se ci fosse un modo per ridurre lo stress e il tempo necessario per investire?
Unirsi a Robinhood
Robinhood è un'app di trading e investimento azionario senza commissioni che consente alle persone di iniziare a investire rapidamente e facilmente nel mercato azionario. La società ha molti vantaggi come nessun conto minimo, nessuna commissione sugli scambi e la possibilità di scambiare opzioni.
Inoltre, la piattaforma è intuitiva e fornisce agli utenti informazioni come la media mobile di 50 e 200 giorni, le valutazioni degli analisti sull'opportunità di acquistare o vendere un'azione e le ultime notizie da una varietà di fonti.
Puoi unirti a Robinhood usando il mio link qui sotto, ed entrambi otterremo uno stock gratuito del valore di $ 5 fino a $ 200.
L'algoritmo
L'algoritmo che utilizzeremo è un crossover a media mobile comunemente utilizzato dagli analisti del mercato azionario. Questo algoritmo monitora la media mobile semplice (SMA), la media aritmetica del prezzo di un'azione in un periodo a breve termine, e la confronta con la media mobile di un periodo a lungo termine.
Un segnale per acquistare un'azione è quando la SMA a breve termine supera la SMA a lungo termine, denominata croce d'oro. Al contrario, un segnale per vendere un'azione è quando la SMA a breve termine incrocia al di sotto della SMA a lungo termine, nota come croce della morte.
Codifica
Per iniziare, dovremo prima installare la libreria robin_stocks, che ci consentirà di connetterci a un account Robinhood.
pip install robin_stocks
Importeremo quindi le librerie richieste e forniremo le credenziali dell'account 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)
Spero ti piaccia implementare i tuoi algoritmi di trading usando Python, e se hai domande, commenta qui sotto e sarò felice di risponderti!

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































