Estrategia de ruptura de media móvil doble basada en la volatilidad de precios


Fecha de creación: 2023-12-08 16:44:22 Última modificación: 2023-12-08 16:44:22
Copiar: 0 Número de Visitas: 637
1
Seguir
1621
Seguidores

Estrategia de ruptura de media móvil doble basada en la volatilidad de precios

Descripción general

La idea central de esta estrategia es utilizar la tasa de fluctuación de los precios para juzgar la tendencia del mercado, cuando la tasa de fluctuación aumenta, indica que el mercado está formando una nueva tendencia; cuando la tasa de fluctuación disminuye, indica que la tendencia actual está terminando. La estrategia calcula el cambio porcentual en el precio y luego lo filtra de manera uniforme para obtener un indicador que refleje la tasa de fluctuación de los precios.

Principio de estrategia

La estrategia comienza por calcular el porcentaje de cambio en el precio:

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

Luego, se filtra una línea media de longitud 35 para obtener el indicador de fluctuación de precios primario pmol2 ❚. Luego, se filtra una segunda onda a pmol2 a través de una línea media de longitud 20 para obtener el indicador de fluctuación de precios final pmol ❚. Finalmente, se obtiene la línea de señal de pmol a través de una línea media de longitud 10pmols ❚. Cuando ppmol pasa por pmols, genera una señal de compra; cuando ppmol pasa por pmols, genera una señal de venta ❚

Análisis de las ventajas

  • El uso de filtros bidireccionales permite una mejor extracción de la fluctuación de los precios, filtrando el ruido.
  • Calcula el porcentaje de cambio en los precios, amplifica los cambios en los precios y refleja con mayor claridad los cambios de tendencia.
  • La forma de obtener ganancias es más clara: la tendencia comienza comprando y termina vendiendo.

Análisis de riesgos

  • El filtro de doble línea equidistante trae un cierto grado de retraso.
  • El método de cálculo del cambio porcentual es más sensible a la amplitud de los precios.
  • Cuando se transfiere un toro o un oso, se debe liquidar la posición a tiempo.

La dirección de la optimización:

  • Optimización de los parámetros de la línea media para mejorar la captura de tendencias.
  • Prueba diferentes formas de calcular el cambio de precio.
  • Se añaden las condiciones de filtración para evitar señales falsas.

Resumir

Esta estrategia es una estrategia más madura de la clase de indicadores técnicos para determinar los cambios en la tendencia del mercado mediante el cálculo de la variación porcentual y la filtración de doble línea uniforme. La estrategia tiene una gran capacidad para capturar tendencias, pero generalmente tiene la capacidad de identificar puntos de conversión.

Código Fuente de la Estrategia
/*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)