Estratégia de avanço de oscilação de média móvel dupla

Autora:ChaoZhang, Data: 2023-11-27 17:44:49
Tags:

img

Resumo

A estratégia de avanço da média móvel dupla calcula duas médias móveis de períodos diferentes para formar um canal e julgar a tendência oscilante dos preços.

Princípio da estratégia

As principais etapas desta estratégia são:

  1. Calcular duas médias móveis, uma com um período mais curto e outra com um período mais longo.

  2. Adicionar um ATR acima e abaixo da MA mais curta para formar um canal.

  3. Um sinal de compra é gerado quando o preço atravessa o canal para cima. Um sinal de venda é gerado quando o preço atravessa o canal para baixo.

  4. Os sinais de negociação válidos só são gerados quando o avanço de curto prazo se alinha com a direção da tendência principal.

Ao seguir estas etapas, esta estratégia capta pontos de ruptura nas tendências oscilatórias e evita sinais falsos referindo-se à tendência dominante.

Análise das vantagens

As vantagens desta estratégia:

  1. O canal de MA duplo reflete a faixa de oscilação de preços atual.

  2. O parâmetro ATR permite que a gama de canais acompanhe a volatilidade do mercado em tempo real.

  3. A filtragem de tendências convencionais evita sinais falsos em mercados oscilantes.

  4. As regras são simples e fáceis de entender, adequadas para aprendizagem e pesquisa.

Análise de riscos

Os riscos:

  1. Os avanços fracassados podem levar à perda de boas oportunidades.

  2. O julgamento da tendência dominante tem um atraso de tempo e não pode eliminar todos os sinais falsos.

  3. O stop loss pode ser penetrado em mercados voláteis, pode ajustar o ATR dinamicamente.

Orientações de otimização

Maneiras de otimizar esta estratégia:

  1. Otimizar os parâmetros de MA para diferentes produtos.

  2. Otimizar o parâmetro ATR para melhor rastrear a volatilidade.

  3. Adicionar filtros adicionais como indicadores de volume e volatilidade para evitar ainda mais sinais falsos.

  4. Usar aprendizagem de máquina para otimizar automaticamente parâmetros.

Conclusão

Esta estratégia de avanço de oscilação de MA dupla capta tendências oscilantes através do canal de MA dupla e filtragem mainstream. Com suas regras simples e claras, é um excelente exemplo para aprender estratégias de negociação inovadoras.


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

//Anuj4912
//@version=4
strategy("Anuj4912", overlay=true)
res = input(title="Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=request.security(syminfo.tickerid,res,close)

TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

MTrendUp=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend = Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)



Mais.