Estratégia de negociação dinâmica baseada em Z-score e supertrend: sistema de troca longo-curto

RSI ATR SMA
Data de criação: 2024-11-27 16:01:20 última modificação: 2024-11-27 16:01:20
cópia: 0 Cliques: 528
1
focar em
1617
Seguidores

Estratégia de negociação dinâmica baseada em Z-score e supertrend: sistema de troca longo-curto

Visão geral

Esta estratégia é um sistema de negociação quantitativa que combina o método estatístico Z-Score, o indicador RSI relativamente forte e o indicador Supertrend. A estratégia busca oportunidades de alta probabilidade de negociação no mercado, monitorando o desvio estatístico dos preços, combinando indicadores de momentum e confirmação de tendências. A estratégia não só consegue capturar oportunidades de superaquecimento do mercado, mas também pode filtrar sinais falsos através da confirmação de tendências, permitindo negociações bidirecionais em muitos espaços.

Princípio da estratégia

A lógica central da estratégia baseia-se na sinergia de três principais indicadores técnicos: primeiro, medir o grau de desvio do preço atual em relação à média histórica através do cálculo de um Z-score no preço, usando uma média móvel e um diferencial padrão de 75 ciclos. Quando o Z-score é superior a 1,1 ou inferior a -1,1, indica-se um desvio estatístico significativo no preço.

Vantagens estratégicas

  1. Confirmação de múltiplos sinais: aumenta consideravelmente a confiabilidade dos sinais de negociação, através da combinação de indicadores em três dimensões: estatística, dinâmica e tendência.
  2. Adaptabilidade: O método de cálculo do Z-score permite que a estratégia se adapte a diferentes circunstâncias de mercado, sem ser afetada pelo nível absoluto de preços.
  3. Controle de risco perfeito: o indicador de tendências super oferece um mecanismo automático de controle de tendências e de risco.
  4. Negociação bidirecional: A estratégia permite capturar oportunidades em duas direções, aumentando a eficiência do uso de fundos.
  5. Sinais claros: a estratégia usa modelos matemáticos claros e indicadores objetivos, evitando julgamentos subjetivos.

Risco estratégico

  1. Risco de atraso: devido à utilização de médias móveis de vários períodos, a estratégia pode apresentar atraso de sinal em mercados que mudam rapidamente.
  2. Risco de Falso Breakout: Pode haver frequentes sinais de Falso Breakout no mercado de Forex.
  3. Sensibilidade de parâmetros: a eficácia da estratégia é altamente dependente da escolha de parâmetros, e diferentes ambientes de mercado podem exigir diferentes configurações de parâmetros.
  4. Dependência de condições de mercado: o desempenho da estratégia pode não ser ideal em mercados onde a tendência não é clara.

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

  1. Ajuste de parâmetros dinâmicos: um mecanismo de parâmetros adaptativos pode ser introduzido para ajustar automaticamente os parâmetros de Z-score de desvalorização e supertrend de acordo com a volatilidade do mercado.
  2. Adição de filtros de cenário de mercado: adição de módulo de identificação de cenário de mercado, usando diferentes conjuntos de parâmetros em diferentes condições de mercado.
  3. Melhoria do mecanismo de parada de perdas: introdução de estratégias de parada de perdas dinâmicas, como paradas baseadas em ATR ou paradas de rastreamento.
  4. Filtragem de sinais de otimização: pode ser adicionada a confirmação de volume de transação ou outros indicadores técnicos para filtrar ainda mais os sinais de transação.
  5. Introdução de filtros de tempo: Considere a possibilidade de aumentar o limite de janelas de tempo de negociação, evitando os períodos de maior volatilidade.

Resumir

Trata-se de uma estratégia de negociação quantitativa que combina métodos estatísticos e análise técnica para aumentar a confiabilidade das negociações por meio da confirmação de múltiplos sinais. O principal benefício da estratégia reside em seus modelos matemáticos objetivos e mecanismos de controle de risco perfeitos, mas também é necessário prestar atenção à otimização de parâmetros e à adaptabilidade do mercado.

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

//@version=5
strategy("Z-Score Long and Short Strategy with Supertrend", overlay=true)

// Inputs for Z-Score
len = input.int(75, "Z-Score Lookback Length")
z_long_threshold = 1.1  // Threshold for Z-Score to open long
z_short_threshold = -1.1  // Threshold for Z-Score to open short

// Z-Score Calculation
z = (close - ta.sma(close, len)) / ta.stdev(close, len)

// Calculate Driver RSI
driver_rsi_length = input.int(14, "Driver RSI Length")  // Input for RSI Length
driver_rsi = ta.rsi(close, driver_rsi_length)  // Calculate the RSI

// Supertrend Parameters
atrPeriod = input.int(11, "ATR Length", minval=1)
factor = input.float(2.0, "Factor", minval=0.01, step=0.01)

// Supertrend Calculation
[supertrend, direction] = ta.supertrend(factor, atrPeriod)

// Conditions for Long and Short based on Z-Score
z_exceeds_long = z >= z_long_threshold and driver_rsi > 60
z_exceeds_short = z <= z_short_threshold and driver_rsi < 40

// Entry Conditions
if (z_exceeds_long and direction < 0) // Enter Long if Z-Score exceeds threshold and Supertrend is down
    strategy.entry("Long", strategy.long)
    label.new(bar_index, low, text="Open Long", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
    alert("Open Long", alert.freq_once_per_bar)  // Alert for Long entry

if (z_exceeds_short and direction > 0) // Enter Short if Z-Score exceeds threshold and Supertrend is up
    strategy.entry("Short", strategy.short)
    label.new(bar_index, high, text="Open Short", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
    alert("Open Short", alert.freq_once_per_bar)  // Alert for Short entry

// Plot Supertrend
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color=color.green, style=plot.style_linebr)
downTrend = plot(direction > 0 ? supertrend : na, "Down Trend", color=color.red, style=plot.style_linebr)
fill(upTrend, downTrend, color=color.new(color.green, 90), fillgaps=false)

// Alert conditions for Supertrend changes (optional)
alertcondition(direction[1] > direction, title='Downtrend to Uptrend', message='The Supertrend value switched from Downtrend to Uptrend')
alertcondition(direction[1] < direction, title='Uptrend to Downtrend', message='The Supertrend value switched from Uptrend to Downtrend')