Strategi SMA berdasarkan penunjuk pembalikan berbentuk V


Tarikh penciptaan: 2024-02-18 15:04:34 Akhirnya diubah suai: 2024-02-18 15:04:34
Salin: 0 Bilangan klik: 648
1
fokus pada
1617
Pengikut

Strategi SMA berdasarkan penunjuk pembalikan berbentuk V

Gambaran keseluruhan

Strategi SMA pembalikan indeks jenis-V dibentuk dengan mengira perbezaan mutlak antara harga saham 14 hari tertinggi dengan harga terendah hari sebelumnya dan 14 hari terendah dengan harga tertinggi hari sebelumnya, dan kemudian mengira purata bergerak sederhana 14 hari masing-masing, untuk membentuk VI + dan VI - kurva. Apabila VI + melalui VI - sebagai isyarat berbilang kepala. Apabila VI - melalui VI + sebagai isyarat kosong.

Prinsip Strategi

Penunjuk teras strategi ini adalah VI+ dan VI- . Di mana VI + mencerminkan kekuatan multi-kepala, VI- mencerminkan kekuatan kosong. 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 menghapuskan goyangan pada kurva, rata-rata bergerak sederhana 14 hari dikira untuk VI+ dan VI- masing-masing, dan hasilnya ialah SMA ((VI+) dan SMA ((VI-)). Apabila SMA ((VI+) melalui SMA ((VI-) menghasilkan isyarat multi-kepala; apabila SMA ((VI-) melalui SMA ((VI+) menghasilkan isyarat kosong.

Selain itu, strategi ini juga menggabungkan keadaan ke atas dan ke bawah VI + dan VI - untuk menilai trend, dan dengan itu melakukan penapisan, hanya melakukan lebih banyak apabila trend ke bawah, dan kosong apabila trend ke atas.

Analisis kelebihan

Strategi ini menggabungkan keadaan trend dan mata wang VI untuk menyaring isyarat palsu dengan berkesan dan meningkatkan peluang keuntungan. Ia mempunyai isyarat yang lebih dipercayai berbanding dengan strategi purata bergerak yang mudah.

Analisis risiko

Strategi ini mempunyai dua risiko utama:

  1. Indeks VI akan menghasilkan isyarat yang menyesatkan dalam beberapa kitaran. Dalam kes ini, anda perlu menggabungkan penapisan trend dan hentikan kerugian untuk mengawal risiko.

  2. Pasaran yang mempunyai kos perbelanjaan yang lebih tinggi dan kos slippage tidak sesuai untuk strategi ini, yang akan mengurangkan ruang untuk keuntungan.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Mengoptimumkan parameter kitaran untuk penunjuk VI, mencari kombinasi parameter terbaik.

  2. Menggunakan kaedah pembelajaran mesin untuk mengenal pasti isyarat yang salah dan meningkatkan kualiti isyarat.

  3. Mekanisme keluar yang dioptimumkan dengan pengendalian kerugian dan pengurusan wang, untuk mengawal kerugian dalam satu transaksi.

  4. Optimumkan pilihan jenis perdagangan, pilih pasaran dengan kos perdagangan yang lebih rendah.

ringkaskan

Strategi SMA berdasarkan penunjuk pembalikan jenis V, dengan mengira indikator VI + dan VI - dan menggabungkan keadaan trend untuk menentukan masa pembelian dan penjualan, adalah strategi penjejakan trend yang lebih dipercayai. Strategi ini mempunyai kelebihan kerana kualiti isyaratnya baik dan dapat menyaring kebisingan dengan berkesan. Tetapi terdapat juga risiko terhalang dan perlu terus dioptimumkan untuk menyesuaikan diri dengan perubahan pasaran.

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