Strategi ini membina saluran supertrend dua lapisan dan menghasilkan isyarat perdagangan apabila harga memecahkan saluran. Ia juga menyesuaikan lebar saluran menggunakan turun naik harga untuk kesan penyesuaian.
Mengira penyesuaian standard harga dan volatiliti ATR, menggunakan volatiliti untuk menyesuaikan lebar saluran.
Membina saluran super trend berlapis dua, dengan lapisan dalaman lebih sensitif dan lapisan luar lebih stabil.
Menghasilkan isyarat beli/jual apabila harga memecahkan saluran dalaman atau luar.
Struktur saluran berganda membantu menapis beberapa penyebaran palsu.
Volatiliti ATR menyesuaikan lebar saluran, lebih luas apabila turun naik untuk kesan penyesuaian.
Saluran Supertrend adalah mudah dan berkesan dalam mengesan trend.
Saluran berganda menapis gangguan palsu dan meningkatkan kualiti isyarat.
Penyesuaian penyesuaian turun naik menjadikan saluran sesuai dengan persekitaran pasaran yang berbeza.
Mudah untuk dilaksanakan dengan penyesuaian parameter yang mudah.
Saluran dan penembusan yang dilihat membentuk isyarat perdagangan intuitif.
Isyarat pecah boleh menghasilkan isyarat palsu yang mengakibatkan kerugian yang tidak perlu.
Ia gagal menentukan arah trend, risiko perdagangan kontra-trend.
Penyesuaian penyesuaian mungkin terlalu sensitif, dengan penyesuaian berlebihan.
Pengoptimuman parameter yang tidak betul membawa kepada pemasangan berlebihan.
Sebagai trend mengikuti strategi, ia berjuang dalam pasaran julat terikat.
Parameter ujian
Menggabungkan MA untuk menentukan trend utama.
Mengoptimumkan pengesahan untuk mengelakkan kebocoran palsu.
Tambah stop loss kepada had kerugian setiap perdagangan.
Menilai penyesuaian saluran pada kekerapan perdagangan.
Gunakan pembelajaran mesin untuk mengoptimumkan parameter secara dinamik.
Strategi ini menggunakan saluran supertrend berganda adaptif untuk menangkap trend harga. Ia mudah dan intuitif dalam mengesan trend. Tetapi risiko termasuk pecah palsu dan arah trend yang tidak betul. Penyesuaian parameter dan mekanisme tambahan yang lebih lanjut dapat meningkatkan prestasi strategi, menjadikannya sistem trend berikut yang mantap.
/*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()