Strategi ini berdasarkan kepada penunjuk Super Trend dan penunjuk saluran harga, digabungkan dengan isyarat purata bergerak untuk perdagangan.
Mengira penunjuk Super Trend. Rel atas dan bawah adalah harga semasa ditambah / tolak N kali penunjuk ATR masing-masing. Apabila harga lebih tinggi daripada rel atas, ia bullish. Apabila harga lebih rendah daripada rel bawah, ia bearish.
Mengira penunjuk saluran harga. Garis saluran harga adalah M kali deviasi standard N-hari harga. Harga yang lebih tinggi / lebih rendah daripada garis saluran dianggap keadaan abnormal.
Mengira purata bergerak. Ambil garis purata harga terbuka, harga tutup dan Super Trend masing-masing.
Menghasilkan isyarat perdagangan:
Isyarat Beli: Harga tutup melintasi di atas garis Super Trend dan lebih tinggi daripada purata pergerakan harga terbuka.
Isyarat jual: Harga tutup melintasi di bawah garis Super Trend dan lebih rendah daripada purata pergerakan harga terbuka.
Tetapkan stop loss dan ambil saluran harga keuntungan.
Menggabungkan beberapa penunjuk mengelakkan isyarat palsu.
Menggunakan saluran harga untuk menilai keadaan harga yang tidak normal boleh menapis beberapa titik masuk yang tidak diingini.
Purata bergerak digabungkan dengan menilai arah trend mengelakkan perdagangan terhadap trend.
Menetapkan stop loss dan mengambil jangkaan keuntungan mengawal risiko.
Tetapan parameter terlalu subjektif dan memerlukan pengoptimuman.
Julat stop loss dan mengambil keuntungan boleh ditetapkan terlalu luas atau terlalu sempit.
Parameter saluran harga mungkin tidak sesuai untuk semua produk, ujian berasingan diperlukan.
Kerugian yang ketara boleh berlaku semasa perubahan trend yang drastik.
Uji dan optimumkan parameter untuk mencari kombinasi yang optimum.
Uji purata bergerak dengan tempoh yang berbeza untuk memilih parameter optimum.
Ujian semula pada pelbagai produk dan pilih parameter mengikut prestasi masing-masing.
Mengoptimumkan strategi stop loss untuk mengelakkan kerugian tunggal yang terlalu besar.
Strategi ini menggabungkan beberapa penunjuk untuk menilai kelainan harga dan arah trend, yang secara teori boleh menapis beberapa isyarat palsu. Walau bagaimanapun, tetapan parameter masih agak subjektif dengan ruang untuk pengoptimuman. Di samping itu, kos dagangan seperti komisen dan slippage harus dipertimbangkan dalam perdagangan sebenar. Secara keseluruhan, strategi ini lebih sesuai sebagai strategi trend berikut, tetapi parameter perlu dioptimumkan dan diselaraskan untuk produk yang berbeza.
/*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")