Tudo Sobre a Estratégia de Negociação de Momentum com Stop Loss para Ouro

Autora:ChaoZhang, Data: 2024-02-20 16:27:18
Tags:

img

Resumo

Esta estratégia calcula o desvio do preço do ouro da sua média móvel exponencial de 21 dias para determinar situações de sobrecompra e sobrevenda no mercado.

Estratégia lógica

  1. Calcular a EMA de 21 dias como linha de base
  2. Cálculo do desvio do preço da EMA
  3. Padronizar o desvio em Z-Score
  4. Vá longo quando a pontuação Z ultrapassa 0,5; vá curto quando a pontuação Z ultrapassa -0,5
  5. Posições fechadas quando o Z-Score cair para 0,5/-0,5
  6. Configure stop loss quando a pontuação Z for superior a 3 ou inferior a -3

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. EMA como suporte/resistência dinâmico para captar tendências
  2. Stddev e Z-Score avaliam eficazmente os níveis de sobrecompra/supervenda, reduzindo os falsos sinais
  3. A EMA exponencial dá mais peso aos preços recentes, tornando-a mais sensível
  4. Z-Score padroniza desvio para regras de julgamento unificadas
  5. O mecanismo de stop loss controla o risco e limita as perdas

Análise de riscos

Alguns riscos a considerar:

  1. A EMA pode gerar sinais errados quando as diferenças de preços ou quebras
  2. Os limiares Stddev/Z-Score precisam de ajuste adequado para melhor desempenho
  3. A definição incorreta de stop loss pode conduzir a perdas desnecessárias
  4. Eventos de cisne negro podem desencadear stop loss e perder oportunidade de tendência

Soluções:

  1. Otimizar o parâmetro EMA para identificar as principais tendências
  2. Backtest para encontrar limiares ideais de Stddev/Z-Score
  3. Rationalidade do teste de perda de paragem com paradas de trail
  4. Reavaliação do mercado após o evento, ajustando a estratégia em conformidade

Orientações de otimização

Algumas formas de melhorar a estratégia:

  1. Usar indicadores de volatilidade como ATR em vez de simples Stddev para medir o apetite pelo risco
  2. Teste diferentes tipos de médias móveis para melhor referência
  3. Otimizar o parâmetro EMA para encontrar o melhor período
  4. Otimizar os limiares da pontuação Z para melhorar o desempenho
  5. Adicionar paradas baseadas na volatilidade para um controlo de risco mais inteligente

Conclusão

Em geral, esta é uma estratégia sólida de tendência. Ele usa a EMA para definir a direção da tendência e o desvio padronizado para identificar claramente os níveis de sobrecompra / sobrevenda para sinais comerciais. Controles razoáveis de stop loss controlam o risco enquanto deixam os lucros correrem.


/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("GC Momentum Strategy with Stoploss and Limits", overlay=true)

// Input for the length of the EMA
ema_length = input.int(21, title="EMA Length", minval=1)

// Exponential function parameters
steepness = 2

// Calculate the EMA
ema = ta.ema(close, ema_length)

// Calculate the deviation of the close price from the EMA
deviation = close - ema

// Calculate the standard deviation of the deviation
std_dev = ta.stdev(deviation, ema_length)

// Calculate the Z-score
z_score = deviation / std_dev

// Long entry condition if Z-score crosses +0.5 and is below 3 standard deviations
long_condition = ta.crossover(z_score, 0.5)

// Short entry condition if Z-score crosses -0.5 and is above -3 standard deviations
short_condition = ta.crossunder(z_score, -0.5)

// Exit long position if Z-score converges below 0.5 from top
exit_long_condition = ta.crossunder(z_score, 0.5)

// Exit short position if Z-score converges above -0.5 from below
exit_short_condition = ta.crossover(z_score, -0.5)

// Stop loss condition if Z-score crosses above 3 or below -3
stop_loss_long = ta.crossover(z_score, 3)
stop_loss_short = ta.crossunder(z_score, -3)

// Enter and exit positions based on conditions
if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)
if (exit_long_condition)
    strategy.close("Long")
if (exit_short_condition)
    strategy.close("Short")
if (stop_loss_long)
    strategy.close("Long")
if (stop_loss_short)
    strategy.close("Short")

// Plot the Z-score on the chart
plot(z_score, title="Z-score", color=color.blue, linewidth=2)

// Optional: Plot zero lines for reference
hline(0.5, "Upper Threshold", color=color.red)
hline(-0.5, "Lower Threshold", color=color.green)


Mais.