
Strategi ini ialah sistem perdagangan mengikut aliran yang menggabungkan penunjuk Supertrend dengan Purata Pergerakan Adaptif Kaufman (KAMA). Strategi ini secara dinamik mengenal pasti perubahan dalam arah aliran pasaran, mencari peluang panjang dalam aliran menaik, dan menggunakan mekanisme henti rugi yang fleksibel untuk mengawal risiko. Idea teras strategi adalah untuk menggunakan keupayaan pertimbangan arah aliran penunjuk Supertrend, digabungkan dengan ciri penyesuaian penunjuk KAMA kepada turun naik pasaran, untuk mewujudkan kedudukan panjang dalam aliran menaik pasaran.
Strategi ini menggunakan sistem pengesahan penunjuk teknikal dwi. Pertama, penunjuk Supertrend mengira arah aliran melalui ATR dan pekali tersuai Apabila garis penunjuk berada di bawah harga, ia menunjukkan arah aliran menaik. Kedua, penunjuk KAMA melaraskan sensitiviti purata bergerak melalui mekanisme penyesuaian, yang boleh menyesuaikan diri dengan persekitaran pasaran yang berbeza dengan lebih baik. Isyarat masuk mesti memenuhi dua syarat pada masa yang sama: Supertrend menunjukkan arah aliran menaik dan harga berada di atas garisan KAMA. Begitu juga, isyarat keluar juga memerlukan pengesahan berganda: Supertrend bertukar menjadi aliran menurun dan harga jatuh di bawah garisan KAMA. Mekanisme pengesahan berganda ini berkesan mengurangkan kesan isyarat palsu.
Strategi ini membina sistem dagangan mengikut arah aliran yang mantap dengan menggabungkan dua petunjuk teknikal, Supertrend dan KAMA. Kelebihan utama strategi adalah kebolehsuaian dan keupayaan kawalan risiko, dan kebolehpercayaan isyarat dagangan dipertingkatkan melalui mekanisme pengesahan berganda. Walaupun mungkin terdapat beberapa cabaran dalam pasaran yang tidak menentu, prestasi keseluruhan strategi boleh dipertingkatkan lagi melalui tetapan parameter yang munasabah dan pelaksanaan arah pengoptimuman. Strategi ini amat sesuai untuk dagangan arah aliran jangka sederhana dan panjang serta menunjukkan prestasi yang lebih baik dalam persekitaran pasaran dengan arah aliran yang jelas.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Supertrend + KAMA Long Strategy", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)
// User-defined inputs for date range
startDate = input(timestamp("2018-01-01 00:00:00"), title="Start Date")
endDate = input(timestamp("2069-12-31 23:59:59"), title="End Date")
inDateRange = true
// Inputs for KAMA and Supertrend
kamaLength = input.int(21, title="KAMA Length", minval=1)
atrPeriod = input.int(10, title="Supertrend ATR Length", minval=1)
factor = input.float(3.0, title="Supertrend Factor", minval=0.01, step=0.01)
//------------------------- Kaufman Moving Average Adaptive (KAMA) -------------------------
xPrice = close
xvnoise = math.abs(xPrice - xPrice[1])
Length = kamaLength
nfastend = 0.666
nslowend = 0.0645
nsignal = math.abs(xPrice - xPrice[Length])
float nnoise = 0.0
for i = 0 to Length - 1
nnoise := nnoise + xvnoise[i]
nefratio = nnoise != 0.0 ? nsignal / nnoise : 0.0
nsmooth = math.pow(nefratio * (nfastend - nslowend) + nslowend, 2)
var float nAMA = na
nAMA := nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
plot(nAMA, color=color.blue, linewidth=2, title="Kaufman KAMA")
//------------------------- Supertrend Calculation -------------------------
[stValue, dirValue] = ta.supertrend(factor, atrPeriod)
upTrend = dirValue < 0
downTrend = dirValue >= 0
plot(dirValue < 0 ? stValue : na, "Up Trend", color=color.green, style=plot.style_linebr)
plot(dirValue >= 0 ? stValue : na, "Down Trend", color=color.red, style=plot.style_linebr)
//------------------------- Strategy Logic -------------------------
// Entry condition: Supertrend is in uptrend AND price is above KAMA
canLong = inDateRange and upTrend and close > nAMA
// Exit condition (Take Profit): Supertrend switches to downtrend AND price is below KAMA
stopLoss = inDateRange and downTrend and close < nAMA
if canLong
strategy.entry("Long", strategy.long)
label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.normal)
if stopLoss
strategy.close("Long", comment="Stop Loss")
label.new(bar_index, high, "STOP LOSS", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.normal)
//------------------------- Alerts -------------------------
alertcondition(canLong, title="Long Entry", message="Supertrend + KAMA Long Signal")
alertcondition(stopLoss, title="Stop Loss", message="Supertrend switched to Downtrend and Price below KAMA")