RafaelZioni Momentum Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-12-13 14:59:34
Tag:

img

Gambaran umum

Strategi ini didasarkan pada indikator SuperB yang dibuat oleh Rafael Zioni. Ini mengidentifikasi tren melalui indikator momentum dan secara otomatis melacak tren naik dan turun, yang termasuk dalam strategi tren berikut.

Logika Strategi

Strategi ini menggunakan indikator SuperB yang dibuat oleh RafaelZioni untuk mengidentifikasi tren harga. Indikator SuperB didasarkan pada rentang fluktuasi harga, volume perdagangan dan perbedaan harga antara harga buka dan tutup untuk menghitung indikator SpreadVol. Indikator SpreadVol mencerminkan karakteristik momentum harga. Strategi ini menggunakan rata-rata bergerak dan standar deviasi indikator SpreadVol untuk menentukan ambang batas. Ketika SpreadVol berada di atas rel atas, itu adalah tren kenaikan. Ketika di bawah rel bawah, itu adalah tren penurunan.

Strategi ini menilai pembalikan tren secara real time dengan melacak harga tinggi dan rendah. Dalam tren naik, titik tertinggi baru terus dibuat, menunjukkan kenaikan yang berkelanjutan. Ketika harga pecah di bawah harga maksimum dengan persentase tertentu, itu berubah menjadi tren menurun. Metode penilaian serupa dalam tren menurun. Ini memungkinkan penilaian tepat waktu titik pembalikan tren.

Keuntungan

Strategi ini menggabungkan indikator momentum untuk menentukan arah tren, dan kemudian melacak harga tertinggi dan terendah secara real time, yang dapat dengan cepat mengidentifikasi arah tren baru dan secara otomatis melacak tren naik dan turun, menghindari risiko kehilangan titik beli dan titik overbuy.

Indikator RafaelZioni's SuperB mencerminkan kekuatan dan kecepatan perubahan harga dan dapat secara akurat menentukan tren sejati, secara efektif menyaring pecah palsu.

Ini hanya melakukan posisi panjang untuk mengurangi biaya perdagangan dan kerugian slippage yang disebabkan oleh operasi yang sering.

Risiko

Strategi ini rentan terhadap beberapa perdagangan palsu di daerah konsolidasi sebelum pecah. Parameter dapat dioptimalkan untuk mengurangi sensitivitas ke daerah konsolidasi.

Garis stop loss cenderung dipicu selama kejutan tren.

Ketika beralih dari posisi long ke posisi short, posisi harus ditukar tepat waktu.

Saran Optimalisasi

Mengoptimalkan parameter indikator SuperB untuk menemukan kombinasi parameter yang lebih baik dan meningkatkan stabilitas indikator.

Mengoptimalkan faktor rasio pelacakan harga tertinggi dan terendah untuk mengurangi sensitivitas ke area konsolidasi.

Meningkatkan kriteria waktu ditahan untuk menghindari berhenti selama kejutan tren.

Ringkasan

Strategi ini menggunakan indikator SuperB yang dikembangkan oleh RafaelZioni untuk menentukan arah tren harga, dan menilai pembalikan tren dengan melacak harga tinggi dan rendah secara real time, mewujudkan pelacakan otomatis tren naik dan turun, menghindari kehilangan titik beli dan risiko overbuy. Ini termasuk strategi momentum dengan karakteristik mengikuti tren. Strategi ini menggabungkan indikator momentum untuk menentukan tren sejati dengan aturan yang sederhana dan jelas. Ini dapat ditingkatkan dan dioptimalkan lebih lanjut sesuai dengan saran optimasi dan layak untuk diteliti dan diterapkan.


/*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')

Lebih banyak