Com base na análise da estratégia EMA dupla


Data de criação: 2024-02-28 18:07:59 última modificação: 2024-02-28 18:07:59
cópia: 1 Cliques: 550
1
focar em
1617
Seguidores

Com base na análise da estratégia EMA dupla

Visão geral

A estratégia de EMA dupla é uma estratégia de acompanhamento de tendências que identifica a direção da tendência dos preços através da computação de EMAs de diferentes períodos, para decidir sobre a posição ou a posição baixa. A estratégia é simples e prática e se aplica a mercados com forte tendência.

Princípio da estratégia

A estratégia baseia-se principalmente em dois indicadores EMA, um com um curto período de 9 dias EMA e outro com um período mais longo de 21 dias EMA.

Quando a curta EMA atravessa a EMA de longo prazo, é considerado que o preço entrou em uma tendência ascendente, a estratégia vai abrir mais pedidos neste momento e acompanhar a subida do preço. Quando a curta EMA atravessa a EMA de longo prazo, é considerado que o preço entrou em uma tendência descendente, a estratégia vai abrir uma ordem em branco neste momento e acompanhar a queda do preço.

Os EMAs são capazes de filtrar eficazmente o ruído dos dados de preços e identificar as principais direções das tendências de preços. Portanto, a estratégia usa os EMAs duplos como base para a construção de posições de paz com a expectativa de capturar um ciclo de tendências de preços mais longo.

Vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. A estratégia é simples, clara, fácil de entender e de implementar.
  2. A capacidade de identificar as tendências de preços e de traçar as tendências de negociação.
  3. Filtrar o ruído com o indicador EMA para evitar a interferência de movimentos de preços de curto prazo.
  4. Parâmetros EMA configuráveis para ajustar a sensibilidade da estratégia.

Risco estratégico

A estratégia também apresenta alguns riscos:

  1. A característica de atraso do indicador EMA pode levar a um aumento dos prejuízos na reversão da tendência.
  2. A configuração errada do parâmetro EMA pode aumentar a taxa de falso sinal.
  3. Esta estratégia é mais adequada para mercados de forte tendência, que são vulneráveis ao encerramento.

Otimização de Estratégia

A estratégia pode ser otimizada em:

  1. Combinação com outros indicadores para determinar a reversão da tendência e reduzir os prejuízos. Por exemplo, MACD, KDJ, etc.
  2. Adicionando a lógica de stop loss, uma boa estratégia de stop loss pode reduzir significativamente a retirada máxima da estratégia.
  3. Otimizar os parâmetros da EMA para melhor adaptá-los às características de preços de diferentes variedades.
  4. Otimização automática dos parâmetros do EMA em combinação com algoritmos de aprendizado de máquina.

Resumir

A estratégia de duplo EMA é, em geral, uma estratégia de acompanhamento de tendências muito prática. É simples de operar, fácil de entender e tem um excelente desempenho em mercados de forte tendência.

Código-fonte da estratégia
/*backtest
start: 2023-02-21 00:00:00
end: 2024-02-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// This can only draw so many lines. Use bar replay to go back further
strategy("Strategy Lines", shorttitle="Strategy Lines", overlay=true, max_lines_count=500)

//###########################################################################################################################################
// Replace your strategy here
//###########################################################################################################################################

shortEMA = ta.ema(close, input(9, title="Short EMA Length"))
longEMA = ta.ema(close, input(21, title="Long EMA Length"))

// Entry conditions for long and short positions
longCondition = ta.crossover(shortEMA, longEMA)
shortCondition = ta.crossunder(shortEMA, longEMA)

//###########################################################################################################################################
// Strategy Lines
//###########################################################################################################################################

var timeLow = bar_index
var line li = na
var openLPrice = 0.0000
var openSPrice = 0.0000

LongWColor = input.color(color.rgb(0,255,0,0),"Long Win Color", group="Strategy Lines")
LongLColor = input.color(color.rgb(0,0,255,0),"Long Loss Color", group="Strategy Lines")
ShortWColor = input.color(color.rgb(255,255,0,0),"Short Win Color", group="Strategy Lines")
ShortLColor = input.color(color.rgb(255,0,0,0),"Short Loss Color", group="Strategy Lines")
WinFontColor = input.color(color.rgb(0,0,0,0),"Win Font Color", group="Strategy Lines")
LossFontColor = input.color(color.rgb(255,255,255,0),"Loss Font Color", group="Strategy Lines")
LinesShowLabel = input(false,"Show Labels?",group = "Strategy Lines")

// // Start new line when we go long
// if strategy.position_size >0
//     line.delete(li)
//     li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close>openLPrice?LongWColor:LongLColor)

// // Start new line when we go short
// if strategy.position_size <0
//     line.delete(li)
//     li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close<openSPrice?ShortWColor:ShortLColor)

// //Delete Lines if we don't have a position open
// if strategy.position_size ==0
//     li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=color.rgb(0,0,0,100))
//     line.delete(li)

if LinesShowLabel
    // Short Label
    if strategy.position_size>=0 and strategy.position_size[1] <0
        label.new(
             timeLow, na, 
             text=str.tostring((openSPrice-close[1])/(syminfo.mintick*10)), 
             color=close[1]<openSPrice?ShortWColor:ShortLColor, 
             textcolor=close[1]<openSPrice?WinFontColor:LossFontColor,
             size=size.small, 
             style=label.style_label_down, yloc=yloc.abovebar)
    // Long Label
    if strategy.position_size<=0 and strategy.position_size[1] >0
        label.new(
             timeLow, na,
             text=str.tostring((close[1]-openLPrice)/(syminfo.mintick*10)), 
             color=close[1]>openLPrice?LongWColor:LongLColor, 
             textcolor=close[1]>openLPrice?WinFontColor:LossFontColor,
             size=size.small, 
             style=label.style_label_down, yloc=yloc.abovebar)

// Open long position and draw line
if (longCondition)
    //strategy.entry("Long", strategy.long)
    // timeLow := bar_index
    // li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close>openLPrice?LongWColor:LongLColor)
    openLPrice := close

// Open short position and draw line
if (shortCondition)
    //strategy.entry("Short", strategy.short)
    // timeLow := bar_index
    // li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close<openSPrice?ShortWColor:ShortLColor)
    openSPrice := close

//###########################################################################################################################################
// Strategy Execution (Replace this as well)
//###########################################################################################################################################

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)