Tendência do oscilador da EMA na sequência da estratégia

Autora:ChaoZhang, Data: 2023-11-06 09:53:27
Tags:

img

Resumo

Esta estratégia utiliza o indicador EMA para identificar tendências de preços e combina desvio padrão para calcular sinais de compra e venda para tendência após a negociação.

Estratégia lógica

A estratégia primeiro calcula a diferença v entre o preço de fechamento e a EMA do comprimento ema_length. Em seguida, calcula o desvio padrão dev de v em períodos de ema_length. Em seguida, determina o coeficiente de direção k, com k=1 para longo e k=-1 para curto. O limite de dev_limit do sinal de compra é calculado por k * dev * limite do fator. Quando v cruza o dev_limit, um sinal de compra é acionado. O sinal de saída é quando v cruza 0.

A estratégia prevê dois modos:

  1. Comprar curto, ir longo quando v cruza abaixo de dev_limit negativo, para seguir uma tendência de queda.

  2. Compre longo, vá longo quando v cruza acima do limite de dev_positivo, para seguir uma tendência de alta.

Em resumo, a estratégia calcula dinamicamente o desvio padrão da diferença entre o preço e a EMA para definir o limiar e seguir as tendências. O fator controla a sensibilidade dos sinais de compra. ema_length determina o período EMA. O modo de compra controla a direção da ordem.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. A EMA identifica bem a direcção da tendência através da suavização dos preços.

  2. O limiar dinâmico baseado no desvio-padrão adapta-se melhor do que os limiares fixos.

  3. Dois modos de compra permitem seguir uma tendência ascendente ou descendente.

  4. O fator fornece flexibilidade no ajuste da sensibilidade de compra. ema_length permite a otimização do período EMA.

  5. A lógica é simples e fácil de entender e modificar.

  6. O dimensionamento da posição pode ser configurado de forma flexível para seguir uma tendência agressiva.

Análise de riscos

Os riscos da estratégia:

  1. A EMA tem atraso e pode perder pontos de virada da tendência.

  2. A configuração inadequada leva a sensibilidade insuficiente ou hipersensibilidade.

  3. Seguindo uma tendência, corre-se o risco de grandes perdas quando a tendência se inverte.

  4. Os comutadores long/short frequentes aumentam a frequência de negociação.

  5. Os sinais frequentes em mercados variados aumentam os custos.

Para abordar os riscos, considere a adição de stop loss, otimização de parâmetros, adição de filtros para evitar excesso de negociação, etc.

Orientações de otimização

A estratégia pode ser otimizada por:

  1. Testando diferentes períodos de EMA para encontrar o comprimento ideal.

  2. Teste de diferentes valores de fatores para encontrar a melhor sensibilidade.

  3. Otimizar estratégias de dimensionamento de posição, por exemplo, pirâmide.

  4. Adicionar filtros para evitar trocas erradas em mercados agitados.

  5. Incorporar o stop loss para controlar a perda de uma única transação.

  6. Otimizar os parâmetros separadamente para os dois modos de compra.

  7. Pesquisar sinais de inversão de tendência para parar a tendência.

Conclusão

A estratégia identifica tendências com EMA e gera ordens de limiar dinâmicas para seguir tendências. A lógica é simples e clara. O dimensionamento de posição pode ser agressivo para a busca de tendências. Tem riscos que precisam ser abordados através da otimização de parâmetros e stop loss.


/*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)


Mais.