Stratégie de suivi des moyennes mobiles

Auteur:ChaoZhang est là., Date: 2023-10-20 à 17h02:52
Les étiquettes:

img

Résumé

La stratégie de suivi des moyennes mobiles est une stratégie de suivi des tendances basée sur une moyenne mobile simple. Elle utilise une moyenne mobile simple de 200 jours pour déterminer la direction de la tendance des prix. Lorsque le prix dépasse la moyenne mobile, il va long. Lorsque le prix dépasse la moyenne mobile, il va court. Cette stratégie suit la tendance au profit.

La logique de la stratégie

La stratégie repose sur les principes suivants:

  1. Utilisez une moyenne mobile simple sur 200 jours (slowMA) pour déterminer l'évolution des prix.
  2. Lorsque le prix de clôture (close) dépasse slowMA, il indique une tendance à la hausse, alors allez long.
  3. Lorsque le prix de clôture (close) dépasse le niveau de slowMA, il indique une tendance à la baisse, alors allez court.
  4. Utilisez les variables last_long et last_short pour enregistrer le dernier temps d'entrée long et court.
  5. Utilisez la fonction de croisement pour détecter le croisement entre last_long et last_short pour générer des signaux commerciaux.
  6. Dans la période de backtest, passez à long lors de la réception du signal long (long_signal) et à court lors de la réception du signal court (short_signal).

La stratégie suit la tendance en déplaçant la direction moyenne et effectue des transactions inverses lorsque le croisement MA se produit, pour tirer profit de la tendance.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. La logique de la stratégie est simple et facile à comprendre et à mettre en œuvre.
  2. La moyenne mobile à long terme filtre le bruit et bloque la tendance majeure.
  3. Les transactions inversées en temps opportun peuvent capturer des fluctuations de prix importantes autour des renversements de tendance.
  4. Il n'utilise qu'un seul indicateur, évitant ainsi la complexité de plusieurs indicateurs.
  5. Des règles d'entrée et de sortie claires sans intervention humaine.

Analyse des risques

Il y a aussi des risques:

  1. L'AM à long terme n'est pas sensible aux corrections à court terme, manquant des opportunités à court terme.
  2. Faible capacité à identifier un renversement de tendance majeur, avec des pertes de renversement.
  3. Aucun mécanisme de stop-loss, ce qui conduit à de gros retraits.
  4. Les paramètres fixes ont une faible adaptabilité entre différents produits et environnements de marché.
  5. Le risque de suradaptation des tests de retour étant donné que la stratégie n'est testée que sur des données historiques.

Les risques peuvent être gérés par les optimisations suivantes:

  1. Ajouter des MA à court terme pour capturer également les tendances à court terme.
  2. Ajoutez des filtres de volume pour éviter de faux signaux.
  3. Ajouter des indicateurs de tendance pour améliorer l'identification de l'inversion de tendance.
  4. Ajouter un stop loss dynamique pour contrôler les pertes de transactions uniques.
  5. Utiliser des méthodes d'optimisation des paramètres pour améliorer l'adaptabilité.
  6. Test de robustesse dans différents environnements de marché.

Directions d'optimisation

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

  1. Optimiser le paramètre de la période MA en utilisant des méthodes telles que l'analyse de marche vers l'avenir pour trouver les paramètres optimaux.

  2. Ajouter une MA à court terme pour suivre les tendances à long terme et à court terme.

  3. Incorporer des indicateurs de tendance comme le MACD pour améliorer l'identification de l'inversion de tendance.

  4. Ajoutez des mécanismes de stop-loss tels que le stop-loss de suivi pour contrôler les pertes d'une seule transaction.

  5. Test de robustesse sur différents produits et périodes de temps.

  6. Utilisez l'apprentissage automatique pour l'optimisation adaptative par paramètres.

Conclusion

La stratégie de suivi des moyennes mobiles est une stratégie simple et pratique de suivi des tendances. Elle a une logique claire et est facile à mettre en œuvre pour capturer les tendances. Mais elle présente également certaines faiblesses telles que son insensibilité aux corrections à court terme et son faible contrôle des risques. Nous pouvons optimiser la stratégie à partir de plusieurs aspects pour la rendre plus robuste, mieux paramétrée et avec une gestion des risques plus forte. Dans l'ensemble, la stratégie de suivi des moyennes mobiles a une bonne valeur d'application et est un concept de trading de tendance important dans le trading quantitatif.


/*backtest
start: 2023-09-19 00:00:00
end: 2023-10-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MA X 200 BF", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2012, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

///////////// MA 200 /////////////
slowMA = sma(close, input(200))

/////////////// Strategy ///////////////
long = close > slowMA
short = close < slowMA

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long Entry",  strategy.long, when=long_signal)
    strategy.entry("Short Entry", strategy.short, when=short_signal)
    strategy.exit("Long Ex", "Long Entry")
    strategy.exit("Short Ex", "Short Entry")

/////////////// Plotting /////////////// 
plot(slowMA, color = long ? color.lime : color.red, linewidth=2)
bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)

Plus de