A estratégia de negociação de reversão MACD dupla é uma estratégia de negociação quantitativa que usa o indicador MACD para identificar sinais de reversão de tendência. Esta estratégia também combina o indicador RVI e o indicador CCI para confirmar sinais de compra e filtrar algumas falsas reversões. Esta estratégia é adequada para negociação intradiária e de curto prazo.
A estratégia é baseada principalmente no indicador MACD. O MACD é a média móvel rápida EMA ((12) menos a média móvel lenta EMA ((26) para obter a linha rápida, e depois usar SIGNAL ((9) como a linha lenta. Quando a linha rápida cruza acima da linha lenta para gerar uma Cruz Dourada, é alta; Quando a linha rápida cruza abaixo da linha lenta para gerar uma Cruz Morta, é baixa.
Esta estratégia usa indicadores MACD de quadro de tempo duplo para identificar oportunidades de reversão. A estratégia usa o MACD de 6 horas para determinar a direção geral da tendência e o MACD de 1 hora para encontrar sinais de reversão. Quando o MACD de 6 horas está em uma tendência de alta, se a linha rápida de 1 hora cruzar abaixo da linha lenta para gerar um sinal de cruz de morte, ele indica que o preço pode reverter para cima. Neste ponto, combine o indicador RVI e o indicador CCI para confirmar e gerar um sinal de compra.
O indicador RVI mede a relação entre o preço de fechamento e o preço de abertura dos poucos candelabros mais recentes em relação aos preços mais altos e mais baixos. Um RVI abaixo de 0,2 é considerado supervendido. O indicador CCI abaixo de -100 indica supervendido. Portanto, a estratégia usa o indicador RVI abaixo de 0,2 e o indicador CCI abaixo de -95 para ajudar a confirmar o sinal de compra.
Esta estratégia combina indicadores MACD e RVI e CCI de dois quadros de tempo para identificar com precisão oportunidades de reversão e filtrar alguns falsos sinais de reversão para melhorar a estabilidade da estratégia.
Utilize o MACD de 6 horas para determinar a tendência principal e evitar negociações em ambientes com maior incerteza no mercado mais amplo.
O MACD de 1 hora identifica o calendário de reversão e capta os ajustamentos de preços de ciclos mais curtos.
A combinação do indicador RVI e do indicador CCI permite determinar com mais precisão o momento da reversão.
A estratégia inclui um stop loss para reduzir as perdas.
A estratégia apresenta igualmente alguns riscos, que se refletem principalmente em:
O próprio MACD tende a gerar sinais falsos, por isso, embora os indicadores auxiliares tenham um bom efeito de filtragem, é impossível evitar completamente as perdas.
Os indicadores RVI e CCI podem emitir sinais incorretos, perdendo assim melhores oportunidades de reversão ou aumentando perdas desnecessárias.
A configuração inadequada de stop loss pode desencadear stop loss com muita frequência ou não controlar as perdas no tempo se for muito frouxa.
A estratégia pode ser melhorada a partir dos seguintes aspectos:
Atualmente, usando dois quadros de tempo de 1 hora e 6 horas, mais combinações de quadros de tempo podem ser testadas para encontrar parâmetros mais estáveis.
Mais indicadores podem ser introduzidos, como KDJ, WR, OBV, etc. para ajudar a julgar pontos de negociação.
Os parâmetros podem ser continuamente otimizados para diferentes variedades e bibliotecas de parâmetros podem ser estabelecidas.
Um mecanismo dinâmico de stop loss pode ser configurado para mover gradualmente o ponto de stop loss à medida que os lucros aumentam.
A Estratégia de Negociação de Reversão MACD Dupla considera de forma abrangente o julgamento da tendência e os sinais de reversão, e é assistida por indicadores RVI e CCI para filtrar os sinais. Esta estratégia pode identificar efetivamente ajustes de curto prazo com boas taxas de risco-retorno, adequada para negociação intradiária e de curto prazo, e também pode ser usada como parte de um portfólio de estratégias múltiplas para fornecer diversidade de estratégia geral.
/*backtest start: 2023-01-05 00:00:00 end: 2024-01-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Bat MACD", overlay=true) fastLength = input(12) slowlength = input(26) MACDLength = input(9) h=1.05 MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD hmacd= aMACD>0? h*aMACD: -(1/h)*abs(MACD) MACDD= (request.security(syminfo.tickerid,'360',ema(close, fastLength)) - request.security(syminfo.tickerid,'360',ema(close,slowlength))) aMACDD = (request.security(syminfo.tickerid,'360',ema(ema(request.security(syminfo.tickerid,'360',close), fastLength)-ema(request.security(syminfo.tickerid,'360',close),slowlength), MACDLength))) deltad= MACDD-aMACDD L= input(0.95, title="SL") SL = L*ema(close,10) //MACD slow = input(26,"Short period") fast = input(12, "Long period") signal = input(9, "Smoothing period") //MACD = ema(close,fast)-ema(close,slow) dMACD= MACD<0? ema(MACD,5):0 Mcond= rising(dMACD,1) mcount=0.0 mcount := Mcond ? nz(mcount[1]) + 1 : nz(mcount[1]) counter=0 counter := (mcount-mcount[1]==0) ? nz(counter[1]) + 1 : 0 //counter := counter==3 ? 0: nz(counter[1]) pp=0.0 mc=0.0 pp:= (counter-counter[1]<0)? close[1] : nz(pp[1]) mc:= (counter-counter[1]<0)? MACD[1] : nz(mc[1]) bull = (pp-pp[1]<-close*0.005 and mc-mc[1]>0.02*abs(MACD) and MACD<0 and MACD[1]<0)? 1:0 //bgcolor(bull?green:white) //RVI p=10 CO=close-open HL=high-low value1 = (CO + 2*CO[1] + 2*CO[2] + CO[3])/6 value2 = (HL + 2*HL[1] + 2*HL[2] + HL[3])/6 num=sum(value1,p) denom=sum(value2,p) rvi=denom!=0?num/denom:0 //RVI drvi= (rvi<0.2)? ema(rvi-0.20,3):0 RVcond= rising(drvi,1) rvcount=0.0 rvcount := RVcond ? nz(rvcount[1]) + 1 : nz(rvcount[1]) rvcounter=0 rvcounter := (rvcount-rvcount[1]==0) ? nz(rvcounter[1]) + 1 : 0 //counter := counter==3 ? 0: nz(counter[1]) rvpp=0.0 rvmc=0.0 rvpp:= (rvcounter-rvcounter[1]<0)? close[1] : nz(rvpp[1]) rvmc:= (rvcounter-rvcounter[1]<0)? drvi[1] : nz(rvmc[1]) rvbull = (rvpp-rvpp[1]<-close*0.005 and rvmc-rvmc[1]>0.02 and drvi<0 and drvi[1]<0)? 1:0 //VolCCI length1 = input(10, minval=1) xMAVolPrice = ema(volume * close, length1) xMAVol = ema(volume, length1) src1 = xMAVolPrice / xMAVol map = sma(src1, length1) cci = (src1 - map) / (0.015 * dev(src1, length1)) cfi= (cci<0)? ema(cci,3) :0 CCcond= rising(cfi,1) cccount=0.0 cccount := CCcond ? nz(cccount[1]) + 1 : nz(cccount[1]) cccounter=0 cccounter := (cccount-cccount[1]==0) ? nz(cccounter[1]) + 1 : 0 //counter := counter==3 ? 0: nz(counter[1]) ccpp=0.0 ccmc=0.0 ccpp:= (cccounter-cccounter[1]<0)? close[1] : nz(ccpp[1]) ccmc:= (cccounter-cccounter[1]<0)? cci[1] : nz(ccmc[1]) ccbull = (ccpp-ccpp[1]<-close*0.003 and ccmc-ccmc[1]>20 and cci<-95 and cci[1]<-95)? 1:0 A= bull+ccbull+rvbull if ((MACD>hmacd) and deltad>0 and delta>delta[1]) strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close) if (crossunder(delta, 0) or crossunder(close,SL)) strategy.close("Long") if(crossover(low,SL) and SL-SL[1]<close*0.005 and SL-SL[1]>-close*0.005) strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close) if A strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close) plot(SL) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)