Strategi ini adalah sistem perdagangan trend following yang menggabungkan indikator Coral Trend dengan Saluran Donchian. Dengan tepat menangkap momentum pasar dan memberikan beberapa konfirmasi dari trend breakout, secara efektif menyaring sinyal palsu di pasar osilasi dan meningkatkan akurasi perdagangan. Strategi ini menggunakan teknik rata-rata bergerak adaptif yang dapat secara dinamis menyesuaikan parameter untuk mempertahankan kinerja yang stabil di berbagai kondisi pasar.
Logika inti dibangun di atas efek sinergis dari dua indikator utama: 1. Coral Trend Indicator: Menghitung nilai rata (tinggi + rendah + dekat) / 3 dan membandingkannya dengan harga penutupan saat ini untuk menentukan arah tren. 2. Saluran Donchian: Menentukan apakah harga melanggar tingkat kunci dengan menghitung harga tertinggi dan terendah dalam periode yang ditentukan pengguna.
Sistem menghasilkan sinyal panjang ketika kedua indikator mengkonfirmasi tren naik (coralTrendVal == 1 dan donchianTrendVal == 1), dan sinyal pendek ketika keduanya mengkonfirmasi tren turun (coralTrendVal == -1 dan donchianTrendVal == -1). Strategi ini menggunakan mesin keadaan (trendState) untuk melacak keadaan tren saat ini dan menghindari sinyal duplikat.
Strategi ini mencapai sistem trend berikut yang kuat melalui beberapa mekanisme konfirmasi tren dan pengaturan parameter yang fleksibel. Fitur adaptif dan logika sinyal yang jelas membuatnya cocok untuk berbagai kerangka waktu perdagangan dan lingkungan pasar. Melalui arah optimasi yang disarankan, ada ruang untuk peningkatan kinerja strategi lebih lanjut. Ketika diterapkan untuk perdagangan langsung, disarankan untuk menggabungkan langkah-langkah manajemen risiko dan mengoptimalkan parameter sesuai dengan karakteristik instrumen perdagangan tertentu.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-16 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Coral Tides Strategy", shorttitle="CoralTidesStrat", overlay=true) // === Inputs === dlen = input.int(defval=20, title="Donchian Channel Period", minval=10) coralPeriod = input.int(defval=14, title="Coral Trend Period") // === Functions === // Coral Trend Calculation coralTrend(period) => smooth = (high + low + close) / 3 coral = ta.ema(smooth, period) trend = 0 trend := close > coral ? 1 : close < coral ? -1 : trend[1] [trend, coral] // Donchian Trend Calculation donchianTrend(len) => hh = ta.highest(high, len) ll = ta.lowest(low, len) trend = 0 trend := close > hh[1] ? 1 : close < ll[1] ? -1 : trend[1] trend // === Trend Calculation === [coralTrendVal, coralLine] = coralTrend(coralPeriod) donchianTrendVal = donchianTrend(dlen) // === Signal Logic === var int trendState = 0 buySignal = false sellSignal = false if (coralTrendVal == 1 and donchianTrendVal == 1 and trendState != 1) buySignal := true sellSignal := false trendState := 1 else if (coralTrendVal == -1 and donchianTrendVal == -1 and trendState != -1) sellSignal := true buySignal := false trendState := -1 else buySignal := false sellSignal := false // === Strategy Execution === // Entry Signals if (buySignal) strategy.entry("Long", strategy.long) if (sellSignal) strategy.entry("Short", strategy.short) // === Plots === // Coral Trend Line plot(coralLine, color=color.green, linewidth=2, title="Coral Trend Line") // Buy/Sell Signal Labels if buySignal label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.normal) if sellSignal label.new(bar_index, high, "SELL", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.normal)