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