Conteúdo do artigo

Evidências e escopo

As três referências são documentos oficiais do SciPy (API) que detalham as definições e o comportamento de implementação. Elas não fornecem nenhuma evidência de que uma estratégia de negociação construída a partir desses recursos seja lucrativa.

Dados e mercadosUtilize uma série consistente de preços de fechamento ou um indicador numérico. Trate as observações faltantes e as lacunas entre sessões antes de detectar extremos; não misture unidades de preço ou convenções de ajuste.
Períodos gráficos da pesquisaH=1 e barras diárias são configurações de pesquisa possíveis. O comprimento da janela contabiliza as observações, não necessariamente um período de mercado equivalente entre os instrumentos.
O pico 106 está quatro pontos acima de sua base mais alta de 102; o pico 110 sobe apenas ligeiramente acima da base 109.7 em sua janela local separada.Abrir ilustração em tamanho completo
Preços sintéticos originais. Janelas locais separadas mostram por que 106 pode ser mais proeminente do que uma ondulação em 110. A série completa plotada não é tratada como uma única janela de proeminência.

Fluxo de trabalho prático

Fluxo de trabalho de Proeminência de picos: filtrar máximas e mínimas pela estrutura local
As etapas completas aparecem abaixo. Em cada etapa, dados ausentes ou condições não atendidas exigem o registro de um motivo de rejeição.
  1. Escolha a sérieDefina se usará preços de fechamento ou um indicador e valide os dados ausentes.
  2. Aguarde a janela completaAvalie o centro somente depois que o lado direito estiver fechado.
  3. Encontre ambas as basesRespeite os limites das janelas e os picos mais altos.
  4. NormalizarCompare a proeminência com o limiar registrado e consistente com a unidade.
  5. Congele o eventoArmazene as propriedades e o carimbo de data/hora de confirmação real.

Um preço mais alto não significa necessariamente um pico mais proeminente.

Um fechamento em 120 acima de uma base próxima a 119.8 pode ser estruturalmente menos distinto do que um fechamento em 105 acima de uma base próxima a 100. A altura absoluta depende do preço nominal do instrumento. A proeminência levanta uma questão geométrica diferente: quanto o pico candidato se eleva acima da curva de nível que conecta sua estrutura circundante?

O SciPy define a proeminência usando a base lateral mais alta entre as duas [1]. A largura é medida em uma altura de proeminência relativa especificada [2], enquanto find_peaks expõe vários filtros separados [3]. Essas são ferramentas de séries numéricas. Interpretar um pico aceito como resistência, distribuição ou oportunidade de negociação requer contexto adicional e testes independentes.

O objetivo é reduzir de forma consistente as âncoras insignificantes. Não se trata de uma promessa de que uma grande proeminência identifique um topo final. Uma forte tendência pode gerar picos locais proeminentes, seguidos por preços ainda mais altos, e esperar pela estrutura circundante pode resultar em uma relação recompensa/risco pouco favorável quando um evento for confirmado.

Um detector local com um atraso de confirmação finito

A linha de base proposta utiliza observações de W=11 e raio h=5. Ao final do período t, avalia-se apenas o candidato i=t−5 dentro do intervalo de i−5 até i+5. Requer-se proeminência de pelo menos 1.5×ATR[i−1]. W=11 e 1.5 são configurações experimentais, não valores otimizados. ATR, anterior ao candidato, fornece uma referência de volatilidade fixa já conhecida por confirmação.

A partir do pico, examine cada lado até que o limite da janela ou um pico mais alto limite a busca. Encontre o mínimo em cada intervalo resultante, escolha a base mais alta e subtraia-a do valor candidato. Para vales, aplique a mesma geometria à série de preços de fechamento com o sinal invertido. Considerar o menor valor entre os dois lados superestimaria a proeminência de um pico situado na borda de uma estrutura maior.

O código restringe os platôs a uma única observação. Se forem necessários topos planos, defina seu carimbo de data/hora representativo e a política de confirmação completa em outra versão. Valores NaN não devem se tornar zeros automaticamente, pois isso criaria bases profundas artificiais. Um candidato no limite de uma janela não possui as evidências circundantes necessárias e não deve ser tratado como um pico centralizado.

h = 5; W = 2*h + 1
on_closed_bar(t):
    i = t - h
    if i-h < 0 or invalid_data(i-h, t): return
    x = close[i-h:t+1]
    candidates, _ = find_peaks(x, plateau_size=(1,1))
    if h not in candidates: return
    prominences, left_bases, right_bases = peak_prominences(x, [h], wlen=W)
    p = prominences[0]
    a = ATR[i-1]
    if a is not missing and isfinite(a) and a > 0 and p / a >= 1.5:
        emit_once(i, confirmed_at=t, prominence=p, window=W)
# Troughs: repeat on -close, preserving timestamps and ATR.

Altura, limiar, proeminência e largura respondem a perguntas diferentes.

A altura é o valor do pico. O limiar mede a diferença imediata em relação às observações vizinhas. A proeminência utiliza uma base circundante mais ampla. A largura mede a extensão horizontal em um nível vertical escolhido. Um topo arredondado e amplo pode apresentar pequenas diferenças em relação aos vizinhos imediatos, mantendo, ao mesmo tempo, uma proeminência substancial; um requisito de limiar elevado pode, inadvertidamente, manter apenas picos de uma barra.

A filtragem por distância também requer uma política causal. Executar find_peaks em toda a série histórica e permitir que um pico futuro maior elimine um pico anterior próximo pode alterar a seleção passada. A linha de base avalia cada candidato centralizado e não aplica nenhuma poda global por distância. Um período de espera após eventos publicados é uma possível alternativa, mas prioriza a disponibilidade cronológica em vez do pico mais impressionante visível posteriormente.

Mantenha todas as propriedades medidas no registro do evento, mesmo quando um filtro rejeitar o candidato. Isso possibilita diagnosticar qual condição removeu as oportunidades. Caso contrário, adicionar largura e distância simultaneamente pode melhorar uma estatística agregada, mas sem fornecer uma explicação clara sobre se a mudança ocorreu devido à forma, ao momento ou a um número diferente de negociações.

Exemplos numéricos, ondulações rejeitadas e negociações perdedoras.

Segmento local sintético: 100, 101, 103, 106, 104, 102, 103. Dentro deste segmento ilustrativo, a base esquerda é 100 e a base direita é 102, portanto a proeminência é 4. Com referência ATR=2, a proeminência normalizada é 2 ATR e excede o limite proposto 1.5. A janela circundante ainda precisa ser concluída antes que isso possa ser um evento publicado.

Outro segmento, 108, 109, 110, 109.8, 109.7, contém um pico absoluto mais alto, mas uma base lateral mais alta, de 109.7. Sua proeminência local é apenas 0.3; com ATR=1, ele falha no mesmo filtro. Esses segmentos ilustram a geometria, em vez de configurações completas de W=11 ou evidências de que um produz negociações lucrativas e o outro não.

Uma operação pode resultar em prejuízo após uma máxima expressiva. Suponha que a confirmação permita uma posição vendida, o próximo preço de execução disponível seja 101.8 e o stop loss esteja em 106.2. O risco de preço planejado já é de 4.4 pontos. Uma recuperação para 107 gera perda na operação, mesmo que o detector tenha medido corretamente o extremo anterior. Uma meta projetada igual à proeminência seria, por si só, uma hipótese à parte.

Adicione um pico vizinho mais alto, logo dentro e logo fora da janela fixa, para testar a localidade. A proeminência do candidato recém-avaliado pode mudar entre esses conjuntos de dados, mas um evento previamente publicado com um prefixo inalterado não deve ser reescrito. Isso distingue uma definição de janela deliberada do uso acidental de uma estrutura futura.

Use a proeminência como elemento de ancoragem antes de criar uma nova entrada.

Uma das utilizações propostas é selecionar âncoras para topos duplos ou zonas de resistência, deixando o gatilho para um evento posterior, como um fechamento abaixo de uma mínima intermediária. Congele window_start, window_end, ambas as bases, proeminência, ATR_ref, versão do detector e confirmed_at com o candidato. Esses campos permitem a reconstrução exata da decisão.

Uma entrada imediata após a confirmação requer seu próprio stop loss, tempo de saída, limites de exposição e modelo de execução. A proeminência não fornece um preço-alvo garantido automaticamente. Compare uma projeção baseada em proeminência com um alvo de R fixo ou um tempo de saída apenas dentro das configurações registradas; não escolha a saída separadamente para cada gráfico atrativo.

Quando o detector opera em RSI ou outro indicador limitado, sua proeminência é medida em pontos do indicador. Dividir a proeminência de RSI pelo ATR expresso em unidades de preço mistura unidades. Use uma normalização dimensionalmente consistente ou mantenha os pontos brutos do indicador como um recurso calibrado separadamente. O mesmo aviso se aplica ao comparar detectores de preço logarítmico e preço ordinário.

Que o teste de volume seja uma contribuição distinta.

O volume não está incluído na fórmula de proeminência, portanto, pode-se adicionar uma característica de dados separada, mas isso não garante independência estatística. Salve a atividade próxima ao extremo e RVOL no gatilho final separadamente. Um alto volume agregado por si só não consegue identificar a participação institucional, e picos proeminentes em torno de notícias podem coincidir com spreads dispendiosos.

Agrupe as observações por proeminência/ATR e compare diferentes intervalos de RVOL dentro desses grupos. Isso questiona se o volume adiciona informações além da amplitude do preço, em vez de simplesmente selecionar movimentos maiores. Use linhas de base de tempo de sessão comparáveis para ativos intradiários e defina convenções de local e volume base versus volume de cotação para criptomoedas.

Relate como o filtro de volume altera a contagem de sinais, o tempo médio de retenção e a exposição. Um lucro médio maior por operação executada pode coexistir com um desempenho inferior da carteira se o filtro descartar muitas oportunidades úteis. A ausência de volume deve ter uma política explícita para dados indisponíveis, em vez de ser interpretada como uma escassez extrema.

Validar separadamente a geometria, a estabilidade e o valor econômico.

Os casos de teste devem incluir um pequeno pico aninhado ao lado de um pico maior, platôs planos, valores NaN, bordas de janela e candidatos próximos uns dos outros. Verifique as localizações exatas das bases, bem como a proeminência resultante. Se o SciPy for usado, registre sua versão e qualquer pré-processamento; um filtro de suavização centralizado adiciona seu próprio atraso aos dados futuros.

Meça o número de âncoras retidas, o atraso fixo de h barras para confirmar e a fração de padrões subsequentes que estão obsoletos quando sua âncora final se torna disponível. Em seguida, avalie os resultados líquidos em um período de teste previamente bloqueado com custos e execução realistas. Um gráfico visualmente mais limpo não é uma métrica econômica.

Aumentar o valor de W altera a definição da estrutura local recém-avaliada. Não deve modificar eventos já publicados pertencentes à versão anterior. Compare os tamanhos de janela próximos nos dados de desenvolvimento, registre o número de tentativas e relate se a filtragem adicional melhora significativamente a expectativa líquida ou o risco após considerar as oportunidades perdidas.

Erros comuns

Confundir proeminência com altura absoluta

Um preço nominal mais alto não implica um pico mais acentuado em relação à sua base local.

Eliminar picos por distância depois de ver a série completa

Um pico futuro pode eliminar um evento anterior. Em vez disso, use a repetição ou um tempo de espera causal definido.

Suavização sem levar em conta o atraso

Um suavizador centrado utiliza observações posteriores. Adicione esse atraso à disponibilidade real do evento.

Lista de verificação antes de usar este método

Marque cada item após verificá-lo nos seus dados. O progresso fica salvo neste navegador; isso não certifica que a estratégia seja lucrativa.

0/8 itens

Perguntas frequentes

Será que a proeminência é melhor do que um pivô comum?

Isso adiciona um critério de amplitude e base. Se isso ajuda ou não depende da finalidade do detector e do desempenho fora da amostra da estratégia que utiliza suas âncoras.

O Prominence consegue detectar picos RSI?

Sim, porque RSI é uma série numérica. As unidades resultantes são pontos RSI, portanto o ATR em unidades de preço não é um denominador direto válido.

Fontes de pesquisa

Cada fonte sustenta a definição ou evidência descrita ao lado. O pseudocódigo, os exemplos sintéticos e os parâmetros propostos exigem validação separada.

  1. scipy.signal.peak_prominencesSciPy. Leia as definições de base, wlen e algoritmo; trata-se de documentação numérica, não de pesquisa financeira. Verificado em: .
  2. scipy.signal.peak_widthsSciPy. Leia sobre a medição da largura de proeminência relativa e o comportamento de interpolação. Verificado em: .
  3. scipy.signal.find_peaksSciPy. Leia as definições de filtro e o tratamento de distância. Verificado em: .

Métodos relacionados

Nota de risco

Este conteúdo apoia a educação e o planejamento de pesquisas, não constitui aconselhamento financeiro. O Backtest é uma simulação histórica, não garante desempenho futuro e não executa operações reais. Os métodos desta biblioteca não são necessariamente recursos disponíveis no aplicativo. Consulte a metodologia e a central de aprendizado.

Valide as regras antes de arriscar capital real

Verifique o suporte do aplicativo, os dados e cada operação simulada; detectores avançados podem exigir uma implementação própria.

Baixe o Backtest na App Store