Tendência da EMA tripla seguindo a estratégia

Autora:ChaoZhang, Data: 2023-12-20 15:00:44
Tags:

img

Resumo

A estratégia de seguimento de tendências da EMA tripla é uma estratégia muito adequada para seguir as tendências do mercado.

A vantagem desta estratégia é que pode reduzir sinais falsos e garantir força de tendência suficiente antes de entrar em uma posição. Ao mesmo tempo, possui um sistema de stop loss adaptativo que pode trail stop com base na volatilidade do mercado, alcançando assim uma melhor gestão de risco.

Estratégia lógica

Lógico de entrada

A estratégia usa EMAs de 7-, 14 e 21 períodos como indicadores de sinal de entrada. A lógica específica é que quando o preço cruza acima de todas as três EMAs ao mesmo tempo, vá longo; quando o preço cruza abaixo de todas as três EMAs ao mesmo tempo, vá curto.

Esta concepção pode reduzir os falsos sinais e garantir que a tendência seja suficientemente clara antes de entrar.

Método de Stop Loss

A estratégia usa um sistema de stop loss adaptativo baseado em ATR e drawdown máximo. Ele calcula a volatilidade do preço em tempo real e define linhas de stop loss em conformidade. Especificamente, ele calcula um certo múltiplo de ATR como a zona tampão de stop loss.

Durante uma tendência de alta, a linha de stop loss se moverá para cima com novas altas, com bom efeito de perseguição. Quando o preço cai de volta ao ponto mais baixo da zona de amortização, a linha de stop loss será acionada para fechar posições. Isso pode controlar o risco de stop loss de acordo com as condições do mercado.

Método de obtenção de lucros

A estratégia usa um método de lucro porcentual fixo. Após a abertura de uma posição, uma linha de lucro será definida em uma certa porcentagem acima do preço de entrada. Quando o preço sobe para a linha de lucro, a posição será fechada para obter lucros.

O benefício deste percentual fixo de lucro é que permite predefinir um nível de lucro alvo que satisfaça a saída uma vez alcançada.

Análise das vantagens

  • Pode reduzir sinais falsos e garantir uma tendência relativamente forte dos preços após a abertura de posições
  • Usar a sobreposição dos períodos de EMA para captar rapidamente as tendências do mercado
  • Sistema de stop loss adaptativo pode controlar o risco com base na volatilidade
  • Percentagem fixa de lucro obtido satisfaz o objetivo de lucro antes da saída
  • Método de stop loss baseado no ATR e no drawdown máximo pode ser otimizado com base nas condições de mercado
  • Fácil de ajustar estilo de estratégia alterando parâmetros

Análise de riscos

  • Em mercados variados, as EMAs podem produzir cruzes frequentes, ficando facilmente presas
  • Os lucros fixos não podem ser ajustados com base nas condições de mercado, podem perder lucros maiores ou aumentar as perdas
  • Após parar de rastrear o stop loss, incapaz de rastrear novas altas novamente, quedas de preço podem aumentar as perdas
  • Em tendências explosivas unilaterais, a percentagem fixa de lucro pode ser demasiado conservadora, não conseguindo obter lucros suficientes

Pode evitar a abertura cega de posições em mercados voláteis, combinando com indicadores de julgamento de tendência; também pode usar métodos de movimentação de lucro ou proporção de lucro para tornar os métodos de lucro mais flexíveis.

Orientações de otimização

A estratégia pode também ser otimizada nos seguintes aspectos:

  1. Use mais indicadores para determinar o momento de entrada, como MACD, KD, etc., para evitar ficar preso em mercados voláteis.

  2. Tente mudar o método de lucro, ou a proporção de lucro, para tornar os métodos de lucro mais flexíveis.

  3. Adicionar um mecanismo descendente ao método de stop loss, permitindo rastrear pontos mais baixos novamente quando o preço cai novamente, controlando assim o risco.

  4. Ajustar os parâmetros do período EMA com base nas características dos diferentes produtos, otimizando o julgamento da tendência.

  5. Adicionar módulo de dimensionamento de posição, pode ajustar por tamanho do comércio com base na relação de utilização de fundos.

Conclusão

A Triple EMA Trend Following Strategy é uma estratégia muito prática de seguir tendências. Tem fortes capacidades de julgamento de tendências, além de ter mecanismos adaptativos de take profit e stop loss que podem gerenciar automaticamente ordens.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Three EMAs Trend-following Strategy',title='Three EMAs Trend-following Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)


//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

ema_1 = ema(close, input(7))
ema_2 = ema(close, input(12))
ema_3 = ema(close, input(21))

Take_profit= ((input (4))/100)

longTakeProfit = strategy.position_avg_price * (1 + Take_profit)


length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(3.0, "Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
    var max     = src
    var min     = src
    var uptrend = true
    var stop    = 0.0
    atrM        = nz(atr(atrlen) * atrfactor, tr)
    max         := max(max, src)
    min         := min(min, src)
    stop        := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
    uptrend     := src - stop >= 0.0
    if uptrend != nz(uptrend[1], true)
        max    := src
        min    := src
        stop   := uptrend ? max - atrM : min + atrM
    [stop, uptrend]

[vStop, uptrend] = volStop(src, length, factor)

go_long = crossover(close, ema_1) and crossover(close, ema_2) and crossover(close, ema_3)



closeLong = close > longTakeProfit or crossunder(close, vStop)



//Entry 
strategy.entry(id="long", long = true, when = go_long and window())



//Exit
strategy.close("long", when = closeLong and window())

plot(vStop,"Vstop", color.black, linewidth=2)
plot(ema_1,"EMA Short", color.green, linewidth=1)
plot(ema_2,"EMA Mid", color.purple, linewidth=1)
plot(ema_3,"EMA Long", color.red, linewidth=1)



Mais.