La estrategia es una estrategia de seguimiento de tendencias basada en la media móvil del índice de múltiples marcos de tiempo (EMA) y filtros de EMA de 200 días. Su idea principal es utilizar EMA de diferentes marcos de tiempo para identificar la dirección de la tendencia del mercado y establecer múltiples posiciones cuando la tendencia es alta y el precio está por encima de la EMA de 200 días.
La estrategia utiliza tres marcos de tiempo de 5 minutos, 15 minutos y 30 minutos para calcular la EMA rápida y la EMA lenta. Se puede determinar la dirección de la tendencia en cada marco de tiempo comparando la EMA rápida y la EMA lenta. Luego se suman las señales de tendencia de los tres marcos de tiempo para obtener una señal de tendencia integral.
La estrategia determina la dirección de la tendencia mediante la comparación de EMAs en varios marcos de tiempo, y utiliza la EMA de 200 días como filtro de tendencia para establecer múltiples posiciones cuando la tendencia es claramente superior y el precio está por encima de la media a largo plazo para captar la tendencia de los mercados. Las condiciones de aplazamiento estrictas y el par de stop loss fijos ayudan a controlar el riesgo. En el futuro, se puede mejorar la adaptabilidad y robustez de la estrategia mediante la introducción de más marcos de tiempo, la optimización de los contenedores de stop loss, la incorporación de más señales de negociación, la optimización de parámetros, etc. para que pueda aprovechar mejor las oportunidades del 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")