Stratégie de trading inversée à double moyenne mobile


Date de création: 2023-12-04 16:39:13 Dernière modification: 2023-12-04 16:39:13
Copier: 0 Nombre de clics: 554
1
Suivre
1619
Abonnés

Stratégie de trading inversée à double moyenne mobile

Aperçu

Il s’agit d’une stratégie de négociation inversée basée sur des indices de doubles moyennes mobiles. La stratégie consiste à calculer des moyennes mobiles de deux ensembles de paramètres différents pour juger de la tendance des prix en fonction de leur changement de direction et à définir des paramètres de sensibilité au changement de direction pour générer un signal de négociation.

Principe de stratégie

La stratégie permet de choisir le type de moyenne mobile (SMA, EMA, etc.), la longueur et la source de prix (prix de clôture, prix typique, etc.). Après avoir calculé les deux ensembles de moyennes mobiles, la direction est déterminée en définissant le paramètre de réaction.

De plus, la stratégie définit les conditions de changement de direction et de hausse/baisse continue, afin d’éviter de produire de faux signaux. Et visualise le statut de baisse des prix avec différentes couleurs. La ligne movavg est affichée en vert lorsque les prix sont en hausse continue et en rouge lorsqu’ils sont en baisse.

Analyse des avantages

Cette stratégie de double movavg combinée à des lignes rapides et lentes avec différents paramètres permet de filtrer efficacement le bruit des marchés de négociation et d’identifier les tendances les plus fortes. Comparée à la stratégie de simple movavg, elle réduit les faux signaux et permet d’entrer en jeu lorsque la tendance est plus claire, ce qui donne un taux de victoire plus élevé.

Les paramètres de sensibilité réaction permettent à la stratégie de s’adapter de manière flexible à différents cycles et variétés. Le processus de stratégie est intuitif, simple à comprendre et à optimiser.

Analyse des risques

Le plus grand risque de cette stratégie est de perdre ou de faire une position inversée en manquant le point de basculement. Cela est lié à la configuration du paramètre de réaction. Si la réaction est trop petite, il est facile de produire un mauvais signal; si la réaction est trop grande, il est possible de manquer un bon point d’entrée.

Un autre risque est de ne pas pouvoir contrôler efficacement les pertes. Lorsque les prix fluctuent fortement, il est impossible de s’arrêter rapidement, ce qui entraîne une augmentation des pertes. Cela nécessite une stratégie d’arrêt des pertes pour les contrôler.

Direction d’optimisation

L’optimisation de cette stratégie se concentre principalement sur la réaction des paramètres, le choix du type et de la longueur des moyennes mobiles. Les réactions peuvent être augmentées de manière appropriée pour réduire les signaux erronés. Les paramètres des moyennes mobiles peuvent être testés selon différents cycles et variétés pour choisir la combinaison qui produit le signal le plus optimal.

Il est également possible d’optimiser les signaux de trading en les associant à d’autres indicateurs auxiliaires tels que le RSI, le KD, etc. ou d’utiliser des méthodes d’apprentissage automatique pour sélectionner automatiquement les paramètres.

Résumer

Cette stratégie est plus simple et pratique dans son ensemble. Elle permet d’identifier efficacement le renversement de tendance par un double filtrage des moyennes mobiles et de générer un signal de négociation. C’est une stratégie de suivi de tendance typique.

Code source de la stratégie
/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle="MA_color strategy", title="Moving Average Color", overlay=true)

// === INPUTS

ma_type   = input(defval="HullMA", title="MA Type: ", options=["SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "ZEMA", "TMA", "SSMA"])
ma_len    = input(defval=32, title="MA Lenght", minval=1)
ma_src    = input(close, title="MA Source")
reaction  = input(defval=2, title="MA Reaction", minval=1)

// SuperSmoother filter
// © 2013  John F. Ehlers
variant_supersmoother(src,len) =>
    a1 = exp(-1.414*3.14159 / len)
    b1 = 2*a1*cos(1.414*3.14159 / len)
    c2 = b1
    c3 = (-a1)*a1
    c1 = 1 - c2 - c3
    v9 = 0.0
    v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2])
    v9
    
variant_smoothed(src,len) =>
    v5 = 0.0
    v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len
    v5

variant_zerolagema(src,len) =>
    ema1 = ema(src, len)
    ema2 = ema(ema1, len)
    v10 = ema1+(ema1-ema2)
    v10
    
variant_doubleema(src,len) =>
    v2 = ema(src, len)
    v6 = 2 * v2 - ema(v2, len)
    v6

variant_tripleema(src,len) =>
    v2 = ema(src, len)
    v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)              
    v7
    
variant(type, src, len) =>
    type=="EMA"     ? ema(src,len) : 
      type=="WMA"   ? wma(src,len): 
      type=="VWMA"  ? vwma(src,len) : 
      type=="SMMA"  ? variant_smoothed(src,len) : 
      type=="DEMA"  ? variant_doubleema(src,len): 
      type=="TEMA"  ? variant_tripleema(src,len): 
      type=="HullMA"? wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) :
      type=="SSMA"  ? variant_supersmoother(src,len) : 
      type=="ZEMA"  ? variant_zerolagema(src,len) : 
      type=="TMA"   ? sma(sma(src,len),len) : sma(src,len)


// === Moving Average
ma_series = variant(ma_type,ma_src,ma_len)

direction = 0
direction := rising(ma_series,reaction) ? 1 : falling(ma_series,reaction) ? -1 : nz(direction[1])
change_direction= change(direction,1)
change_direction1= change(direction,1)

pcol = direction>0 ? lime : direction<0 ? red : na
plot(ma_series, color=pcol,style=line,join=true,linewidth=3,transp=10,title="MA PLOT")

/////// Alerts ///////

alertcondition(change_direction,title="Change Direction MA",message="Change Direction MA")


longCondition = direction>0
shortCondition = direction<0
if (longCondition)
    strategy.entry("BUY", strategy.long)
if (shortCondition)
    strategy.entry("SELL", strategy.short)