
Strategi ini adalah strategi pengesanan trend berdasarkan purata bergerak indeks pelbagai kerangka masa (EMA) dan penapis EMA 200 . Gagasan utamanya adalah untuk menggunakan EMA dari pelbagai kerangka masa untuk mengenal pasti arah trend pasaran dan membuat kedudukan yang lebih tinggi apabila harga berada di atas EMA 200 . Ini dapat memastikan perdagangan hanya dalam trend menaik yang kuat, untuk menangkap pergerakan menaik yang berterusan, sambil menggunakan mekanisme stop loss dan stop loss untuk mengawal risiko.
Strategi menggunakan tiga bingkai masa 5 minit, 15 minit dan 30 minit untuk mengira EMA pantas dan EMA perlahan. Dengan membandingkan EMA pantas dan EMA perlahan dalam setiap bingkai masa, anda boleh menentukan arah trend dalam bingkai masa tersebut. Kemudian, anda perlu menambahkan isyarat trend dari tiga bingkai masa untuk mendapatkan isyarat trend yang komprehensif.
Strategi ini menilai arah trend dengan membandingkan EMA dalam pelbagai bingkai masa, dan menggunakan EMA 200 sebagai penapis trend, dan membuat banyak kedudukan untuk menangkap pergerakan yang kuat ketika trend jelas ke atas dan harga berada di atas garis purata jangka panjang. Keadaan pembukaan kedudukan yang ketat dan penutupan stop loss tetap membantu mengawal risiko. Pada masa akan datang, anda boleh meningkatkan daya serap dan ketahanan strategi dengan memperkenalkan lebih banyak bingkai masa, mengoptimumkan stop loss, menambah lebih banyak isyarat perdagangan, dan pengoptimuman parameter, yang membolehkan anda lebih memahami peluang pasaran dan mengawal risiko.
/*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")