
Esta es una estrategia de negociación basada en el cruce de las medias móviles (EMA) de 15 y 50 ciclos. La estrategia logra un control óptimo de la relación riesgo-beneficio a través de la configuración inteligente de stop loss y gain. La estrategia no solo puede capturar señales de cambio de tendencia, sino también ajustar automáticamente los parámetros de negociación según las fluctuaciones del mercado, lo que mejora la estabilidad y la rentabilidad de la estrategia.
La lógica central de la estrategia se basa en una señal cruzada de EMA rápida (en 15 ciclos) y EMA lenta (en 50 ciclos). Cuando la línea rápida atraviesa la línea lenta, el sistema genera una señal de multiplicación; cuando la línea rápida atraviesa la línea lenta, el sistema genera una señal de parálisis. Para optimizar la gestión del riesgo, la estrategia utiliza un método de configuración de stop loss dinámico, es decir, el precio de apertura más bajo de las líneas 2K anteriores como punto de parada múltiple y el precio de apertura más alto como punto de parada en blanco.
Se trata de una estrategia de cruzamiento lineal de una estructura completa y lógica clara. Al combinar los métodos clásicos de análisis técnico con las técnicas modernas de gestión de riesgos, la estrategia logra mejores características de ganancias de riesgo. Aunque existe cierto espacio para la optimización, el marco básico de la estrategia tiene una buena utilidad y extensibilidad.
/*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)