Estratégia de acompanhamento de tendências com base no Z-score

EMA
Data de criação: 2024-04-29 17:03:15 última modificação: 2024-04-29 17:03:15
cópia: 0 Cliques: 1207
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências com base no Z-score

Visão geral

A estratégia de acompanhamento de tendências baseada em Z-valores usa o indicador estatístico de Z-valores para capturar oportunidades de tendências, medindo o grau de desvio dos preços de suas médias móveis e usando a diferença padrão como uma escala de unificação. A estratégia é conhecida por sua simplicidade e eficácia, especialmente para mercados onde o movimento de preços costuma retornar ao equilíbrio. Ao contrário de sistemas complexos que dependem de vários indicadores, a estratégia de tendências de Z-valores se concentra em mudanças de preços claramente e estatisticamente significativas, ideal para os comerciantes que preferem métodos simples e orientados a dados.

Princípio da estratégia

O núcleo da estratégia é o cálculo do valor Z. O valor Z é calculado pela diferença entre o preço atual e a média móvel do índice de preços definido pelo usuário e dividido pela diferença de preço padrão do mesmo comprimento:

z = (x - μ) / σ

Destes, x é o preço atual, μ é o valor médio da EMA e σ é a diferença padrão.

Os sinais de negociação são gerados com base em Z-valores que atravessam o limite de espera:

  • Entrada múltipla: quando o valor de Z atravessa o limiar positivo para cima.
  • Aparição de múltiplos cabeças: quando o valor de Z atravessa a barreira negativa para baixo.
  • Entrada de cabeça vazia: quando o valor de Z atravessa a barreira negativa para baixo.
  • A partida em branco: quando o valor de Z atravessa o limiar positivo para cima.

Vantagens estratégicas

  1. Simples e eficaz: a estratégia depende de poucos parâmetros, é fácil de entender e implementar e é extremamente eficaz na captura de oportunidades de tendências.
  2. Fundamentos estatísticos: Os valores Z são uma ferramenta estatística bem-sucedida que fornece uma base teórica sólida para a estratégia.
  3. Adaptabilidade: A estratégia adapta-se de forma flexível a diferentes estilos de negociação e ambientes de mercado, ajustando parâmetros como os devaluações, os EMAs e os ciclos de cálculo dos desvios padrão.
  4. Sinais claros: Os sinais de negociação baseados em Z-valores que atravessam um limiar são simples e claros, facilitando a tomada de decisões e a execução rápidas.

Risco estratégico

  1. Sensibilidade de parâmetros: configurações de parâmetros inadequadas (por exemplo, um limite muito alto ou muito baixo) podem causar falha no sinal de negociação, perder oportunidades ou causar perdas.
  2. Identificação de tendências: A estratégia pode apresentar um mau desempenho devido a frequentes falsos sinais durante os períodos de turbulência ou correção de mercado.
  3. Efeito de atraso: Como uma estratégia de acompanhamento de tendências, os sinais de entrada e saída têm um certo atraso, podendo perder o melhor momento.

Os riscos acima mencionados podem ser controlados e mitigados através de análise de mercado contínua, otimização de parâmetros e implementação prudente com base em feedback.

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

  1. Limite dinâmico: introdução de um limiar dinâmico relacionado à volatilidade, que pode ser eficazmente adaptado a diferentes condições de mercado, melhorando a qualidade do sinal.
  2. Indicadores combinados: combinando outros indicadores técnicos, como RSI, MACD, etc., para a segunda confirmação de sinais de negociação, aumentando a confiabilidade.
  3. Gerenciamento de posições: Incorpora mecanismos de controle de posições, como o ATR, para redução de posições em mercados de turbulência e aumento de posições em mercados de tendência, otimizando a relação entre risco e ganho.
  4. Multi-escala de tempo: Computação de Z-valores em várias escalas de tempo, captação de tendências em diferentes níveis e enriquece a dimensão da estratégia.

Resumir

A estratégia de seguimento de tendências baseada em valores Z, com suas características simples, robustas e flexíveis, oferece uma perspectiva única para capturar oportunidades de tendências. Com a configuração razoável de parâmetros, o gerenciamento cuidadoso de riscos e a otimização contínua, a estratégia promete ser uma grande ajuda para os comerciantes de quantificação, avançar com firmeza em mercados variados.

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

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

// This strategy employs a statistical approach by using a Z-score, which measures the deviation of the price from its moving average normalized by the standard deviation.
// Very simple and effective approach

//@version=5
strategy('Price Based Z-Trend - strategy [presentTrading]',shorttitle = 'Price Based Z-Trend - strategy [presentTrading]', overlay=false, precision=3, 
         commission_value=0.1, commission_type=strategy.commission.percent, slippage=1, 
         currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)

// User-definable parameters for the Z-score calculation and bar coloring
tradeDirection = input.string("Both", "Trading Direction", options=["Long", "Short", "Both"]) // User selects trading direction

priceDeviationLength = input.int(100, "Standard Deviation Length", step=1) // Length for standard deviation calculation
priceAverageLength = input.int(100, "Average Length", step=1) // Length for moving average calculation
Threshold = input.float(1, "Threshold", step=0.1) // Number of standard deviations for Z-score threshold
priceBar = input(title='Bar Color', defval=true) // Toggle for coloring price bars based on Z-score


// Z-score calculation based on user input for the price source (typically the closing price)
priceSource = input(close, title="Source")
priceZScore = (priceSource - ta.ema(priceSource, priceAverageLength)) / ta.stdev(priceSource, priceDeviationLength) // Z-score calculation

// Conditions for entering and exiting trades based on Z-score crossovers
priceLongCondition = ta.crossover(priceZScore, Threshold) // Condition to enter long positions
priceExitLongCondition = ta.crossunder(priceZScore, -Threshold) // Condition to exit long positions

longEntryCondition = ta.crossover(priceZScore, Threshold)
longExitCondition = ta.crossunder(priceZScore, -Threshold)
shortEntryCondition = ta.crossunder(priceZScore, -Threshold)
shortExitCondition = ta.crossover(priceZScore, Threshold)


// Strategy conditions and execution based on Z-score crossovers and trading direction
if (tradeDirection == "Long" or tradeDirection == "Both") and longEntryCondition
    strategy.entry("Long", strategy.long) // Enter a long position

if (tradeDirection == "Long" or tradeDirection == "Both") and longExitCondition
    strategy.close("Long") // Close the long position

if (tradeDirection == "Short" or tradeDirection == "Both") and shortEntryCondition
    strategy.entry("Short", strategy.short) // Enter a short position

if (tradeDirection == "Short" or tradeDirection == "Both") and shortExitCondition
    strategy.close("Short") // Close the short position


// Dynamic Thresholds Visualization using 'plot'
plot(Threshold, "Dynamic Entry Threshold", color=color.new(color.green, 50))
plot(-Threshold, "Dynamic Short Entry Threshold", color=color.new(color.red, 50))


// Color-coding Z-Score
priceZScoreColor = priceZScore > Threshold ? color.green : 
              priceZScore < -Threshold ? color.red : color.blue
plot(priceZScore, "Z-Score", color=priceZScoreColor)

// Lines
hline(0, color=color.rgb(255, 255, 255, 50), linestyle=hline.style_dotted)

// Bar Color
priceBarColor = priceZScore > Threshold ? color.green :
           priceZScore > 0 ? color.lime :
           priceZScore < Threshold ? color.maroon :
           priceZScore < 0 ? color.red : color.black
barcolor(priceBar ? priceBarColor : na)