Trend Mengikuti Strategi Momentum RafaelZioni


Tarikh penciptaan: 2023-12-13 14:59:34 Akhirnya diubah suai: 2023-12-13 14:59:34
Salin: 0 Bilangan klik: 733
1
fokus pada
1621
Pengikut

Trend Mengikuti Strategi Momentum RafaelZioni

Gambaran keseluruhan

Strategi ini berdasarkan kepada indikator SuperB Rafael Zioni, mengenal pasti trend melalui indikator momentum, untuk menjejaki secara automatik trend menaik dan turun, dan merupakan strategi jenis pengesanan trend.

Prinsip Strategi

Strategi ini menggunakan indikator SuperB oleh Rafael Zioni untuk mengenal pasti trend harga. Indikator SuperB adalah SpreadVol yang dikira berdasarkan rentang turun naik harga, jumlah transaksi dan perbezaan antara harga pembukaan dan harga penutupan. Indikator SpreadVol mencerminkan ciri-ciri pergerakan harga.

Strategi ini membuat keputusan mengenai perubahan trend secara real-time dengan mengesan harga tertinggi dan harga terendah. Dalam trend menaik, harga tertinggi sentiasa tinggi dan dinilai sebagai terus meningkat; apabila harga jatuh di bawah paras tertentu dari harga tertinggi, ia beralih ke trend menurun. Dalam trend menurun, kaedah penilaian serupa.

Kelebihan

Strategi ini digabungkan dengan indikator momentum untuk menentukan arah trend, dan kemudian dengan pelacakan harga tertinggi dan terendah dalam masa nyata, dapat dengan cepat mengenal pasti arah trend baru, untuk mengikuti trend naik dan turun secara automatik, dan mengelakkan risiko kehilangan titik beli dan titik beli.

Penunjuk SuperB RafaelZioni mencerminkan kekuatan dan kelajuan perubahan harga, dapat menilai tren sebenar dengan tepat, menapis penembusan palsu dengan berkesan. Peraturan penilaian sederhana dan jelas, mudah difahami dan disahkan.

Hanya melakukan kedudukan berbilang kepala, mengurangkan kos perdagangan dan kehilangan titik tergelincir yang disebabkan oleh operasi yang kerap.

Risiko

Strategi ini mudah menyebabkan banyak kesalahan perdagangan di kawasan penukaran sebelum penembusan. Ia boleh mengurangkan kepekaan kawasan penukaran dengan mengoptimumkan parameter.

Apabila trend bergoyang, garis hentian mudah dicetuskan. Anda boleh meluaskan julat hentian anda dengan betul untuk memegang kedudukan lebih lama.

Apabila bertukar ruang, anda perlu bertukar kedudukan tepat pada masanya. Jika bertukar tidak cukup tepat pada masanya, ia boleh membawa kerugian yang lebih besar.

Cadangan Optimasi

Mengoptimumkan parameter untuk penunjuk SuperB, mencari kombinasi parameter yang lebih baik, meningkatkan kestabilan penunjuk.

Mengoptimumkan faktor perkadaran untuk mengesan harga tertinggi dan harga terendah, mengurangkan sensitiviti tindak balas terhadap kawasan yang disusun.

Meningkatkan piawaian tempoh pegangan untuk mengelakkan kerugian semasa kejatuhan.

ringkaskan

Strategi ini menggunakan indikator SuperB RafaelZioni untuk menentukan arah trend harga, dan dengan mengesan harga tertinggi dan harga terendah dalam masa nyata untuk menentukan perubahan trend, untuk menjejaki trend naik dan turun secara automatik, untuk mengelakkan risiko overbought, adalah strategi momentum jenis trend tracking. Strategi ini digabungkan dengan indikator momentum untuk menentukan trend sebenar, peraturan penghakiman mudah dan jelas, boleh diperbaiki dan dioptimumkan lebih lanjut berdasarkan cadangan pengoptimuman, bernilai penyelidikan dan aplikasi.

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