Chiến lược này là một chiến lược theo dõi xu hướng dựa trên đường trung bình chuyển động của chỉ số đa khung thời gian (EMA) và bộ lọc EMA 200 ngày. Ý tưởng chính của nó là sử dụng EMA của các khung thời gian khác nhau để xác định hướng xu hướng của thị trường và đặt nhiều vị trí khi xu hướng tăng và giá trên EMA 200 ngày. Điều này đảm bảo chỉ giao dịch trong xu hướng tăng mạnh để nắm bắt xu hướng tăng liên tục, đồng thời sử dụng các cơ chế dừng lỗ và ngăn chặn rủi ro.
Chiến lược sử dụng ba khung thời gian 5, 15 và 30 phút để tính toán EMA nhanh và EMA chậm. Bằng cách so sánh EMA nhanh và EMA chậm trong mỗi khung thời gian, bạn có thể xác định hướng xu hướng của khung thời gian đó. Sau đó, tổng các tín hiệu xu hướng của ba khung thời gian sẽ tạo ra một tín hiệu xu hướng tổng hợp.
Chiến lược này xác định hướng xu hướng bằng cách so sánh EMA trên nhiều khung thời gian, đồng thời sử dụng EMA 200 ngày như một bộ lọc xu hướng, tạo ra nhiều vị trí để nắm bắt xu hướng tăng mạnh khi xu hướng rõ ràng tăng và giá trên đường trung bình dài hạn. Các điều kiện mở ngang hạn chặt chẽ và nắp dừng lỗ cố định giúp kiểm soát rủi ro. Tuy nhiên, chiến lược này có thể phản ứng chậm hơn ở các điểm biến đổi xu hướng và giữ vị trí dừng lỗ cố định, có giới hạn khi đối phó với biến động đột ngột của thị trường. Trong tương lai, các chiến lược có thể được cải thiện tính linh hoạt và ổn định bằng cách giới thiệu nhiều khung thời gian hơn, tối ưu hóa stop-loss, thêm nhiều tín hiệu giao dịch, tối ưu hóa các tham số, để có thể nắm bắt tốt hơn cơ hội thị trường và kiểm soát rủi ro.
/*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")