Estratégia de inversão da média móvel dupla

Autora:ChaoZhang, Data: 2023-10-17 14:38:55
Tags:

img

A estratégia de inversão de média móvel dupla é uma estratégia de tendência seguinte. Ela calcula médias móveis de diferentes períodos para determinar se a tendência de preço se inverte, a fim de capturar pontos de virada e alcançar a compra baixa e a venda alta.

Esta estratégia primeiro calcula dois conjuntos de médias móveis com períodos diferentes. Um conjunto são médias móveis de longo período, que são usados para determinar a tendência geral. O outro conjunto são médias móveis de curto período, que são usados para determinar a tendência local. Comparando a relação entre os dois conjuntos de médias móveis, a estratégia julga se a tendência geral se inverteu.

Especificamente, a estratégia primeiro calcula duas médias móveis de longo período (por exemplo, 60 dias), que são a média móvel simples de 60 dias e a média móvel ponderada de 60 dias. Este conjunto de médias móveis é usado para determinar a tendência geral. Além disso, a estratégia calcula duas médias móveis de curto período (por exemplo, 5 dias), que são a média móvel simples de 5 dias e a média móvel ponderada de 5 dias.

Quando a média móvel de curto prazo cruza acima da média móvel de longo prazo, isso indica que o preço se inverteu de tendência de baixa para tendência de alta. A estratégia abrirá posições longas. Quando a média móvel de curto prazo cruza abaixo da média móvel de longo prazo, isso indica que o preço se invertiu de tendência de alta para tendência de baixa. A estratégia abrirá posições curtas.

Os passos específicos são:

  1. Calcular a média móvel simples nma e a média móvel ponderada n2ma de 60 dias

  2. Calcular a média móvel simples nma1 e a média móvel ponderada n2ma1 de 5 dias

  3. Comparar n2ma1 e nma1: se n2ma1 ultrapassar nma1, abrir posições longas; se n2ma1 ultrapassar nma1, abrir posições curtas

  4. Comparar n2ma e nma: se n2ma ultrapassar nma e a posição longa for aberta, continuar a manter a posição longa; se n2ma ultrapassar nma e a posição curta for aberta, continuar a manter a posição curta

  5. Fechar posições quando o preço exceder o stop loss ou alcançar o take profit

  6. Repita o processo acima para capturar a inversão da tendência e alcançar a compra baixa e venda alta

A vantagem desta estratégia é que a combinação de média móvel dupla pode capturar sensivelmente a reversão da tendência de preços.

O risco desta estratégia é que o cruzamento da média móvel dupla pode ter sinais falsos, causando um mau timing de entrada ou saída de posições, aumentando assim o risco de negociação.

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os períodos de média móvel para encontrar a melhor combinação de parâmetros

  2. Adicionar outros filtros de indicadores técnicos para evitar falhas

  3. Adicionar stop loss e take profit para controlar o risco de negociação única

  4. Combinar com o calendário de negociação de tendência para evitar negociações errôneas em mercados laterais

  5. Ajustar dinamicamente o dimensionamento das posições para se adaptar à variação da volatilidade do mercado

Em conclusão, a estratégia de inversão de média móvel dupla capta pontos de virada da tendência de preços comparando diferentes médias móveis de período, a fim de alcançar a compra baixa e venda alta.


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

//@version=2
//                   //////////////// Attempt to Reduced ReDraw version /////////////////////
//
//                         Microcana.com strategy by pilotgsms - version 4.20b <<<< Edited by Seaside420 >>>> special thanks to 55cosmicpineapple
//                            Hull_MA_cross added to script
strategy("M&H_v420b", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
dd = input(defval=1, title="Post Signal Bar Delay", type=float, step=1)
df = input(defval=5, title="Close Position Bar Delay", type=float, step=1)
keh=input(title="Double HullMA Cross",defval=7, minval=1)
confidence=(request.security(syminfo.tickerid, 'D', close)-request.security(syminfo.tickerid, 'D', close[1]))/request.security(syminfo.tickerid, 'D', close[1])
prediction = confidence > dt ? true : confidence < -dt ? false : prediction[1]
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)
n2=wma(diff1,sqn)
openlong=prediction[dd] and n1>n2 and strategy.opentrades<1
if (openlong)
    strategy.entry("Long", strategy.long)
openshort=not prediction[dd] and n2>n1 and strategy.opentrades<1
if (openshort)
    strategy.entry("Short", strategy.short)
closeshort=prediction and close<low[df]
if (closeshort)
    strategy.close("Short")
closelong=not prediction and close>high[df]  
if (closelong)
    strategy.close("Long")

Mais.