
Chiến lược này là một chiến lược theo dõi xu hướng dựa trên các chỉ số chuyển động trung bình (EMA) và bộ lọc EMA 200 kỳ. Ý 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à thiết lập nhiều vị trí khi xu hướng đi lên và giá trên EMA 200 kỳ. Điều này đảm bảo giao dịch 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 và dừng để kiểm soát rủi ro.
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à EMA chậm. Bằng cách so sánh EMA nhanh và EMA chậm của mỗi khung thời gian, bạn có thể xác định xu hướng của khung thời gian đó. Sau đó tổng hợp các tín hiệu xu hướng của ba khung thời gian để có được một tín hiệu xu hướng tổng hợp.
Chiến lược này đánh giá xu 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 làm bộ lọc xu hướng, thiết lập nhiều vị trí để nắm bắt xu hướng tăng mạnh khi xu hướng rõ ràng và giá trên đường trung bình dài hạn. Điều kiện mở vị trí nghiêm ngặt và lệnh dừng 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 ở điểm biến động xu hướng và vị trí dừng lỗ bị cố định, có giới hạn khi đối phó với sự biến động đột ngột của thị trường. Trong tương lai, có thể nâng cao khả năng thích ứng và sức mạnh của chiến lược bằng cách giới thiệu nhiều khung thời gian hơn, tối ưu hóa các điểm dừng lỗ, thêm nhiều tín hiệu giao dịch và tối ưu hóa các tham số, cho phép nó nắm bắt tốt hơn các 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")