Estratégia de cruzamento de média móvel exponencial dupla

Autora:ChaoZhang, Data: 2023-11-23 17:34:06
Tags:

img

Resumo

A estratégia de cruzamento de média móvel exponencial dupla é uma estratégia típica de seguir tendências.

Estratégia lógica

A estratégia utiliza 3 DEMA simultâneamente com parâmetros diferentes: DEMA ((8), DEMA ((20) e DEMA ((63).

  • O DEMA (8) reage mais rapidamente para captar tendências de curto prazo;

  • A DEMA ((20) move-se ligeiramente mais lentamente para identificar tendências a médio prazo;

  • DEMA ((63) reage mais lentamente para julgar a direcção da tendência a longo prazo.

Quando a linha rápida DEMA ((8) cruza acima da linha média DEMA ((20) e a linha lenta DEMA ((63), indica que o mercado gira de baixo para cima, a posição longa deve ser feita.

Análise das vantagens

Em comparação com a média móvel única, a média móvel exponencial dupla é mais sensível às mudanças de preço e pode detectar pontos de virada das tendências mais cedo.

A combinação de linhas DEM de vários prazos melhora a qualidade dos sinais de negociação e evita falsos breakouts.

Análise de riscos

Os principais riscos desta estratégia são:

  1. Menos sinais cruzados das três linhas podem perder algumas oportunidades de negociação.
  2. As linhas de DEM que atravessam com atraso podem não responder às alterações de preço em tempo útil quando o mercado flutua violentamente.
  3. Não pode lidar com mercados enormes sem tendências de forma eficaz.

Os riscos podem ser ainda melhorados e controlados através da otimização de parâmetros, adição de condições de filtragem, etc.

Orientações de otimização

A estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Otimizar os parâmetros da média móvel para melhor adaptá-los às diferentes características do mercado.
  2. Adicione filtros como volume, volatilidade para evitar sinais errados.
  3. Combine outros indicadores como MACD, KDJ para filtrar sinais falsos.
  4. Adicionar estratégia de stop loss para controlar a perda única.
  5. Otimizar a gestão de posições para que o rácio de lucro seja superior ao rácio de perda.

Resumo

A estratégia de cruzamento DEMA tem uma ideia geral clara. Ao combinar DEMA de vários prazos, pode determinar efetivamente a direção da tendência do mercado e é uma estratégia típica de tendência. A estratégia pode ser melhorada por otimização de parâmetros, adição de filtros, gerenciamento de stop loss etc. de acordo com as necessidades reais, a fim de obter melhores resultados de estratégia.


/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © Noldo

//@version=4
//Quoted by Author HighProfit

//Lead-In
strategy("Double Exponential Moving Average 8-20-63 Strategy", 
         shorttitle="DEMA-8-20-63", 
         overlay=true,
         max_bars_back = 5000,
         initial_capital=100000, 
         max_bars_back = 5000,
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         commission_type=strategy.commission.percent, 
         commission_value=0.1,
         pyramiding = 0)

short = input(8, minval=1)
srcShort = input(ohlc4, title="Source Dema 1")

long = input(20, minval=1)
srcLong = input(low, title="Source Dema 2")

long2 = input(63, minval=1)
srcLong2 = input(close, title="Source Dema 3")
e1 = ema(srcShort, short)
e2 = ema(e1, short)
dema1 = 2 * e1 - e2
plot(dema1, color=color.green, linewidth=2)

e3 = ema(srcLong, long)
e4 = ema(e3, long)
dema2 = 2 * e3 - e4
plot(dema2, color=color.blue, linewidth=2)

e5 = ema(srcLong2, long2)
e6 = ema(e5, long2)
dema3 = 2 * e5 - e6
plot(dema3, color=color.black, linewidth=2)

longC  = dema1 > dema2 and dema1 > dema3
shortC = dema1 < dema2 and dema1 < dema3 

alertlong  = longC and  not longC[1]
alertshort = shortC and not shortC[1]


strategy.entry("Long" , strategy.long , when = longC ,comment="Long")
strategy.entry("Short", strategy.short, when = shortC,comment="Short")

// Alerts 

alertcondition(longC  , title='Long' , message=' Buy  Signal ')
alertcondition(shortC , title='Short', message=' Sell Signal ')



Mais.