Cette stratégie est une stratégie de suivi des tendances basée sur des moyennes mobiles exponentielles (EMA) sur plusieurs périodes et un filtre EMA de 200 périodes. L'idée principale est d'utiliser des EMA sur différentes périodes pour identifier la direction de la tendance du marché et établir des positions longues lorsque la tendance est à la hausse et que le prix est au-dessus de la EMA de 200 périodes. Cela garantit que les transactions ne sont effectuées que lors de fortes tendances haussières, dans le but de capturer des mouvements ascendants soutenus tout en gérant le risque avec des mécanismes de stop-loss et de prise de profit définis.
La stratégie utilise trois délais: 5 minutes, 15 minutes et 30 minutes, en calculant des EMA rapides et lents pour chacun. En comparant les EMA rapides et lents pour chaque délais, la direction de la tendance peut être déterminée. Les signaux de tendance des trois délais sont ensuite additionnés pour obtenir un signal de tendance combiné. Lorsque le signal de tendance combiné est de 3 (indiquant une tendance haussière sur tous les délais) et que le prix de clôture actuel est supérieur à l'EMA de 200 périodes sur le délai de 5 minutes, la stratégie entre dans une position longue. La position est fermée lorsque le signal de tendance combiné tombe en dessous de 3 ou que le prix tombe en dessous de l'EMA de 200 périodes de 5 minutes.
Cette stratégie détermine la direction de la tendance en comparant les EMA sur plusieurs délais tout en utilisant une EMA de 200 périodes comme filtre de tendance. Elle établit des positions longues lorsque la tendance est nettement à la hausse et que le prix est supérieur à la moyenne mobile à long terme, dans le but de capturer de fortes tendances haussières. Des conditions d'entrée et de sortie strictes et des niveaux fixes de stop-loss et de take-profit aident à gérer le risque. Cependant, la stratégie peut réagir lentement aux points tournants de la tendance et a des limites pour faire face à la volatilité soudaine du marché due aux niveaux fixes de stop-loss et de take-profit. À l'avenir, l'adaptabilité et la robustesse de la stratégie peuvent être améliorées par l'introduction de plus de délais, l'optimisation des niveaux de stop-loss et de take-profit, l'intégration de signaux de trading supplémentaires, l'optimisation des paramètres, etc. Cela permettra à la stratégie de mieux saisir les opportunités du marché tout en contrôlant les risques.
/*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")