Esta es una estrategia de negociación basada en el cruce de los promedios móviles exponenciales (EMA) de 15 y 50 períodos. La estrategia implementa niveles inteligentes de stop-loss y take-profit para optimizar el control de riesgo-recompensa. No solo captura señales de inversión de tendencia, sino que también ajusta automáticamente los parámetros de negociación basados en la volatilidad del mercado, mejorando así la estabilidad y rentabilidad de la estrategia.
La lógica central se basa en señales de cruce entre la EMA rápida (15 períodos) y la EMA lenta (50 períodos). Una señal larga se genera cuando la línea rápida cruza por encima de la línea lenta, y una señal corta cuando la línea rápida cruza por debajo. Para la optimización de la gestión de riesgos, la estrategia emplea un método de configuración de stop-loss dinámico, utilizando el precio de apertura más bajo de las 2 velas anteriores como el stop-loss largo y el precio de apertura más alto como el stop-loss corto. El objetivo de ganancia se establece en el doble del riesgo, asegurando una relación riesgo-recompensa favorable.
Esta es una estrategia de cruce de EMA bien estructurada con lógica clara. Combinando métodos clásicos de análisis técnico con técnicas modernas de gestión de riesgos, la estrategia logra características favorables de riesgo-recompensa. Si bien hay espacio para la optimización, el marco básico demuestra buena practicidad y extensibilidad. A través de las direcciones de optimización sugeridas, el rendimiento de la estrategia puede mejorarse aún más.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Cross - Any Direction", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=30) // Input for EMAs ema_short_length = input(15, title="Short EMA Length") ema_long_length = input(50, title="Long EMA Length") // Calculate EMAs ema_short = ta.ema(close, ema_short_length) ema_long = ta.ema(close, ema_long_length) // Plot EMAs plot(ema_short, color=color.blue, title="15 EMA") plot(ema_long, color=color.red, title="50 EMA") // Entry Conditions (Any EMA Cross) cross_condition = ta.crossover(ema_short, ema_long) or ta.crossunder(ema_short, ema_long) // Determine Trade Direction is_long = ta.crossover(ema_short, ema_long) is_short = ta.crossunder(ema_short, ema_long) // Stop Loss and Take Profit long_stop_loss = ta.lowest(open[1], 2) // Lowest open of the last 2 candles short_stop_loss = ta.highest(open[1], 2) // Highest open of the last 2 candles long_take_profit = close + 2 * (close - long_stop_loss) short_take_profit = close - 2 * (short_stop_loss - close) // Execute Trades if (cross_condition) if (is_long) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit) else if (is_short) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit) // Plot Stop Loss and Take Profit Levels plot(long_stop_loss, color=color.orange, title="Long Stop Loss", style=plot.style_circles, linewidth=2) plot(long_take_profit, color=color.green, title="Long Take Profit", style=plot.style_circles, linewidth=2) plot(short_stop_loss, color=color.orange, title="Short Stop Loss", style=plot.style_circles, linewidth=2) plot(short_take_profit, color=color.red, title="Short Take Profit", style=plot.style_circles, linewidth=2)