Estratégia de negociação cruzada da EMA a curto, médio e longo prazo

Autora:ChaoZhang, Data: 2023-11-24 13:33:21
Tags:

img

Esta estratégia gera sinais de negociação com base em três linhas de média móvel exponencial (EMA) com períodos diferentes: EMA de curto prazo com período de 5 dias, EMA de médio prazo com período de 8 dias e EMA de longo prazo com período de 13 dias.

Estratégia lógica

Esta estratégia julga a tendência do mercado através do cálculo de EMAs de diferentes períodos. A EMA de curto prazo reflete o preço médio dos últimos dias, enquanto as EMAs de médio e longo prazo refletem o preço médio em prazos mais longos. O cruzamento da EMA de curto prazo sobre as EMAs de médio e longo prazo sinaliza uma quebra ascendente do preço, de modo que uma posição longa é tomada. Por outro lado, quando a EMA de curto prazo cruza abaixo dos outros dois, sinaliza uma quebra descendente do preço, de modo que uma posição curta é tomada.

Especificamente, esta estratégia calcula simultaneamente as EMAs de 5 dias, 8 dias e 13 dias. Gerar sinais longos quando a EMA de 5 dias cruza sobre as EMAs de 8 dias e 13 dias; gerar sinais curtos quando a EMA de 5 dias cruza abaixo das outras duas. Depois de longo, a posição é fechada quando a EMA de 5 dias cruza novamente abaixo da EMA de 13 dias. Da mesma forma para a posição curta.

Vantagens da estratégia

  1. A utilização de EMAs de vários períodos evita a falta de pontos-chave de inversão da tendência que podem ocorrer com períodos de EMAs únicos demasiado curtos ou longos
  2. A combinação de três EMA de curto, médio e longo prazo aumenta a fiabilidade dos sinais de negociação
  3. A fixação de preços suavizada através das EMAs filtra algum ruído do mercado e impede entradas desnecessárias

Riscos da Estratégia

  1. Todos os três EMA são indicadores de tendência atrasados, inerentemente contendo alguns atrasos de tempo antes das rupturas reais dos preços, arriscando sinais tardios
  2. As EMA não conseguem distinguir eficazmente as tendências reais das correcções de curto prazo, o que pode produzir falsos sinais
  3. Os períodos de EMA fixos não podem adaptar-se a regimes de mercado variados em diferentes prazos

Ideias de melhoria:

  1. Adicionar outros indicadores como o MACD para melhor medir a tendência real, evitando falsos sinais
  2. Ajuste flexível dos parâmetros dos períodos da EMA para diferentes produtos e ambientes de mercado
  3. Adicionar stop loss móvel para bloquear os lucros e controlar os riscos

Resumo

Este é um sistema de breakout típico que julga as inversões de tendência comparando crossovers entre EMAs de curto, médio e longo período. Sua simplicidade em sinalização facilita a facilidade de negociação, mas também sofre de atraso inerente às EMAs e incapacidade de filtrar tendências reais de correções temporárias.


/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-23 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// 
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gregoirejohnb
// @It is modified by ttsaadet.
// Moving average crossover systems measure drift in the market. They are great strategies for time-limited people.
// So, why don't more people use them?
// 

//
strategy(title="EMA Crossover Strategy", shorttitle="EMA-5-8-13 COS by TTS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.TRY,commission_type=strategy.commission.percent,commission_value=0.04, process_orders_on_close = true, initial_capital = 100000)

// === GENERAL INPUTS ===
//strategy start date
start_year = input(defval=2020, title="Backtest Start Year")

// === LOGIC ===
short_period = input(type=input.integer,defval=5,minval=1,title="Length")
mid_period = input(type=input.integer,defval=8,minval=1,title="Length")
long_period = input(type=input.integer,defval=13,minval=1,title="Length")

longOnly = input(type=input.bool,defval=false,title="Long Only")
shortEma = ema(hl2,short_period)
midEma = ema(hl2,mid_period)
longEma = ema(hl2,long_period)

plot(shortEma,linewidth=2,color=color.red,title="Fast")
plot(midEma,linewidth=2,color=color.orange,title="Fast")
plot(longEma,linewidth=2,color=color.blue,title="Slow")

longEntry = ((shortEma > midEma) and crossover(shortEma,longEma)) or ((shortEma > longEma) and crossover(shortEma,midEma))
shortEntry =((shortEma < midEma) and crossunder(shortEma,longEma)) or ((shortEma < longEma) and crossunder(shortEma,midEma))

plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle")
plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle")
plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign")

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() =>
    longEntry 
exitLong() =>
    crossunder(shortEma,longEma)

strategy.entry(id="Long", long=strategy.long, when=enterLong())
strategy.close(id="Long", when=exitLong())


// === STRATEGY - SHORT POSITION EXECUTION ===

enterShort() =>
    not longOnly and shortEntry  
exitShort() =>
    crossover(shortEma,longEma)

strategy.entry(id="Short", long=strategy.short, when=enterShort())
strategy.close(id="Short", when=exitShort())

Mais.