
Strategi ini adalah sistem perdagangan mengikut aliran yang menggabungkan penunjuk Aliran Karang dengan Saluran Donchian. Dengan menangkap momentum pasaran dengan tepat dan berbilang pengesahan kejayaan trend, isyarat palsu dalam pasaran yang tidak menentu ditapis dengan berkesan, meningkatkan ketepatan dagangan. Strategi ini menggunakan teknologi purata bergerak adaptif, yang boleh melaraskan parameter secara dinamik mengikut keadaan pasaran, supaya ia dapat mengekalkan prestasi yang stabil dalam persekitaran pasaran yang berbeza.
Logik teras strategi adalah berdasarkan sinergi dua petunjuk utama:
Apabila kedua-dua penunjuk mengesahkan arah aliran menaik (coralTrendVal == 1 dan donchianTrendVal == 1), sistem menjana isyarat panjang apabila kedua-dua penunjuk mengesahkan arah aliran menurun (coralTrendVal == -1 dan donchianTrendVal == -1), Sistem menjana; isyarat pendek. Strategi ini menggunakan mesin keadaan (trendState) untuk menjejaki keadaan aliran semasa dan mengelakkan isyarat pendua.
Strategi ini melaksanakan sistem penjejakan arah aliran yang mantap melalui pelbagai mekanisme pengesahan arah aliran dan tetapan parameter yang fleksibel. Sifat penyesuaiannya dan logik isyarat yang jelas menjadikannya sesuai untuk pelbagai kitaran dagangan dan persekitaran pasaran. Melalui arahan pengoptimuman yang disyorkan, prestasi strategi boleh dipertingkatkan lagi. Apabila digunakan dalam perdagangan sebenar, adalah disyorkan untuk menggabungkan langkah pengurusan risiko dan mengoptimumkan parameter mengikut ciri-ciri produk dagangan 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)