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:
Calcular a média móvel simples nma e a média móvel ponderada n2ma de 60 dias
Calcular a média móvel simples nma1 e a média móvel ponderada n2ma1 de 5 dias
Comparar n2ma1 e nma1: se n2ma1 ultrapassar nma1, abrir posições longas; se n2ma1 ultrapassar nma1, abrir posições curtas
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
Fechar posições quando o preço exceder o stop loss ou alcançar o take profit
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:
Otimizar os períodos de média móvel para encontrar a melhor combinação de parâmetros
Adicionar outros filtros de indicadores técnicos para evitar falhas
Adicionar stop loss e take profit para controlar o risco de negociação única
Combinar com o calendário de negociação de tendência para evitar negociações errôneas em mercados laterais
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")