Comercio algorítmico con Python y Robinhood
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.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































