Estratégia de acompanhamento de tendência de Golden Cross e Death Cross de Double EMA


Data de criação: 2024-02-29 11:45:42 última modificação: 2024-02-29 11:45:42
cópia: 0 Cliques: 644
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendência de Golden Cross e Death Cross de Double EMA

Visão geral

A estratégia de acompanhamento de tendências de duplo EMA é uma estratégia de negociação quantitativa que usa indicadores duplos EMA para determinar a direção da tendência de preços. A estratégia determina a tendência de preços através da computação de dois conjuntos de diferentes parâmetros de indicadores EMA, combinando sinais de golden fork e dead fork.

Princípio da estratégia

O indicador central da estratégia são dois conjuntos de EMAs, compostos por um conjunto de EMA1 de períodos mais longos e um conjunto de EMA2 de períodos mais curtos. O EMA1 tem um parâmetro de 21 e o EMA2 tem um parâmetro de 10. A estratégia calcula os dois conjuntos de EMAs com um período de referência de 4 horas.

Quando o período mais curto de EMA2 atravessa o período mais longo de EMA1, gera um sinal de compra. Isso significa que a tendência de curto prazo do preço se fortalece e começa a entrar em uma tendência ascendente. Quando o período mais curto de EMA2 atravessa o período mais longo de EMA1, gera um sinal de venda. Isso significa que a tendência de curto prazo do preço é interrompida e começa a entrar em uma tendência descendente.

Para filtrar os sinais de erro, a estratégia define dois conjuntos de indicadores de Forex. Somente quando os dois conjuntos de indicadores emitem sinais ao mesmo tempo, a operação de compra e venda correspondente é acionada. Isso pode reduzir efetivamente os erros de negociação causados pela oscilação de preços.

Análise de vantagens

  • Usando a estrutura de dupla EMA, pode-se efetivamente capturar as mudanças nas tendências de preços de curto e médio prazo, permitindo o julgamento de tendências.
  • A adição de filtros para dois conjuntos de indicadores de Forex pode reduzir os sinais de erro e evitar transações desnecessárias causadas pela oscilação de preços.
  • O indicador é calculado em quatro níveis horários, para lidar com a alta frequência de flutuações de preços.
  • A estrutura da estratégia é simples, clara e fácil de entender, adequada para aplicações de transações quantitativas.

Análise de Riscos

  • A estrutura de dupla EMA tem uma fraca eficácia de julgamento sobre o balanço. Se o balanço for longo, gerará um sinal errado.
  • O indicador de nível de 4 horas não é suficientemente sensível à reação a eventos de emergência. Uma notícia de emergência importante pode causar um grande impacto em 4 horas e não pode controlar o risco de forma eficaz.
  • A estratégia baseia-se apenas em indicadores técnicos, sem a combinação de informações fundamentais. Se houver uma mudança significativa nos fundamentos da empresa, os indicadores técnicos podem ser invalidados.

Estes riscos podem ser controlados através das seguintes medidas:

  1. Aumentar os indicadores EMA para mais períodos de tempo, criando um portfólio de modelos.
  2. A análise de conteúdo e emoção, combinada com a análise de conteúdo e emoção, pode ser usada para avaliar surpresas significativas e ajustar posições de forma dinâmica.
  3. Parâmetros de ajuste dinâmico associados a mudanças no ambiente econômico, políticas e fundamentos da empresa.

Direção de otimização

A estratégia ainda tem espaço para ser melhorada:

  1. Aumentar o portfólio de modelos. Pode-se criar mais combinações de diferentes parâmetros de indicadores, aumentando a estabilidade da estratégia.

  2. Aumentar o mecanismo de suspensão. Definir um ponto de suspensão razoável para controlar efetivamente a perda individual.

  3. Otimização de parâmetros dinâmicos. Os parâmetros do EMA podem ser automaticamente otimizados de acordo com diferentes condições de mercado.

  4. Combinando técnicas de aprendizagem de máquina. Usando o Tensorflow e outros frameworks, os modelos de treinamento de classificação de tendências de preços de previsão em tempo real.

Resumir

A estratégia de seguimento de tendências de duplo EMA é uma estratégia de negociação de tendências simples e práticas. Ela usa o indicador duplo EMA para determinar tendências de curto prazo nos preços, para capturar oportunidades de comportamento direcional. Ao mesmo tempo, a combinação de dois indicadores de filtragem de duplo EMA pode reduzir a transação de erro.

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

//@version=3


/// Component Code Startt
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

strategy(title="Ema cross strat", overlay=true)
margin = input(true, title="Margin?")
Margin = margin  ? margin : false
resCustom = input(title="EMA Timeframe", defval="240" )
source = close,
len2 = input(21, minval=1, title="EMA1")
len3 = input(10, minval=1, title="EMA2")
ema2 = request.security(syminfo.tickerid,resCustom,ema(source,len2), lookahead=barmerge.lookahead_off)
ema3 = request.security(syminfo.tickerid,resCustom,ema(source,len3), lookahead=barmerge.lookahead_off)


mylong = crossover(ema3, ema2)
myshort = crossunder(ema3,ema2)

last_long = na
last_short = na
last_long := mylong ? time : nz(last_long[1])
last_short := myshort ? time : nz(last_short[1])

in_long = last_long > last_short ? 2 : 0
in_short = last_short > last_long ? 2 : 0

mylong2 = crossover(ema3, ema2)
myshort2 = crossunder(ema3, ema2)

last_long2 = na
last_short2 = na
last_long2 := mylong2 ? time : nz(last_long2[1])
last_short2 := myshort2 ? time : nz(last_short2[1])

in_long2 = last_long2 > last_short2 ? 0 : 0
in_short2 = last_short2 > last_long2 ? 0 : 0

condlongx =   in_long + in_long2
condlong = crossover(condlongx, 1.9)
condlongclose = crossunder(condlongx, 1.9)

condshortx =  in_short + in_short2
condshort = crossover(condshortx, 1.9)
condshortclose = crossover(condshortx, 1.9)




if crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, comment="Long")

if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size > 0    
    strategy.close("Long",when = not Margin)
    
if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, comment="Short", when = Margin)