
Cette stratégie est un système de suivi de tendance dynamique basé sur un double canal de moyenne mobile, combiné à un mécanisme de gestion des risques. Cette stratégie utilise deux moyennes mobiles simples (SMA) pour construire un canal de trading, où le rail supérieur utilise la moyenne mobile calculée par le prix le plus élevé et le rail inférieur utilise la moyenne mobile calculée par le prix le plus bas. Le système utilise cinq prix de clôture consécutifs de la ligne K franchissant la piste supérieure comme signal d’entrée, et cinq prix de clôture consécutifs de la ligne K tombant en dessous de la piste inférieure ou reculant de 25 % par rapport au point le plus élevé comme signal de sortie, pour obtenir une tendance dynamique. suivi et contrôle des risques. .
Le principe de base de la stratégie est de capturer les tendances des prix à travers le canal de la double moyenne mobile et d’établir un mécanisme d’entrée et de sortie strict :
Cette stratégie construit un système de trading complet de suivi des tendances via un double canal de moyenne mobile, combiné à des mécanismes stricts de confirmation d’entrée et de double sortie, pour obtenir un suivi efficace des tendances et un contrôle efficace des risques. Les avantages de la stratégie sont une logique d’exécution claire et un contrôle parfait des risques, mais elle nécessite encore une optimisation des paramètres pour différents environnements de marché et peut être encore améliorée en ajoutant un filtrage de l’environnement de marché, une confirmation sur plusieurs périodes, etc. Dans l’ensemble, il s’agit d’une stratégie de trading quantitative dotée d’une structure complète et d’une logique rigoureuse, qui convient à une application dans un environnement de marché avec des tendances évidentes.
/*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")