Les ressources ont été chargées... Je charge...

Tendance dynamique à la suite d'une stratégie de double canal de moyenne mobile avec système de gestion des risques

Auteur:ChaoZhang est là., Date: 2025-01-10 16h26 et 56 min
Les étiquettes:SMALe MAC

 Dynamic Trend Following Dual Moving Average Channel Strategy with Risk Management System

Résumé

Cette stratégie est un système de suivi de tendance dynamique basé sur deux canaux de moyennes mobiles, combiné à des mécanismes de gestion des risques. Il utilise deux moyennes mobiles simples (MMS) pour construire un canal de négociation, la bande supérieure étant calculée en utilisant le prix élevé et la bande inférieure en utilisant le prix bas. Le système génère des signaux d'entrée lorsque le prix de clôture reste au-dessus de la bande supérieure pendant cinq barres consécutives, et des signaux de sortie lorsque le prix tombe en dessous de la bande inférieure pendant cinq barres consécutives ou retrace 25% du point le plus élevé, obtenant un suivi dynamique de la tendance et un contrôle des risques.

Principes de stratégie

Les principes fondamentaux consistent à capturer les tendances des prix à travers deux canaux de moyenne mobile et à établir des mécanismes stricts d'entrée et de sortie: 1. Mécanisme d'entrée: exige que le prix se maintienne au-dessus de la bande supérieure pendant cinq jours consécutifs, assurant la continuité et la validité de la tendance 2. Mécanisme de sortie: fonctionne à deux niveaux - Déviation de tendance: déclenchée lorsque le prix tombe en dessous de la fourchette inférieure pendant cinq jours consécutifs, indiquant un potentiel renversement de tendance - Stop-Loss Exit: Activé lorsque le prix revient à 25% du point le plus élevé, empêchant les pertes excessives 3. Gestion des positions: utilise un pourcentage fixe du capital du compte pour la taille des positions, assurant une allocation efficace du capital

Les avantages de la stratégie

  1. Tendance suivant la stabilité: filtre les fausses ruptures en exigeant cinq jours consécutifs de confirmation
  2. Contrôle complet des risques: combine des mécanismes de déviation de tendance et de stop-loss pour une double protection
  3. Paramètres flexibles: les périodes moyennes mobiles et le pourcentage de stop-loss peuvent être optimisés pour différentes caractéristiques du marché
  4. Logique d'exécution claire: les conditions d'entrée et de sortie définitives réduisent les interférences de jugement subjectif
  5. Gestion scientifique du capital: utilise le positionnement proportionnel du compte plutôt que des lots fixes pour un meilleur contrôle des risques

Risques stratégiques

  1. Risque de marché perturbé: susceptible de recevoir de faux signaux sur les marchés latéraux, conduisant à des transactions fréquentes
  2. Risque de glissement: les prix d'exécution de l'arrêt-perte peuvent s'écarter sensiblement des attentes sur les marchés à forte évolution
  3. Dépendance des paramètres: les paramètres optimaux peuvent varier considérablement selon les différents environnements de marché
  4. Décalage de tendance: les moyennes mobiles introduisent un certain retard aux points d'inversion de tendance
  5. Efficacité des capitaux: des conditions de détention strictes peuvent faire perdre certaines opportunités de profit

Directions d'optimisation

  1. Optimisation des paramètres dynamiques: développer des systèmes de paramètres adaptatifs qui ajustent automatiquement les périodes moyennes mobiles en fonction de la volatilité du marché
  2. Filtrage de l'environnement du marché: ajouter des indicateurs de force de tendance pour réduire automatiquement la fréquence des transactions sur les marchés instables
  3. Confirmation à plusieurs délais: intégrer des mécanismes de confirmation de tendance à plus long terme pour améliorer la fiabilité du signal
  4. Optimisation du stop-loss: introduire des mécanismes de stop-loss dynamiques qui s'ajustent automatiquement en fonction de la volatilité
  5. Optimisation de la gestion des positions: ajustement dynamique de la taille des positions en fonction de la volatilité et des ratios risque/rendement

Résumé

Cette stratégie construit un système de négociation complet suivant la tendance à travers deux canaux de moyenne mobile, combinant une confirmation d'entrée stricte et des mécanismes de sortie doubles pour atteindre un suivi de tendance et un contrôle des risques efficaces.


/*backtest
start: 2025-01-02 00:00:00
end: 2025-01-09 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("Moving Average Channel (MAC)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Parameters for Moving Averages
upperMALength = input.int(10, title="Upper MA Length")
lowerMALength = input.int(8, title="Lower MA Length")
stopLossPercent = input.float(25.0, title="Stop Loss (%)", minval=0.1) / 100

// Calculate Moving Averages
upperMA = ta.sma(high, upperMALength)
lowerMA = ta.sma(low, lowerMALength)

// Plot Moving Averages
plot(upperMA, color=color.red, title="Upper Moving Average")
plot(lowerMA, color=color.green, title="Lower Moving Average")

// Initialize variables
var int upperCounter = 0
var int lowerCounter = 0
var float entryPrice = na
var float highestPrice = na

// Update counters based on conditions
if (low <= upperMA)
    upperCounter := 0
else
    upperCounter += 1

if (high >= lowerMA)
    lowerCounter := 0
else
    lowerCounter += 1

// Entry condition: 5 consecutive bars above the Upper MA
if (upperCounter == 5 and strategy.position_size == 0)
    strategy.entry("Long", strategy.long)
    highestPrice := high  // Initialize highest price

// Update the highest price after entry
if (strategy.position_size > 0)
    highestPrice := na(highestPrice) ? high : math.max(highestPrice, high)

// Exit condition: 5 consecutive bars below the Lower MA
if (lowerCounter == 5 and strategy.position_size > 0)
    strategy.close("Long", comment="Exit: 5 bars below Lower MA")

// Stop-loss condition: Exit if market closes below 25% of the highest price since entry
stopLossCondition = low < highestPrice * (1 - stopLossPercent)
if (stopLossCondition and strategy.position_size > 0)
    strategy.close("Long", comment="Exit: Stop Loss")


Relationnée

Plus de