Stratégie de négociation croisée de moyenne mobile

Auteur:ChaoZhang est là., Date: 2024-01-24 14:59:44 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie de négociation de la moyenne mobile est une stratégie de négociation quantitative relativement courante. Cette stratégie génère des signaux de négociation en calculant les moyennes mobiles de différentes périodes et en fonction de leurs situations de croisement. Plus précisément, elle calcule les moyennes mobiles exponentielles (EMA) de 4 périodes, 8 périodes et 20 périodes. Lorsque l'EMA à court terme dépasse l'EMA à long terme, allez long; lorsque l'EMA à court terme dépasse l'EMA à long terme, allez court.

La logique de la stratégie

La logique de base de cette stratégie est la suivante:

  1. Calculer les lignes EMA de 4 périodes, 8 périodes et 20 périodes.
  2. Jugez la relation entre la ligne EMA à 4 périodes et la ligne EMA à 8 périodes:
    1. Lorsque la ligne EMA à 4 périodes traverse la ligne EMA à 8 périodes, cela signifie que la tendance des prix se renforce, ce qui est un signal haussier.
    2. Lorsque l'EMA à 4 périodes dépasse l'EMA à 8 périodes, cela signifie que la tendance des prix s'affaiblit, ce qui est un signal baissier.
  3. Dans le même temps, jugez la direction de la ligne EMA à 20 périodes:
    1. Si la ligne EMA à 20 périodes monte, alors entrez Long.
    2. Si la ligne EMA à 20 périodes descend, alors entrez court.
  4. Lorsque la relation entre la ligne EMA à 4 périodes et la ligne EMA à 8 périodes s'inverse, Préparez la sortie.
  5. Lorsque la direction de la ligne EMA à 20 périodes s'inverse, sortez maintenant.

Grâce à cette méthode, nous profitons du croisement entre différentes moyennes mobiles de période pour juger des signaux du marché, et utilisons la direction de la plus longue moyenne mobile de période pour filtrer les faux signaux, construisant une stratégie de trading stable.

Les avantages de la stratégie

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

  1. La logique de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre.
  2. Le double filtrage des conditions peut réduire les faux signaux.
  3. L'amélioration de l'EMA à 20 périodes permet d'identifier les tendances majeures et de renforcer la stabilité.
  4. Paramètres personnalisables pour ajuster la fréquence des transactions.
  5. Facile à combiner avec d'autres indicateurs ou modèles pour élaborer des stratégies complexes.

Risques liés à la stratégie

Cette stratégie comporte également certains risques:

  1. Les stratégies de moyenne mobile double ont tendance à générer de faux signaux.
  2. Les périodes fixes ne peuvent pas s'adapter aux évolutions du marché.
  3. Il est facile de faire des pertes lors de fluctuations du marché.

Les principales solutions sont les suivantes:

  1. Réduire de manière appropriée la période de détention et arrêter les pertes à temps.
  2. Optimiser dynamiquement les paramètres et ajuster les périodes de moyenne mobile.
  3. Combiner avec d'autres indicateurs ou modèles pour créer des stratégies complexes.

Directions d'optimisation

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

  1. Optimisation de la période: déterminer la combinaison optimale de périodes de MA selon les différentes variétés.

  2. Optimisation de la perte d'arrêt: fixer raisonnablement des points d'arrêt de perte pour contrôler une seule perte.

  3. Optimisation des paramètres: optimiser dynamiquement les paramètres à l'aide d'algorithmes génétiques, de chaînes de Markov, etc.

  4. Fusion de modèle: intégrer avec LSTM, RNN et d'autres modèles d'apprentissage en profondeur pour extraire plus d'Alpha.

  5. Optimisation du portefeuille: Combiner avec d'autres stratégies d'indicateurs techniques pour construire des portefeuilles stratégiques.

Résumé

En général, la stratégie de croisement des moyennes mobiles est une stratégie de trading quantitative relativement classique et couramment utilisée. Cette stratégie a une logique simple et est facile à comprendre et à mettre en œuvre, avec une certaine stabilité. Mais il y a aussi des problèmes, tels que la génération de faux signaux, l'incapacité de s'adapter aux changements du marché, etc. Ces problèmes peuvent être améliorés grâce à l'optimisation des paramètres, l'optimisation des pertes, la fusion des modèles et d'autres méthodes.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2.05)
//stock strategy
strategy(title = "stub",   overlay = true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.0,default_qty_value=10000)


testStartYear = input(1900, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() => true

ema1 = ema(close,4)
ema2 = ema(close,8)
ema3 = ema(close,20)

go_long = ema1[0] > ema2[0] and ema3[0] > ema3[1]
exit_long = ema1[0] < ema2[0] or ema3[0] < ema3[1]

go_short = ema1[0] < ema2[0] and ema3[0] < ema3[1]
exit_short = ema1[0] > ema2[0] or ema3[0] > ema3[1]

 
if testPeriod()
    strategy.entry("simpleBuy", strategy.long, when=go_long)
    strategy.exit("simpleBuy", "simpleSell",when=exit_long)
    
    strategy.entry("simpleSell", strategy.short,when=go_short)
    strategy.exit("simpleSell", "simpleSell",when=exit_short)
        
    


Plus de