Strategi ini didasarkan pada indikator Super Trend dan indikator saluran harga, dikombinasikan dengan sinyal rata-rata bergerak untuk perdagangan.
Hitung indikator Super Trend. Rel atas dan bawah adalah harga saat ini ditambah/dikurangi N kali indikator ATR masing-masing. Ketika harga lebih tinggi dari rel atas, itu bullish. Ketika harga lebih rendah dari rel bawah, itu bearish.
Menghitung indikator saluran harga. Garis saluran harga adalah M kali deviasi standar N-hari dari harga. Harga yang lebih tinggi / lebih rendah dari garis saluran dianggap keadaan abnormal.
Menghitung rata-rata bergerak. mengambil garis rata-rata harga terbuka, harga tutup dan Super Trend masing-masing.
Menghasilkan sinyal perdagangan:
Sinyal Beli: Harga tutup melintasi di atas garis Super Trend dan lebih tinggi dari rata-rata pergerakan harga terbuka.
Sinyal jual: Harga tutup melintasi di bawah garis Super Trend dan lebih rendah dari rata-rata pergerakan harga terbuka.
Atur stop loss dan ambil channel harga profit.
Menggabungkan beberapa indikator menghindari sinyal palsu.
Menggunakan saluran harga untuk menilai keadaan harga abnormal dapat menyaring beberapa titik masuk yang tidak diinginkan.
Rata-rata bergerak dikombinasikan dengan menilai arah tren menghindari perdagangan melawan tren.
Menetapkan stop loss dan mengambil profit range mengendalikan risiko.
Pengaturan parameter terlalu subjektif dan perlu optimasi.
Jangkauan stop loss dan take profit dapat diatur terlalu luas atau terlalu sempit.
Parameter saluran harga mungkin tidak cocok untuk semua produk, pengujian terpisah diperlukan.
Kerugian yang signifikan dapat terjadi selama perubahan tren drastis.
Uji dan optimalkan parameter untuk menemukan kombinasi optimal.
Uji rata-rata bergerak dengan periode yang berbeda untuk memilih parameter optimal.
Backtest pada beberapa produk dan pilih parameter sesuai dengan kinerja masing-masing.
Mengoptimalkan strategi stop loss untuk menghindari kerugian tunggal yang terlalu besar.
Strategi ini menggabungkan beberapa indikator untuk menilai kelainan harga dan arah tren, yang secara teoritis dapat menyaring beberapa sinyal palsu. Namun, pengaturan parameter masih relatif subjektif dengan ruang untuk optimasi. Selain itu, biaya perdagangan seperti komisi dan slippage harus dipertimbangkan dalam perdagangan yang sebenarnya. Secara keseluruhan, strategi ini lebih cocok sebagai strategi trend berikut, tetapi parameter perlu dioptimalkan dan disesuaikan untuk produk yang berbeda.
/*backtest start: 2023-12-10 00:00:00 end: 2023-12-11 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Vol ST VM", overlay=true) source = close hilow = ((high - low)*100) openclose = ((close - open)*100) vol = (volume / hilow) spreadvol = (openclose * vol) VPT = spreadvol + cum(spreadvol) window_len = 28 v_len = 14 price_spread = stdev(high-low, window_len) v = spreadvol + cum(spreadvol) smooth = sma(v, v_len) v_spread = stdev(v - smooth, window_len) shadow = (v - smooth) / v_spread * price_spread out = shadow > 0 ? high + shadow : low + shadow // src = out src1=open src2=low src3=high tf =input(720) len = timeframe.isintraday and timeframe.multiplier >= 1 ? tf / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7 c = ema(src, len) plot(c,color=color.red) o = ema(src1,len) plot(o,color=color.blue) //h = ema(src3,len) //l=ema(src2,len) // col=c > o? color.lime : color.orange vis = true vl = c ll = o m1 = plot(vl, color=col, linewidth=1, transp=60) m2 = plot(vis ? ll : na, color=col, linewidth=2, transp=80) fill(m1, m2, color=col, transp=70) // vpt=ema(out,len) // INPUTS // st_mult = input(1, title = 'SuperTrend Multiplier', minval = 0, maxval = 100, step = 0.01) st_period = input(10, title = 'SuperTrend Period', minval = 1) // CALCULATIONS // up_lev = vpt - (st_mult * atr(st_period)) dn_lev = vpt + (st_mult * atr(st_period)) up_trend = 0.0 up_trend := close[1] > up_trend[1] ? max(up_lev, up_trend[1]) : up_lev down_trend = 0.0 down_trend := close[1] < down_trend[1] ? min(dn_lev, down_trend[1]) : dn_lev // Calculate trend var trend = 0 trend := close > down_trend[1] ? 1: close < up_trend[1] ? -1 : nz(trend[1], 1) // Calculate SuperTrend Line st_line = trend ==1 ? up_trend : down_trend // Plotting plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend") buy=crossover( close, st_line) and close>o sell=crossunder(close, st_line) and close<o //plotshape(crossover( close, st_line), location = location.belowbar, color = color.green,size=size.tiny) //plotshape(crossunder(close, st_line), location = location.abovebar, color = color.red,size=size.tiny) plotshape(buy, title="buy", color=color.green, style=shape.arrowup, location=location.belowbar, size=size.normal, textcolor=color.white, transp=0) //plot for buy icon plotshape(sell, title="sell", color=color.red, style=shape.arrowdown, location=location.abovebar, size=size.normal, textcolor=color.white, transp=0) //plot for sell icon // multiplier = input(title="TP", type=input.float, defval=2, minval=1) src5 = close len5 = input(title="TP length", defval=150, minval=1) offset = 0 calcSlope(src5, len5) => sumX = 0.0 sumY = 0.0 sumXSqr = 0.0 sumXY = 0.0 for i = 1 to len5 val = src5[len5-i] per = i + 1.0 sumX := sumX + per sumY := sumY + val sumXSqr := sumXSqr + per * per sumXY := sumXY + val * per slope = (len5 * sumXY - sumX * sumY) / (len5 * sumXSqr - sumX * sumX) average = sumY / len5 intercept = average - slope * sumX / len5 + slope [slope, average, intercept] var float tmp = na [s, a, i] = calcSlope(src5, len5) vwap1=(i + s * (len5 - offset)) sdev = stdev(close, len5) dev = multiplier * sdev top=vwap1+dev bott=vwap1-dev // z1 = vwap1 + dev x1 = vwap1 - dev low1 = crossover(close, x1) high1 = crossunder(close, z1) plotshape(low1, title="low", text="TP", color=color.red, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0) //plot for buy icon plotshape(high1, title="high", text="TP", color=color.green, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0) //plot for sell icon strategy.entry(id="Enter Long MA", long=true, comment="Buy", when=high1) strategy.entry(id="Short Entry MA", long=false, comment="Sell", when=low1) /////// Alerts ///// alertcondition(buy,title="buy") alertcondition(sell,title="sell") alertcondition(low1,title="sell tp") alertcondition(high1,title="buy tp")