Estratégia de média móvel adaptativa de Mala

Autora:ChaoZhang, Data: 2023-12-07 11:08:18
Tags:

img

Resumo

A Estratégia Mala Adaptive Moving Average é uma estratégia quantitativa de negociação baseada no indicador MESA Adaptive Moving Average desenvolvido por John Ehlers.

Estratégia lógica

A estratégia Mala Adaptive Moving Average usa um gerador de ondas senoidais para produzir sinais de negociação. A onda senoida é determinada pela sombra lançada no eixo vertical por um vetor rotativo (chamado de fasor). Quando o vetor gira 360 graus, um ciclo é concluído. Os sinais de compra são gerados quando o vetor passa por um ângulo e os sinais de venda quando ele passa por outro ângulo. Assim, as decisões de negociação são definidas em termos de ângulos no domínio de frequência em vez de características de forma de onda no domínio de tempo, tornando a estratégia mais robusta em diferentes contratos de futuros e condições de mercado.

Especificamente, a estratégia primeiro suaviza e retende o preço, em seguida, calcula dois componentes da onda senoidal: o componente in-fase I e o componente de quadratura Q. Estes dois componentes são sobrepostos e filtrados por mudança de fase para obter o Re e Im finais. Re e Im refletem as informações de frequência da onda senoidal. O período de período pode ser derivado de atanIm/Re. Um período suave de período suavizado é determinado com base no intervalo de período esperado.

Análise das vantagens

A estratégia da média móvel adaptativa de Mala tem as seguintes vantagens:

  1. Usar ondas senoidais e fases como sinais de negociação torna a estratégia mais robusta, não afetada por características de forma de onda no domínio do tempo.

  2. A adaptabilidade dos períodos e dos parâmetros permite uma forte adaptabilidade às alterações do mercado.

  3. As curvas MAMA e FAMA dependem exclusivamente de características de preços sem atraso, capturando inversões de tendência em tempo útil.

  4. A sensibilidade da estratégia pode ser ajustada através do ajuste de parâmetros para se adequar a diferentes estilos de negociação.

  5. A lógica clara e simples facilita a compreensão, modificação e aplicação para a investigação e ensino.

Análise de riscos

A estratégia de média móvel Mala Adaptive também comporta os seguintes riscos:

  1. Dependendo dos períodos e fases da curva sinusoidal, distorções anormais dos preços podem gerar sinais incorretos.

  2. Os limites rígidos estabelecidos na estimativa do período provocam uma suavidade insuficiente nas alterações do período.

  3. O bloqueio de fase e o bloqueio de período em torno de pontos-chave levam a oscilações das curvas, potencialmente faltando entradas e saídas ideais.

  4. A adaptabilidade dos parâmetros e das curvas diminui durante a volatilidade intensificada do mercado.

  5. Como indicador técnico, a estratégia tende a produzir falhas e sinais errados em torno de níveis técnicos importantes.

Estes riscos poderiam ser atenuados através de parâmetros mais suaves, de filtragem de sinais com outros indicadores, de ajustamento do dimensionamento da posição, etc.

Orientações de otimização

A estratégia da média móvel adaptativa de Mala pode ser melhorada nos seguintes aspectos:

  1. Melhorar o cálculo do período e dos parâmetros para uma suavidade mais natural, por exemplo, introduzindo métodos estatísticos para uma melhor modelagem dos preços.

  2. Filtrar sinais com volatilidade, volume e fundamentais para melhorar a precisão.

  3. Otimizar as definições dos parâmetros e o controlo do deslizamento para reduzir os custos de negociação e melhorar a robustez.

  4. Introduzir algoritmos de aprendizagem automática e genéticos para otimização de parâmetros dinâmicos.

  5. Desenvolver combinações com sistemas de tendência e de reversão da média baseados em diferentes entradas e saídas para melhorar a rentabilidade.

Conclusão

A estratégia Mala Adaptive Moving Average usa análise de ondas senoidais para gerar sinais de negociação, adaptando-se automaticamente às mudanças do mercado através de ajuste dinâmico de parâmetros, tornando-se bastante robusta e amplamente aplicável. Em comparação com outras estratégias de média móvel adaptativa, ela demonstra maior praticidade e estabilidade. Mas como uma estratégia técnica, ela está sujeita a sinais errados em torno de níveis técnicos importantes, exigindo filtragem e otimização com ferramentas auxiliares. Com melhoria contínua, essa estratégia tem o potencial de se tornar um sistema de negociação adaptativo recomendado.


/*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)


Mais.