Comercio algorítmico con Python y Robinhood

Feb 20 2023
Ganar dinero en el mercado de valores a menudo implica una gran cantidad de estrés, tiempo y riesgo. ¿Qué pasaría si hubiera una manera de reducir el estrés y el tiempo requerido para invertir? Unirse a Robinhood Robinhood es una aplicación de inversión y comercio de acciones sin comisiones que permite a las personas comenzar a invertir en el mercado de valores de forma rápida y sencilla.
Foto de Tech Daily en Unsplash

Ganar dinero en el mercado de valores a menudo implica una gran cantidad de estrés, tiempo y riesgo. ¿Qué pasaría si hubiera una manera de reducir el estrés y el tiempo requerido para invertir?

Unirse a Robinhood

Robinhood es una aplicación de inversión y comercio de acciones sin comisiones que permite a las personas comenzar a invertir en el mercado de valores de manera rápida y sencilla. La compañía tiene muchas ventajas, como sin mínimo de cuenta, sin comisiones por operaciones y la capacidad de operar con opciones.

Además, la plataforma es intuitiva y brinda a los usuarios información como el promedio móvil de 50 y 200 días, calificaciones de analistas sobre si comprar o vender una acción y las últimas noticias de una variedad de fuentes.

Puede unirse a Robinhood usando mi enlace a continuación, y ambos obtendremos acciones gratis valoradas desde $ 5 hasta $ 200.

el algoritmo

El algoritmo que utilizaremos es un cruce de medias móviles que suelen utilizar los analistas del mercado de valores. Este algoritmo monitorea el promedio móvil simple (SMA), la media aritmética del precio de una acción durante un período de corto plazo, y lo compara con el promedio móvil de un período de largo plazo.

Una señal para comprar una acción es cuando la SMA a corto plazo cruza por encima de la SMA a largo plazo, conocida como la cruz dorada. Por el contrario, una señal para vender una acción es cuando la SMA de corto plazo cruza por debajo de la SMA de largo plazo, conocida como el cruce de la muerte.

Codificación

Para comenzar, primero necesitaremos instalar la biblioteca robin_stocks, lo que nos permitirá conectarnos a una cuenta de Robinhood.

pip install robin_stocks

Luego importaremos las bibliotecas requeridas y proporcionaremos las credenciales de la cuenta de 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 disfrute implementando sus propios algoritmos comerciales usando Python, y si tiene alguna pregunta, comente a continuación y estaré encantado de responderla.