Strategi ini menghasilkan isyarat perdagangan dengan membina saluran supertrend berlapis dua, digabungkan dengan saluran pecah harga. Dengan menggunakan kadar turun naik harga untuk menyesuaikan lebar saluran, kesan penyesuaian diri dicapai.
Pengiraan perbezaan piawai harga dan kadar turun naik ATR, menyesuaikan lebar saluran overtrend mengikut kadar turun naik.
Membina saluran super trend berlapis dua, saluran dalaman lebih sensitif, saluran luar lebih stabil.
Sinyal beli atau jual dihasilkan apabila harga menembusi saluran aliran dalaman atau luar.
Dengan menggunakan struktur saluran bertingkat dua, ia boleh menapis beberapa penembusan palsu.
Kadar ATR digunakan untuk menyesuaikan lebar saluran, dan apabila gelombang meningkat, lebar saluran meningkat, untuk mencapai kesan penyesuaian diri.
Saluran hypertrend adalah mudah digunakan dan lebih baik untuk menjejaki trend.
Struktur saluran dua lapisan dapat meningkatkan kualiti isyarat, menapis penembusan palsu.
Kadar turun naik menyesuaikan diri dengan lebar saluran, menjadikan saluran lebih sesuai dengan keadaan pasaran yang berbeza.
Ia mudah dilaksanakan dan parameternya mudah disesuaikan.
Memvisualisasikan saluran dan penembusan, membentuk isyarat perdagangan yang intuitif.
Isyarat penembusan boleh menyebabkan kesilapan dalam penilaian dan menyebabkan kerugian yang tidak perlu.
Tidak dapat menentukan arah trend, terdapat risiko perdagangan berlawanan arah.
Adaptasi boleh menjadi terlalu sensitif dan terlalu banyak.
Pengoptimuman parameter yang tidak betul boleh menyebabkan pengoptimuman berlebihan.
Sebagai strategi untuk menjejaki trend, uddle mudah menjadi kurang menguntungkan atau rugi.
Uji kesan parameter yang berbeza terhadap kesan penyesuaian saluran.
Cuba untuk menilai arah trend besar dengan menggunakan indikator seperti garis rata-rata.
Mengoptimumkan mekanisme pengesahan penembusan untuk mengelakkan penembusan palsu.
Tambah strategi hentikan kerugian untuk mengawal kerugian tunggal.
Menilai kesan perubahan parameter saluran terhadap kekerapan transaksi.
Parameter boleh dioptimumkan secara dinamik melalui algoritma pembelajaran mesin.
Strategi ini menggunakan dua lapisan penyesuaian diri saluran hypertrend untuk menangkap trend harga. Kelebihannya adalah mudah dan intuitif, boleh mengesan trend dengan berkesan. Tetapi ada juga beberapa risiko penilaian yang salah dan penilaian yang salah. Dengan pengoptimuman parameter dan tambahan mekanisme sokongan, anda boleh meningkatkan lagi keberkesanan strategi, menjadikannya sistem pengesanan trend yang stabil dan cekap.
/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SuperTrend Cloud Strategy", shorttitle="SuperTrend Cloud Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital = 1000)
//Inputs
multi = input(title="Multiplier", type=input.float, step=0.1, defval=3, minval=1)
period = input(title="Period", type=input.integer, step=1, defval=10, minval=1)
SelfAdjust = input(title="Self-Adjusting", type=input.bool, defval = false)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
////////////////////////////////////////////////////////////////////////////////
dev = stdev(close, period)
stdDev = (dev / close) * 100 + 1
MultDev = SelfAdjust ? multi * stdDev : multi
up_lev1 = hl2 - MultDev * atr(period)
dn_lev1 = hl2 + MultDev * atr(period)
up_lev2 = hl2 - (MultDev * 2 * atr(period))
dn_lev2 = hl2 + (MultDev * 2 * atr(period))
up_trend1 = 0.0
up_trend1 := close[1] > up_trend1[1] ? max(up_lev1, up_trend1[1]) : up_lev1
up_trend2 = 0.0
up_trend2 := close[1] > up_trend2[1] ? max(up_lev2, up_trend2[1]) : up_lev2
down_trend1 = 0.0
down_trend1 := close[1] < down_trend1[1] ? min(dn_lev1, down_trend1[1]) : dn_lev1
down_trend2 = 0.0
down_trend2 := close[1] < down_trend2[1] ? min(dn_lev2, down_trend2[1]) : dn_lev2
trend1 = 0
trend1 := close > down_trend1[1] ? 1: close < up_trend1[1] ? -1 : nz(trend1[1], 1)
trend2 = 0
trend2 := close > down_trend2[1] ? 1: close < up_trend2[1] ? -1 : nz(trend2[1], 1)
st_line1 = trend1 == 1 ? up_trend1 : down_trend1
st_line2 = trend2 == 1 ? up_trend2 : down_trend2
// Plotting
plot1 = plot(st_line1, color = trend1 == 1 ? color.green : color.red , style = plot.style_line, linewidth = 1, title = "SuperTrend 1")
plot2 = plot(st_line2, color = trend2 == 1 ? color.green : color.red , style = plot.style_line, linewidth = 1, title = "SuperTrend 2")
fill(plot1, plot2, color = color.aqua, title = "Cloud")
buy = crossover(close, st_line1) and close > st_line2 or crossover(close, st_line2) and close > st_line1
sell = crossunder(close, st_line1) and close < st_line2 or crossunder(close, st_line2) and close < st_line1
if(buy and time_cond)
strategy.entry("long", long = true , comment="long")
if (close < st_line1 and time_cond or close < st_line2 and time_cond)
strategy.close("long")
if (not time_cond)
strategy.close_all()