Strategi ini adalah strategi yang mengikuti trend berdasarkan purata bergerak eksponen (EMA) pelbagai jangka masa dan penapis EMA 200 tempoh. Idea utama adalah untuk menggunakan EMA pada jangka masa yang berbeza untuk mengenal pasti arah trend pasaran dan menubuhkan kedudukan panjang apabila trend meningkat dan harga di atas EMA 200 tempoh. Ini memastikan bahawa dagangan hanya dimasukkan semasa aliran naik yang kuat, bertujuan untuk menangkap pergerakan menaik yang berterusan sambil menguruskan risiko dengan mekanisme stop-loss dan mengambil keuntungan yang ditakrifkan.
Strategi ini menggunakan tiga bingkai masa: 5 minit, 15 minit, dan 30 minit, mengira EMA pantas dan perlahan untuk masing-masing. Dengan membandingkan EMA pantas dan perlahan untuk setiap bingkai masa, arah trend dapat ditentukan. Isyarat trend dari tiga bingkai masa kemudiannya dijumlahkan untuk mendapatkan isyarat trend gabungan. Apabila isyarat trend gabungan adalah 3 (menunjukkan aliran menaik di semua bingkai masa) dan harga penutupan semasa di atas EMA 200 tempoh pada bingkai masa 5 minit, strategi memasuki kedudukan panjang. Posisi ditutup apabila isyarat trend gabungan jatuh di bawah 3 atau harga jatuh di bawah EMA 200 tempoh 5 minit.
Strategi ini menentukan arah trend dengan membandingkan EMA pada beberapa jangka masa sambil menggunakan EMA 200-periode sebagai penapis trend. Ia menubuhkan kedudukan panjang apabila trend jelas menaik dan harga di atas purata bergerak jangka panjang, bertujuan untuk menangkap trend menaik yang kuat. Syarat masuk dan keluar yang ketat dan paras stop-loss dan take-profit tetap membantu menguruskan risiko. Walau bagaimanapun, strategi ini mungkin bertindak balas perlahan pada titik perubahan trend dan mempunyai batasan dalam menangani turun naik pasaran tiba-tiba kerana tahap stop-loss dan take-profit tetap. Pada masa akan datang, kebolehsesuaian dan ketahanan strategi dapat ditingkatkan dengan memperkenalkan lebih banyak kerangka masa, mengoptimumkan tahap stop-loss dan mengambil keuntungan, menggabungkan isyarat perdagangan tambahan, mengoptimumkan parameter, dll. Ini akan membolehkan strategi untuk memanfaatkan peluang pasaran dengan lebih baik sambil 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")