Strategi ini berdasarkan penunjuk SuperB yang dicipta oleh RafaelZioni. Ia mengenal pasti trend melalui penunjuk momentum dan secara automatik mengesan trend menaik dan menurun, yang tergolong dalam strategi trend berikut.
Strategi ini menggunakan penunjuk SuperB yang dicipta oleh RafaelZioni untuk mengenal pasti trend harga. Penunjuk SuperB berdasarkan julat turun naik harga, jumlah dagangan dan perbezaan harga antara harga terbuka dan ditutup untuk mengira penunjuk SpreadVol. Penunjuk SpreadVol mencerminkan ciri momentum harga. Strategi ini menggunakan purata bergerak dan penyimpangan standard penunjuk SpreadVol untuk menentukan ambang. Apabila SpreadVol di atas rel atas, ia adalah trend menaik. Apabila di bawah rel bawah, ia adalah trend menurun.
Strategi ini menilai pembalikan trend dalam masa nyata dengan mengesan harga tinggi dan rendah. Dalam trend menaik, tahap tertinggi baru terus dibuat, menunjukkan kenaikan yang berterusan. Apabila harga memecahkan di bawah harga maksimum dengan peratusan tertentu, ia berubah menjadi trend menurun. Kaedah penghakiman sama dalam trend menurun. Ini membolehkan penghakiman tepat pada masanya titik pembalikan trend.
Strategi ini menggabungkan penunjuk momentum untuk menentukan arah trend, dan kemudian mengesan harga tertinggi dan terendah dalam masa nyata, yang dapat dengan cepat mengenal pasti arah trend baru dan secara automatik mengesan trend menaik dan menurun, mengelakkan risiko kehilangan titik beli dan titik overbuy.
Indikator RafaelZioni's SuperB mencerminkan kekuatan dan kelajuan perubahan harga dan dapat menentukan trend sebenar dengan tepat, dengan berkesan menapis pecah palsu.
Ia hanya melakukan kedudukan panjang untuk mengurangkan kos dagangan dan kerugian yang disebabkan oleh operasi yang kerap.
Strategi ini terdedah kepada pelbagai perdagangan palsu di kawasan penyatuan sebelum pecah. Parameter boleh dioptimumkan untuk mengurangkan kepekaan terhadap kawasan penyatuan.
Baris stop loss cenderung dicetuskan semasa kejutan trend. Julat stop loss boleh santai dengan sewajarnya untuk tempoh tahan yang lebih lama.
Apabila beralih antara panjang dan pendek, kedudukan perlu ditukar dengan tepat pada masanya. Jika beralih tidak tepat pada masanya, ia boleh membawa kepada kerugian yang lebih besar.
Mengoptimumkan parameter penunjuk SuperB untuk mencari kombinasi parameter yang lebih baik dan meningkatkan kestabilan penunjuk.
Mengoptimumkan faktor nisbah penjejakan harga tertinggi dan terendah untuk mengurangkan kepekaan terhadap kawasan penyatuan.
Meningkatkan kriteria masa tahan untuk mengelakkan berhenti semasa kejutan trend.
Strategi ini menggunakan penunjuk SuperB yang dibangunkan oleh RafaelZioni untuk menentukan arah trend harga, dan menilai pembalikan trend dengan mengesan harga tinggi dan rendah dalam masa nyata, merealisasikan pengesanan automatik trend menaik dan menurun, mengelakkan kehilangan titik beli dan risiko overbuy. Ia tergolong dalam strategi momentum dengan ciri trend berikut. Strategi ini menggabungkan penunjuk momentum untuk menentukan trend sebenar dengan peraturan yang mudah dan jelas. Ia boleh ditingkatkan dan dioptimumkan lagi mengikut cadangan pengoptimuman dan bernilai penyelidikan dan penerapan.
/*backtest start: 2023-01-01 00:00:00 end: 2023-08-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(shorttitle='SuperB', title='SuperB By RafaelZioni', overlay=true) long_only = input(title="Only Long?", defval=true) 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) vp = spreadvol + cum(spreadvol) smooth = sma(vp, v_len) v_spread = stdev(vp - smooth, window_len) shadow = (vp - smooth) / v_spread * price_spread out = shadow > 0 ? high + shadow : low + shadow // len = input(10) vpt=ema(out,len) // INPUTS // st_mult = input(1, title = ' Multiplier', minval = 0, maxval = 100, step = 0.01) st_period = input(10, title = ' Period', minval = 1) // CALCULATIONS // up= vpt - (st_mult * atr(st_period)) dn = vpt + (st_mult * atr(st_period)) c5=close // factor = input(title="Factor", defval=0.05, minval=0.01, maxval=5, step=0.01, type=input.float) hb = 0.00 ,hb := nz(hb[1]) hl = 0.000, hl := nz(hl[1]) lb = 0.00 ,lb := nz(lb[1]) l1 = 0.000,l1 := nz(l1[1]) c = 0 c := nz(c[1]) + 1 trend = 0,trend := nz(trend[1]),n = dn,x =up if barstate.isfirst c := 0 lb := n hb := x l1 := c5 hl := c5 hl if c == 1 if x >= hb[1] hb := x hl := c5 trend := 1 trend else lb := n l1 := c5 trend := -1 trend if c > 1 if trend[1] > 0 hl := max(hl[1], c5) if x >= hb[1] hb := x hb else if n < hb[1] - hb[1] * factor lb := n l1 := c5 trend := -1 trend else l1 := min(l1[1], c5 ) if n <= lb[1] lb := n lb else if x > lb[1] + lb[1] * factor hb := x hl := c5 trend := 1 trend v = trend == 1 ? hb : trend == -1 ? lb : na plot(v, color=trend == 1 ? color.blue : color.yellow, style=plot.style_circles, linewidth=1, title="trend", transp=0, join=true) // long = trend == 1 and trend[1] == -1 short = trend == -1 and trend[1] == 1 // last_long = 0.0 last_short = 0.0 last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) buy = crossover(last_long, last_short) sell = crossover(last_short, last_long) /////////////// Positions ////////////// if long strategy.entry("Buy", long=true) if long_only == false strategy.close("Sell") if short if long_only == false strategy.entry("Sell", long=false) strategy.close("Buy") /////////////// Plotting /////////////// plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0) //plot for buy icon plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0) /////////////// Alerts /////////////// alertcondition(buy, title='buy', message='Buy') alertcondition(sell, title='sell', message='Sell')