V-Reversal SMA Strategi

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

img

Gambaran umum

Strategi V-Reversal SMA menghitung perbedaan absolut 14 hari antara harga tertinggi dan harga terendah hari sebelumnya, dan perbedaan absolut 14 hari antara harga terendah dan harga tertinggi hari sebelumnya. Kemudian menghitung rata-rata bergerak sederhana 14 hari mereka untuk membentuk kurva VI + dan VI-. Sinyal beli dihasilkan ketika VI + melintasi VI-. Sinyal jual dihasilkan ketika VI- melintasi di bawah VI +.

Prinsip

Indikator inti dari strategi ini adalah VI+ dan VI-. VI+ mencerminkan momentum bullish sementara VI- mencerminkan momentum bearish. Rumus perhitungan spesifik adalah sebagai 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 osilasi dalam kurva, rata-rata bergerak sederhana 14 hari dihitung pada VI+ dan VI- untuk mendapatkan SMA ((VI+) dan SMA ((VI-). Sinyal bullish dihasilkan ketika SMA ((VI+) melintasi SMA ((VI-). Sinyal bearish dihasilkan ketika SMA ((VI-) melintasi di bawah SMA ((VI+).

Selain itu, strategi ini juga menggabungkan status naik dan turun dari VI + dan VI- untuk menilai tren dan menyaring sinyal, pergi panjang hanya ketika tren menurun dan pergi pendek hanya ketika tren naik.

Analisis Keuntungan

Dengan menggabungkan status tren dan golden/dead cross dari indikator VI, strategi ini dapat secara efektif menyaring sinyal palsu dan meningkatkan profitabilitas.

Analisis Risiko

Risiko utama dari strategi ini adalah:

  1. Indikator VI dapat menghasilkan sinyal yang menyesatkan pada periode tertentu.

  2. Pasar dengan biaya perdagangan dan slippage yang tinggi tidak cocok untuk strategi ini karena akan sangat mengurangi margin keuntungan.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Optimalkan parameter indikator VI untuk menemukan kombinasi parameter terbaik.

  2. Menggunakan metode pembelajaran mesin untuk secara otomatis mengidentifikasi sinyal yang menyesatkan dan meningkatkan kualitas sinyal.

  3. Mengoptimalkan mekanisme keluar dengan stop loss dan manajemen uang untuk mengendalikan kerugian perdagangan tunggal.

  4. Mengoptimalkan pemilihan produk perdagangan dengan fokus pada pasar dengan biaya perdagangan yang lebih rendah.

Kesimpulan

Strategi V-Reversal SMA menentukan sinyal perdagangan dengan menghitung indikator VI+ dan VI- dan menggabungkan status tren. Ini adalah strategi tren yang relatif dapat diandalkan. Kekuatannya terletak pada kualitas sinyal yang tinggi dan kemampuan untuk menyaring kebisingan.


/*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 banyak