
La estrategia es una estrategia de seguimiento de tendencias que combina un sistema de cruce de dos líneas equiláreas con un índice relativamente fuerte (RSI). Se captura la tendencia del mercado a través de cruces de promedios móviles de 9 y 21 ciclos (EMA), mientras se utiliza el indicador RSI para filtrar sobrecompras y sobreventas, y se combina con la confirmación de la rotación para mejorar la fiabilidad de las señales de negociación. La estrategia también integra un mecanismo de parada de pérdidas dinámico basado en la amplitud de las fluctuaciones reales (ATR), lo que permite un control de riesgo integral.
La lógica central de la estrategia se basa en los siguientes elementos clave:
Cuando el EMA rápido cruza hacia arriba el EMA lento, y el RSI es mayor que 40, y el volumen de transacciones supera el umbral, el sistema genera una señal múltiple. Por el contrario, cuando el EMA rápido cruza hacia abajo el EMA lento, y el RSI es menor que 60, y el volumen de transacciones se confirma, el sistema genera una señal de vacío.
La estrategia, a través de una combinación científica de indicadores técnicos clásicos, construye un sistema de seguimiento de tendencias riguroso y lógico. Los múltiples mecanismos de filtración y los medios de control de riesgo de la estrategia la convierten en una estrategia con un fuerte valor de aplicación en la práctica.
/*backtest
start: 2024-11-07 00:00:00
end: 2025-02-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Call & Put Options Strategy (Optimized)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// 📌 Configuration Parameters
emaShort = input(9, title="Short EMA")
emaLong = input(21, title="Long EMA")
rsiLength = input(14, title="RSI Period")
rsiOverbought = input(60, title="RSI Overbought") // Adjusted for more signals
rsiOversold = input(40, title="RSI Oversold") // More flexible to confirm buys
atrLength = input(14, title="ATR Period")
atrMult = input(1.5, title="ATR Multiplier for Stop Loss")
minVol = input(100000, title="Minimum Volume to Confirm Entry") // Volume filter
// 🔹 Indicator Calculations
emaFast = ta.ema(close, emaShort)
emaSlow = ta.ema(close, emaLong)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
vol = volume
// 📌 Entry Signal Conditions
condCALL = ta.crossover(emaFast, emaSlow) and rsi > rsiOversold and vol > minVol
condPUT = ta.crossunder(emaFast, emaSlow) and rsi < rsiOverbought and vol > minVol
// 🚀 Plot signals on the chart
plotshape(condCALL, location=location.belowbar, color=color.green, style=shape.labelup, title="CALL", size=size.small)
plotshape(condPUT, location=location.abovebar, color=color.red, style=shape.labeldown, title="PUT", size=size.small)
// 🎯 Alert conditions
alertcondition(condCALL, title="CALL Signal", message="📈 CALL signal confirmed")
alertcondition(condPUT, title="PUT Signal", message="📉 PUT signal confirmed")
// 📌 Risk Management - Stop Loss and Take Profit
longStop = close - (atr * atrMult)
shortStop = close + (atr * atrMult)
strategy.entry("CALL", strategy.long, when=condCALL)
strategy.exit("CALL Exit", from_entry="CALL", stop=longStop)
strategy.entry("PUT", strategy.short, when=condPUT)
strategy.exit("PUT Exit", from_entry="PUT", stop=shortStop)