Tutorial
Programar órdenes de trading con la API de Alpaca en Python
Aprende a automatizar estrategias de trading programando órdenes de compra y venta con Python usando la API de Alpaca.
En las plataformas de trading, puedes solicitar órdenes de compra o venta sobre un activo financiero.
Puedes programar un bot para ejecutar tus órdenes y automatizar tus operaciones.
En este tutorial, aprenderás a solicitar órdenes programáticamente con la API de Alpaca usando una cuenta demo.
Aviso: Este tutorial es con fines educativos para enseñarte a programar con casos prácticos. No es una recomendación de inversión.
Preguntas
- ¿Cómo autorizas el código para ejecutar operaciones de trading con tu cuenta de Alpaca?
- ¿Qué información general tienes sobre tu cuenta demo?
- ¿Cómo creas una orden de compra para un activo financiero?
- ¿Qué significa el parámetro
GTCen una orden de compra? ¿Por qué es importante? - ¿Cómo cierras una posición abierta en un activo específico?
- ¿Cómo ves la información actualizada de tu portafolio después de realizar operaciones?
Metodología
Crear una cuenta en Alpaca
Regístrate en Alpaca y genera una clave API para validar tu acceso programático.
Para evitar riesgos, no registres ningún método de pago al crear tu cuenta.
API_KEY = 'TU_API_KEY'
API_SECRET = 'TU_API_SECRET' Propiedades de la cuenta
Una vez que hayas instalado la biblioteca de Alpaca:
pip install alpaca-py Creas la instancia del cliente de trading en modo demo, paper=True, para validar tu conexión a la API.
from alpaca.trading.client import TradingClient
client = TradingClient(API_KEY, API_SECRET, paper=True) Solicita la información de tu cuenta para verificar que todo está en orden.
data = client.get_account() Comienzas con un saldo de $100,000 en tu cuenta demo.
Solicitar primera orden
Vamos all-in en Bitcoin BTCUSD con el saldo disponible.
Para registrar la orden, crea un objeto MarketOrderRequest especificando las condiciones.
notionales la cantidad de dinero que quieres invertir en la orden. Si quieres comprar un número específico de acciones, debes usar el parámetro qty.GTCGood Till Cancelled indica que la orden permanecerá activa hasta que se ejecute.
order = requests.MarketOrderRequest(
symbol='BTCUSD',
notional=100_000,
side=enums.OrderSide.BUY,
time_in_force=enums.TimeInForce.GTC,
)
client.submit_order(order) Si visitas tus órdenes activas, verás la orden de compra de Bitcoin.
En nuestro caso, la orden se ejecutó comprando 1.40 Bitcoins a un precio promedio de $69,837.9552.
La ejecución de la orden en Bitcoin debería ser inmediata. Sin embargo, para otros activos financieros, la orden puede tardar en ejecutarse.
Cerrar posición del activo
Ahora, tienes un activo como posición abierta en tu cuenta.
Para cerrar la posición, necesitarás el asset_id del activo.
position = client.get_open_position('BTCUSD')
client.close_position(symbol_or_asset_id=position.asset_id)
Saldo del portafolio
Finalmente, observarás tu portafolio con el saldo actualizado en la plataforma de Alpaca.
Notamos que el saldo aumentó $92.86 después de las operaciones.
Y así es como puedes usar la programación para tomar decisiones que se reflejan en la realidad usando APIs.
¿Preguntas? Hablemos abajo en los comentarios.
Conclusiones
- Autorización para operaciones de trading:
TradingClienten modo demopaper=Truepara operar con la API de trading. - Información de cuenta demo:
client.get_accountrecupera información de la cuenta demo, incluyendo saldo y estado. - Creación de una orden de compra:
client.submit_ordercrea y envía una orden de compraMarketOrderRequestpara un activo especificando detalles como cantidad y precio. - Uso de GTC en órdenes:
enums.TimeInForce.GTCestablece que la orden permanece activa hasta que se ejecute. - Cierre de una posición abierta:
client.close_positioncierra una posición abierta para un activo específico. - Visualización actualizada de operaciones: toda la información sobre las operaciones realizadas se refleja en la plataforma de Alpaca.
Si pudieras programar lo que quisieras, ¿qué sería? El próximo tutorial podría cubrirlo ;)
Hablemos en los comentarios abajo.