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 +.
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.
Dengan menggabungkan status trend dan silang emas / mati dari penunjuk VI, strategi ini dapat menapis isyarat palsu dengan berkesan dan meningkatkan keuntungan.
Risiko utama strategi ini ialah:
Penunjuk VI boleh menghasilkan isyarat yang mengelirukan dalam tempoh tertentu. penapisan trend dan stop loss harus digunakan untuk mengawal risiko.
Pasaran dengan kos dagangan yang tinggi dan slippage tidak sesuai untuk strategi ini kerana ia akan mengurangkan margin keuntungan.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Mengoptimumkan parameter penunjuk VI untuk mencari kombinasi parameter yang terbaik.
Menggunakan kaedah pembelajaran mesin untuk mengenal pasti isyarat yang mengelirukan secara automatik dan meningkatkan kualiti isyarat.
Mengoptimumkan mekanisme keluar dengan kehilangan berhenti dan pengurusan wang untuk mengawal kerugian perdagangan tunggal.
Mengoptimumkan pemilihan produk perdagangan dengan memberi tumpuan kepada pasaran dengan kos perdagangan yang lebih rendah.
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)