
Strategi SMA berbasis indikator pembalikan tipe-V dibentuk dengan menghitung perbedaan mutlak antara harga saham selama 14 hari dengan harga tertinggi dan terendah hari sebelumnya dan 14 hari dengan harga tertinggi dan terendah hari sebelumnya, kemudian menghitung rata-rata bergerak sederhana selama 14 hari, masing-masing, untuk membentuk kurva VI + dan VI- .
Indikator inti dari strategi ini adalah VI+ dan VI- . Di mana VI+ mencerminkan kekuatan multihead, VI- mencerminkan kekuatan kosong . 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 gesekan pada kurva, perhitungkan rata-rata bergerak sederhana 14 hari untuk VI+ dan VI- masing-masing, dan dapatkan SMA ((VI+) dan SMA ((VI-) yang menghasilkan sinyal multihead saat melewati SMA ((VI-) di atas SMA ((VI+); menghasilkan sinyal kosong saat melewati SMA ((VI+) di bawah SMA ((VI)).
Selain itu, strategi ini juga menggabungkan status upward dan downward dari VI+ dan VI- untuk menilai tren, sehingga dilakukan penyaringan, hanya melakukan lebih banyak ketika tren turun, dan kosong ketika tren naik.
Strategi ini menggabungkan status tren dan mata uang Forex VI untuk memfilter sinyal palsu secara efektif dan meningkatkan probabilitas keuntungan. Ini memiliki sinyal yang lebih kuat dibandingkan dengan strategi rata-rata bergerak sederhana.
Strategi ini memiliki dua risiko utama:
Indikator VI akan menghasilkan sinyal yang menyesatkan dalam beberapa siklus. Pada saat ini diperlukan kombinasi trend filter dan stop loss untuk mengendalikan risiko.
Pasar dengan biaya transaksi yang tinggi dan biaya slippage tidak cocok untuk strategi ini dan akan mengurangi ruang untuk keuntungan secara signifikan.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Mengoptimalkan parameter periodik dari indikator VI, mencari kombinasi parameter yang optimal.
Menggunakan metode pembelajaran mesin untuk secara otomatis mengidentifikasi sinyal yang menyesatkan dan meningkatkan kualitas sinyal.
Mengontrol kerugian dalam satu transaksi, dengan mengoptimalkan mekanisme penarikan dengan pengelolaan kerugian dan dana.
Optimalkan varietas perdagangan, pilih pasar dengan biaya transaksi yang lebih rendah.
Strategi SMA berbasis indikator pembalikan V, dengan menghitung indikator VI + dan VI - dan menggabungkan status tren untuk menentukan waktu jual beli, adalah strategi pelacakan tren yang lebih andal. Keuntungan dari strategi ini adalah kualitas sinyal yang baik dan dapat menyaring kebisingan secara efektif. Namun, ada juga risiko tersandung dan perlu terus dioptimalkan untuk menyesuaikan diri dengan perubahan pasar.
/*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)