Estratégia de acompanhamento de tendências multiindicador combinada com sistema de negociação de canal dinâmico e média móvel

EMA ATR
Data de criação: 2024-12-12 15:58:57 última modificação: 2024-12-12 15:58:57
cópia: 0 Cliques: 376
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências multiindicador combinada com sistema de negociação de canal dinâmico e média móvel

Visão geral

A estratégia é um sistema de negociação multi-indicador que combina o G-Channel, a média móvel do índice (EMA) e a amplitude de flutuação real (ATR). Identifica os sinais de negociação por meio de suporte/resistência dinâmicos e confirmação de tendências, e gerencia o risco usando paradas e paradas baseadas em ATR. O sistema foi projetado com foco em confiabilidade e controle de risco e é adequado para os comerciantes que buscam uma abordagem de negociação robusta.

Princípio da estratégia

A lógica central da estratégia baseia-se nos seguintes componentes-chave:

  1. O canal G calcula os níveis dinâmicos de suporte e resistência, ajustando-os continuamente para cima e para baixo através de fórmulas matemáticas
  2. A EMA é usada para confirmar a direção da tendência geral, e a posição do preço em relação à EMA determina a direção da negociação.
  3. Sinais de entrada baseados em ruptura do canal G e confirmação de posição do EMA
  4. Use o múltiplo do ATR para configurar o stop loss e o stop loss com 2x o ATR e o stop loss com 4x o ATR
  5. Evite sinais repetitivos por meio de rastreamento de status

Vantagens estratégicas

  1. Mecanismos de confirmação de sinais em vários níveis aumentam a confiabilidade das transações
  2. Fronteiras de corredor adaptadas dinamicamente a diferentes circunstâncias de mercado
  3. Gestão de risco baseada na volatilidade é mais adaptativa
  4. Evitar sinais repetidos reduz o risco de excesso de negociação
  5. Marcas de compra e venda visíveis para facilitar a análise e o feedback

Risco estratégico

  1. Os mercados horizontais podem gerar muitos falsos sinais de ruptura
  2. EMA como indicador de atraso pode causar atraso no tempo de entrada
  3. O stop loss ATR de multiplicador fixo pode não ser suficientemente flexível em períodos de alta volatilidade
  4. Indicadores que requerem dados históricos mais longos
  5. A otimização de parâmetros pode levar ao overfitting

Direção de otimização da estratégia

  1. Introdução de sinais de confirmação de tráfego para aumentar a confiabilidade da brecha
  2. Ajuste dinâmico do múltiplo ATR para adaptar-se a diferentes situações de mercado
  3. Adição de filtros de mercado para evitar transações em condições adversas
  4. Otimização da lógica de filtragem de sinais para reduzir ainda mais os falsos sinais
  5. Considere a inclusão de um sistema de gestão de posições dinâmico

Resumir

A estratégia é construída em um sistema de negociação completo, através da combinação de vários indicadores técnicos bem-sucedidos. A vantagem do sistema reside no seu mecanismo de confirmação de sinais em vários níveis e na gestão de risco baseada na volatilidade, mas ainda requer otimização de acordo com as características específicas do mercado na aplicação real.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("G-Channel with EMA Strategy and ATR SL/TP", shorttitle="G-EMA-ATR", overlay=true)

// Input parameters
length = input.int(100, title="G-Channel Length")
src = input.source(close, title="Source")
ema_length = input.int(50, title="EMA Length")  // EMA length
atr_length = input.int(14, title="ATR Length")  // ATR length

// G-Channel calculation
var float a = na
var float b = na
a := math.max(src, nz(a[1])) - nz(a[1] - b[1]) / length
b := math.min(src, nz(b[1])) + nz(a[1] - b[1]) / length
avg = (a + b) / 2

// G-Channel cross conditions
crossup = b[1] < close[1] and b > close
crossdn = a[1] < close[1] and a > close
bullish = ta.barssince(crossdn) <= ta.barssince(crossup)
c = bullish ? color.lime : color.red

// EMA calculation
ema_value = ta.ema(src, ema_length)

// ATR calculation
atr_value = ta.atr(atr_length)

// Plot G-Channel average and Close price
p1 = plot(avg, "G-Channel Average", color=c, linewidth=1, transp=90)
p2 = plot(close, "Close Price", color=c, linewidth=1, transp=100)
fill(p1, p2, color=c, transp=90)

// Plot EMA
plot(ema_value, color=color.blue, linewidth=2, title="EMA")

// Buy and Sell conditions
buy_condition = bullish and close < ema_value
sell_condition = not bullish and close > ema_value

// Track the last signal state
var bool last_was_buy = false
var bool last_was_sell = false

// ATR-based SL and TP calculations
long_sl = close - 2 * atr_value  // 2 ATR below the entry for SL
long_tp = close + 4 * atr_value  // 4 ATR above the entry for TP
short_sl = close + 2 * atr_value // 2 ATR above the entry for SL (short)
short_tp = close - 4 * atr_value // 4 ATR below the entry for TP (short)

// Generate Buy signal only if the last signal was not Buy
if (buy_condition and not last_was_buy)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", from_entry="Buy", stop=long_sl, limit=long_tp)
    last_was_buy := true
    last_was_sell := false

// Generate Sell signal only if the last signal was not Sell
if (sell_condition and not last_was_sell)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", from_entry="Sell", stop=short_sl, limit=short_tp)
    last_was_sell := true
    last_was_buy := false

// Plot shapes for Buy and Sell signals
plotshape(series=buy_condition and not last_was_buy, location=location.belowbar, style=shape.labelup, color=color.lime, size=size.small, text="Buy", textcolor=color.white)
plotshape(series=sell_condition and not last_was_sell, location=location.abovebar, style=shape.labeldown, color=color.red, size=size.small, text="Sell", textcolor=color.white)