Estratégia quantitativa de média móvel dupla Golden Cross

Autora:ChaoZhang, Data: 2023-12-26 15:52:13
Tags:

img

Resumo

Esta estratégia julga as tendências de preços e as oportunidades de negociação, calculando crossovers de média móvel dupla. Quando o MA rápido cruza acima do MA lento, é considerado uma cruz de ouro para ir longo. Quando o MA rápido cruza abaixo do MA lento, é considerado uma cruz de morte para ir curto. Ao mesmo tempo, combine o indicador de volume para julgar a confiabilidade dos crossovers para evitar falsos sinais.

Princípio da estratégia

Os princípios fundamentais desta estratégia são:

  1. Calcule dois grupos de médias móveis com parâmetros diferentes, um grupo responde rapidamente às mudanças de preço e o outro reage relativamente lentamente. Quando o MA rápido cruza acima do MA lento, ele sinaliza uma tendência de preço ascendente. Quando o MA rápido cruza abaixo do MA lento, ele sinaliza uma tendência de preço descendente.

  2. Quando os MAs se cruzam, verifique a mudança do indicador de volume. Se o indicador de volume também romper significativamente, o sinal de cruzamento é confiável. Se não houver uma quebra correspondente no volume, pode ser um sinal falso.

  3. Introduzir posições longas ou curtas com base no julgamento da direção cruzada e do volume.

Especificamente, a estratégia julga as tendências de preços usando cruzamento de MAs duplos de 7 períodos. Ele usa indicadores de volume para verificar a confiabilidade do sinal. Ao obter sinais confiáveis, ele vai longo ou curto por sinal. Ele define metas de lucro para tirar lucros.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. Combinação de MAs duplas para determinar a direção da tendência e filtro de volume para evitar sinais falsos e ser preso.

  2. Só tomar posições quando o volume confirmar, aumentando a taxa de sucesso.

  3. Ter um mecanismo de captação de lucros para tirar lucros a tempo e evitar devolver lucros.

Análise de riscos

Os principais riscos desta estratégia são:

  1. O atraso no cruzamento de MA pode perder a melhor oportunidade, pode otimizar parâmetros para tornar os MA mais sensíveis.

  2. Difícil de avaliar quando o volume diverge, pode adicionar mais indicadores para confirmação.

  3. A configuração inadequada de stop profit pode levar ao excesso de negociação ou retenção de vencedores por muito tempo.

Orientações de otimização

A estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Otimizar os períodos de MA para torná-lo mais sensível às alterações dos preços no tempo.

  2. Adicionar mais indicadores como MACD, KD para confirmação de sinal para evitar sinais falsos de volume.

  3. Incorporar mais mecanismos de lucro como trail stop, parada percentual, parada de volatilidade para a tomada de lucro dinâmico.

  4. Adicionar um mecanismo de stop loss para controlar o montante das perdas de uma única transação.

  5. Otimizar o dimensionamento das posições adaptável aos diferentes ambientes de mercado.

Conclusão

Em conclusão, a idéia central desta estratégia é o uso de dupla MA crossover para tendência e filtro de volume para confiabilidade do sinal. É estável e fácil de implementar.


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

//@version=2
strategy("ZendicatoR", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15, pyramiding=0)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
keh=input(title="Double HullMA Cross",defval=7, minval=1)
che1=input(title="MA 1",defval=34,minval=1)
che2=input(title="MA 2",defval=144,minval=1)
che3=input(title="MA 3",defval=377,minval=1)
amnt=input(title="TP ($)",defval=4200,minval=1)
wma1=wma(close,che1)
wma2=wma(close,che2)
wma3=wma(close,che3)
sma1=sma(close,11)
tms=10000000000000
A=request.security(syminfo.tickerid, 'D', close)*tms
B=request.security(syminfo.tickerid, 'D', close[1])*tms
C=A>B?green:red
D=wma2>wma3?green:red
plot(wma1,style=line,color=C,linewidth=4)
p1=plot(wma2,style=line,color=D)
p2=plot(wma3,style=line,color=D)
fill(p1, p2, color=D, transp=75)
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)*tms
n2=wma(diff1,sqn)*tms
Q=n1>n2?blue:yellow
plot(sma1,style=line,color=Q,linewidth=4)
closelong = A*tms<B*tms and n2*tms>n1*tms and strategy.openprofit>amnt
if (closelong)
    strategy.close("Long")
closeshort = A*tms>B*tms and n1*tms>n2*tms and strategy.openprofit>amnt
if (closeshort)
    strategy.close("Short") 
longCondition = A*tms>B*tms and n1*tms>n2*tms
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = A*tms<B*tms and n1*tms<n2*tms
if (shortCondition)
    strategy.entry("Short",strategy.short)

Mais.