Esta estratégia é um sistema dinâmico de tendência baseado em canais de média móvel dupla, combinado com mecanismos de gerenciamento de risco. Utiliza duas médias móveis simples (SMA) para construir um canal de negociação, com a faixa superior calculada usando o preço alto e a faixa inferior usando o preço baixo. O sistema gera sinais de entrada quando o preço de fechamento permanece acima da faixa superior por cinco barras consecutivas e sinais de saída quando o preço cai abaixo da faixa inferior por cinco barras consecutivas ou retrocede 25% do ponto mais alto, alcançando rastreamento de tendência dinâmica e controle de risco.
Os princípios fundamentais incluem a captação das tendências dos preços através de canais duplos de média móvel e o estabelecimento de mecanismos rigorosos de entrada e saída: Mecanismo de entrada: requer que o preço se mantenha acima da faixa superior por cinco dias consecutivos, garantindo a continuidade e validade da tendência 2. Mecanismo de saída: opera em dois níveis - Desvio da tendência: desencadeado quando o preço cai abaixo da faixa inferior durante cinco dias consecutivos, indicando uma potencial inversão da tendência - Saída Stop-Loss: Ativada quando o preço retrocede 25% do ponto mais alto, evitando perdas excessivas Gestão de posições: utiliza uma percentagem fixa do capital da conta para dimensionamento de posições, garantindo uma alocação eficaz de capital
Esta estratégia constrói um sistema de negociação de tendência completa através de canais de média móvel dupla, combinando uma confirmação de entrada rigorosa e mecanismos de saída dupla para alcançar um rastreamento de tendência e controle de risco eficazes.
/*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")