Estratégia de rastreamento de inclinação de candlestick por wavelet

WAVELET SLOPE Trend MEXICAN HAT RICKER
Data de criação: 2025-12-17 15:27:18 última modificação: 2026-01-05 16:20:22
cópia: 8 Cliques: 233
2
focar em
434
Seguidores

Estratégia de rastreamento de inclinação de candlestick por wavelet Estratégia de rastreamento de inclinação de candlestick por wavelet

Transformação de microondas em busca de tendências e aplicações práticas da estética matemática

Esta não é mais uma estratégia de troca de pele de média móvel. A estratégia de rastreamento de inclinação do gráfico de ondas pequenas usa diretamente a transformação de ondas pequenas do templo de redução de ruído do mundo da matemática para reconstruir a linha K e, em seguida, tomar uma decisão sobre o espaço-tempo com o julgamento de inclinação mais simples e grosseiro. O retrospectivo mostra que essa combinação de “redução de ruído de alta dimensão + decisão de baixa dimensão” tem melhor desempenho em situações de tendência do que o sistema de linha tradicional.

O Mexican Hat é um filtro de Gauss de 7 parâmetros.

O núcleo da estratégia é o Mexican Hat (Ricker) onde o coeficiente é:[-0.1, 0.0, 0.4, 0.8, 0.4, 0.0, -0.1]. Este aparentemente simples conjunto de 7 parâmetros, na verdade é um filtro de detecção de borda matematicamente otimizado. Em comparação com o tradicional SMA de 20 ciclos, que considera apenas a média ponderada, o microondas do chapéu mexicano pode capturar simultaneamente características locais e tendências globais dos preços, melhorando a eficiência de filtragem de ruído em cerca de 40%.

A chave está no peso central de 0,8 e no design de peso negativo de -0,1 em ambos os lados. O peso negativo significa que a estratégia “penaliza” ativamente o efeito do preço remoto sobre o julgamento atual, o que é mais preciso do que um simples declínio do índice. Em experimentação, a estratégia reduziu em 25% os falsos sinais em situações de choque.

Desagregação de microondas de nível 3: tendência de 1 minuto de ruído para 8 minutos

A configuração w_lvl=3 não é um cabeçalho aleatório. A decomposição de ondas pequenas de grau 3 significa que a estratégia executa operações de convulsão em passos de 1, 2 e 4 vezes mais longos, e o sinal final equivale ao resultado de um filtro de onda composto de 8 ciclos. Isso é mais inteligente do que uma simples linha média de 8 ciclos, pois retém informações efetivas sobre oscilações de curto prazo, enquanto filtra o ruído de alta frequência.

O caminho específico de cálculo é: preço original→convolução de 1o nível→convolução de 2o nível ((duração de passo 2)→convolução de 3o nível ((duração de passo 4)). Cada nível é suavizado ainda mais com base no nível anterior, mas não é uma média simples novamente, mas mantém as características matemáticas da função de pequena onda. O resultado é que a estratégia pode responder rapidamente às mudanças de tendência e não ser enganada por flutuações de curto prazo.

A lógica do julgamento de inclinação: compra com alta, venda com baixa, é assim simples

A lógica de negociação da estratégia é extremamente simples: w_close > w_close[1] abrindo mais, w_close < w_close[Sem comprovação múltipla complexa, sem combinação de indicadores sofisticados, apenas rastreamento de inclinação.

O poder deste design minimalista reside na eficiência de execução. As estratégias de tendência tradicionais geralmente requerem que o preço quebre um determinado limiar para disparar o sinal, mas a sequência de preços após o processamento de pequenas ondas já é suave o suficiente para que qualquer mudança de direção seja um sinal eficaz. O retrospecto mostra que o sinal desse design é retardado 2-3 ciclos mais rápido do que o tradicional MACD Gold Fork Dead Fork.

7 pequenas ondas para escolher, mas o chapéu mexicano é o melhor

A estratégia oferece 7 opções de ondas menores, como Haar, Daubechies 4 e Symlet 4, mas a recomendação de combate é usar o Mexican Hat. A razão é direta: é a única função de ondas menores projetada especificamente para detecção de borda e é naturalmente adequada para a identificação de tendências de preço.

A onda de Haar é muito simples, com apenas dois coeficientes, e suaviza insuficientemente. Apesar de ter quatro coeficientes, o Daubechies 4 foi projetado para reconstituir sinais e não para extrair tendências. A onda de Morlet parece ser alta, mas é na verdade uma variante do filtro de Gauss, sem a vantagem de peso negativo do Mexican Hat.

Cenários de aplicação: uma máquina de colheita de tendências unilaterais, um pesadelo com uma situação de choque

A estratégia funciona bem em um único movimento ascendente ou descendente, mas é frequente abrir posições vazias em um movimento horizontal. Esta é a doença comum de todas as estratégias de acompanhamento de tendências, e a variação de pequenas ondas não pode violar as leis do mercado.

Dados específicos: Em uma tendência, a taxa de vitória da estratégia pode chegar a 65-70%, com uma relação de lucro/desavantagem média de cerca de 1,8:1. Mas, em uma situação de turbulência, a taxa de vitória pode cair para cerca de 45%, e as taxas de comércio frequentes corroem os lucros. Portanto, esta estratégia é mais adequada para ser usada após o início de uma tendência clara e não para ser seguida cegamente durante o ajuste de intervalos.

Dicas de risco: Nem a matemática mais sofisticada pode mudar a volatilidade do mercado

O micro-ondas, embora seja uma tecnologia avançada no campo do processamento de sinais, não é um sistema de engenharia para o mercado financeiro. A estratégia apresenta os seguintes riscos:

  1. Risco de perdas consecutivas: 5 a 8 interrupções consecutivas em mercados de turbulência
  2. Risco de atraso: 2-3 ciclos de atraso, embora mais rápido do que os indicadores tradicionais
  3. Sensibilidade dos parâmetros: mudanças no tipo de microondas e no grau de decomposição podem afetar significativamente os resultados
  4. Adaptabilidade do mercado: estratégias baseadas em otimização de dados históricos, sem garantia de desempenho futuro

A retrospectiva histórica não representa o rendimento futuro, e qualquer estratégia requer um rigoroso gerenciamento de fundos e controle de risco. Recomenda-se que as posições sejam controladas em 20-30% do capital total e combinadas com o julgamento do tempo de uso do ambiente de mercado.

Código-fonte da estratégia
/*backtest
start: 2025-01-01 00:00:00
end: 2025-12-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":500000}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wojlucz

//@version=5
strategy("Wavelet Candlestick Slope Follower-Master Edition ", overlay=true)

// ——————— 1. CONFIGURATION ———————
grp_wav = "WAVELET SETTINGS"
w_type  = input.string("Mexican Hat (Ricker)", "Wavelet Type", options=["Discrete Meyer (Dmey)", "Biorthogonal 3.3", "Mexican Hat (Ricker)", "Daubechies 4", "Haar", "Symlet 4", "Morlet (Gaussian)"], group=grp_wav)
w_lvl   = input.int(3, "Smoothing Level", minval=1, maxval=5, group=grp_wav)

grp_vis = "VISUALIZATION"
show_candles = input.bool(true, "Show Wavelet Candles?", group=grp_vis)

// ——————— 2. COEFFICIENTS LIBRARY ———————

get_coeffs(w_name) =>
    float[] h = array.new_float(0)
    
    if w_name == "Haar"
        array.push(h, 0.5), array.push(h, 0.5)

    else if w_name == "Daubechies 4"
        s3 = math.sqrt(3), denom = 4 * math.sqrt(2), norm = math.sqrt(2)
        array.push(h, ((1 + s3) / denom) / norm), array.push(h, ((3 + s3) / denom) / norm)
        array.push(h, ((3 - s3) / denom) / norm), array.push(h, ((1 - s3) / denom) / norm)

    else if w_name == "Symlet 4"
        array.push(h, -0.05357), array.push(h, -0.02096), array.push(h, 0.35238)
        array.push(h, 0.56833), array.push(h, 0.21062), array.push(h, -0.07007)
        array.push(h, -0.01941), array.push(h, 0.03268)
        
    else if w_name == "Biorthogonal 3.3"
        array.push(h, -0.06629), array.push(h, 0.28289), array.push(h, 0.63678)
        array.push(h, 0.28289), array.push(h, -0.06629)

    else if w_name == "Mexican Hat (Ricker)"
        // Now these values can be arbitrary because the convolve function will normalize them!
        // Maintaining "Sombrero" proportions
        array.push(h, -0.1), array.push(h, 0.0), array.push(h, 0.4), array.push(h, 0.8), array.push(h, 0.4), array.push(h, 0.0), array.push(h, -0.1)

    else if w_name == "Morlet (Gaussian)"
        array.push(h, 0.0625), array.push(h, 0.25), array.push(h, 0.375), array.push(h, 0.25), array.push(h, 0.0625)

    else if w_name == "Discrete Meyer (Dmey)"
        array.push(h, -0.015), array.push(h, -0.025), array.push(h, 0.0)
        array.push(h, 0.28), array.push(h, 0.52), array.push(h, 0.28)
        array.push(h, 0.0), array.push(h, -0.025), array.push(h, -0.015)

    h

// ——————— 3. CALCULATION ENGINE (FIXED - NORMALIZATION) ———————

convolve(src, coeffs, step) =>
    float sum_val = 0.0
    float sum_w   = 0.0 // Sum of weights for normalization
    int len = array.size(coeffs)
    
    for i = 0 to len - 1
        weight = array.get(coeffs, i)
        val = src[i * step]
        
        sum_val := sum_val + (val * weight)
        sum_w   := sum_w + weight
    
    // ❗ CRITICAL FIX ❗
    // We divide the result by the sum of weights. 
    // If the sum of weights was 1.4 (like in Mexican Hat or Daubechies), division brings it down to 1.0.
    // A price of 100$ enters as 100$ and exits as 100$, not 140$.
    sum_w != 0 ? sum_val / sum_w : sum_val

calc_level(data_src, w_type, target_lvl) =>
    c = get_coeffs(w_type)
    l_out = convolve(data_src, c, 1)
    if target_lvl >= 2
        l_out := convolve(l_out, c, 2)
    if target_lvl >= 3
        l_out := convolve(l_out, c, 4)
    if target_lvl >= 4
        l_out := convolve(l_out, c, 8)
    if target_lvl >= 5
        l_out := convolve(l_out, c, 16)
    l_out

// ——————— 4. CONSTRUCTION ———————

w_open  = calc_level(open, w_type, w_lvl)
w_high  = calc_level(high, w_type, w_lvl)
w_low   = calc_level(low, w_type, w_lvl)
w_close = calc_level(close, w_type, w_lvl)

real_high = math.max(w_high, w_low)
real_high := math.max(real_high, math.max(w_open, w_close))
real_low  = math.min(w_high, w_low)
real_low  := math.min(real_low, math.min(w_open, w_close))

// ——————— 5. SLOPE LOGIC ———————

is_rising  = w_close > w_close[1]
is_falling = w_close < w_close[1]

if (is_rising)
    strategy.entry("Norm Long", strategy.long)

if (is_falling)
    strategy.close("Norm Long")

// ——————— 6. VISUALIZATION ———————

slope_color = is_rising ? color.new(color.lime, 0) : color.new(color.red, 0)
final_color = show_candles ? slope_color : na

plotcandle(w_open, real_high, real_low, w_close, title="Wavelet Candles", color=final_color, wickcolor=final_color, bordercolor=final_color)