Negociação algorítmica com Python e Robinhood
Ganhar dinheiro no mercado de ações geralmente envolve muito estresse, tempo e risco. E se houvesse uma maneira de reduzir o estresse e o tempo necessário para investir?
Entrando no Robinhood
Robinhood é um aplicativo de investimento e negociação de ações sem comissão que permite que as pessoas comecem a investir de forma rápida e fácil no mercado de ações. A empresa tem muitas vantagens, como sem mínimo de conta, sem comissões sobre negociações e a capacidade de negociar opções.
Além disso, a plataforma é intuitiva e fornece aos usuários informações como a média móvel de 50 e 200 dias, avaliações de analistas sobre a compra ou venda de uma ação e as últimas notícias de várias fontes.
Você pode se juntar ao Robinhood usando meu link abaixo, e ambos obteremos um estoque gratuito no valor de $ 5 até $ 200.
O Algoritmo
O algoritmo que usaremos é um cruzamento de média móvel comumente usado por analistas do mercado de ações. Esse algoritmo monitora a média móvel simples (SMA), a média aritmética do preço de uma ação em um período de curto prazo, e a compara com a média móvel de um período de longo prazo.
Um sinal para comprar uma ação é quando o SMA de curto prazo cruza acima do SMA de longo prazo, conhecido como cruz de ouro. Pelo contrário, um sinal para vender uma ação é quando a SMA de curto prazo cruza abaixo da SMA de longo prazo, conhecida como cruz da morte.
Codificação
Para começar, primeiro precisamos instalar a biblioteca robin_stocks, que nos permite conectar a uma conta Robinhood.
pip install robin_stocks
Em seguida, importaremos as bibliotecas necessárias e forneceremos as credenciais da conta 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)
Espero que goste de implementar seus próprios algoritmos de negociação usando Python e, se tiver alguma dúvida, comente abaixo e ficarei feliz em respondê-la!





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)