Estratégia de rompimento de superposição de EMA triplo


Data de criação: 2023-12-28 15:56:54 última modificação: 2023-12-28 15:56:54
cópia: 0 Cliques: 680
1
focar em
1621
Seguidores

Estratégia de rompimento de superposição de EMA triplo

Visão geral

A estratégia de ruptura de sobreposição de três EMAs usa o indicador de média móvel de três índices para determinar a direção da tendência do mercado, entrando no ponto de ruptura da tendência. A estratégia combina o sinal de julgamento de qualidade e qualidade da forma K.

Princípio da estratégia

A estratégia baseia-se principalmente nos seguintes princípios:

  1. Usando três linhas de EMA de diferentes períodos (linhas de 200 dias, 50 dias e 20 dias), julgue a tendência principal do mercado, a tendência intermédia e a tendência de curto prazo.

  2. Quando a tendência de curto prazo EMA ((linha de 20 dias) para cima quebra a EMA de médio prazo ((linha de 50 dias) produz um sinal de compra; quando para baixo quebra, produz um sinal de venda.

  3. Combinando a forma da linha K, julgue a confiabilidade do sinal de ruptura. Só se considera uma ruptura confiável quando o preço de fechamento da segunda linha K está acima (<) do preço máximo (<) do preço mínimo do dia anterior.

  4. Estabeleça um ponto de parada para evitar riscos que excedam os limites razoáveis de flutuação.

Vantagens estratégicas

  1. O uso de múltiplos indicadores da EMA para avaliar tendências aumenta a precisão da avaliação.

  2. Combinação de filtros de forma K com sinais enganosos para evitar riscos desnecessários de negociação.

  3. Estabelecer um ponto de parada para o controle de perdas individuais.

Risco estratégico

  1. Em situações de turbulência, os EMAs geram muitos sinais enganosos e não são capazes de avaliar com eficácia a evolução do mercado.

  2. A combinação de um único indicador é simples, o julgamento de situações complexas é fraco.

  3. A empresa pode não ser lucrativa em um mercado de comissões elevadas sem ter em conta os custos de transação.

Otimização de Estratégia

  1. Outros indicadores, como MACD, KDJ, podem ser introduzidos, formando um conjunto de indicadores para melhorar a precisão do julgamento.

  2. Os parâmetros da estratégia podem ser testados e otimizados para diferentes variedades e períodos de tempo, de modo que os parâmetros da estratégia se ajustem melhor às características da variedade.

  3. Pode-se introduzir indicadores de volume de transação para evitar um baixo volume de sinais enganosos.

Resumir

A estratégia de ruptura do EMA triplo é clara e fácil de entender. A estratégia usa o EMA para avaliar as principais tendências do mercado e encontrar o momento certo para entrar quando a tendência se inverte.

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

//@version=5
strategy("GHG RETRACEMENT MODE 1", overlay=true)

entryLevel1 = input(0.5, "ENTRY LEVEL 1")
entryLevel2 = input(0.25, "ENTRY LEVEL 2")
entryLevel3 = input(0.0, "ENTRY LEVEL 3")

stopLevel = input(-0.35, "STOP LEVEL")
tpLevel = input(0.88, "TP LEVEL")
dontUseEma = input(false, "Don't Use EMA")


get_level(level, level100, level0) =>
    level * (level100 - level0) + level0

buySignal = close[2] < open[2] and close[1] > open[1] and close[0] > open[0] and high[0] > open[2] and high[1] < high[2]
sellSignal = close[2] > open[2] and close[1] < open[1] and close[0] < open[0] and low[0] < open[2] and low[1] > low[2]

if buySignal and (close[0] > ta.ema(close, 200) or dontUseEma)
    l = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, high[0], low[2])
    entryPrice2 = get_level(entryLevel2, high[0], low[2])
    entryPrice3 = get_level(entryLevel3, high[0], low[2])
    
    exitPrice = get_level(tpLevel, high[0], low[2])
    stopPrice = get_level(stopLevel, high[0], low[2])
    
    strategy.order("BUY 1", strategy.long, comment="BUY 1", limit=entryPrice1)
    strategy.exit("exit", "BUY 1", limit=high[0], stop=stopPrice)
    strategy.order("BUY 2", strategy.long, comment="BUY 2", limit=entryPrice2)
    strategy.exit("exit", "BUY 2", limit=high[0], stop=stopPrice)

    label.set_text(l, "Buy => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(l, color.green)
    label.set_yloc(l, yloc.belowbar)
    label.set_style(l, label.style_label_up)
    
if sellSignal and (close[0] < ta.ema(close, 200) or dontUseEma)
    a = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, low[0], high[2])
    entryPrice2 = get_level(entryLevel2, low[0], high[2])
    entryPrice3 = get_level(entryLevel3, low[0], high[2])
    
    exitPrice = get_level(tpLevel, low[0], high[2])
    stopPrice = get_level(stopLevel,low[0], high[2])
    
    strategy.order("SELL 1", strategy.short, comment="SELL 1", limit=entryPrice1)
    strategy.exit("exit", "SELL 1", limit=low[0], stop=stopPrice) 
    strategy.order("SELL 2", strategy.short, comment="SELL 2", limit=entryPrice2)
    strategy.exit("exit", "SELL 2", limit=low[0], stop=stopPrice) 

    label.set_text(a,"Sell => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(a, color.red)
    label.set_yloc(a, yloc.abovebar)
    label.set_style(a, label.style_label_down)