Stratégie de croisement à double moyenne mobile

Auteur:ChaoZhang est là., Date: le 27 février 2024 16:21:02
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de croisement de moyenne mobile typique qui utilise deux ensembles de moyennes mobiles, l'une rapide et l'autre lente. Lorsque la moyenne mobile rapide traverse la moyenne mobile lente, un signal d'achat est généré. Lorsque la moyenne mobile rapide traverse la moyenne mobile lente, un signal de vente est généré.

La logique de la stratégie

La logique de base repose sur des croisements entre les lignes moyennes mobiles rapides et lentes pour déterminer les entrées et les sorties.

Plus précisément, deux ensembles de moyennes mobiles rapides et lentes sont calculés:

  • 1ère EMA rapide, durée de 8 jours
  • 2e EMA rapide, longueur 21 jours
  • 1ère SMA lente, longueur 50 jours
  • 2ème SMA lente, longueur 200 jours

Les croisements sont ensuite vérifiés entre les EMA rapides et les SMA lentes:

  • Si l'EMA à 8 jours dépasse la SMA à 50 jours, signe de croix dorée
  • Si l'EMA à 8 jours dépasse la SMA à 50 jours, le signal de croix de mort

Pour filtrer les faux signaux, un deuxième croisement EMA/SMA est nécessaire pour la confirmation:

  • Seule la marge EMA à 21 jours est déclenchée lorsque celle-ci dépasse/souspasse la SMA à 50 jours.

En exigeant deux croisements MA rapides/lents, de nombreux faux signaux peuvent être filtrés et la fiabilité améliorée.

Lorsque vous achetez des déclencheurs de signaux, allez long. Lorsque vous vendez des déclencheurs de signaux, allez court.

La stratégie définit également la prise de profit et le stop loss en fonction du pourcentage d'entrée du prix d'entrée une fois dans une position.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. La conception double MA filtre les faux signaux et améliore la précision
  2. La combinaison de l'EMA et de la SMA utilise la sensibilité de l'EMA et la douceur de la SMA.
  3. Prise de bénéfices et arrêt de perte: verrouillage des bénéfices et contrôle des risques
  4. Une logique simple, facile à comprendre et à modifier.
  5. Paramètres personnalisables adaptés aux différents environnements du marché

Analyse des risques

Risques de la stratégie:

  1. Les strates MA ont tendance à produire beaucoup de petits gains/pertes sur des marchés agités
  2. Peut faire face à des pertes importantes sur des marchés fortement en évolution
  3. Un mauvais réglage des paramètres conduit également à des performances médiocres

Pour contrôler les risques:

  1. Ajuster les paramètres pour les différentes conditions du marché
  2. Optimiser sur la base de tests antérieurs pour s'adapter au marché cible
  3. Utiliser le stop loss pour limiter la taille des pertes

Directions d'amélioration

La stratégie peut être encore optimisée par:

  1. Tester plus de combinaisons MA rapide/lente pour trouver les meilleures
  2. Utiliser l'apprentissage automatique ou les algorithmes génétiques pour optimiser automatiquement
  3. Ajout d'un filtre de tendance pour éviter les transactions contre-tendance
  4. Ajout d'un stop-loss pour verrouiller les bénéfices
  5. Incorporant des filtres de volume ou de volatilité pour confirmer les signaux
  6. Combinaison avec d'autres strates/produits pour utiliser une faible corrélation

Conclusion

En résumé, la double stratégie de croisement MA génère des signaux avec des croisements MA rapides / lents, des ensembles de profits et de stop-loss pour contrôler les risques, et est simple, intuitive et facile à mettre en œuvre.


/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JMLSlop

//@version=4

src = close
strategy("Crossover moving averages", shorttitle="Cross MA-EMA", overlay=true, calc_on_order_fills=false)

// first fast EMA
len = input(8, "Length", type=input.integer, minval=1)
doma1 = input(true, title="EMA")
out1 = ema(src, len) 

//Second fast EMA
len2 = input(21, minval=1, title="Length")
doma2 = input(true, title="EMA")
out2 = ema(src, len2)

//First slow MA
len3 = input(50, minval=1, title="Length")
doma3 = input(true, title="SMA")
out3 = sma(src, len3)

//Second slow MA
len4 = input(200, minval=1, title="Length")
doma4 = input(true, title="SMA")
out4 = sma(src, len4)

// Profit
profit = input(8, "Profit/lost %", type=input.float, minval=1) * 0.01


plot(doma1 and out1 ? out1: na, color=color.blue, linewidth=1, title="1st EMA")
plot(doma2 and out2 ? out2: na, color=color.red, linewidth=1, title="2nd EMA")
plot(doma3 and out3 ? out3: na, color=color.green, linewidth=2, title="1st MA")
plot(doma4 and out4 ? out4: na, color=color.orange, linewidth=3, title="2nd MA")

// Orders config
takeProfitPrice =
     (strategy.position_size > 0) ? strategy.position_avg_price + open*profit : (strategy.position_size < 0) ? strategy.position_avg_price - (open*profit) : na

longStopPrice  = strategy.position_avg_price * (1 - profit)
shortStopPrice = strategy.position_avg_price * (1 + profit)

longCondition2 = (out2>out3 and (crossover(out1, out4) or crossover(out1[1], out4[1]) or crossover(out1[2], out4[2]) or (crossover(out1[3], out4[3]))) or (out2>out3 and (crossover(out1, out3) or crossover(out1[1], out3[1]) or crossover(out1[2], out3[2]) or crossover(out1[3], out3[3]))))
if (longCondition2)
    strategy.entry("Enter L", strategy.long)

shortCondition2 = (out2<out3 and (crossunder(out1, out4) or crossunder(out1[1], out4[1]) or crossunder(out1[2], out4[2]) or crossunder(out1[3], out4[3]))) or (out2<out3 and (crossunder(out1, out3) or crossunder(out1[1], out3[1]) or crossunder(out1[2], out3[2]) or crossunder(out1[3], out3[3])))
if (shortCondition2)
    strategy.entry("Enter S", strategy.short)


if (strategy.position_size > 0)
    strategy.exit("Exit L", limit=takeProfitPrice, stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit("Exit S", limit=takeProfitPrice, stop=shortStopPrice)


Plus de