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.
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
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")