V-Reversal SMA Strategi

Penulis:ChaoZhang, Tarikh: 2024-02-18 15:04:34
Tag:

img

Ringkasan

Strategi V-Reversal SMA mengira perbezaan mutlak 14 hari antara harga tertinggi dan harga terendah hari sebelumnya, dan perbezaan mutlak 14 hari antara harga terendah dan harga tertinggi hari sebelumnya. Kemudian ia mengira purata bergerak mudah 14 hari mereka untuk membentuk lengkung VI + dan VI-. Isyarat beli dihasilkan apabila VI + melintasi VI-. Isyarat jual dihasilkan apabila VI- melintasi di bawah VI +.

Prinsip

Indikator utama strategi ini ialah VI+ dan VI-. VI+ mencerminkan momentum menaik manakala VI- mencerminkan momentum menurun. Rumus pengiraan khusus adalah seperti berikut:

VMP = SUM(ABS(HIGH - LOW[1]),14)  
VMM = SUM(ABS(LOW - HIGH[1]),14)
STR = SUM(ATR(1),14)
VI+ = VMP/STR
VI- = VMM/STR

Untuk menghilangkan goyangan dalam lengkung, purata bergerak mudah 14 hari dikira pada VI + dan VI- untuk mendapatkan SMA ((VI +) dan SMA ((VI-). Isyarat kenaikan dihasilkan apabila SMA ((VI +) melintasi SMA ((VI-). Isyarat penurunan dihasilkan apabila SMA ((VI-) melintasi di bawah SMA ((VI +).

Di samping itu, strategi ini juga menggabungkan status naik dan turun VI + dan VI- untuk menilai trend dan menapis isyarat, pergi panjang hanya apabila trend menurun dan pergi pendek hanya apabila trend naik.

Analisis Kelebihan

Dengan menggabungkan status trend dan silang emas / mati dari penunjuk VI, strategi ini dapat menapis isyarat palsu dengan berkesan dan meningkatkan keuntungan.

Analisis Risiko

Risiko utama strategi ini ialah:

  1. Penunjuk VI boleh menghasilkan isyarat yang mengelirukan dalam tempoh tertentu. penapisan trend dan stop loss harus digunakan untuk mengawal risiko.

  2. Pasaran dengan kos dagangan yang tinggi dan slippage tidak sesuai untuk strategi ini kerana ia akan mengurangkan margin keuntungan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter penunjuk VI untuk mencari kombinasi parameter yang terbaik.

  2. Menggunakan kaedah pembelajaran mesin untuk mengenal pasti isyarat yang mengelirukan secara automatik dan meningkatkan kualiti isyarat.

  3. Mengoptimumkan mekanisme keluar dengan kehilangan berhenti dan pengurusan wang untuk mengawal kerugian perdagangan tunggal.

  4. Mengoptimumkan pemilihan produk perdagangan dengan memberi tumpuan kepada pasaran dengan kos perdagangan yang lebih rendah.

Kesimpulan

Strategi V-Reversal SMA menentukan isyarat perdagangan dengan mengira penunjuk VI + dan VI- dan menggabungkan status trend. Ia adalah strategi trend yang agak boleh dipercayai. Kekuatannya terletak pada kualiti isyarat yang tinggi dan keupayaan untuk menapis bunyi bising. Tetapi ia juga menghadapi risiko terperangkap, memerlukan pengoptimuman berterusan untuk menyesuaikan diri dengan perubahan pasaran.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//@author=SIDD
//Sidd-Vortex strategy is using Vortex formula  to generate 4 signals Bullish1 Bullish2 and Bearish1 Bearish2.

//Bullish1 signal is getting generated when smooth ma of VIP is crossing over smooth ma of VIM and smooth VIM is falling from previous bar smooth VIM

//Bullish2 signal is getting generated when smooth ma of VIP is crossing over smooth ma of VIM and smooth VIP is rising from previous bar smooth VIP

//Bearish1 signal is getting generated when smooth ma of VIM is crossing over smooth ma of VIP and smooth VIP is falling from previous bar smooth VIP

//Bearish2 signal is getting generated when smooth ma of VIM is crossing over smooth ma of VIP and smooth VIM is rising from previous bar smooth VIM

//This strategy can be converted into study un-commenting the plotshape and 15th line strategy replace with study and overlay=false

strategy(title = "SIDD-Vortex", shorttitle="SIDD-VORTEX", format=format.price, precision=4,overlay=true)
period_ = input(14, title="Period", minval=2)
len = input(14, minval=1, title="WMA Length")

VMP = sum( abs( high - low[1]), period_ ) // sum of absolute current high and previous low with 14 period default
VMM = sum( abs( low - high[1]), period_ ) // sum of absolute current low and previous high with 14 period default
STR = sum( atr(1), period_ )  //sum of daily atr for 14 days
VIP = VMP / STR
VIM = VMM / STR

simpleMAVIP=wma(VIP, len) 
smmaVIP = 0.0
smmaVIP := na(smmaVIP[1]) ? simpleMAVIP : (smmaVIP[1] * (len - 1) + VIP) / len // finding the Smoothing average 

simpleMAVIM=wma(VIM, len) 
smmaVIM = 0.0
smmaVIM := na(smmaVIM[1]) ? simpleMAVIM : (smmaVIM[1] * (len - 1) + VIM) / len // finding the Smoothing average 


risingVIP = rising(smmaVIP, 1)
fallingVIP = falling(smmaVIP, 1)

lineColorVIP = smmaVIP > 0.95 and risingVIP  ? color.lime : smmaVIP > 0.95 ? #d65240 : smmaVIP < 0.95 and fallingVIP ? color.red : color.olive

risingVIM = rising(VIM, 1)
fallingVIM = falling(VIM, 1)

lineColorVIM = smmaVIM > 0.95 and risingVIM  ? color.red : smmaVIM > 0.95 ? color.olive : smmaVIM < 0.95 and fallingVIM ? color.lime : #d65240

plot(VIP, title="VI +", color=lineColorVIP)
plot(VIM, title="VI -", color=lineColorVIM) 

longCondition = crossover(smmaVIP,smmaVIM)
shortCondition = crossover(smmaVIM,smmaVIP)


if (longCondition and fallingVIM)
    strategy.entry("Bullish1", strategy.long)
if (shortCondition and fallingVIP)
    strategy.entry("Bearish1", strategy.short)

if (longCondition and risingVIP)
    strategy.entry("Bullish2", strategy.long)
if (shortCondition and risingVIM)
    strategy.entry("Bearish2", strategy.short)
    
//plotshape(longCondition and fallingVIM, color=color.lime, location=location.belowbar, style=shape.triangleup,size= size.large,text="Bullish",offset=0,textcolor=color.white)
//plotshape(longCondition and risingVIP, color=color.lime, location=location.belowbar, style=shape.labelup,size= size.large,text="Bullish",offset=0,textcolor=color.white)
//plotshape(Diff > 0 and direction>0, color=color.lime, location=location.belowbar, style=shape.arrowup,size= size.normal,offset=0)
    
//plotshape(shortCondition and fallingVIP  , color=color.red, location=location.abovebar, style=shape.triangledown, size= size.large,text="Bearish",offset=0,textcolor=color.white)
//plotshape( shortCondition and risingVIM  , color=color.red, location=location.abovebar, style=shape.labeldown, size= size.large,text="Bearish",offset=0,textcolor=color.white)



//band1 = hline(1.0  , title="Upper Line", linestyle=hline.style_dashed, linewidth=3, color=color.red)
//band0 = hline(0.5, title="Lower Line", linestyle=hline.style_dashed, linewidth=3, color=color.lime)
//fill(band1, band0, color=color.purple, transp=70)




Lebih lanjut