
Strategi ini membina saluran SuperTrend berdasarkan purata gelombang sebenar (Average True Range, ATR) dan menghasilkan isyarat beli dan jual berdasarkan harga yang menembusi saluran SuperTrend. Strategi ini menggabungkan kelebihan pengesanan trend dan pengurusan hentian kerugian untuk mengesan arah trend dengan berkesan.
Rel atas dan bawah saluran super trend dikira dengan formula berikut:
Laluan atas = (harga tertinggi + harga terendah) / 2 + ATR (n) * faktor Laluan bawah = (harga tertinggi + harga terendah) / 2 - ATR (n) * faktor
Di antaranya, ATR ((n) mewakili purata gelombang sebenar untuk n hari, faktornya adalah parameter yang boleh disesuaikan, dengan default 3 ◦.
Apabila harga penutupan lebih tinggi daripada tren naik, ia adalah isyarat bullish, dan apabila harga penutupan lebih rendah daripada tren turun, ia adalah isyarat bearish. Strategi menentukan masuk dan keluar berdasarkan isyarat bullish dan bearish.
Penyelesaian risiko:
Strategi ini menggunakan saluran hypertrend untuk mencapai trend pelacakan dan pengurusan hentian. Pertandingan parameter ATR dan faktor adalah penting untuk kesan strategi. Langkah seterusnya adalah untuk mengoptimumkan lagi strategi dari segi parameter pengoptimuman, penapisan isyarat dan lain-lain, supaya ia dapat menyesuaikan diri dengan persekitaran pasaran yang lebih kompleks.
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend Backtest", shorttitle="STBT", overlay=true)
// Input for ATR Length
atrLength = input.int(10, title="ATR Length", minval=1)
atrFactor = input.float(3.0, title="Factor", minval=0.01, step=0.01)
// Calculate SuperTrend
[supertrend, direction] = ta.supertrend(atrFactor, atrLength)
supertrend := barstate.isfirst ? na : supertrend
// Define entry and exit conditions
longCondition = ta.crossover(close, supertrend)
shortCondition = ta.crossunder(close, supertrend)
// Plot the SuperTrend
plot(supertrend, color=color.new(color.blue, 0), title="SuperTrend")
// Plot Buy and Sell signals
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")
// Strategy Entry and Exit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)