Strategi ini adalah strategi trend-mengikuti berdasarkan multi-frame Exponential Moving Averages (EMA) dan filter EMA 200 periode. Ide utama adalah untuk menggunakan EMA pada jangka waktu yang berbeda untuk mengidentifikasi arah tren pasar dan menetapkan posisi panjang ketika tren naik dan harga di atas EMA 200 periode. Ini memastikan bahwa perdagangan hanya dimasukkan selama uptrends yang kuat, bertujuan untuk menangkap pergerakan menaik berkelanjutan sambil mengelola risiko dengan mekanisme stop-loss dan take-profit yang ditentukan.
Strategi ini menggunakan tiga kerangka waktu: 5 menit, 15 menit, dan 30 menit, menghitung EMA cepat dan lambat untuk masing-masing. Dengan membandingkan EMA cepat dan lambat untuk setiap kerangka waktu, arah tren dapat ditentukan. Sinyal tren dari tiga kerangka waktu kemudian dijumlahkan untuk mendapatkan sinyal tren gabungan. Ketika sinyal tren gabungan adalah 3 (menunjukkan uptrend di semua kerangka waktu) dan harga penutupan saat ini di atas EMA 200 periode pada kerangka waktu 5 menit, strategi memasuki posisi panjang. Posisi ditutup ketika sinyal tren gabungan turun di bawah 3 atau harga turun dari EMA 200 periode 5 menit.
Strategi ini menentukan arah tren dengan membandingkan EMA pada beberapa kerangka waktu sambil menggunakan EMA 200 periode sebagai filter tren. Strategi ini menetapkan posisi panjang ketika tren jelas naik dan harga di atas rata-rata bergerak jangka panjang, bertujuan untuk menangkap tren naik yang kuat. Kondisi masuk dan keluar yang ketat dan tingkat stop-loss dan take-profit tetap membantu mengelola risiko. Namun, strategi dapat bereaksi lambat pada titik balik tren dan memiliki keterbatasan dalam menangani volatilitas pasar mendadak karena tingkat stop-loss dan take-profit tetap. Di masa depan, fleksibilitas dan ketahanan strategi dapat ditingkatkan dengan memperkenalkan lebih banyak kerangka waktu, mengoptimalkan tingkat stop loss dan take profit, memasukkan sinyal perdagangan tambahan, mengoptimalkan parameter, dll. Ini akan memungkinkan strategi untuk lebih memanfaatkan peluang pasar sambil mengendalikan 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")