Negociação algorítmica com Python e Robinhood

Feb 20 2023
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? Juntando-se ao 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.
Foto por Tech Daily no Unsplash

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!