Esta estrategia es una estrategia de seguimiento de tendencias basada en promedios móviles exponenciales (EMA) de varios plazos y un filtro EMA de 200 períodos. La idea principal es utilizar EMA en diferentes plazos para identificar la dirección de la tendencia del mercado y establecer posiciones largas cuando la tendencia es alta y el precio está por encima de la EMA de 200 períodos. Esto asegura que las operaciones solo se realicen durante fuertes tendencias alcistas, con el objetivo de capturar movimientos alcistas sostenidos mientras se gestiona el riesgo con mecanismos definidos de stop-loss y take-profit.
La estrategia utiliza tres marcos de tiempo: 5 minutos, 15 minutos y 30 minutos, calculando EMAs rápidas y lentas para cada uno. Al comparar las EMAs rápidas y lentas para cada marco de tiempo, se puede determinar la dirección de la tendencia. Las señales de tendencia de los tres marcos de tiempo se suman para obtener una señal de tendencia combinada. Cuando la señal de tendencia combinada es 3 (indicando una tendencia alcista en todos los marcos de tiempo) y el precio de cierre actual está por encima de la EMA de 200 períodos en el marco de tiempo de 5 minutos, la estrategia entra en una posición larga.
Esta estrategia determina la dirección de la tendencia comparando las EMA en múltiples marcos de tiempo mientras usa una EMA de 200 períodos como filtro de tendencia. Establece posiciones largas cuando la tendencia es claramente alcista y el precio está por encima del promedio móvil a largo plazo, con el objetivo de capturar fuertes tendencias alcistas. Condiciones estrictas de entrada y salida y niveles fijos de stop-loss y take-profit ayudan a gestionar el riesgo. Sin embargo, la estrategia puede reaccionar lentamente en los puntos de inflexión de la tendencia y tiene limitaciones para lidiar con la volatilidad repentina del mercado debido a los niveles fijos de stop-loss y take-profit. En el futuro, la adaptabilidad y la robustez de la estrategia pueden mejorarse mediante la introducción de más plazos, la optimización de los niveles de stop-loss y take-profit, la incorporación de señales comerciales adicionales, la optimización de parámetros, etc. Esto permitirá a la estrategia aprovechar mejor las oportunidades de mercado y controlar los riesgos.
/*backtest start: 2023-05-17 00:00:00 end: 2024-05-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Multi-Timeframe Trend Following with 200 EMA Filter - Longs Only", shorttitle="MTF_TF_200EMA_Longs", overlay=true, initial_capital=1000, default_qty_type=strategy.fixed, default_qty_value=1) // Inputs fast_length = input.int(9, title="Fast EMA Length", minval=1) slow_length = input.int(21, title="Slow EMA Length", minval=1) filter_length_200 = input.int(200, title="200 EMA Length", minval=1) stop_loss_perc = input.float(1.0, title="Stop Loss Percentage", minval=0.1) / 100 take_profit_perc = input.float(3.0, title="Take Profit Percentage", minval=0.1) / 100 // Calculate EMAs for 5-minute, 15-minute, and 30-minute timeframes ema_fast_5min = request.security(syminfo.tickerid, "5", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on) ema_slow_5min = request.security(syminfo.tickerid, "5", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on) ema_fast_15min = request.security(syminfo.tickerid, "15", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on) ema_slow_15min = request.security(syminfo.tickerid, "15", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on) ema_fast_30min = request.security(syminfo.tickerid, "30", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on) ema_slow_30min = request.security(syminfo.tickerid, "30", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on) // Calculate 200 EMA for the 5-minute timeframe ema_200_5min = ta.ema(close, filter_length_200) // Determine the trend for each timeframe trend_5min = ema_fast_5min > ema_slow_5min ? 1 : -1 trend_15min = ema_fast_15min > ema_slow_15min ? 1 : -1 trend_30min = ema_fast_30min > ema_slow_30min ? 1 : -1 // Combine trend signals combined_trend = trend_5min + trend_15min + trend_30min // Define entry and exit conditions with 200 EMA filter enter_long = combined_trend == 3 and close > ema_200_5min exit_long = combined_trend < 3 or close < ema_200_5min // Plot EMAs for the 5-minute timeframe plot(ema_fast_5min, color=color.blue, linewidth=2, title="Fast EMA 5min") plot(ema_slow_5min, color=color.red, linewidth=2, title="Slow EMA 5min") plot(ema_200_5min, color=color.green, linewidth=2, title="200 EMA 5min") // Strategy execution if (enter_long) strategy.entry("Long", strategy.long, stop=close * (1 - stop_loss_perc), limit=close * (1 + take_profit_perc)) if (exit_long) strategy.close("Long")