Stratégie de croisement des moyennes mobiles

Auteur:ChaoZhang est là., Date: le 21 septembre 2023
Les étiquettes:

Résumé

Il s'agit d'une stratégie de trading de croisement de moyenne mobile typique. Elle utilise les points de croisement des moyennes mobiles rapides et lentes comme signaux de trading. Lorsque la moyenne mobile rapide traverse au-dessus de la moyenne mobile lente depuis le bas, elle est considérée comme un signal d'achat. Lorsque la moyenne mobile rapide traverse au-dessous de la moyenne mobile lente depuis le haut, elle est considérée comme un signal de vente. Cette stratégie combine deux moyennes mobiles et peut filtrer efficacement le bruit du marché et identifier les tendances.

Principes de stratégie

Les principales étapes de cette stratégie sont les suivantes:

  1. Définir la période moyenne mobile rapide fastMA et la période moyenne mobile lente slowMA.

  2. Calculez la moyenne mobile rapide et la moyenne mobile lente basée sur le type d'entrée Type. Type=1 est la moyenne mobile simple, Type=2 est la moyenne mobile exponentielle.

  3. Définissez la plage de temps de test arrière début et fin.

  4. Définir la fonction de croisement: lorsque le rapide traverse le lent, générer un signal d'achat; lorsque le rapide traverse le lent, générer un signal de vente.

  5. Lorsque la fonction crossover est déclenchée, si elle se situe dans une plage de temps de backtest, émettre un ordre long ou un ordre short.

  6. Lorsque la fenêtre de test arrière se termine ou que la fonction de croisement traverse le bas, émettre un ordre de clôture long.

  7. Tracez la moyenne mobile rapide et la moyenne mobile lente.

Cette stratégie utilise le croisement de moyennes mobiles rapides et lentes pour déterminer la tendance au cours de la période de détention et générer des signaux de trading en conséquence.

Analyse des avantages

Les avantages de cette stratégie:

  1. Les moyennes mobiles sont efficaces pour déterminer les tendances et filtrer les fluctuations aléatoires.

  2. La combinaison de moyennes mobiles rapides et lentes permet d'identifier les changements de tendance.

  3. Les paramètres des moyennes mobiles peuvent être ajustés pour s'adapter aux différentes tendances des périodes.

  4. Choix flexible entre les moyennes mobiles simples et exponentielles.

  5. La fonctionnalité de backtest permet de tester et d'optimiser les paramètres de stratégie.

  6. Une logique simple et claire, facile à comprendre et à mettre en œuvre.

  7. Le dessin de graphiques de moyennes mobiles permet de déterminer visuellement les tendances et les effets.

Analyse des risques

Quelques risques de cette stratégie:

  1. Peut générer de faux signaux pendant les périodes de portée.

  2. Les moyennes mobiles ont un effet de retard, peuvent manquer des virages.

  3. Il s'appuie uniquement sur le croisement des moyennes mobiles, sans autres indicateurs ni filtres.

  4. Ne prend pas en compte les coûts de négociation.

  5. Pas de stratégie de stop-loss.

  6. Des paramètres déraisonnables peuvent affecter les performances de la stratégie.

  7. Une sélection incorrecte de la plage de temps de backtest peut entraîner un surajustement.

Directions d'optimisation

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

  1. Ajoutez d'autres indicateurs comme le MACD, le RSI pour confirmer les signaux et améliorer la précision.

  2. Ajoutez une stratégie de stop loss pour contrôler une seule perte.

  3. Optimiser les paramètres des moyennes mobiles pour différentes périodes.

  4. Ajouter la taille des positions en fonction des conditions du marché.

  5. Considérez les coûts de négociation, ajustez les points d'entrée et de sortie.

  6. Testez avec un délai plus long pour éviter une suradaptation.

  7. Optimiser en permanence les paramètres en utilisant l'analyse de marche vers l'avant.

Résumé

L'optimisation continue et les tests peuvent améliorer les performances de la stratégie et la rendre plus fiable pour le trading en direct. Dans l'ensemble, cette stratégie convient aux investisseurs ayant des exigences relativement faibles pour la détermination de la tendance.


/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("MavCrossover v2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// Revision:        1
// Author:          @ToS_MavericK

// === INPUT SMA ===
fastMA  = input(defval = 13,  title = "FastMA", minval = 1, step = 1)
slowMA  = input(defval = 144,  title = "SlowMA", minval = 1, step = 1)
Type    = input(defval = 1,  title = "Type (1 = SMA, 2 = EMA)", minval = 1, maxval = 2, step = 1)
SlowMAIsFactor = input(false)

slowMA := SlowMAIsFactor == true ? round(fastMA * slowMA) : slowMA

// === 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 = 2018, title = "From Year", minval = 2012)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 2020, title = "To Year", minval = 2012)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// === MA SETUP ===
fast = Type == 1 ? sma(close, fastMA) : ema(close, fastMA)
slow = Type == 1 ? sma(close, slowMA) : ema(close, slowMA)

// === EXECUTION ===
strategy.entry("L", strategy.long, when = crossover(fast, slow) and window())   // buy long when "within window of time" AND crossover
strategy.close("L", when = crossunder(fast, slow) or time > finish)             // sell long when window ends OR crossunder         

plot(fast, title = 'FastMA', color = yellow, linewidth = 2, style = line)  // plot FastMA
plot(slow, title = 'SlowMA', color = aqua, linewidth = 2, style = line)    // plot SlowMA

Plus de