Estratégia de negociação quantitativa de tendência de cruzamento de filtro Butterworth de três polos de Ehlers

Butterworth Filter TREND FOLLOWING Crossover Signals Divergence Detection TPF TA
Data de criação: 2025-06-13 14:54:24 última modificação: 2025-06-13 14:54:24
cópia: 0 Cliques: 328
2
focar em
319
Seguidores

Estratégia de negociação quantitativa de tendência de cruzamento de filtro Butterworth de três polos de Ehlers Estratégia de negociação quantitativa de tendência de cruzamento de filtro Butterworth de três polos de Ehlers

Visão geral

A estratégia de negociação quantitativa de tendências cruzadas do filtro tripolar de Bartwors de Ehlers é um método de análise técnica baseado na teoria de processamento de sinais que aplica o algoritmo de tendências tripolar de Bartwors de John Ehlers aos dados do mercado financeiro. A estratégia utiliza os filtros para suavizar a flutuação dos preços, identificar tendências de mercado potenciais e gerar sinais de negociação utilizando o ponto de cruzamento entre os valores de flutuação e os valores de ação. Além disso, a estratégia integra um mecanismo de detecção dispersa para capturar sinais de mercado convencionais e ocultas e aumentar a precisão das decisões comerciais.

Princípio da estratégia

O núcleo da estratégia de negociação quantitativa de tendências cruzadas do filtro Batworth tripóreo da Ehlers está em seu modelo matemático único. O filtro Batworth é um filtro de baixa passagem amplamente utilizado no campo do processamento de sinais, cuja principal característica é a resposta de amplitude com a maior planície na faixa de passagem.

A implementação da estratégia baseia-se principalmente nos seguintes passos:

  1. Cálculo do filtroAprovado:calculateButterworthFilterA função calcula o valor do filtro de Bartwors de três pólos. A função usa uma fórmula matemática para converter os dados de preços originais em valores de filtro suaves e seus correspondentes valores de disparo. A computação de filtros envolve operações matemáticas complexas, incluindo funções de índice, funções de triângulo e computação recursiva.

  2. Geração de sinaisA estratégia gerou sinais de negociação de duas maneiras principais:

    • Sinal de cruzamento: Quando o valor do filtro ultrapassa o valor do gatilho, gera-se um sinal de multiplicação; Quando o valor do filtro ultrapassa o valor do gatilho, gera-se um sinal de vazio.
    • Detecção dispersaIdentificar situações em que a tendência de preços não coincide com a tendência do indicador, incluindo os spreads convencionais e os spreads ocultos, que geralmente indicam uma possível reversão da tendência.
  3. Execução da transação: Execução de operações de negociação correspondentes de acordo com o sinal gerado:

    • A estratégia é entrar em posições de vários pontos quando surgem sinais múltiplos.
    • A estratégia de liquidação de posições de múltiplos cabeçotes quando surgir um sinal de saída de múltiplos cabeçotes.
    • A estratégia entra em uma posição a céu aberto quando o sinal de curto aparece.
    • A estratégia de liquidação de posições em aberto é executada quando o sinal de saída em branco aparece.

No código, a estratégia é usadastrategy.entryestrategy.closeA função executa uma operação de transação e passaplotshapeA função visualiza os pontos de sinais de negociação no gráfico.

Vantagens estratégicas

A estratégia de negociação quantitativa de tendências cruzadas do filtro Batworth de Ehlers Tripolar possui várias vantagens significativas:

  1. Potente capacidade de filtragem de ruídoO filtro de Batworth tripóreo possui uma excelente capacidade de suavização de sinais, filtrando efetivamente as flutuações de curto prazo do mercado e os falsos sinais, facilitando a identificação da verdadeira tendência do mercado para os comerciantes. Esta filtragem de alta eficiência é realizada através de um coeficiente calculado com precisão no código (coef1 a coef4).

  2. Identificação precisa de tendênciasA intersecção do filtro e da linha de gatilho fornece um sinal claro de mudança de tendência, permitindo que os comerciantes capturem os pontos de mudança de tendência do mercado em tempo hábil.ta.crossovereta.crossunderFunções e estratégias para identificar esses pontos cruzados.

  3. Intuição visualA estratégia usa linhas e áreas de preenchimento de diferentes cores no gráfico para mostrar intuitivamente a relação entre o valor da onda e o valor do gatilho, o que ajuda os comerciantes a julgar rapidamente o estado atual do mercado. O amarelo representa a tendência de alta e o roxo a tendência de baixa.

  4. Flexível e ajustávelA estratégia oferece opções de entrada de preços personalizados e parâmetros de ciclo, permitindo que os comerciantes ajustem os parâmetros da estratégia de acordo com diferentes cenários de mercado e preferências pessoais.

  5. Sistema de transação completoA estratégia não inclui apenas o mecanismo de geração de sinais, mas também integra a lógica de negociação completa, incluindo regras de entrada e saída, tornando-a um sistema de negociação disponível de forma independente.

  6. Visualização de sinaisAprovado:plotshapeFunções, estratégias marcam pontos de sinal de compra e venda no gráfico, permitindo que o comerciante tenha uma visão intuitiva do desempenho do sinal histórico, facilitando a avaliação e otimização da estratégia.

Risco estratégico

Embora a estratégia de negociação quantitativa de tendências cruzadas do filtro Batworth tripolar de Ehlers tenha muitos benefícios, existem alguns riscos potenciais:

  1. Risco de atrasoComo um indicador de filtro, a estratégia inevitavelmente apresenta um certo atraso. Embora o filtro Batworth de três pólos tenha um atraso menor do que a média móvel simples, em mercados que mudam rapidamente, o sinal ainda pode aparecer depois do ponto de entrada ideal. Para reduzir esse risco, pode-se considerar a redução do parâmetro de ciclo, mas isso também pode levar a uma sensibilidade excessiva do sinal.

  2. Risco de sinais falsos: Em mercados turbulentos ou em ambientes de mercado sem uma tendência visível, a estratégia pode produzir mais falsos sinais, resultando em transações frequentes e perda de comissões desnecessárias. O risco de falsos sinais pode ser reduzido adicionando condições de filtragem adicionais ou em combinação com outros indicadores para confirmação.

  3. Sensibilidade do parâmetro: A performance da estratégia é altamente dependente da escolha dos parâmetros do ciclo. Diferentes ambientes de mercado podem exigir diferentes configurações de parâmetros, e a escolha errada de parâmetros pode levar ao fraco desempenho da estratégia. Recomenda-se a otimização dos parâmetros em diferentes ambientes de mercado por meio de retrospectiva histórica.

  4. Risco de um único indicador: A dependência de um único indicador para tomar decisões de negociação pode levar a um fraco desempenho em determinados cenários de mercado. Recomenda-se que a estratégia seja usada como parte de um sistema de negociação, em combinação com outros indicadores ou métodos para um julgamento integrado.

  5. Risco SistêmicoEm condições extremas de mercado, como forte volatilidade ou esgotamento de liquidez, qualquer indicador técnico baseado em dados históricos pode falhar. Recomenda-se o estabelecimento de medidas adequadas de controle de risco, como ordens de parada e gerenciamento de tamanho de posição.

Direção de otimização

Com base em uma análise aprofundada da estratégia de negociação de tendências cruzadas de Ehlers-Barr-Whorst, existem várias direções possíveis de otimização:

  1. Desenho de parâmetros adaptativos: A estratégia atual usa parâmetros de ciclo fixos, e pode considerar implementar um mecanismo de parâmetros de adaptação para ajustar automaticamente os parâmetros de ciclo de acordo com a volatilidade do mercado. Por exemplo, pode-se ajustar dinamicamente os parâmetros de ciclo calculando a amplitude real média (ATR) dos preços, usando períodos mais curtos em mercados de alta volatilidade e períodos mais longos em mercados de baixa volatilidade.

  2. Confirmação de múltiplos períodos: Introduzir um filtro de cálculo de vários períodos de tempo, exigindo a confirmação da consistência do sinal em diferentes períodos de tempo, para reduzir o falso sinal. Pode ser adicionado o seguinte código:

   [butterLong, triggerLong] = calculateButterworthFilter(priceInput, periodInput * 2)
   longConfirmation = butter > trigger and butterLong > triggerLong
  1. Adição de indicadores auxiliaresIntegrar outros indicadores técnicos como filtros de sinal, como o índice de força relativa (RSI), o indicador aleatório (Stochastic) ou o indicador de volume de transação, executando transações apenas com a confirmação de indicadores auxiliares.

  2. Gestão de Riscos reforçadaA estratégia inclui um mecanismo de stop loss dinâmico e um mecanismo de stop loss que ajusta automaticamente a distância de stop loss com base na volatilidade do mercado. Além disso, é possível realizar o cálculo do tamanho da posição com base nos princípios de gestão de fundos.

  3. Otimização de detecção dispersa: O código atual menciona detecção de emissão, mas a implementação real não é detalhada. Os algoritmos de detecção de emissão podem ser aperfeiçoados, especialmente a identificação de emissão oculta, melhorando ainda mais a qualidade do sinal.

  4. Filtragem do cenário de mercadoPor exemplo, é possível usar indicadores de tendência de longo período para determinar se o mercado está em tendência ou em choque e ajustar a estratégia de negociação de acordo.

  5. Aprendizagem de máquinaConsidere a introdução de métodos de aprendizagem de máquina, como algoritmos de classificação ou aprendizagem de reforço, para otimizar a seleção de parâmetros e o processo de geração de sinais, aumentando a capacidade de adaptação da estratégia.

Resumir

A estratégia de negociação de tendências cruzadas de tendências cruzadas de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tendências de tend

A principal vantagem da estratégia reside na sua poderosa capacidade de filtragem de ruído e no seu preciso reconhecimento de tendências, o que a torna excelente em ambientes de mercado onde a tendência é evidente. Ao mesmo tempo, a estratégia atende às necessidades personalizadas de diferentes comerciantes, fornecendo sinais de negociação visíveis e opções de ajuste de parâmetros flexíveis.

No entanto, como todos os indicadores técnicos, a estratégia também enfrenta desafios como atraso, falsos sinais e sensibilidade de parâmetros. A robustez e adaptabilidade da estratégia podem ser melhoradas pela implementação de medidas de otimização, como design de parâmetros adaptativos, confirmação de múltiplos ciclos e integração de indicadores auxiliares.

Finalmente, a estratégia de negociação quantitativa de tendências cruzadas do filtro de batworth tripolar de Ehlers oferece aos comerciantes quantitativos uma ferramenta de negociação baseada em uma sólida base matemática, que pode ser usada tanto como um sistema de negociação independente quanto como parte de uma estratégia de negociação mais complexa, fornecendo informações de referência valiosas para decisões de negociação. Com otimização e aperfeiçoamento contínuos, a estratégia tem a perspectiva de alcançar um desempenho de negociação estável e sustentável em vários ambientes de mercado.

Código-fonte da estratégia
/*backtest
start: 2025-01-01 00:00:00
end: 2025-06-12 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Ehlers Three Pole Butterworth Filter Strategy", overlay=true)

// 输入参数
priceInput = input(hl2, title='Price')
periodInput = input(15, title='Period')

// Function to calculate Ehlers Three Pole Butterworth Filter
calculateButterworthFilter(price, period) =>
    a1 = 0.00
    b1 = 0.00
    c1 = 0.00
    coef1 = 0.00
    coef2 = 0.00
    coef3 = 0.00
    coef4 = 0.00
    butter = 0.00
    trigger = 0.00
    pi = 2 * math.asin(1)

    a1 := math.exp(-3.14159 / period)
    b1 := 2 * a1 * math.cos(1.738 * pi / period)
    c1 := a1 * a1
    coef2 := b1 + c1
    coef3 := -(c1 + b1 * c1)
    coef4 := c1 * c1
    coef1 := (1 - b1 + c1) * (1 - c1) / 8
    butter := coef1 * (price + 3 * nz(price[1]) + 3 * nz(price[2]) + nz(price[3])) + coef2 * nz(butter[1]) + coef3 * nz(butter[2]) + coef4 * nz(butter[3])
    butter := bar_index < 4 ? price : butter
    trigger := nz(butter[1])

    [butter, trigger]

// Calculate filter values
[butter, trigger] = calculateButterworthFilter(priceInput, periodInput)

// 绘制滤波器线
plotButter = plot(butter, 'Butter', color=color.new(color.yellow, 0), linewidth=3)
plotTrigger = plot(trigger, 'Butter Lag', color=color.new(color.fuchsia, 0), linewidth=3)
fill(plotButter, plotTrigger, color=butter > trigger ? color.yellow : color.fuchsia, transp=40)

// 定义交易信号
longCondition = ta.crossover(butter, trigger)
exitLongCondition = ta.crossunder(butter, trigger)
shortCondition = ta.crossunder(butter, trigger)
exitShortCondition = ta.crossover(butter, trigger)

// 执行交易
if (longCondition)
    strategy.entry("Buy", strategy.long)

if (exitLongCondition)
    strategy.close("Buy")

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (exitShortCondition)
    strategy.close("Short")

// 绘制交易信号
plotshape(longCondition, "Buy Signal", shape.triangleup, location.belowbar, color=color.green, size=size.small)
plotshape(exitLongCondition, "Exit Long Signal", shape.triangledown, location.abovebar, color=color.red, size=size.small)
plotshape(shortCondition, "Short Signal", shape.triangledown, location.abovebar, color=color.orange, size=size.small)
plotshape(exitShortCondition, "Exit Short Signal", shape.triangleup, location.belowbar, color=color.blue, size=size.small)