Stratégie V-inversion SMA

Auteur:ChaoZhang est là., Date: 2024-02-18 15h04 et 34 min
Les étiquettes:

img

Résumé

La stratégie V-Reversal SMA calcule la différence absolue de 14 jours entre le prix le plus élevé et le prix le plus bas de la journée précédente, et la différence absolue de 14 jours entre le prix le plus bas et le prix le plus élevé de la journée précédente.

Principe

Les indicateurs de base de cette stratégie sont VI+ et VI-. VI+ reflète une dynamique haussière tandis que VI- reflète une dynamique baissière.

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 dans les courbes, des moyennes mobiles simples de 14 jours sont calculées sur VI+ et VI- pour obtenir SMA(VI+) et SMA(VI-). Un signal haussier est généré lorsque SMA(VI+) traverse SMA(VI-). Un signal baissier est généré lorsque SMA(VI-) traverse en dessous de SMA(VI+).

En outre, la stratégie combine également l'état ascendant et descendant de VI+ et VI- pour juger de la tendance et filtrer les signaux, en allant long seulement lorsque la tendance est à la baisse et en allant court seulement lorsque la tendance est à la hausse.

Analyse des avantages

En combinant l'état de la tendance et la croix dorée / morte de l'indicateur VI, cette stratégie peut filtrer efficacement les faux signaux et améliorer la rentabilité.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. L'indicateur VI peut générer des signaux trompeurs dans certaines périodes.

  2. Les marchés où les coûts de négociation et les slippages sont élevés ne conviennent pas à cette stratégie, car elle réduirait considérablement la marge bénéficiaire.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimiser les paramètres de l'indicateur VI pour trouver la meilleure combinaison de paramètres.

  2. Utiliser des méthodes d'apprentissage automatique pour identifier automatiquement les signaux trompeurs et améliorer la qualité du signal.

  3. Optimiser les mécanismes de sortie avec le stop loss et la gestion de l'argent pour contrôler les pertes d'une seule transaction.

  4. Optimiser la sélection des produits commerciaux en se concentrant sur les marchés à faibles coûts commerciaux.

Conclusion

La stratégie V-Reversal SMA détermine les signaux de trading en calculant les indicateurs VI+ et VI- et en combinant l'état de la tendance.


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




Plus de