O recurso está a ser carregado... Carregamento...

Impulso Estratégia de média móvel dupla

Autora:ChaoZhang, Data: 2023-11-17 17:00:32
Tags:

img

Resumo

Esta estratégia usa o método de cruzamento de média móvel dupla de momento para implementar negociação de baixo risco. Utiliza duas médias móveis de períodos diferentes, uma linha rápida e uma linha lenta, para determinar sinais de entrada e saída com base em seu cruzamento. O objetivo desta estratégia é capturar mudanças de tendência e gerar lucros de longo prazo durante as principais tendências.

Estratégia lógica

A estratégia gera sinais de negociação baseados no cruzamento de uma linha WMA rápida e uma linha WMA lenta. O período da linha rápida é metade do período da linha lenta. Um sinal de compra é gerado quando a linha rápida cruza acima da linha lenta de baixo. Um sinal de venda é gerado quando a linha rápida cruza abaixo da linha lenta de cima. Para filtrar falsos sinais, também incorpora um indicador de momento baseado na diferença entre duas médias móveis.

Especificamente, a lógica chave inclui:

  1. Definir dados de entrada e parâmetros de preços: obter dados de preços OHLC; definir parâmetros HullMA período z, dados de preços p.

  2. Cálculo de MAs duplas: cálculo de MA n2ma de dois períodos, MA nma de período z.

  3. Calcular a diferença de MA: calcular a diferença entre dois MA diferentes.

  4. Calcular o indicador de momento: calcular a média móvel da diferença - n1, n2, n3 com período sqn.

  5. Determinar o cruzamento: marcar n1 acima de n2 em verde, caso contrário em vermelho.

  6. Formas do gráfico: gráfico n1 e n2.

  7. Identificar sinais: gerar sinal quando n1, n2, n3 se alinham na mesma direção.

  8. Entrar e sair: ir longo quando a linha rápida acima da linha lenta e o indicador de momento concordarem; ir curto quando a linha rápida abaixo da linha lenta e o indicador de momento concordarem.

Vantagens

Combinando o cruzamento duplo de MA e o indicador de momento, esta estratégia pode filtrar efetivamente os falsos sinais e gerar transações apenas no início das mudanças de tendência, produzindo assim um bom desempenho da estratégia.

  1. O crossover de MA detecta mudanças de tendência, beneficiando das tendências.

  2. O indicador de impulso filtra sinais falsos, evitando ser enganado por flutuações de curto prazo.

  3. Apenas a negociação de grandes mudanças de tendência reduz a frequência desnecessária de negociação.

  4. A otimização dos parâmetros corresponde às características dos diferentes produtos.

  5. Permitir algum grau de pirâmide estende os ciclos de lucro.

Riscos

Há também alguns riscos a tomar em consideração:

  1. O cruzamento de duas MA tem atrasos na detecção de mudanças de tendência, potencialmente perdendo o melhor momento.

  2. A configuração incorreta dos parâmetros no indicador de momento pode gerar sinais defeituosos.

  3. Existe um desequilíbrio entre períodos de detenção longos e curtos.

  4. A estratégia carece de mecanismos para lidar bem com as condições de mercado agitadas.

  5. Existe o risco de uma otimização excessiva, exigindo uma otimização gradual dos parâmetros.

Algumas soluções

  1. Considere a adição de outros indicadores principais para detectar mudanças de preço precocemente.

  2. Otimizar os parâmetros do indicador de momento para encontrar as melhores combinações.

  3. Adicionar um indicador de volatilidade ao período de detenção de controlo.

  4. Limitar o dimensionamento das posições para reduzir a perda única.

  5. Teste de robustez dos parâmetros para evitar uma otimização excessiva.

Orientações para melhorias

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Testar diferentes tipos de MA para encontrar parâmetros ótimos para cada produto.

  2. Adicione outros indicadores como MACD, Bollinger Bands para determinar mudanças de tendência.

  3. Otimizar o tempo de entrada para determinar com precisão os pontos de virada.

  4. Otimize as saídas usando paradas de atraso para bloquear os lucros.

  5. Realizar a otimização dos parâmetros de acordo com as características do produto.

  6. Empregar aprendizado de máquina para encontrar combinações ótimas de parâmetros.

  7. Construir mecanismos dinâmicos de dimensionamento de posições para controlar os riscos.

  8. Adicione métricas quantitativas como Sharpe ratio, fator de lucro para avaliação de estratégia.

  9. Avaliar o desempenho em dados históricos utilizando o motor de backtesting.

Resumo

Em resumo, essa estratégia de MA duplo de impulso identifica os principais pontos de reversão da tendência usando cruzamento e impulso de MA, permitindo negociação de baixo risco. Tem vantagens como lucros estáveis e implementação simples, mas também problemas para melhorar, como otimização de parâmetros e controle de risco. Podemos refinar áreas como tempo de entrada / saída, dimensionamento dinâmico de posições para melhor se adaptar às condições do mercado. A validação e avaliação extensiva são críticas para garantir um desempenho robusto da estratégia.


/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//OCTOPUS Indicator Strategy
strategy("FAVEL corp. Indicator Strategy", shorttitle="FAVEL corp. Monarch", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=420, default_qty_value=20, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
z=input(defval=60,title="HullMA cross")
p=input(ohlc4,title="Price data")
n2ma=2*wma(p,round(z/2))
nma=wma(p,z)
diff=n2ma-nma
sqn=round(sqrt(z))
n2ma1=2*wma(p[1],round(z/2))
nma1=wma(p[1],z)
diff1=n2ma1-nma1
sqn1=round(sqrt(z))
n2ma2=2*wma(p[2],round(z/2))
nma2=wma(p[2],z)
diff2=n2ma2-nma2
sqn2=round(sqrt(z))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
n3=wma(diff2,sqn)
c=n1>n2?green:red
n1e=plot(n1, color=c, linewidth=1, offset=2)
n2e=plot(n2, color=c, linewidth=1, offset=2)
fill(n1e, n2e, color=c, transp=75)
plot(cross(n1, n2) ? n1 : na, style = circles,color=c, linewidth = 4)
closelong = p<p[1] and n1<n3
if (closelong)
    strategy.close("BUY")
closeshort = p>p[1] and n1>n3
if (closeshort)
    strategy.close("SELL")
longCondition = strategy.opentrades<1 and n1>n2 and p>p[1] and n1>n3
if (longCondition)
    strategy.entry("BUY",strategy.long)
shortCondition = strategy.opentrades<1 and n1<n2 and p<p[1] and n1<n3
if (shortCondition)
    strategy.entry("SELL",strategy.short)

Mais.