Estratégia de acompanhamento de tendências com base no indicador EMA


Data de criação: 2023-11-06 09:53:27 última modificação: 2023-11-06 09:53:27
cópia: 0 Cliques: 691
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências com base no indicador EMA

Visão geral

A estratégia utiliza o indicador EMA para identificar a tendência do preço das ações e, combinado com o cálculo do diferencial padrão, permite um sinal de compra e venda para realizar uma estratégia de negociação que acompanha a tendência. A ideia principal é calcular o diferencial entre o preço atual e a EMA, definindo o limite de compra.

Princípio da estratégia

A estratégia primeiro calcula a diferença v v entre o preço de fechamento e o EMA com a duração de ema_length. Em seguida, calcula a diferença padrão dev para o ciclo de ema_length de v. Em seguida, determina o coeficiente de direção de compra k, onde k é 1 para comprar em cima e k é - 1 para comprar em baixo. Em seguida, calcula o limiar de sinal de compra dev_limit, que é k vezes dev e multiplicado pelo fator de limitação. Quando v ultrapassa o dev_limit, gera um sinal de compra.

A estratégia oferece dois modelos:

  1. Compre a tendência de queda quando o dev_limit passa abaixo de v, seguindo a tendência de queda.

  2. Comprar a tendência de alta, quando o dev_limit de v está corrigido, é seguir a tendência de alta.

Em resumo, a estratégia permite o acompanhamento da tendência através do cálculo dinâmico do diferencial padrão entre o preço e o EMA, definindo um limite de compra. Os parâmetros do fator controlam a sensibilidade do sinal de compra. O comprimento do eMa controla o ciclo EMA. O padrão de compra controla a direção da compra.

Análise de vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. Usar o indicador EMA para identificar a direção da tendência de preços, o indicador EMA para suavizar os preços, e identificar a tendência é eficaz.

  2. O cálculo de um limiar dinâmico combinado com um diferencial padrão é mais adaptável às mudanças do mercado do que um limiar fixo.

  3. Os dois modos de compra podem ser seguidos de forma ascendente ou descendente.

  4. O parâmetro factor fornece espaço para ajustar a sensibilidade de compra. O parâmetro ema_length pode ajustar o parâmetro de otimização do ciclo EMA.

  5. A lógica da estratégia é clara e simples, fácil de entender e modificar.

  6. A gestão de posições pode ser flexível, com estratégias positivas para acompanhar a tendência de alta e baixa.

Análise de Riscos

A estratégia também apresenta os seguintes riscos:

  1. Os indicadores EMA estão atrasados e podem ter perdido a virada de tendência.

  2. Dependendo da otimização de parâmetros, se os parâmetros forem configurados incorretamente, pode ser muito sensível ou lento.

  3. O risco de seguir a tendência, que pode levar a grandes perdas se a tendência se inverter.

  4. A frequência da conversão multi-espaço causa frequência de transações.

  5. Os sinais são frequentes em situações de grandes tremores, o que aumenta os custos de transação.

Para esses riscos, pode-se considerar a adição de estratégias de controle de risco de stop loss, testes de combinação de parâmetros de otimização para encontrar os melhores parâmetros, adição de condições de filtragem para evitar transações muito frequentes, etc.

Direção de otimização

A estratégia pode ser otimizada em:

  1. Teste os efeitos dos parâmetros de diferentes ciclos de EMA para encontrar a melhor duração de ciclo de EMA.

  2. Factor de teste com diferentes valores, para encontrar a melhor sensibilidade de limiar.

  3. Optimizar a estratégia de gestão de posições abertas, como por exemplo, o aumento de posições de acordo com a tendência.

  4. Adicione filtros para outros indicadores para evitar erros de negociação em situações de turbulência.

  5. Aumentar a estratégia de stop loss para controlar as perdas individuais.

  6. Optimizar os parâmetros para os dois modelos de compra, procurando a melhor combinação de parâmetros.

  7. Pesquise sinais de reversão de tendência e desligue o rastreamento de tendência.

Resumir

A estratégia baseia-se na identificação da direção da tendência do EMA e no cálculo dinâmico do limiar para gerar um sinal de compra e venda, permitindo o acompanhamento da tendência. A lógica da estratégia é simples e clara, e a gestão de posições pode ser configurada de forma flexível para acompanhar ativamente a tendência.

Código-fonte da estratégia
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 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/
// © Azzrael

// Based on EMA and EMA Oscilator https://www.tradingview.com/script/qM9wm0PW-EMA-Oscilator-Azzrael/

// (EMA - close) + Std Dev + Factor = detecting oversell/overbuy
// Long only!
// Pyramiding - sometimes, depends on ...
// There 2 enter strategies in one script 
// 1 - Classic, buy on entering to OverSell zone (more profitable ~> 70%)
// 2 - Crazy, buy on entering to OverBuy zone (catching trend and pyramiding, more net profit)
// Exit - crossing zero of (EMA - close)

//@version=5
strategy("STR:EMA Oscilator [Azzrael]", overlay=false, 
 margin_long=100, 
 margin_short=100, 
 currency=currency.USD,
 default_qty_type=strategy.percent_of_equity,
 default_qty_value=30,
 pyramiding=3)

entry_name="Buy"

ema_length = input.int(200, "Period", minval=2, step=10)
limit = input.float(1.7, "Factor", minval=1, step=0.1, maxval=10)
dno = input.string(defval="Buy on enter to OverSell", title="Model", options=["Buy on enter to OverSell", "Buy on enter to OverBuy"]) == "Buy on enter to OverSell"

v = close - ta.ema(close, ema_length)
dev = ta.stdev(v, ema_length)
k = dno ? -1 : 1
dev_limit = k*dev*limit

cond_long = dno ? ta.crossunder(v, dev_limit) : ta.crossover(v, dev_limit)
cond_close = ta.cross(v, 0) 

// dev visualization
sig_col = (dno and v <= dev_limit) or (not dno and v >= dev_limit) ? color.green : color.new(color.blue, 80)
plot(dev_limit, color=color.green)
plot(k*dev, color=color.new(color.blue, 60))
plot(v, color=sig_col )
hline(0)

// Make love not war
strategy.entry(entry_name, strategy.long, when=cond_long)
strategy.close(entry_name, when=cond_close)