Estratégia de Seguidor de Tendência de Onda Multi-Time Frame

WT MTF WaveTrend ATR Trailing Stop TREND-FOLLOWING HLC3
Data de criação: 2025-07-07 16:04:18 última modificação: 2025-07-07 16:04:18
cópia: 0 Cliques: 233
2
focar em
319
Seguidores

Estratégia de Seguidor de Tendência de Onda Multi-Time Frame Estratégia de Seguidor de Tendência de Onda Multi-Time Frame

Visão geral

A estratégia de multi-marco de onda de tendência de rastreador de estratégia é uma estratégia de multi-marco de tendência de rastreamento de sistema de negociação com base no indicador WaveTrend. A estratégia foi especialmente otimizada para o período de 15 minutos, com uma abordagem de alinhamento de três camadas de tempo: 240 minutos WaveTrend como um macro-filtro de tendência, 30 minutos WaveTrend para a confirmação de impulso, e 15 minutos WaveTrend é responsável pela geração de sinais. A estratégia está no centro de identificar os pontos de entrada e saída através da identificação de cruzamentos de indicadores WaveTrend em diferentes períodos de tempo, combinando mecanismos avançados de rastreamento de perda, incluindo a lógica de rastreamento com base no maior lucro e a tolerância de retração com base em porcentagem, para maximizar os lucros e controlar o risco de forma eficaz.

Princípio da estratégia

O princípio central da estratégia é usar a sinergia do indicador WaveTrend em vários períodos de tempo para identificar a direção da tendência e os pontos de reversão. O indicador WaveTrend é um indicador técnico que mede o estado de sobrecompra e sobrevenda de preços, combinando o cálculo da relação entre o preço e sua média móvel indexada (EMA).

O processo de implementação da estratégia é o seguinte:

  1. Primeiro, defina a função WaveTrend, que calcula dois valores principais (wt1 e wt2):

    • EMA de preço calculado (geralmente HLC3)
    • EMA calculado como a diferença absoluta entre o preço e o EMA, como uma medida de volatilidade
    • Desvio de preço relativo da construção de unificação (ci)
    • Calcule o EMA de ci como wt1, e o SMA de wt1 como wt2
  2. A estratégia consiste em aplicar o indicador WaveTrend em três prazos:

    • Gráfico de 15 minutos (atual) para a geração de sinais específicos
    • Gráfico de 30 minutos usado para confirmar a direção do momento intermediário
    • O gráfico de 60 minutos fornece um pano de fundo de tendências de longo prazo
  3. Condições de entrada:

    • Faça mais: quando o wt1 no gráfico de 15 minutos atravessa o wt2 para cima, e o valor do wt1 é maior que 60, enquanto o gráfico de 30 minutos tende para cima ((wt1 > wt2)
    • Esvaziamento: quando o wt1 no gráfico de 15 minutos atravessa o wt2 para baixo, e o valor do wt1 é menor que 20, enquanto o gráfico de 30 minutos tende para baixo (wt1 < wt2)
  4. O mecanismo de suspensão de prejuízos e eliminação de jogos é composto por:

    • Percentual fixo de parada marginal
    • Paradas de rastreamento baseadas em ganhos
    • Stop de proteção com base no retiro máximo de ganhos
  5. A estratégia registra e rastreia o preço de entrada, os pilares de entrada e a taxa de retorno máxima de cada transação, que são usados para ajustar dinamicamente o ponto de saída.

Vantagens estratégicas

  1. Multi-quadros de tempo em conjuntoPor meio da análise do indicador de WaveTrend em diferentes prazos, a estratégia pode capturar a tendência do mercado de forma mais abrangente, reduzindo a interferência de falsos sinais e aumentando a precisão da negociação. O quadro de tempo baixo fornece pontos de entrada precisos e o quadro de tempo alto garante que a direção da negociação esteja de acordo com a tendência principal.

  2. Mecanismo de parada dinâmicaA estratégia usa um sistema de proteção de três paradas, incluindo paradas de porcentagem fixa, paradas de rastreamento baseadas em ganhos e mecanismos de proteção de máxima receita. Esta estratégia de parada de perda composta permite capturar o máximo de receita em tendência, enquanto protege o capital.

  3. Sistema de feedback visualOs pontos de entrada e saída de transações são marcados visualmente no gráfico por meio de etiquetas coloridas (🔴) e contêm informações de colunas para facilitar a análise de retrospectiva e a recuperação de transações.

  4. Parâmetros flexíveisA estratégia oferece vários parâmetros personalizáveis, incluindo percentual de acionamento de stop loss, percentual de acompanhamento de tracking e percentual de retirada máxima permitida, que o usuário pode ajustar de acordo com suas preferências de risco e condições de mercado.

  5. Estrutura de código claraA estratégia é projetada de forma funcional, as partes são explicadas logicamente, são fáceis de entender e manter, mas também facilitam a otimização e a expansão.

Risco estratégico

  1. Reacção tardia à mudança de tendênciaComo uma estratégia de acompanhamento de tendência, pode haver uma reação de atraso nos pontos de reversão de tendência, resultando em uma maior retração quando a tendência se reverte. A solução é ajustar os parâmetros de rastreamento de stop loss ou adicionar um indicador adicional de reversão de tendência como auxiliar.

  2. Mercado de baixa volatilidadeEm ambientes de mercado de correção horizontal ou de forte volatilidade, a estratégia pode produzir falsos sinais e paradas frequentes, resultando em perdas contínuas. Recomenda-se que a estratégia seja ativada somente quando o mercado está em uma tendência evidente.

  3. Sensibilidade do parâmetroO desempenho da estratégia é bastante sensível à configuração de parâmetros do WaveTrend (n1 = 10, n2 = 21) e aos parâmetros de parada. Parâmetros excessivamente relaxados podem levar a paradas tardias e parâmetros excessivamente apertados podem sair prematuramente de uma tendência favorável.

  4. Risco de liquidez: O código usa o valor de capital relativo ((10%) como padrão para negociar, mas isso pode causar aumento de pontos de deslizamento ou dificuldade de transação em mercados de baixa liquidez. O tamanho da posição deve ser ajustado de acordo com a liquidez da variedade de negociação real.

  5. Solicitação de dependência de dados externosA estratégia é usar a função request.security () para obter dados de quadros de tempo mais elevados, o que pode levar a atrasos ou a risco de inexistência de dados em algumas plataformas de negociação. Certifique-se de que o ambiente de negociação suporta solicitações de dados de quadros de tempo múltiplos.

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

  1. Ajuste de parâmetros dinâmicos: A estratégia atual usa parâmetros de WaveTrend e parâmetros de stop-loss fixos, podendo ser considerado o ajuste desses parâmetros de acordo com a volatilidade do mercado (como o ATR). Por exemplo, aumentar a distância de stop-loss em ambientes de alta volatilidade e apertar o stop-loss em ambientes de baixa volatilidade para se adaptar a diferentes condições de mercado.

  2. Filtragem de intensidade de tendência: Pode ser adicionado o ADX ou indicadores similares para medir a força da tendência, executando apenas quando a força da tendência ultrapassa um determinado limiar, evitando o excesso de negociação em mercados de tendência fraca ou horizontal.

  3. Optimizar a escolha do período de tempoA estratégia atual usa os prazos de 15, 30 e 60 minutos, para encontrar a combinação ideal de prazos por meio da análise de retorno, ou para ajustar prazos de acordo com as características de diferentes variedades de negociação.

  4. Confirmação de volume de transaçãoA integração dos indicadores de volume de transação nas condições de entrada, garantindo a entrada apenas em tendências de suporte de volume de transação e melhorando a qualidade do sinal.

  5. Melhorias no mecanismo de partidaA saída atual depende principalmente do stop loss trigger, podendo ser considerado adicionar um objetivo de lucro ou um sinal de reversão baseado no próprio indicador WaveTrend como condição de saída ativa, em vez de depender apenas do stop loss passivo.

  6. Adição de lógica de gerenciamento de posiçãoA estratégia atual é usar o gerenciamento de fundos em porcentagens fixas, podendo considerar o tamanho da posição de ajuste dinâmico com base na volatilidade ou na intensidade do sinal, aumentando a posição em transações mais seguras e reduzindo a abertura de risco em transações com maior incerteza.

Resumir

A estratégia do rastreador de tendências de ondas de múltiplos quadros temporais é um sistema de rastreamento de tendências bem projetado, que capta efetivamente as tendências do mercado e controla os riscos por meio da sinergia do indicador WaveTrend de múltiplos quadros temporais, combinado com um mecanismo de stop loss de rastreamento flexível. A principal vantagem da estratégia reside na sua visão abrangente do mercado e na sua abordagem de gerenciamento de risco dinâmica, mas pode ser desafiada em mercados de flutuação.

Código-fonte da estratégia
/*backtest
start: 2024-07-07 00:00:00
end: 2024-11-28 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("WT-FLOW: MTF WaveTrend Trend-Follower", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === WaveTrend Fonksiyonu ===
waveTrend(_src, _n1, _n2) =>
    esa = ta.ema(_src, _n1)
    d = ta.ema(math.abs(_src - esa), _n1)
    ci = (_src - esa) / (0.015 * d)
    wt1 = ta.ema(ci, _n2)
    wt2 = ta.sma(wt1, 4)
    [wt1, wt2]

// === Giriş Fiyatı ve Maksimum Kazanç Değişkenleri ===
var float longEntryPrice = na
var float shortEntryPrice = na
var float maxGainLong = 0.0
var float maxGainShort = 0.0
var int longEntryBar = na
var int shortEntryBar = na
var string currentPosition = ""

// === WT Değerlerini Al (Farklı Zaman Dilimleri) ===
var int n1 = 10
var int n2 = 21
ap = hlc3
[wt1_15, wt2_15] = waveTrend(ap, n1, n2)
[wt1_30, wt2_30] = request.security(syminfo.tickerid, "30", waveTrend(ap, n1, n2))
[wt1_60, wt2_60] = request.security(syminfo.tickerid, "60", waveTrend(ap, n1, n2))

// === Kullanıcı Girdileri: Trailing Stop Parametreleri ===
marginStopPerc = input.float(2.0, "Marjinal Stop (%)")
trailTriggerPerc = input.float(1.5, "Trailing Tetikleyici (%)")
trailFollowPerc = input.float(0.8, "Trailing Takip (%)")
trailMaxDropPerc = input.float(3.0, "Maksimum Düşüş (%)")

// === ATR için tr hesaplaması ===
tr = ta.tr(true)

// === Sinyal Koşulları ===
trendUp = wt1_30 > wt2_30
trendDown = wt1_30 < wt2_30
entryLong = ta.crossover(wt1_15, wt2_15) and wt1_15 > -60 and trendUp
entryShort = ta.crossunder(wt1_15, wt2_15) and wt1_15 < 20 and trendDown

// === Pozisyon Girişleri ===
if entryLong and currentPosition != "Long"
    strategy.entry("Long", strategy.long)
    longEntryPrice := close
    maxGainLong := 0.0
    longEntryBar := bar_index
    currentPosition := "Long"
    label.new(bar_index, high + 2 * tr, "🟢 Giriş Long #" + str.tostring(bar_index), style=label.style_label_up, color=color.green, textcolor=color.white)

if entryShort and currentPosition != "Short"
    strategy.entry("Short", strategy.short)
    shortEntryPrice := close
    maxGainShort := 0.0
    shortEntryBar := bar_index
    currentPosition := "Short"
    label.new(bar_index, low - 2 * tr, "🔴 Giriş Short #" + str.tostring(bar_index), style=label.style_label_down, color=color.red, textcolor=color.white)

// === Trailing Stop ve Marjinal Stop Seviyeleri ===
if currentPosition == "Long" and not na(longEntryPrice)
    gainFromEntry = (close - longEntryPrice) / longEntryPrice * 100
    maxGainLong := math.max(maxGainLong, gainFromEntry)
    trailTriggerReached = gainFromEntry >= trailTriggerPerc
    trailStop = close * (1 - trailFollowPerc / 100)
    dropStop = longEntryPrice * (1 + (maxGainLong - trailMaxDropPerc) / 100)
    finalStop = trailTriggerReached ? math.max(trailStop, dropStop) : longEntryPrice * (1 - marginStopPerc / 100)
    if close <= finalStop
        strategy.close("Long")
        label.new(bar_index, low - 2 * tr, "❅ Çıkış Long #" + str.tostring(longEntryBar), style=label.style_label_down, color=color.red, textcolor=color.white)
        longEntryPrice := na
        longEntryBar := na
        currentPosition := ""

if currentPosition == "Short" and not na(shortEntryPrice)
    gainFromEntryShort = (shortEntryPrice - close) / shortEntryPrice * 100
    maxGainShort := math.max(maxGainShort, gainFromEntryShort)
    trailTriggerReachedShort = gainFromEntryShort >= trailTriggerPerc
    trailStopShort = close * (1 + trailFollowPerc / 100)
    dropStopShort = shortEntryPrice * (1 - (maxGainShort - trailMaxDropPerc) / 100)
    finalStopShort = trailTriggerReachedShort ? math.min(trailStopShort, dropStopShort) : shortEntryPrice * (1 + marginStopPerc / 100)
    if close >= finalStopShort
        strategy.close("Short")
        label.new(bar_index, high + 2 * tr, "❄ Çıkış Short #" + str.tostring(shortEntryBar), style=label.style_label_up, color=color.green, textcolor=color.white)
        shortEntryPrice := na
        shortEntryBar := na
        currentPosition := ""