Estrategia de promedio móvil adaptativo de Mala

El autor:¿ Qué pasa?, Fecha: 2023-12-07 11:08:18
Las etiquetas:

img

Resumen general

La estrategia Mala Adaptive Moving Average es una estrategia de trading cuantitativa basada en el indicador MESA Adaptive Moving Average desarrollado por John Ehlers. La estrategia utiliza ondas senoidales para tomar decisiones comerciales, comprar a bajos, vender a altos.

Estrategia lógica

La estrategia Mala Adaptive Moving Average utiliza un generador de ondas senoidales para producir señales comerciales. La onda senoida se determina por la sombra proyectada sobre el eje vertical por un vector giratorio (llamado fasor). Cuando el vector gira 360 grados, se completa un ciclo. Las señales de compra se generan cuando el vector pasa un ángulo, y las señales de venta cuando pasa otro ángulo. Por lo tanto, las decisiones comerciales se definen en términos de ángulos en el dominio de frecuencia en lugar de características de forma de onda en el dominio de tiempo, lo que hace que la estrategia sea más robusta en diferentes contratos de futuros y condiciones de mercado.

Específicamente, la estrategia primero suaviza y detrente el precio, luego calcula dos componentes de la onda senoidal: el componente en fase I y el componente de cuadratura Q. Estos dos componentes se superponen y filtran por desplazamiento de fase para obtener el final Re e Im. Re e Im reflejan la información de frecuencia de la onda senoidal. El período de período puede derivarse de atanIm/Re. Un período suave de período suavizado se determina en función del rango de período esperado. La información de período y fase determina las curvas MAMA y FAMA, cuyos cruces producen señales comerciales.

Análisis de ventajas

La estrategia de media móvil adaptativa mala tiene las siguientes ventajas:

  1. El uso de ondas senoidales y fases como señales comerciales hace que la estrategia sea más robusta, sin verse afectada por las características de la forma de onda en el dominio del tiempo.

  2. La adaptabilidad de los períodos y parámetros permite una gran adaptabilidad a los cambios del mercado.

  3. Las curvas MAMA y FAMA dependen únicamente de las características de los precios sin retraso, capturando las inversiones de tendencia de manera oportuna.

  4. La sensibilidad de la estrategia se puede ajustar a través del ajuste de parámetros para adaptarse a diferentes estilos de negociación.

  5. La lógica clara y sencilla facilita la comprensión, modificación y aplicación para la investigación y la enseñanza.

Análisis de riesgos

La estrategia de promedio móvil Mala Adaptive también conlleva los siguientes riesgos:

  1. Dependiendo de los períodos y fases de la curva senoidal, las distorsiones anormales de los precios pueden generar señales incorrectas.

  2. Los límites rígidos establecidos en la estimación del período causan una fluidez insuficiente en los cambios del período.

  3. El bloqueo de fase y el bloqueo de período alrededor de los puntos clave conducen a oscilaciones de las curvas, potencialmente perdiendo entradas y salidas óptimas.

  4. La adaptabilidad de los parámetros y las curvas disminuye durante la volatilidad del mercado.

  5. Como indicador técnico, la estrategia tiende a producir breakouts falsos y señales erróneas en torno a niveles técnicos importantes.

Estos riesgos podrían mitigarse mediante parámetros más suaves, filtrado de señales con otros indicadores, ajuste del tamaño de la posición, etc.

Direcciones de optimización

La estrategia de promedios móviles adaptativos de Mala puede mejorarse en los siguientes aspectos:

  1. Mejorar el cálculo del período y de los parámetros para una mayor suavidad natural, por ejemplo, introduciendo métodos estadísticos para una mejor modelización de precios.

  2. Filtrar las señales con volatilidad, volumen y fundamentos para mejorar la precisión.

  3. Optimizar la configuración de parámetros y el control del deslizamiento para reducir los costes de negociación y mejorar la robustez.

  4. Introducir el aprendizaje automático y los algoritmos genéticos para la optimización de parámetros dinámicos.

  5. Desarrollar combinaciones con sistemas de tendencia y inversión media basados en diferentes entradas y salidas para mejorar la rentabilidad.

Conclusión

La Estrategia Mala Adaptive Moving Average utiliza el análisis de ondas senoidales para generar señales de negociación, adaptándose automáticamente a los cambios del mercado a través del ajuste dinámico de parámetros, por lo que es bastante robusta y ampliamente aplicable. En comparación con otras estrategias de promedios móviles adaptativos, demuestra una mayor viabilidad y estabilidad.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dongyun

//@version=4
strategy("自适应移动平均的MESA系统", overlay=true)

fastlimit = input(0.5,'')
slowlimit = input(0.05,'')

smooth = 0.0
detrender = 0.0
I1 = 0.0
Q1 = 0.0
JI = 0.0
JQ = 0.0
I2 = 0.0
Q2 = 0.0
Re = 0.0
Im = 0.0
period = 0.0
smoothperiod = 0.0
phase = 0.0
deltaphase = 0.0
alpha = 0.0
MAMA = 0.0
FAMA = 0.0
price = 0.0

price := (high + low)/2
PI = 2 * asin(1)

if (bar_index > 5)
	smooth := (4*price + 3*price[1] + 2*price[2] + price[3])/10
	detrender := (.0962*smooth + .5769*nz(smooth[2]) - .5769*nz(smooth[4]) - .0962*nz(smooth[6]))*(.075*nz(period[1]) + .54)

	// compute InPhase and Quadrature components
	Q1 := (.0962*detrender + .5769*nz(detrender[2]) - .5769*nz(detrender[4]) - .0962*nz(detrender[6]))*(.075*nz(period[1]) + .54)

	I1 := nz(detrender[3])

	// advance the pulse of i1 and q1 by 90 degrees
	JI := (.0962*I1 + .5769*nz(I1[2]) - .5769*nz(I1[4]) - .0962*nz(I1[6]))*(.075*nz(period[1]) + .54)
	JQ := (.0962*Q1 + .5769*nz(Q1[2]) - .5769*nz(Q1[4]) - .0962*nz(Q1[6]))*(.075*nz(period[1]) + .54)

	//phase addition for 3-bar averaging 
	I2 := I1 - JQ
	Q2 := Q1 + JI

	//smooth the i and q components before applying
	I2 := .2*I2 + .8*nz(I2[1])
	Q2 := .2*Q2 + .8*nz(Q2[1])

	// hymodyne discriminator
	Re := I2*I2[1] + Q2*nz(Q2[1])
	Im := I2*Q2[1] + Q2*nz(I2[1])
	Re := .2*Re + .8*nz(Re[1])
	Im := .2*Im + .8*nz(Im[1])

	if (Im != 0 and Re != 0)
		period := 2 * PI/atan(Im/Re)

	if (period > 1.5 * nz(period[1]))
		period := 1.5*nz(period[1])

	if (period < .67*nz(period[1]))
		period := .67*nz(period[1])

	if (period < 6)
		period := 6

	if (period > 50)
		period := 50

	period := .2*period + .8*nz(period[1])
	smoothperiod := .33*period + .67*nz(smoothperiod[1])

	if (I1 != 0)
		phase := (180/PI) * atan(Q1/I1)

	deltaphase := nz(phase[1]) - phase

	if (deltaphase < 1)
		deltaphase := 1

	alpha := fastlimit/deltaphase
	if(alpha < slowlimit)
		alpha := slowlimit

	MAMA := alpha*price + (1 - alpha)*nz(MAMA[1])
	FAMA := .5*alpha*MAMA + (1 - .5*alpha)*nz(FAMA[1])

	if (FAMA < MAMA)
		strategy.entry("Long", strategy.long)
	else
		if (FAMA > MAMA)
			strategy.entry("Short", strategy.short)


Más.