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


Data de criação: 2023-11-27 17:44:49 última modificação: 2023-11-27 17:44:49
cópia: 0 Cliques: 624
1
focar em
1617
Seguidores

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

Visão geral

A estratégia de ruptura de oscilação de duas linhas de equilíbrio determina o movimento de oscilação dos preços através da medição de duas linhas de equilíbrio de diferentes períodos, formando um canal. Quando o preço quebra o canal, um sinal de negociação é formado. A estratégia combina simultaneamente com o julgamento da tendência dominante do mercado, evitando a ruptura errada.

Princípio da estratégia

A estratégia consiste principalmente na formação de um canal ascendente e descendente por meio de duas linhas de média móvel, cuja amplitude é determinada pelo ATR, o intervalo de variação real média. Concretamente, a estratégia consiste principalmente nos seguintes passos:

  1. Calcule duas linhas médias, a linha média 1 de curto período e a linha média 2 de longo período. A linha média 1 reflete a tendência de preços atual e a linha média 2 reflete a tendência de preços dominante.

  2. Na linha média 1, cada um mais um ATR forma um canal, o ATR pode refletir a volatilidade do mercado atual.

  3. Quando o preço atravessa o canal de baixo para cima, forma-se um sinal de compra; quando o preço atravessa o canal de cima para baixo, forma-se um sinal de venda.

  4. Em combinação com as tendências de preços dominantes, um verdadeiro sinal de negociação só é gerado quando a direção da ruptura do ciclo curto coincide com a tendência do ciclo longo.

Através dos passos acima, a estratégia consegue capturar brechas na tendência de oscilação dos preços, ao mesmo tempo em que evita sinais errôneos em combinação com as tendências principais.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. O uso de duas linhas de equilíbrio para formar um canal pode refletir a amplitude da atual oscilação de preços.

  2. A introdução do parâmetro ATR permite que o canal acompanhe a volatilidade do mercado em tempo real.

  3. Para evitar sinais errôneos em mercados de baixa volatilidade, é necessário combinar os dados com as principais tendências de preços.

  4. As regras de julgamento estratégico são claras, simples, fáceis de entender e apropriadas para o estudo e a pesquisa.

Análise de Riscos

A estratégia também apresenta os seguintes riscos:

  1. É possível reduzir esse risco transferindo posições após a obtenção de lucros.

  2. A percepção dominante de que há um atraso de tempo não pode ser totalmente evitado. Pode-se ajustar adequadamente o parâmetro da linha média para reduzir.

  3. Em mercados com grandes turbulências, os pontos de parada são facilmente ultrapassados. O ATR pode ser ajustado em tempo real para responder às flutuações do mercado.

Direção de otimização

A estratégia pode ser otimizada em:

  1. Os parâmetros para calcular a linha média podem ser otimizados para encontrar a combinação ideal de parâmetros para diferentes variedades.

  2. Os parâmetros do ATR também podem ser otimizados para que o canal acompanhe melhor a volatilidade atual.

  3. A adição de condições de filtragem adicionais, como indicadores de quantidade de energia, indicadores de oscilação, etc., evita ainda mais sinais errados.

  4. Otimizar automaticamente os parâmetros por meio da tecnologia de aprendizagem de máquina, permitindo o ajuste dinâmico dos parâmetros.

Resumir

A estratégia de ruptura de tremor de dupla linha de equilíbrio capta a tendência de tremor por meio de canais de dupla linha de equilíbrio e direção dominante. As regras de julgamento da estratégia são simples e claras, fáceis de entender e implementar, e são um excelente exemplo de compreensão e aprendizagem da estratégia de ruptura. A estratégia pode aumentar ainda mais a estabilidade e a lucratividade, através da configuração de parâmetros e filtragem de sinais de otimização contínua.

Código-fonte da estratégia
/*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)