Bot de trading algorítmico automático con estrategia SMA + RSI. Usa Massive como fuente de datos de mercado y Alpaca Markets para ejecutar órdenes.
trading-bot/
├── main.py ← Punto de entrada. Ejecuta este archivo.
├── config.py ← Carga la configuración desde .env
├── requirements.txt ← Dependencias Python
├── .env.example ← Plantilla de configuración (copia como .env)
├── .gitignore ← Evita subir .env y archivos sensibles
│
├── data/
│ └── massive_client.py ← Obtiene velas (OHLCV) de Massive
│
├── broker/
│ └── alpaca_client.py ← Coloca órdenes en Alpaca
│
├── strategy/
│ ├── indicators.py ← Calcula SMA y RSI
│ └── sma_rsi.py ← Lógica de señales BUY/SELL/HOLD
│
├── risk/
│ └── manager.py ← Position sizing, stop-loss, take-profit
│
└── logs/
└── bot.log ← Registro de actividad del bot
pip install -r requirements.txtCopia el archivo de ejemplo y rellena tus claves:
cp .env.example .envEdita .env con tus claves de Alpaca y Massive.
.env a GitHub.
python main.pySeñal de COMPRA — deben cumplirse AMBAS condiciones:
- La SMA rápida cruza por encima de la SMA lenta (golden cross)
- El RSI está por debajo del umbral de sobrevendido (35 por defecto)
Señal de VENTA — cualquiera de estas condiciones:
- La SMA rápida cruza por debajo de la SMA lenta (death cross)
- El RSI supera el umbral de sobrecomprado (65 por defecto)
- Empieza siempre en modo paper (
ALPACA_MODE=paperen.env) - Nunca uses dinero real sin haber probado semanas en paper trading
- El trading algorítmico conlleva riesgo de pérdida de capital
- El bot no garantiza ganancias
Todo se configura en el archivo .env. Los parámetros más importantes:
| Variable | Descripción | Valor por defecto |
|---|---|---|
TRADING_SYMBOL |
Activo a operar | AAPL |
MAX_CAPITAL |
Capital máximo a usar (USD) | 1000 |
RISK_PER_TRADE |
Riesgo por operación (%) | 0.02 (2%) |
STOP_LOSS_PCT |
Stop-loss (%) | 0.03 (3%) |
TAKE_PROFIT_PCT |
Take-profit (%) | 0.06 (6%) |
TIMEFRAME |
Intervalo de velas | 15Min |
SMA_SHORT |
Período SMA rápida | 10 |
SMA_LONG |
Período SMA lenta | 30 |
RSI_OVERSOLD |
RSI señal de compra | 35 |
RSI_OVERBOUGHT |
RSI señal de venta | 65 |