Strategi ini menghasilkan sinyal perdagangan dengan membangun saluran supertrend dua tingkat, yang dikombinasikan dengan saluran terobosan harga. Pada saat yang sama, menggunakan fluktuasi harga untuk menyesuaikan lebar saluran, untuk mencapai efek penyesuaian sendiri.
Perhitungan standar deviasi dan fluktuasi harga ATR, dengan menyesuaikan lebar saluran overtrend sesuai dengan fluktuasi.
Membangun dua lapisan saluran supertrend, saluran dalam lebih sensitif, saluran luar lebih stabil.
Ketika harga menembus saluran overtrend di lapisan dalam atau di lapisan luar, sinyal beli atau jual dihasilkan.
Struktur saluran ganda digunakan untuk menyaring beberapa penembusan palsu.
Tingkat ATR digunakan untuk menyesuaikan lebar saluran, dan ketika gelombang meningkat, lebar saluran meningkat, untuk mencapai efek adaptasi.
Saluran supertrend sangat sederhana dan mudah digunakan untuk melacak tren.
Struktur saluran ganda dapat meningkatkan kualitas sinyal, filter penembusan palsu.
Tingkat fluktuasi menyesuaikan lebar saluran, sehingga saluran lebih sesuai dengan lingkungan pasar yang berbeda.
Mudah diterapkan, dan parameternya mudah disesuaikan.
Untuk memvisualisasikan saluran dan terobosan, membentuk sinyal perdagangan yang intuitif.
Sinyal penembusan dapat menyebabkan kesalahan penilaian dan kerugian yang tidak perlu.
Tidak dapat menentukan arah tren, ada risiko perdagangan berlawanan.
Adaptasi mungkin terlalu sensitif dan terlalu besar.
Optimasi parameter yang tidak tepat dapat menyebabkan overoptimasi.
Sebagai strategi trend-following, “uddle” dapat menghasilkan keuntungan yang rendah atau kerugian.
Uji pengaruh dari parameter yang berbeda terhadap efek adaptasi saluran.
Cobalah untuk melihat arah tren besar dengan menggunakan indikator seperti garis rata-rata.
Mengoptimalkan mekanisme konfirmasi penembusan untuk menghindari penembusan palsu.
Menambahkan strategi stop loss untuk mengendalikan kerugian tunggal.
Evaluasi dampak dari penyesuaian parameter saluran pada frekuensi transaksi.
Parameter dapat dioptimalkan secara dinamis melalui algoritma pembelajaran mesin.
Strategi ini menggunakan dua lapisan penyesuaian supertrend channel untuk menangkap tren harga. Keuntungan dari strategi ini adalah intuisi yang mudah dan dapat secara efektif melacak tren. Namun, ada juga beberapa risiko kesalahan penilaian dan penilaian tren yang salah. Dengan optimasi parameter dan tambahan mekanisme pendukung, efek strategi dapat ditingkatkan lebih lanjut, sehingga menjadi sistem pelacakan tren yang stabil dan efisien.
/*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()