
Les stratégies SMA basées sur des indices inversés de type V sont formées en calculant la différence absolue entre le prix le plus élevé de 14 jours et le prix le plus bas du jour précédent, et la différence absolue entre le prix le plus bas de 14 jours et le prix le plus élevé du jour précédent, et en calculant respectivement les moyennes mobiles simples de 14 jours. Les courbes VI+ et VI- sont des signaux à plusieurs têtes lorsque VI- est traversé par VI+.
Les indicateurs centraux de cette stratégie sont VI+ et VI- ◄ dont VI+ reflète la force de multiples têtes et VI- la force de tête vide ◄ dont la formule de calcul est la suivante:
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
Pour éliminer les oscillations de la courbe, une moyenne mobile simple de 14 jours est calculée pour VI+ et VI- respectivement, obtenant les signaux SMA ((VI+) et SMA ((VI-)) qui produisent un signal de tête blanche lorsque SMA ((VI-) est traversé par SMA ((VI+) et un signal de tête blanche lorsque SMA ((VI+) est traversé par SMA ((VI-)).
En outre, la stratégie utilise les valeurs de VI+ et de VI- pour déterminer la tendance à la hausse et à la baisse, afin de filtrer les tendances en faisant plus lorsque la tendance est à la baisse et moins lorsque la tendance est à la hausse.
Cette stratégie, combinée à l’état de la tendance et à la fourche dorée de l’indicateur VI, permet de filtrer efficacement les faux signaux et d’améliorer la probabilité de gagner. Comparée à une simple stratégie de moyenne mobile, son signal de rupture est plus fiable.
Cette stratégie présente deux risques majeurs:
L’indicateur VI peut générer des signaux trompeurs pendant certains cycles. Il est nécessaire de combiner le filtrage de tendance et le stop loss pour contrôler le risque.
Les marchés où les frais de transaction et le coût des points de glissement sont élevés ne conviennent pas à cette stratégie et réduisent considérablement la marge de profit.
Cette stratégie peut être optimisée dans les domaines suivants:
Optimiser les paramètres périodiques de l’indicateur VI pour trouver la combinaison optimale de paramètres.
L’utilisation de l’apprentissage automatique pour identifier les signaux trompeurs améliore la qualité du signal.
La gestion des pertes est assurée par un système d’optimisation des sorties, combiné à des dispositifs de gestion des pertes et de gestion des fonds, permettant de contrôler les pertes de transactions individuelles.
Optimiser le choix des variétés de transactions, en choisissant des marchés où les coûts de transaction sont moins élevés.
La stratégie SMA basée sur des indicateurs de retournement de type V, qui permet de déterminer le moment d’achat et de vente en calculant les indicateurs VI+ et VI- en combinaison avec l’état de la tendance, est une stratégie de suivi de tendance plus fiable. L’avantage de cette stratégie réside dans la qualité du signal et le filtrage efficace du bruit.
/*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)