Esta es una estrategia de seguimiento de tendencias basada en tres señales de cruce de promedio móvil exponencial (EMA). La estrategia combina EMAs de 9 períodos, 15 períodos y 50 períodos, utilizando señales de cruce entre EMAs a corto y mediano plazo mientras utiliza la EMA a largo plazo como filtro de tendencias, junto con mecanismos dinámicos de stop-loss y take-profit para la gestión de riesgos.
La lógica central se basa en el seguimiento de las señales de cruce entre las EMA de 9 y 15 períodos, utilizando la EMA de 50 períodos como indicador de confirmación de tendencia.
Se trata de una estrategia de seguimiento de tendencias bien diseñada con lógica clara. La combinación de múltiples EMA garantiza la fiabilidad de la señal al tiempo que logra un seguimiento de tendencias efectivo. Los mecanismos de gestión de riesgos incorporados proporcionan estabilidad para la operación de la estrategia. A través de las direcciones de optimización sugeridas, hay margen para una mayor mejora. La estrategia es adecuada para los operadores que buscan rendimientos constantes, pero requiere pruebas exhaustivas y optimización de parámetros para características específicas del mercado antes de su implementación.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover Strategy with 50 EMA Filter", overlay=true) // Customizable Inputs ema9Length = input(9, title="EMA 9 Length") ema15Length = input(15, title="EMA 15 Length") ema50Length = input(50, title="EMA 50 Length") stopLossPoints = input(100, title="Stop Loss Points") takeProfitPoints = input(200, title="Take Profit Points") // Calculate EMAs ema9 = ta.ema(close, ema9Length) ema15 = ta.ema(close, ema15Length) ema50 = ta.ema(close, ema50Length) // Detect crossovers crossover_above = ta.crossover(ema9, ema15) crossover_below = ta.crossunder(ema9, ema15) // Plot EMAs plot(ema9, color=color.blue, title="EMA 9") plot(ema15, color=color.red, title="EMA 15") // Make the 50 EMA invisible plot(ema50, color=color.new(color.white, 100), title="EMA 50", display=display.none) // Plot buy and sell signals as shapes plotshape(crossover_above and close > ema50, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) plotshape(crossover_below and close < ema50, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small) // Execute trades if (crossover_above and close > ema50) strategy.entry("Buy", strategy.long) if (crossover_below and close < ema50) strategy.close("Buy") // Apply stop loss and take profit if (crossover_above and close > ema50) strategy.exit("Exit", from_entry="Buy", loss=stopLossPoints, profit=takeProfitPoints) // Alerts for notifications if (crossover_above and close > ema50) alert("EMA 9 crossed above EMA 15 with price above EMA 50 - Buy Signal", alert.freq_once_per_bar_close) if (crossover_below and close < ema50) alert("EMA 9 crossed below EMA 15 with price below EMA 50 - Sell Signal", alert.freq_once_per_bar_close)