Estratégia de negociação baseada nos indicadores EMA e MAMA

Autora:ChaoZhang, Data: 2023-10-31 14:20:56
Tags:

img

Resumo

Esta estratégia baseia-se nos indicadores EMA (Exponential Moving Average) e MAMA (MESA Adaptive Moving Average) para determinar a direção da tendência e gerar sinais de negociação de acordo com seus cruzamentos.

Estratégia lógica

  1. Calcular a EMA rápida e a EMA lenta, que refletem as tendências de curto e longo prazo do mercado, respectivamente.

  2. Calcule as linhas MAMA e FAMA, que são médias móveis adaptativas.

  3. Quando a EMA rápida cruza acima da EMA lenta, é gerado um sinal de compra.

  4. Quando a EMA rápida cruza abaixo da EMA lenta, é gerado um sinal de venda.

  5. Quando a MAMA cruza acima da FAMA, um sinal de compra é gerado.

  6. Quando a MAMA cruza abaixo da FAMA, é gerado um sinal de venda.

  7. Os cruzamentos de MAMA e FAMA podem ser utilizados para confirmar os sinais EMA ou fornecer a detecção precoce de viradas de tendência.

Especificamente, a estratégia calcula primeiro a EMA rápida (fl) e a EMA lenta (sl), refletindo as tendências de curto e longo prazo, respectivamente.

Em seguida, ele calcula MAMA e FAMA com base na fórmula de John Ehlers:

  1. Calcule a Transformação de Hilbert do preço e extraia informações de fase do sinal.

  2. Calcular a frequência instantânea p com base nas informações de fase.

  3. Calcular o fator de ponderação α com base no valor p.

  4. Calcular MAMA e FAMA com base em α.

Por último, os sinais de negociação são gerados com base nos cruzamentos EMA e MAMA/FAMA:

  • Longo quando a EMA cruza acima
  • Curto quando a EMA cruza abaixo
  • Longo quando a MAMA atravessa a FAMA
  • Curto quando a MAMA cruza abaixo da FAMA

Análise das vantagens

Esta estratégia combina as vantagens dos indicadores EMA e MAMA para melhorar a precisão dos sinais de negociação.

Vantagens da EMA:

  • Fazer com que os dados sobre preços sejam efetivamente uniformes e reduzir o ruído
  • Seguir as tendências bem com algum atraso
  • Parâmetros flexíveis para ajustar a sensibilidade

Vantagens da MAMA:

  • Parâmetros adaptáveis, sem necessidade de ajuste manual do período
  • Resposta rápida à captura de tendências de mudança precoce
  • Identificar com precisão suporte e resistência

Vantagens da combinação:

  • A EMA determina a tendência geral
  • A MAMA verifica os sinais e detecta as curvas cedo.
  • Melhoria da precisão e da taxa de ganho dos sinais

Análise de riscos

Os principais riscos desta estratégia:

  • EMA e MAMA são indicadores atrasados, os sinais de entrada podem ter algum atraso e deslizamento
  • Crossovers frequentes em mercados variados causando problemas
  • Configurações incorretas de parâmetros levam a tendências ausentes ou sinais falsos

Soluções:

  • Usar stop loss para controlar a perda
  • Escolha parâmetros razoáveis, evite ser demasiado sensível
  • Combinar com outros indicadores para confirmar sinais

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  • Otimizar os períodos de EMA com base nas características do símbolo
  • Melhora a sensibilidade MAMA alfa para melhor captura de voltas
  • Adicione outros filtros como MACD, RSI para evitar sinais falsos
  • Adicionar stop loss ao controlo dos riscos
  • Backtest para encontrar parâmetros ótimos
  • Automatizar o lucro para maximizar o lucro

Resumo

Esta estratégia integra os pontos fortes dos indicadores EMA e MAMA para seguir a tendência e capturar voltas em tempo hábil. Com otimização de parâmetros e controle de risco, pode alcançar uma melhor taxa de ganho e lucratividade.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("EMAMA strategy", overlay=true)
//This entire strategy is courtesy of LazyBear for programming the original EMAMA system, I simply added a strategy element to everything to round things out. 

src=input(hl2, title="Source")
fl=input(.5, title="Fast Limit")
sl=input(.05, title="Slow Limit")
sp = (4*src + 3*src[1] + 2*src[2] + src[3]) / 10.0
dt = (.0962*sp + .5769*nz(sp[2]) - .5769*nz(sp[4])- .0962*nz(sp[6]))*(.075*nz(p[1]) + .54)
q1 = (.0962*dt + .5769*nz(dt[2]) - .5769*nz(dt[4])- .0962*nz(dt[6]))*(.075*nz(p[1]) + .54)
i1 = nz(dt[3])
jI = (.0962*i1 + .5769*nz(i1[2]) - .5769*nz(i1[4])- .0962*nz(i1[6]))*(.075*nz(p[1]) + .54)
jq = (.0962*q1 + .5769*nz(q1[2]) - .5769*nz(q1[4])- .0962*nz(q1[6]))*(.075*nz(p[1]) + .54)
i2_ = i1 - jq
q2_ = q1 + jI
i2 = .2*i2_ + .8*nz(i2[1])
q2 = .2*q2_ + .8*nz(q2[1])
re_ = i2*nz(i2[1]) + q2*nz(q2[1])
im_ = i2*nz(q2[1]) - q2*nz(i2[1])
re = .2*re_ + .8*nz(re[1])
im = .2*im_ + .8*nz(im[1])
p1 = iff(im!=0 and re!=0, 360/atan(im/re), nz(p[1]))
p2 = iff(p1 > 1.5*nz(p1[1]), 1.5*nz(p1[1]), iff(p1 < 0.67*nz(p1[1]), 0.67*nz(p1[1]), p1))
p3 = iff(p2<6, 6, iff (p2 > 50, 50, p2))
p = .2*p3 + .8*nz(p3[1])
spp = .33*p + .67*nz(spp[1])
phase = atan(q1 / i1)
dphase_ = nz(phase[1]) - phase
dphase = iff(dphase_< 1, 1, dphase_)
alpha_ = fl / dphase
alpha = iff(alpha_ < sl, sl, iff(alpha_ > fl, fl, alpha_))
mama = alpha*src + (1 - alpha)*nz(mama[1])
fama = .5*alpha*mama + (1 - .5*alpha)*nz(fama[1])
pa=input(false, title="Mark crossover points")

plotarrow(pa?(cross(mama, fama)?mama<fama?-1:1:na):na, title="Crossover Markers")

fr=input(false, title="Fill MAMA/FAMA Region")

duml=plot(fr?(mama>fama?mama:fama):na, style=circles, color=gray, linewidth=0, title="DummyL")

mamal=plot(mama, title="MAMA", color=red, linewidth=2)

famal=plot(fama, title="FAMA", color=green, linewidth=2)

fill(duml, mamal, red, transp=70, title="NegativeFill")

fill(duml, famal, green, transp=70, title="PositiveFill")

ebc=input(false, title="Enable Bar colors")

bc=mama>fama?lime:red

barcolor(ebc?bc:na)

longCondition = crossover(mama, fama)
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(mama, fama)
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

Mais.