Stratégie de croisement des moyennes mobiles

Auteur:ChaoZhang est là., Date: 2023-11-03 17h23 et 54 min
Les étiquettes:

img

Résumé

La stratégie de croisement des moyennes mobiles est une stratégie d'analyse technique très classique et couramment utilisée. L'idée de base de cette stratégie est d'utiliser le croisement entre les moyennes mobiles de différentes périodes comme signaux de trading. Lorsque la moyenne mobile à court terme franchit au-dessus de la moyenne mobile à long terme depuis le bas, un signal d'achat est généré. Lorsque la moyenne mobile à court terme franchit au-dessous de la moyenne mobile à long terme depuis le haut, un signal de vente est généré.

La logique de la stratégie

Cette stratégie utilise des données d'entrée pour définir le type (SMA, EMA, WMA, RMA) et la période de la moyenne mobile, ainsi que la plage de temps de backtesting.

Différents types de moyennes mobiles sont calculés dans la fonction variante.

Lorsque le prix de clôture dépasse ma, un signal d'achat est généré.

Pour définir un stop loss, on calcule la moyenne réelle de la fourchette atr sur 14 périodes.

La logique spécifique d'entrée et de sortie est la suivante:

Entrée longue: croisements rapprochés au-dessus de ma et dans la plage de temps de backtest, point de stop loss est le point d'entrée proche
Sortie longue: fermeture des croisements inférieurs à ma moins 2 fois atr pour la sortie stop loss ou prix le plus élevé dépasse le point d'entrée close plus 2 fois atr pour la sortie take profit

Entrée courte: croix de fermeture inférieure à ma et dans la plage de temps de backtest, point stop loss est le point d'entrée de fermeture
Sortie courte: fermeture des croisements au-dessus de ma plus 2 fois atr pour la sortie stop loss ou fermeture du prix le plus bas inférieur au point d'entrée moins 2 fois atr pour la sortie take profit

Les avantages de la stratégie

  1. L'idée stratégique est simple et claire, facile à comprendre et à mettre en œuvre
  2. Largement utilisé, adapté à différents marchés et produits
  3. Paramètres flexibles, type et période de moyenne mobile réglables
  4. Utiliser l'ATR stop loss pour aider à contrôler les risques

Risques liés à la stratégie

  1. Les stratégies de moyenne mobile ont tendance à générer des transactions fréquentes et des arrêts de perte, ce qui réduit le potentiel de profit
  2. Dans les marchés très volatils, les moyennes mobiles peuvent générer des signaux trompeurs
  3. La plage d'arrêt des pertes ATR pourrait être trop large ou trop étroite, ne permettant pas d'éviter d'énormes pertes

Pour faire face aux risques, des optimisations peuvent être apportées dans les aspects suivants:

  1. Ajustez la période de moyenne mobile, utilisez des moyennes mobiles à plus longue période
  2. Ajouter des conditions de filtrage pour éviter les transactions fréquentes sur les marchés volatils
  3. Optimiser les paramètres ATR ou utiliser d'autres méthodes de stop loss
  4. Combiner les indicateurs de tendance pour déterminer la tendance globale, éviter les transactions contre tendance

Directions d'optimisation

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

  1. Ajouter des conditions de filtre telles que le volume, la volatilité pour éviter les ruptures irrationnelles
  2. Utiliser un ATR adaptatif de manière à ce que la fourchette de stop loss change avec la volatilité du marché
  3. Combiner Stoch, RSI et autres indicateurs pour une confirmation multifactorielle afin d'améliorer la qualité du signal
  4. Ajouter la détermination de tendance pour éviter les transactions contre-tendance
  5. Utilisez le temps de sortie pour éviter de retenir les perdants trop longtemps
  6. Optimiser les paramètres de la moyenne mobile pour trouver les meilleures combinaisons de paramètres

Résumé

La stratégie de croisement des moyennes mobiles est une stratégie d'analyse technique très typique et couramment utilisée. L'idée de base de la stratégie est simple et facile à mettre en œuvre, adaptée à divers marchés, et est l'une des stratégies de trading quantitatif d'entrée de gamme. Cependant, la stratégie présente également des problèmes tels que la génération de signaux fréquents et la propension à arrêter les pertes. Avec des optimisations appropriées, la performance peut être grandement améliorée. Dans l'ensemble, la stratégie de croisement des moyennes mobiles fournit un très bon cadre pour le développement de la stratégie et est la pierre angulaire de l'apprentissage quantitatif de la stratégie de trading.


/*backtest
start: 2023-10-03 00:00:00
end: 2023-11-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MA Cross Strategy", overlay=true,commission_value = 0.1)

type = input(defval = "WMA", title = "MA Type: ", options=["RMA", "SMA", "EMA", "WMA"])

length = input(28)
source = close



// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2000, title = "From Year", minval = 2000)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(9999, 1, 1, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"



variant(type, src, len) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v5 = wma(src, len)                                                  // Weighted
    v7 = rma(src, len)                                                  // Smoothed
    type=="EMA"?v2 : type=="WMA"?v5 : type=="RMA"?v7 : v1
ma = variant(type,source, length)


atr = security(syminfo.tickerid, "D", atr(14))

range = valuewhen(cross(close,ma), (atr*2), na)

ep = valuewhen(cross(close,ma), close, na)

plot(ma,color=ma>ma[1]?color.blue:color.red,transp=0,linewidth=1)
plot(ep,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep+range,color=#2196f3,transp=100,trackprice=true, offset=-9999)
plot(ep-range,color=#2196f3,transp=100,trackprice=true, offset=-9999)

strategy.entry("Long Entry", true, when = crossover(close,ma)  and window() , stop  = ep ) 
strategy.exit("Long Exit", "Long Entry", stop  = ep-range) 
strategy.exit("Long Exit", "Long Entry", when = high > ep+range ,stop = ep[1] ) 

strategy.entry("Short Entry", false, when = crossunder(close,ma)  and window() , stop  = ep ) 
strategy.exit("Short Exit", "Short Entry", stop  = ep+range) 
strategy.exit("Short Exit", "Short Entry", when = low < ep-range ,stop = ep[1] ) 


Plus de