O recurso está a ser carregado... Carregamento...

Estratégia de cruzamento da média móvel adaptativa baseada na Uhl MA

Autora:ChaoZhang, Data: 2023-09-19 22:06:42
Tags:

Resumo

O sistema Uhl MA é um sistema de cruzamento de média móvel adaptativa projetado para superar as deficiências dos sistemas tradicionais de MA. Ele usa médias móveis rápidas e lentas para gerar sinais de negociação, sendo o MA lento o MA corrigido (CMA) originalmente proposto por Andreas Uhl e o MA rápido o passo de tendência corrigido (CTS), que também é baseado no MA corrigido. O sistema ajusta adaptivamente os parâmetros do MA para alcançar sinais de negociação mais confiáveis.

Análise dos princípios

O núcleo desta estratégia está no cálculo das linhas Uhl MA e CTS. A linha Uhl MA é um aprimoramento em relação à SMA tradicional, usando variância (VAR) e desvio quadrado histórico (SECMA) para ajustar adaptivamente os pesos entre SMA e CMA anterior. Quando o VAR é menor que o SECMA, mais peso é colocado na SMA, caso contrário, mais peso é colocado na CMA. Isso ajuda a filtrar algum ruído e gerar MA mais suave. A linha CTS usa um cálculo adaptativo semelhante baseado no preço SRC.

A lógica de cruzamento é a mesma dos sistemas tradicionais de MA. Um sinal de compra é gerado quando o CTS cruza acima do Uhl MA, e um sinal de venda quando cruza abaixo.

Análise das vantagens

Em comparação com os sistemas tradicionais de cruzamento de MA, a maior vantagem desta estratégia é o uso de MA adaptativos, que podem filtrar algum ruído e gerar sinais mais confiáveis em mercados de faixa. O cruzamento adaptativo reduz os falsos sinais em comparação com a cruz morta e a cruz dourada.

Análise de riscos

O principal risco desta estratégia vem do aumento dos falsos sinais em mercados de variação, já que os MAs são indicadores de tendência na natureza. Isso é em grande parte devido ao cálculo adaptativo do CMA, que converge para intervalos de preços em consolidação, gerando sinais desnecessários.

Sugestões de otimização

As potenciais otimizações incluem:

  1. Melhorar o cálculo da AMC para evitar a convergência em mercados variados, utilizando, por exemplo, outros indicadores.

  2. Otimizar parâmetros através de algoritmos de otimização multi-variados como algoritmos genéticos.

  3. Introduzir stop loss para controlar a perda de uma única transação.

  4. Adicionar filtros que utilizem outros indicadores para evitar a troca excessiva na consolidação, tais como medidas de volatilidade, índice RFM, etc.

  5. Otimizar a gestão do risco, incluindo o dimensionamento das posições e as métricas de risco para melhor controlar o risco global.

Conclusão

O sistema Uhl MA é uma estratégia de cruzamento de MA adaptativa muito inovadora. Em comparação com as estratégias tradicionais, os MA dinâmicos ajudam a reduzir sinais falsos e melhor capturar tendências. Mas existem limitações em mercados variados. Outras melhorias na metodologia de cálculo e adição de filtros possuem grande potencial. Enquanto isso, o ajuste de parâmetros e o controle de riscos também são críticos.

[/trans]


/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-25 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/
// © alexgrover

//@version=4
strategy("Uhl MA System - Strategy Analysis")
length = input(100),mult = input(1.),src = input(close)
//----
out = 0., cma = 0., cts = 0.
Var = variance(src,length)           ,sma = sma(src,length)
secma = pow(nz(sma - cma[1]),2)      ,sects = pow(nz(src - cts[1]),2) 
ka = Var < secma ? 1 - Var/secma : 0 ,kb = Var < sects ? 1 - Var/sects : 0
cma := ka*sma+(1-ka)*nz(cma[1],src)  ,cts := kb*src+(1-kb)*nz(cts[1],src)
//----
if crossover(cts,cma)
    strategy.entry("Buy", strategy.long)
if crossunder(cts,cma)
    strategy.entry("Sell", strategy.short)
//----
cap = 50000
eq = strategy.equity
rmax = 0.
rmax := max(eq,nz(rmax[1]))
//----
css = eq > cap ? #0cb51a : #e65100
a = plot(eq,"Equity",#2196f3,2,transp=0)
b = plot(rmax,"Maximum",css,2,transp=0)
fill(a,b,css,80)

Mais.