Estratégia de acompanhamento de tendências usando o indicador de momentum de preço


Data de criação: 2024-01-17 13:58:19 última modificação: 2024-01-17 13:58:19
cópia: 1 Cliques: 540
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências usando o indicador de momentum de preço

Visão geral

A estratégia é uma estratégia de acompanhamento de tendências que utiliza um indicador de dinâmica de preços. Ela julga a tendência do mercado calculando as mudanças no preço de fechamento em um determinado período e fazendo a operação de compra ou venda correspondente quando os preços apresentam uma tendência de alta ou queda contínua.

Princípio da estratégia

O indicador central da estratégia é o impulso do preço. A fórmula para o impulso é:

momentum = close - close[n]

Onde n representa a duração do ciclo de momentum. Quando o momentum é > 0, o preço está subindo no ciclo atual. Quando o momentum é < 0, o preço está caindo no ciclo atual.

A estratégia primeiro define um parâmetro de confirmBars, que representa a necessidade de julgar a tendência de algumas linhas K para executar uma transação. No intervalo de retracção, se o momento > 0 continuar a linha de confirmBars, uma entrada adicional é feita; se o momento < 0 continuar a linha de confirmBars, uma entrada em branco é feita.

A chave para a estratégia de determinar a tendência está na estatística do número de linhas K de momentum consecutivo maior ou menor que 0, feito através das variáveis bcount e scount. Eles são + 1 quando as condições correspondentes são satisfeitas e 0 quando não são satisfeitas. Quando a contagem atinge confirmBars, execute a correspondente negociação de mais ou menos.

Vantagens estratégicas

É uma estratégia de acompanhamento de tendências mais simples, com as seguintes vantagens:

  1. A lógica é simples e a implementação é fácil de entender.
  2. Indicadores de dinâmica são sensíveis a mudanças de preço e podem capturar tendências rapidamente
  3. Parâmetros configuráveis para ajustar a sensibilidade de julgamento
  4. Pode ser usado em vários ambientes de mercado

Risco estratégico

A estratégia também apresenta alguns riscos:

  1. Susceptível a múltiplos choques e excessos
  2. Parâmetros necessários para uma configuração razoável, especialmente oscilações de filtragem de barras de confirmação
  3. Incapacidade de responder eficazmente aos impactos de surpresas de mercado
  4. A detecção pode ser diferente do disco rígido e requer revisão de dados e otimização de parâmetros adicionais

Direção de otimização da estratégia

A estratégia pode ser melhorada em vários aspectos:

  1. Aumentar a lógica de stop loss e controlar o risco de transação única
  2. Aumentar os filtros de ruptura para evitar falsos sinais causados pela oscilação dos preços
  3. Parâmetros como as barras de confirmação adaptadas a diferentes variedades e condições de mercado
  4. Aumentar o julgamento por múltiplos fatores, em combinação com outros indicadores de admissão
  5. Adaptação de parâmetros e regras de filtragem usando métodos de aprendizagem de máquina

Resumir

Em geral, a estratégia de ruptura de dinâmica é uma estratégia de acompanhamento de tendências simples e práticas, adequada para uma das estratégias de entrada para a quantificação de transações. No processo de aplicação, é necessário prestar atenção ao controle da frequência de transações, para evitar transações excessivas e custos de transação muito altos.

Código-fonte da estratégia
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Momentum Strategy [TS Trader]", overlay=true)

confirmBars = input(1)
momentumLength = input(14, title="Momentum Length")

price = close
momentum = close - close[momentumLength]

// === INPUT BACKTEST RANGE ===
fromYear = input.int(2019, title="Backtest Start Year")
fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)
toYear = input.int(2023, title="Backtest End Year")
toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)

startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00)
endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59)

inBacktestRange = true

// === STRATEGY LOGIC ===
bcond = momentum > 0
bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
    strategy.entry("Buy", strategy.long, comment="Long")

scond = momentum < 0
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0
if (scount == confirmBars and inBacktestRange)
    strategy.entry("Sell", strategy.short, comment="Short")

// Plotting Momentum
plot(momentum, title="Momentum", color=color.purple)