Estratégia de acompanhamento cruzado da EMA

Autora:ChaoZhang, Data: 2023-10-25 17:44:35
Tags:

img

Resumo

A estratégia de cruzamento da EMA gera sinais de compra e venda rastreando o cruzamento entre duas linhas da EMA de períodos diferentes. Quando o EMA de período mais curto cruza a EMA de período mais longo, um sinal de compra é gerado. Quando a EMA de período mais curto cruza abaixo da EMA de período mais longo, um sinal de venda é gerado. Esta estratégia também incorpora o indicador SuperTrend para filtrar falhas.

Estratégia lógica

Esta estratégia é baseada principalmente na cruz de ouro e cruz de morte das linhas EMA. As linhas EMA podem suavizar os dados de preços e filtrar o ruído. O cruzamento entre as linhas EMA indica mudanças na tendência de preços. Quando o curto período EMA (20-período) atravessa o longo período EMA (50-período), isso significa que o preço de curto prazo está agora acima do preço de longo prazo, implicando uma tendência de ruptura para cima e gerando um sinal de compra. Quando o curto período EMA atravessa abaixo do longo período EMA, significa que o preço de curto prazo quebra abaixo do preço de longo prazo, implicando uma tendência de queda e gerando um sinal de venda.

Além disso, esta estratégia usa o indicador SuperTrend para filtrar sinais falsos gerados por crossovers da EMA. O indicador SuperTrend é calculado com base no ATR para traçar bandas superiores e inferiores que definem melhor a tendência real. Quando o preço quebra acima da banda superior da SuperTrend, um sinal de compra é gerado. Quando o preço quebra abaixo da banda inferior da SuperTrend, um sinal de venda é gerado. Os sinais de crossover da EMA são válidos apenas quando confirmados pelos sinais da SuperTrend. Isso ajuda a remover sinais falsos causados por flutuações de preços.

Especificamente, a lógica de entrada da estratégia é definida do seguinte modo:

  1. Quando o 20EMA cruzar acima do 50EMA, e o preço romper acima da banda superior do SuperTrend, gerar sinal de compra.

  2. Quando a 20EMA cruzar abaixo da 50EMA, e o preço romper abaixo da faixa inferior da SuperTrend, gerar sinal de venda.

A utilização de crossovers da EMA para determinar a principal direção da tendência combinada com o filtro SuperTrend poderia melhorar a precisão dos sinais de negociação.

Vantagens

A estratégia de cruzamento da EMA tem as seguintes vantagens:

  1. Simples de implementar, só requer o cálculo de dois crossovers da EMA.

  2. A EMA como média móvel pode filtrar algum ruído.

  3. A combinação com a SuperTrend reduz ainda mais os falsos sinais causados por flutuações de preços.

  4. Os períodos de EMA podem ser ajustados para diferentes ambientes de mercado.

  5. Indicado para negociações de direcção longa ou curta, aplicável a várias abordagens de negociação.

  6. Pode ser implementado em diferentes prazos para vários estilos de negociação.

Riscos

Há também alguns riscos associados à estratégia de cruzamento da EMA:

  1. Os sinais de cruzamento da EMA podem atrasar-se durante oscilações extremas de preços, não conseguindo refletir as alterações de preços em tempo útil.

  2. As linhas EMA têm um efeito de atraso, o que pode gerar sinais incorretos.

  3. A configuração inadequada dos períodos da EMA pode conduzir a sinais falsos excessivos.

  4. O crossover por si só não pode determinar a tendência real, ainda em grande parte atrasado.

  5. A gestão adequada do risco, como o stop loss, é necessária para controlar os riscos.

Algumas maneiras de reduzir os riscos:

  1. Otimizar os períodos de EMA para se adequar melhor às linhas rápidas e lentas.

  2. Redução do período de retenção e aplicação de um stop loss oportuno.

  3. Combine com outros indicadores como médias móveis, padrões de candelabro para um julgamento abrangente.

  4. Ajustar a frequência de negociação para um número menor de negociações.

Melhorias

Esta estratégia pode ser reforçada e otimizada nos seguintes aspectos:

  1. Optimizar os períodos de EMA para diferentes ciclos e ambientes de mercado.

  2. Teste diferentes indicadores de média móvel como SMA, KWMA.

  3. Incorporar mais indicadores técnicos para formar modelos multivariados, como MACD, RSI. Aplicar algoritmos de aprendizado de máquina para otimizar parâmetros e pesos.

  4. Adicione técnicas de stop loss como trailing stop loss, percentual stop loss para controlar riscos.

  5. Introduzir filtros de volume que funcionem com indicadores de volume para evitar falsos sinais.

  6. Otimizar as saídas definindo regras de saída, combinando com padrões de gráficos, breakouts, etc.

  7. Confirmar a tendência em um período de tempo mais longo, entrar em negociações em um período de tempo mais curto para seguir as tendências.

Conclusão

A estratégia de cruzamento da EMA é um sistema simples e prático de acompanhamento de tendências. Ela pode identificar tendências de médio prazo e gerar sinais de tempo. Combinando com o filtro SuperTrend, pode reduzir efetivamente os falsos negócios. Mas riscos como atraso e sinais errados ainda existem. A estratégia pode ser aprimorada por meio de otimização de parâmetros, stop loss, combinação de indicadores, etc. A estratégia de cruzamento da EMA é fácil de usar, adequada para rastreamento de tendências de médio e longo prazo e eficaz para traders novatos.


/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 1h
basePeriod: 15m
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/
// © alokbothra

//@version=5
strategy("Ema Crossover", overlay=true, initial_capital = 1000)
start = timestamp(2021,1,1,0,0)
end = timestamp(2023,10,30,0,0)
plot (ta.ema(close,20), title = "Ema 20", color = color.green , linewidth = 2)
plot (ta.ema(close,50), title = "Ema 50", color = color.red, linewidth = 2 )

//supertrend 1
Periods = input(title='ATR Period', defval=11)
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
highlighting = input(title='Highlighter On/Off ?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = close - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn =close+ Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
changeCond = trend != trend[1]

longonly = input.bool(defval = true, title = 'Long Only')
shortonly = input.bool(defval = true, title = 'Short Only')

longCondition = (ta.ema(close, 20) >= ta.ema(close, 50)) 
shortCondition = (ta.ema(close, 20) <= ta.ema(close, 50))
long = (trend == 1)
short = (trend == -1)
sell= short
cover= long
if time >= start and time < end
    if longonly
        if ((longCondition) and (long))
            strategy.entry ("Long Entry", strategy.long, comment ="Long Entry")
        if strategy.position_size > 0
            strategy.close("Long Entry", when = sell, comment = "Long Exit")
    if shortonly
        if ((shortCondition) and (short))
            strategy.entry("Short Entry", strategy.short, comment = "Short Entry")
        if strategy.position_size < 0
            strategy.close("Short Entry", when = cover, comment = "Short Exit")


Mais.