A estratégia é uma estratégia de rastreamento de tendências baseada em uma média móvel de índices de vários quadros de tempo (EMA) e um filtro de EMA de 200 períodos. Sua ideia principal é usar EMAs de diferentes quadros de tempo para identificar a direção do mercado e estabelecer vários posições quando o preço está acima da EMA de 200 períodos. Isso garante que o mercado seja negociado apenas em uma tendência forte de alta, para capturar a ascensão contínua, enquanto usa mecanismos de stop-loss e stop-gap para controlar o risco.
A estratégia usa três prazos de 5 minutos, 15 minutos e 30 minutos para calcular a EMA rápida e a EMA lenta. Comparando a EMA rápida e a EMA lenta de cada prazo, é possível determinar a direção da tendência desse prazo. Em seguida, somamos os sinais de tendência dos três prazos para obter um sinal de tendência global.
A estratégia determina a direção da tendência através da comparação de EMAs em vários quadros de tempo, usando a EMAs de 200 períodos como filtro de tendência, estabelecendo vários posições quando a tendência é claramente superior e o preço está acima da linha média de longo prazo, para captar a posição de alta e forte. Condições de abertura de liquidação rígidas e parâmetros de stop loss fixos ajudam a controlar o risco. No futuro, a adaptabilidade e a solidez das estratégias podem ser melhoradas através da introdução de mais marcos de tempo, otimização do stop loss, adição de mais sinais de negociação, otimização de parâmetros, etc., permitindo que elas captem melhor as oportunidades do mercado e controlem os riscos.
/*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")