Estratégia da EMA de múltiplos indicadores

Autora:ChaoZhang, Data: 2023-09-28 15:57:34
Tags:

Resumo

A Estratégia EMA Multi-Indicador é uma estratégia de tendência que incorpora vários indicadores como EMA, MACD, Oscilador, RSI, Estocástico, Bandas de Bollinger para gerar sinais de negociação.

Estratégia lógica

A estratégia calcula, em primeiro lugar, os seguintes indicadores:

  • EMA: média móvel exponencial durante um determinado período.

  • MACD: linhas MACD DIF e DEA.

  • Oscilador: Diferença entre fechamento e abertura durante um período.

  • RSI: Índice de Força Relativa durante um período.

  • Estocástico: valores estocásticos K e D com parâmetros.

  • Bandas de Bollinger: Bandas superiores, médias e inferiores ao longo de um período.

Em seguida, a cada indicador é atribuído um valor com base em seu estado atual. Por exemplo, Stochastic abaixo de 20 é atribuído 2, RSI acima de 80 é atribuído -2.

Os valores do indicador são somados para derivar um gatilho de sinal composto. Se o gatilho >= 7, um sinal longo é gerado. Se o gatilho <= -7, um sinal curto é gerado.

Ao combinar sinais de múltiplos indicadores, a estratégia pode determinar com mais precisão a direção da tendência e gerar sinais de negociação confiáveis.

Análise das vantagens

A principal vantagem desta estratégia multi-indicador consiste em combinar os pontos fortes de vários indicadores para uma avaliação mais abrangente e precisa, evitando falsos sinais de indicadores individuais.

Especificamente, as vantagens são:

  1. A combinação de múltiplos indicadores proporciona uma determinação de tendência mais confiável.

  2. Diferentes indicadores podem identificar diferentes estágios de uma tendência com base nas suas características.

  3. Os indicadores com parâmetros diferentes podem capturar características em diferentes prazos, por exemplo, períodos de EMA rápidos e lentos.

  4. Os pesos de cada indicador podem ser personalizados.

  5. O mix de indicadores e os pesos podem ser otimizados através de backtesting para um melhor desempenho.

Análise de riscos

Apesar da utilização de múltiplos indicadores, existem alguns riscos:

  1. A combinação inadequada de indicadores pode não permitir aproveitar os pontos fortes ou causar conflitos, sendo necessário uma compreensão adequada da aplicabilidade dos indicadores.

  2. A distribuição irracional de peso pode representar inexatamente a importância do indicador. Os pesos precisam de testes e ajustes iterativos.

  3. Um único conjunto de parâmetros pode causar sobreajuste, devendo ser utilizada a validação de vários intervalos de tempo.

  4. As ponderações/parâmetros dos indicadores estáticos não podem adaptar-se às condições de mercado em evolução.

  5. Os sinais do indicador podem atrasar-se, devendo utilizar-se outras técnicas para determinar o tempo de parada da perda.

  6. O aumento da complexidade da estratégia a partir de múltiplos indicadores requer dados históricos suficientes e maior dificuldade de ajuste de parâmetros.

Oportunidades de Melhoria

Algumas formas de melhorar a estratégia:

  1. Testar mais tipos de indicadores para encontrar os sensíveis às condições atuais do mercado.

  2. Otimizar os períodos de indicadores para capturar as tendências em diferentes prazos.

  3. Otimizar os pesos dos indicadores para melhor representar a importância relativa.

  4. Adicionar ajuste dinâmico para otimizar parâmetros e pesos em tempo real adaptando-se às condições de mercado em mudança.

  5. Incorporar estratégias de stop loss com pontos de stop loss racionais para limitar as perdas.

  6. Adicionar a validação de vários prazos para evitar a sobreajustação a um único período.

  7. Empregar otimização gradual e combinatória para encontrar combinações ideais de parâmetros.

  8. Adicionar aprendizado de máquina para uma ponderação mais inteligente do indicador dinâmico.

  9. Otimizar a lógica de entrada e saída para equilibrar o acompanhamento das tendências e evitar o excesso de negociação.

Conclusão

A Estratégia EMA Multi-Indicador aproveita os pontos fortes combinados da EMA, MACD, RSI e mais para determinar a direção da tendência do mercado e gerar sinais de negociação. Em comparação com as estratégias de indicador único, ela oferece uma análise de mercado mais abrangente e reduz sinais falsos.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 4h
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/
// © ally17

//@version=4
// strategy("ELIA MULTI STRATEGY",overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.00, default_qty_value=25)

//INPUT
start = timestamp(input(2021, "start year"), 1, 1, 00, 00)
end = timestamp(input(9999, "end year"), 1, 1, 00, 00)

emalen=input(80, title="Ema Len")
macdfast=input(12, title="Macd Fast Len")
macdslow=input(26, title="Macd Fast Len")
macdsig=input(12, title="Macd Signal Len")
occlen=input(15, title="Occ Len")

rsilen=input(2, title="Rsi Len")
stochklen=input(11, title="Stk K Len")
stochdlen=input(3, title="Stk D Len")
stochlen=input(3, title="Stk Smooth Len")
bblength = input(10, minval=1, title="BB Len")
mult = input(2.0, minval=0.001, maxval=50, title="BB Std Dev")

momlen=input(10, title="Mom Len")


//CALCOLI
var trigger = 0.0

var emavar = 0.0
var macdvar = 0.0
var occvar = 0.0

var rsivar = 0.0
var stochvar = 0.0
var bbvar = 0.0

var donvar =0.0

ema = ema(close,emalen)

[macdLine, signalLine, histLine] = macd(close, 12, 26, 9) // MACD

occ = ema(close,occlen) - ema(open,occlen)

rsi = rsi(close, rsilen) // RSI

stoch = sma(stoch(close, high, low, stochklen), stochlen) // Stoch

basis = sma(close, bblength)
dev = mult * stdev(close, bblength)
upper = basis + dev
lower = basis - dev

moment = mom(close, momlen) // Momentum

Obv = obv // OBV


//PLOT


//STRATEGIA
emavar := (close>ema)? 3 : -3
macdvar := (macdLine>signalLine)? 3 : -3
occvar := (occ>0)? 3 : -3

rsivar := (rsi<20)? 2 : (rsi>50 and rsi<80)? 1 : (rsi>80)? -2 : (rsi<50 and rsi>20)? -1 : 0
stochvar := (stoch<20)? 2 : (stoch>80)? -2 : 0
bbvar :=  (close<lower)? 2 : (close>upper)? -2 : 0

trigger := emavar+macdvar+occvar+rsivar+stochvar+bbvar

longcondition = trigger>=7
closelong = trigger<3

shortcondition = trigger<=-7
closeshort = trigger >-3

trendcolor = longcondition ? color.green : shortcondition? color.red : (trigger>3 and trigger<7)? #A2E1BF : (trigger<-3 and trigger>-7)? #E19997 : na
bgcolor(trendcolor, transp=80)


if time > start and time < end
    if longcondition
        strategy.entry("LONG", long=strategy.long)

if closelong
    strategy.close("LONG", comment="CLOSE LONG")
    
if time > start and time < end
    if shortcondition
        strategy.entry("SHORT", long=strategy.short)

if closeshort
    strategy.close("SHORT", comment="CLOSE SHORT")
    
//plotshape(longcondition, color=color.green, text="L", size=size.small, style=shape.triangledown)
//plotshape(shortcondition, color=color.red, "S"(trigger), size=size.small, style=shape.triangledown)
//plotshape(closelong, color=color.purple, text="LC", size=size.small, style=shape.triangledown)
//plotshape(closeshort, color=color.purple, text="SC", size=size.small, style=shape.triangledown)


Mais.