Estratégia de Golden Cross e Death Cross de média móvel dupla


Data de criação: 2023-09-17 22:35:07 última modificação: 2023-09-17 22:35:07
cópia: 1 Cliques: 626
1
focar em
1617
Seguidores

A estratégia consiste em calcular as médias móveis de dois períodos diferentes e formar os sinais de compra e venda com base em seus forcados de ouro.

Princípio da estratégia

A estratégia permite que os usuários escolham o tipo e a duração da média móvel. Os tipos incluem SMA, EMA, VWMA, etc., e a duração determina o período da média.

Em seguida, dois médios móveis são calculados de acordo com a escolha do usuário. Se a linha rápida atravessar a linha lenta de baixo, formando um garfo de ouro, um sinal de compra é gerado. Se a linha rápida atravessar a linha lenta de cima para baixo, formando um garfo morto, um sinal de venda é gerado.

Assim, quando o preço médio de curto prazo é superior ao preço médio de longo prazo, é considerado que o mercado está em uma tendência ascendente e deve ser comprado. Quando o preço médio de curto prazo é inferior ao preço de longo prazo, é considerado que o mercado está em uma tendência descendente e deve ser vendido.

Análise de vantagens

  • A lógica da estratégia é simples, clara e fácil de entender.
  • As médias móveis são eficazes para filtrar o ruído do mercado e identificar as tendências.
  • Há uma escolha flexível de tipos e parâmetros de médias móveis para diferentes variedades e períodos.
  • É fácil de otimizar através de vários conjuntos de indicadores.

Análise de Riscos

  • Quando o mercado está em um momento de turbulência, pode ocorrer uma série de sinais errados.
  • A escolha incorreta de parâmetros pode levar a um mau desempenho da estratégia.
  • O sinal gerou atraso e não conseguiu capturar o ponto de viragem a tempo.
  • O risco de choque de eventos inesperados.

O risco pode ser controlado por meio de parâmetros de otimização apropriados, combinação de outros indicadores para gerar sinais, configuração de parada de perda, etc.

Direção de otimização

  • Teste diferentes tipos e tamanhos de parâmetros para encontrar a combinação ideal.
  • Adicione filtros para outros indicadores, como indicadores de preço de quantidade, indicadores de taxa de flutuação, etc.
  • Aumentar a lógica de stop loss e reduzir a retração.
  • A combinação de indicadores de tendências evita um ambiente de negociação inadequado.
  • Otimizar estratégias de gestão de fundos, como gestão de posições, orçamento de risco, etc.

Resumir

O conceito geral da estratégia é simples e claro, formando sinais de negociação através do cálculo de duas linhas de equilíbrio, sendo possível ajustar os parâmetros de forma flexível de acordo com o ambiente do mercado, e outros estratégias de combinação de otimização, mas é necessário ter em conta a prevenção do risco de mercados turbulentos, a gestão racional de fundos. Em geral, é uma opção a considerar.

Código-fonte da estratégia
/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's MAs Tests", shorttitle = "MAs tests", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)


len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0

plot(ma, color = blue, linewidth = 3, transp = 0)

trend = low > ma ? 1 : high < ma ? -1 : trend[1]

longCondition = trend == 1 and trend[1] == -1
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
    strategy.entry("Short", strategy.short)