Estratégia de negociação de estatísticas de preços otimizadas de momentum com base no cruzamento de pontuação Z suavizado

Z-SCORE SMA stdev PNL Momentum Filter
Data de criação: 2025-06-03 10:44:56 última modificação: 2025-06-03 10:44:56
cópia: 0 Cliques: 330
2
focar em
319
Seguidores

Estratégia de negociação de estatísticas de preços otimizadas de momentum com base no cruzamento de pontuação Z suavizado Estratégia de negociação de estatísticas de preços otimizadas de momentum com base no cruzamento de pontuação Z suavizado

Visão geral

A estratégia é baseada no conceito estatístico de Z-score, usado para identificar o desvio estatístico do preço em relação à sua média local. A estratégia calcula o Z-score do preço de fechamento, e depois aplica médias móveis de curto e longo prazo para suavizar o Z-score. A estratégia gera um sinal de entrada multi-cabeça quando o Z-score de curto prazo passa pelo Z-score de longo prazo e um sinal de equilíbrio quando o Z-score de curto prazo passa pelo Z-score de longo prazo. A estratégia também inclui controle de intervalo de sinal e filtros baseados em volumes dinâmicos para reduzir o ruído de negociação.

Princípio da estratégia

O núcleo da estratégia é o cálculo e a aplicação do Z-score. O Z-score é uma estatística usada para medir o grau de desvio de um ponto de dados em relação à média da amostra, em unidades de diferença padrão. Z = (preço de fechamento - SMA ((preço de fechamento, N)) / STDEV ((preço de fechamento, N)) N é o ciclo básico definido pelo usuário.

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

  1. Cálculo da pontuação Z original do preço de fechamento
  2. Aplicação de suavização de curto prazo (SMA) para a classificação Z original
  3. Aplicação de suavização prolongada (SMA) à classificação original Z
  4. Ao usar um rating Z de longo prazo sobre um rating Z de curto prazo, a posição é aumentada se for cumprida uma condição adicional
  5. Quando a notação Z de liquidez de curto prazo é usada sob a notação Z de liquidez de longo prazo, a posição é liquidada se for cumprida uma condição adicional

Condições adicionais incluem:

  • Intervalo de sinal: o mínimo número de linhas K deve ser intercalado entre dois sinais do mesmo tipo (entrada ou saída)
  • Filtro de potência: proibido de entrar quando três ou mais linhas K ascendentes aparecem em sequência; proibido de sair quando três ou mais linhas K descendentes aparecem em sequência

Vantagens estratégicas

  1. Estatística BásicaO Z-score é uma ferramenta estatística bem desenvolvida que permite identificar o grau de desvio dos preços da sua média e capturar as oportunidades de um retorno dos preços para a média.
  2. Tratamento suave: redução de ruído e melhoria da qualidade do sinal, através da aplicação de suavização de curto e longo prazo para a classificação Z original.
  3. Controle de intervalo de sinalA operação foi executada com o objetivo de reduzir o excesso de transações e sinais duplicados, através da configuração de intervalos mínimos entre sinais.
  4. Filtro de potênciaO Bitcoin, o principal criador do mercado de criptomoedas do mundo, foi criado em 2009 para ajudar os investidores a evitar perdas desnecessárias em situações de alta.
  5. SimplicidadeA estratégia usa apenas dados de preços de fechamento, não depende de uma combinação complexa de indicadores e é fácil de entender e implementar.
  6. Monitoramento em tempo realA plataforma de negociação de criptomoedas, que inclui uma tabela em tempo real dos lucros não realizados, permite aos traders monitorar o estado de sua posição.
  7. Flexibilidade de parâmetros: O usuário pode ajustar o ciclo de base e os parâmetros de suavização do Z-score de acordo com diferentes mercados e prazos de tempo, aumentando a adaptabilidade.

Risco estratégico

  1. Risco de hipóteses estatísticasA classificação Z assume que a distribuição de preços é quase normal e pode não funcionar bem em um ambiente de mercado não normal.
  2. Sensibilidade do parâmetroA escolha de parâmetros para o ciclo de base e para o deslizamento da pontuação Z tem um impacto significativo no desempenho da estratégia. A escolha inadequada de parâmetros pode levar a um excesso de encaixe ou atraso no sinal.
  3. Limitação de um único fator: A estratégia baseia-se apenas na geração de sinais de cruzamento de pontuação Z. A falta de outros indicadores de confirmação pode levar a falsos sinais.
  4. Dependência do ambiente de mercadoA estratégia baseada na regressão da média pode continuar a produzir sinais errados em mercados de forte tendência.
  5. Relógio atrasadoA utilização de uma média móvel suave pode atrasar o sinal e fazer com que o jogador perca o melhor ponto de entrada ou saída.

Solução:

  • Testar diferentes cenários de mercado para encontrar o melhor conjunto de parâmetros
  • Combinação de filtros de tendência para reduzir ou desativar a negociação em mercados de forte tendência
  • Adição de indicadores de confirmação adicionais, como análise de volume de negócios ou outros indicadores técnicos
  • Considere o uso de parâmetros de adaptação, ajustando automaticamente os parâmetros de pontuação Z para a volatilidade do mercado

Direção de otimização

  1. Identificação de tendências e integração: Adicionar um componente de identificação de tendências para ajustar o comportamento estratégico em mercados com uma clara direção de tendência. Isso pode ser feito por meio de médias móveis de longo prazo ou indicadores ADX, evitando a produção de sinais errôneos de regresso à média em fortes tendências.
  2. Ajuste de volatilidade: Realizar o ajuste adaptativo dos parâmetros de pontuação Z, otimizando automaticamente o ciclo básico e os parâmetros de smoothing de acordo com a volatilidade do mercado. Isso aumentará a robustez da estratégia em diferentes ambientes de mercado.
  3. Análise de múltiplos quadros temporais: Integração de sinais de pontuação Z em quadros de tempo mais elevados como confirmação, negociação somente quando vários sinais de quadros de tempo coincidem, reduzindo os falsos sinais.
  4. Mecanismo de suspensão: Implementação de stop loss dinâmico com base na variação da escala Z, aumentando a capacidade de gerenciamento de risco. Por exemplo, o stop loss pode ser configurado como um determinado múltiplo de desvio da escala Z de entrada.
  5. Parte dos lucros obtidosImplementação de estratégias de lucro intermitente, liquidação parcial de posições quando o escore Z atinge um determinado desvalor, otimização da gestão de fundos.
  6. Confirmação de entrega: Adição de análise de volume de transação como confirmação de transação, executando transações apenas quando o sinal de pontuação Z é suportado pelo volume de transação, aumentando a qualidade do sinal.
  7. Portfólio de indicadoresCombinação do Z-score com outros indicadores estatísticos ou técnicos, como o RSI ou o Brinks, para criar modelos de decisão multifatorial e aumentar a confiabilidade da estratégia.

Resumir

A estratégia de negociação estatística de preços de otimização dinâmica baseada no cruzamento do escalão Z é um sistema de negociação simples baseado em princípios estatísticos, focado em capturar o desvio e a regressão do preço em relação à sua média local. Através do processamento de suavização, controle de intervalo de sinal e filtragem dinâmica, a estratégia reduz efetivamente o ruído de negociação e melhora a qualidade do sinal. A estratégia é especialmente adequada para produtos financeiros em mercados turbulentos e com comportamento de regressão da média.

No entanto, a estratégia também possui algumas limitações, como a dependência de hipóteses estatísticas, sensibilidade de parâmetros e decisão de um único fator. As medidas de otimização, como a adição de identificação de tendências, ajuste de volatilidade, análise de múltiplos quadros temporais, mecanismos de parada de perdas, confirmação de volume de transação e combinação de múltiplos fatores, podem aumentar significativamente a robustez e o desempenho da estratégia.

Em geral, trata-se de um quadro estratégico com uma base teórica sólida, que permite uma estratégia simples, fácil de compreender e de expandir, adequada para ser um componente básico de um sistema de negociação ou uma ferramenta educacional para ajudar os comerciantes a entender a aplicação da estatística na negociação.

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

//@version=6
strategy("Price Statistical Strategy-Z Score V 1.01", overlay=true)

// === Enable / Disable Z-Score Strategy Block ===
enableZScore = input.bool(true, title="Enable Smoothed Z-Score Strategy", tooltip="When enabled, this block calculates a smoothed Z-Score of the closing price and generates entry/exit signals based on crossover behavior between short-term and long-term smoothed Z-Scores.\n\nRecommended for quick and classic detection of price deviation from mean.\nSensitive to outliers. Best suited for relatively normal-distributed market conditions.")

// === Z-Score Parameters ===
zBaseLength = input.int(3, minval=1, title="Z-Score Base Period")
shortSmooth = input.int(3, title="Short-Term Smoothing")
longSmooth = input.int(5, title="Long-Term Smoothing")

// === Z-Score Calculation Function ===
f_zscore(src, length) =>
    mean = ta.sma(src, length)
    std_dev = ta.stdev(src, length)
    z = (src - mean) / std_dev
    z

// === Z-Score Logic ===
zRaw = f_zscore(close, zBaseLength)
zShort = ta.sma(zRaw, shortSmooth)
zLong = ta.sma(zRaw, longSmooth)


// === Minimum gap between identical signals ===
gapBars = input.int(5, minval=1, title="Bars gap between identical signals", tooltip="Minimum number of bars required between two identical signals (entry or exit). Helps reduce signal noise.")


// === Candle-based momentum filters ===
bullish_3bars = close > close[1] and close[1] > close[2] and close[2] > close[3] and close[3] > close[4]
bearish_3bars = close < close[1] and close[1] < close[2] and close[2] < close[3] and close[3] < close[4]

// === Entry and Exit Logic with minimum signal gap and candle momentum filter ===
var int lastEntryBar = na
var int lastExitBar  = na

if enableZScore
    longCondition = (zShort > zLong)
    exitCondition = (zShort < zLong)

    if longCondition and (na(lastEntryBar) or bar_index - lastEntryBar > gapBars) and not bullish_3bars
        strategy.entry("Z Score", strategy.long)
        lastEntryBar := bar_index

    if exitCondition and (na(lastExitBar) or bar_index - lastExitBar > gapBars) and not bearish_3bars
        strategy.close("Z Score", comment="Z Score")
        lastExitBar := bar_index

// === Real-time PnL Table for Last Open Position ===
var table positionTable = table.new(position.bottom_right, 2, 2, border_width=1)

// Header Labels
table.cell(positionTable, 0, 0, "Entry Price", text_color=color.white, bgcolor=color.gray)
table.cell(positionTable, 1, 0, "Unrealized PnL (%)", text_color=color.white, bgcolor=color.gray)

// Values (only when position is open)
isLong        = strategy.position_size > 0
entryPrice    = strategy.position_avg_price
unrealizedPnL = isLong ? (close - entryPrice) / entryPrice * 100 : na

// Define dynamic text color for PnL
pnlColor = unrealizedPnL > 0 ? color.green : unrealizedPnL < 0 ? color.red : color.gray

// Update Table Content
if isLong
    table.cell(positionTable, 0, 1, str.tostring(entryPrice, "#.####"), text_color=color.gray, bgcolor=color.new(color.gray, 90))
    table.cell(positionTable, 1, 1, str.tostring(unrealizedPnL, "#.##") + " %", text_color=pnlColor, bgcolor=color.new(pnlColor, 90))
else
    table.cell(positionTable, 0, 1, "—", text_color=color.gray, bgcolor=color.new(color.gray, 90))
    table.cell(positionTable, 1, 1, "—", text_color=color.gray, bgcolor=color.new(color.gray, 90))