
Strategi ini adalah sistem perdagangan mengikuti tren yang menggabungkan indikator Coral Trend dengan Donchian Channel. Dengan menangkap momentum pasar secara akurat dan berbagai konfirmasi terobosan tren, sinyal palsu di pasar yang bergejolak secara efektif disaring, sehingga meningkatkan akurasi perdagangan. Strategi ini menggunakan teknologi rata-rata pergerakan adaptif, yang secara dinamis dapat menyesuaikan parameter sesuai dengan kondisi pasar, sehingga dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar.
Logika inti dari strategi ini didasarkan pada sinergi dua indikator utama:
Ketika kedua indikator mengkonfirmasi tren naik (coralTrendVal == 1 dan donchianTrendVal == 1), sistem menghasilkan sinyal panjang; ketika kedua indikator mengkonfirmasi tren turun (coralTrendVal == -1 dan donchianTrendVal == -1), sistem menghasilkan sinyal pendek. Strategi ini menggunakan mesin keadaan (trendState) untuk melacak keadaan tren saat ini dan menghindari sinyal duplikat.
Strategi ini menerapkan sistem pelacakan tren yang kuat melalui berbagai mekanisme konfirmasi tren dan pengaturan parameter yang fleksibel. Sifat adaptif dan logika sinyal yang jelas membuatnya cocok untuk berbagai siklus perdagangan dan lingkungan pasar. Melalui arahan pengoptimalan yang direkomendasikan, kinerja strategi dapat lebih ditingkatkan. Ketika diterapkan dalam perdagangan nyata, disarankan untuk menggabungkan langkah-langkah manajemen risiko dan mengoptimalkan parameter sesuai dengan karakteristik produk 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)