Stratégie de scalping croisé à moyenne mobile double

Auteur:ChaoZhang est là., Date: le 30 octobre 2023 à 11 h 19 h 48
Les étiquettes:

img

Résumé

Le double croisement des moyennes mobiles est une stratégie de scalping simple et efficace qui utilise des signaux de croisement entre le prix et les moyennes mobiles comme signaux d'entrée et de sortie pour capturer les mouvements de tendance à court terme.

La logique de la stratégie

La stratégie utilise deux moyennes mobiles de différentes périodes - une ligne MA à court terme et une ligne MA à long terme. Elle génère des signaux d'achat lorsque la MA à court terme dépasse la MA à plus long terme située en dessous. Les signaux de vente sont générés lorsque la MA à court terme dépasse la MA à plus long terme située en dessous.

La stratégie définit d'abord la variable longueur pour spécifier la période de la ligne MA plus longue comme 50. Elle définit ensuite prix comme prix de clôture et calcule la valeur MA de la longueur 50 et la stocke dans la variable ma. Elle définit en outre bcond pour vérifier si le prix est supérieur à la valeur ma. Si oui, bcount est augmenté de 1, sinon réinitialisé à 0.

Pour filtrer certains signaux non valides, des filtres supplémentaires tels que clc, clc0 et clc1 sont ajoutés qui vérifient la relation de prix entre les barres actuelles et précédentes.

Enfin, les positions existantes sont fermées lorsque le prix franchit les lignes MA à l'envers.

Les avantages

  • Une logique simple, facile à comprendre et à mettre en œuvre.
  • Capture efficacement les tendances à court terme en utilisant le système d'AM.
  • Les filtres ajoutés réduisent les interférences des signaux non valides.
  • Le mécanisme de stop loss fixe contrôle les pertes sur une seule transaction.

Les risques

  • Préoccupé par les variations des marchés, ce qui entraîne des coûts supplémentaires.
  • Des paramètres fixes tels que les périodes d'autorisation de mise sur le marché peuvent ne pas convenir à toutes les conditions du marché.
  • Le niveau de stop-loss fixe peut être supprimé tôt lors de mouvements de tendance forts au-delà du niveau de stop.

Les risques peuvent être atténués par l'utilisation de périodes d'AM dynamiques basées sur la volatilité, les arrêts de retard ou les arrêts en pourcentage, etc.

Améliorations

La stratégie peut être améliorée de plusieurs façons:

  1. Optimiser dynamiquement les paramètres de l'AM en fonction de la volatilité.

  2. Ajoutez des filtres supplémentaires comme le volume pour améliorer la qualité du signal.

  3. Utilisez des arrêts flottants ou en pourcentage pour réduire les arrêts prématurés.

  4. Combinez avec d'autres indicateurs comme le MACD, le RSI pour une validation multicondition.

  5. Ajoutez une gestion automatisée des risques comme la dimensionnement dynamique des positions pour contrôler les pertes par transaction.

  6. Utilisez l'apprentissage automatique pour un modèle de génération de signal plus précis.

Conclusion

La stratégie double MA est un système efficace pour le trading à court terme. Les paramètres de réglage fin, la gestion des risques et la combinaison avec d'autres outils peuvent encore améliorer sa rentabilité. Dans l'ensemble, il est simple à comprendre et à mettre en œuvre pour scalper de plus petits mouvements intraday.


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

//@version=4
strategy("MovingAvg Cross", overlay=true)
length = input(50)
confirmBars = input(2)
price = close

ma = sma(price, length)

bcond = price > ma

bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0

clc=close[0]>close[1]
clc0=close[0]>open[0]
clc1=close[1]>open[1]

if clc and clc0 and clc1 and (bcount == confirmBars)
    strategy.entry("buy", strategy.long)


scond = price < ma
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0

csc=close[0]<close[1]
csc0=close[0]<open[0]
csc1=close[1]<open[1]

if csc and csc0 and csc1 and (scount == confirmBars)
    strategy.entry("sell", strategy.short)

strategy.close("buy", when=scond)
strategy.close("sell",when=bcond)
    
plot(ma, color=color.red)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Plus de