Estratégia de rompimento de média móvel dupla com base na volatilidade do preço


Data de criação: 2023-12-08 16:44:22 última modificação: 2023-12-08 16:44:22
cópia: 0 Cliques: 637
1
focar em
1621
Seguidores

Estratégia de rompimento de média móvel dupla com base na volatilidade do preço

Visão geral

A ideia central desta estratégia é usar a taxa de flutuação do preço para julgar a tendência do mercado. Quando a taxa de flutuação sobe, o mercado está a formar uma nova tendência; Quando a taxa de flutuação desce, a tendência atual está a terminar. A estratégia é calculada por meio da variação percentual do preço e, em seguida, é filtrada em duas linhas de equilíbrio, obtendo um indicador que reflete a taxa de flutuação do preço.

Princípio da estratégia

A estratégia começa por calcular a variação percentual dos preços:

i=(src/nz(src[1], src))*100

Em seguida, através de um filtro de linha média de comprimento de 35, obtém-se o indicador primário de volatilidade de preço pmol2. Em seguida, através de um filtro de linha média de comprimento de 20, obtém-se o indicador final de volatilidade de preço pmol2. Finalmente, através de um filtro de linha média de comprimento de 10 obtém-se a linha de sinal de pmolpmols. Quando o pmol atravessa o pmol, gera um sinal de compra; Quando o pmol atravessa o pmol abaixo, gera um sinal de venda.

Análise de vantagens

  • O uso de filtros de dupla eqüidade permite uma melhor extração da taxa de flutuação dos preços, filtrando o ruído.
  • Calcular a variação percentual dos preços, amplificando a variação dos preços e refletindo mais claramente as mudanças de tendência.
  • A forma de lucro é mais clara: a tendência começa com a compra e termina com a venda.

Análise de Riscos

  • O filtro de dupla linha equidistante produz um certo atraso.
  • O cálculo da variação percentual é mais sensível à amplitude do preço.
  • A transferência deve ser feita em tempo hábil.

Otimização:

  • Optimizar os parâmetros da linha média e melhorar a captura de tendências.
  • Tente diferentes métodos de cálculo de variação de preços.
  • Aumentar as condições de filtragem para evitar sinais errados.

Resumir

Esta estratégia é uma estratégia de classe de indicadores técnicos mais maduros, extraindo a taxa de flutuação dos preços e julgando as mudanças de tendência do mercado, através do cálculo da variação percentual e da filtragem de duas linhas uniformes. A estratégia tem uma forte capacidade de capturar tendências, mas a capacidade de identificar pontos de conversão em geral. Pode ser otimizada por ajustes de parâmetros e adição de condições auxiliares.

Código-fonte da estratégia
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Strategy for DPMO", overlay=true)

src=input(close, title="Source")
length1=input(35, title="First Smoothing")
length2=input(20, title="Second Smoothing")
siglength=input(10, title="Signal Smoothing")
ebc=input(false, title="Enable Bar Colors")

upSign = '↑' // indicates the indicator shows uptrend
downSign = '↓' // incicates the indicator showing downtrend
exitSign ='x' //indicates the indicator uptrend/downtrend ending

calc_csf(src, length) => 
	sm = 2.0/length
	csf=(src - nz(csf[1])) * sm + nz(csf[1])
	csf
i=(src/nz(src[1], src))*100
pmol2=calc_csf(i-100, length1)
pmol=calc_csf( 10 * pmol2, length2)
pmols=ema(pmol, siglength)
d=pmol-pmols
hc=d>0?d>d[1]?lime:green:d<d[1]?red:orange

buyDPMO = hc==lime and hc[1]!=lime
closeBuyDPMO = hc==green and hc[1]!=green
sellDPMO = hc==red and hc[1]!=red
closeSellDPMO = hc==orange and hc[1]!=orange

plotshape(buyDPMO, color=lime, style=shape.labelup, textcolor=#000000, text="DPMO", location=location.belowbar, transp=0)
plotshape(closeBuyDPMO, color=green, style=shape.labelup, textcolor=#ffffff,  text="X", location=location.belowbar, transp=0)
plotshape(sellDPMO, color=red, style=shape.labeldown, textcolor=#000000, text="DPMO", location=location.abovebar, transp=0)
plotshape(closeSellDPMO, color=orange, style=shape.labeldown, textcolor=#ffffff,  text="X", location=location.abovebar, transp=0)
barcolor(ebc?hc:na)


strategy.entry("Long", strategy.long, when=buyDPMO)
strategy.close("Long", when=closeBuyDPMO or sellDPMO)   
strategy.entry("Short", strategy.short, when=sellDPMO)
strategy.close("Short", when=closeSellDPMO or buyDPMO)