Estratégia de Momentum


Data de criação: 2023-09-26 15:16:56 última modificação: 2023-09-26 15:16:56
cópia: 1 Cliques: 777
1
focar em
1617
Seguidores

Visão geral

A estratégia de dinâmica é uma estratégia de negociação com base na tendência de mudança de preço. A estratégia de negociação com base na tendência de mudança de preço em um determinado período de tempo. A estratégia de negociação com base na tendência de mudança de preço em um determinado período de tempo.

Princípio da estratégia

Esta estratégia determina a dinâmica dos preços através do cálculo da variação do preço de fechamento em um determinado período. Concretamente, é o cálculo da variação do preço de fechamento em relação ao preço de fechamento antes do ciclo N.

Calcule primeiro o primeiro indicador de potência MOM0, com a fórmula:

MOM0 = CLOSE - CLOSE[N]

Destes, o CLOSE representa o preço de fechamento do ciclo atual, o CLOSE[N] representa o preço de fechamento antes do ciclo N. Assim, MOM0>0 representa o aumento do preço de fechamento antes do ciclo N em relação ao ciclo atual e MOM0 representa a queda do preço de fechamento antes do ciclo N em relação ao ciclo atual.

Em seguida, calcula-se o segundo indicador de potência MOM1, com a fórmula:

MOM1 = MOM0 - MOM0[1]

Ou seja, calcular o valor do MOM0 do ciclo atual menos o valor do ciclo anterior. MOM1>0 significa que o MOM0 aumentou, MOM1 significa que o MOM0 caiu.

Ao mesmo tempo, o terceiro indicador de força MOM2 é calculado pela fórmula:

MOM2 = CLOSE - CLOSE[1]

Ou seja, o preço de fechamento do ciclo atual é calculado menos o preço de fechamento do ciclo anterior. MOM2>0 significa que o preço de fechamento aumentou, MOM2 significa que o preço de fechamento caiu.

Quando MOM0>0 e MOM1>0, indica um aumento contínuo da dinâmica, gerando um sinal de compra; quando MOM0 e MOM2, indica uma queda contínua da dinâmica, gerando um sinal de venda.

O código também adicionou a condição de tempo time_cond, que gera um sinal de transação somente dentro do período de tempo de resposta definido. Além disso, verifique novamente se a condição ainda está em vigor antes de colocar o pedido, evitando que o sinal desapareça.

Análise de vantagens

  • A estratégia de dinâmica capta a tendência de mudança de preço, não sendo influenciada pelo preço em si, evitando o risco de perseguir o alto e matar o baixo
  • Utilização de dois indicadores de massa cruzados, que filtram as falsas rupturas, evitando a produção de sinais errados
  • Aumentar o tempo e as condições de verificação para reduzir a invalidez de transações
  • Estratégias simples, fáceis de entender e de implementar
  • Parâmetros flexíveis para diferentes cenários de mercado

Análise de Riscos

  • Indicadores de dinâmica estão atrasados e podem ter perdido o ponto de viragem
  • O cruzamento de dois indicadores aumenta o efeito de filtro, mas também pode perder algumas oportunidades
  • Não é possível avaliar a intensidade e a velocidade com que os preços subiram ou caíram.
  • Parâmetros precisam ser selecionados com cuidado, sendo que a excesso de sensibilidade pode aumentar a frequência de negociação e os custos de deslizamento.
  • Efeito dependente de otimização de parâmetros, os parâmetros de diferentes períodos precisam ser ajustados

Pode-se reduzir o risco através da redução do ciclo de volume, a introdução de um julgamento de tendência, ou a configuração de stop loss. Também pode ser considerado o uso de um indicador de volume de transação para filtragem.

Direção de otimização

  • Tente diferentes métodos de cálculo de momentum, como ROC, RSI, etc.
  • Aumentar o discernimento de tendências e evitar a inversão de turbulências
  • Configurar estratégias de stop loss para controlar perdas individuais
  • Combinação de indicadores de volume de transação para garantir suporte ao volume de transação
  • Adição de algoritmos de aprendizagem de máquina para otimização dinâmica dos parâmetros
  • Estratégias de quadros temporais múltiplos, distinguindo tendências de curto e longo prazo
  • Considere a arbitragem entre mercados e aproveite as relações de preços em diferentes mercados

Resumir

A estratégia de dinâmica pode determinar efetivamente a direção dos pontos quentes do mercado, capturando as oportunidades de aumento e queda dos preços, seguindo a tendência de mudança de preço e não o preço em si. Mas a dinâmica é retardada, a seleção de parâmetros e a otimização do portfólio são essenciais para a eficácia da estratégia.

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

//@version=4
strategy("Momentum Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash, commission_type = strategy.commission.percent, commission_value = 0, calc_on_every_tick = true)

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-02T00:00:00"), title = "Start Date", type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), title = "End Date",type = input.time)
 
time_cond  = true

i_len           =       input(defval = 12,      title = "Length",       minval = 1)
i_src           =       input(defval = close,   title = "Source")
i_percent       =       input(defval = true,    title = "Percent?")
i_mom           =       input(defval = "MOM2",  title = "MOM Choice",   options = ["MOM1", "MOM2"])

momentum(seria, length, percent) =>
	_mom        =       percent ? ( (seria / seria[length]) - 1) * 100 : seria - seria[length]
	_mom

mom0        =       momentum(i_src, i_len, i_percent)
mom1        =       momentum(mom0, 1, i_percent)
mom2        =       momentum(i_src, 1, i_percent)

momX        =       mom1

if i_mom == "MOM2"
    momX    :=     mom2

if (mom0 > 0 and momX > 0 and time_cond)
    strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE")
else
	strategy.cancel("MomLE")
if (mom0 < 0 and momX < 0 and time_cond)
	strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE")
else
	strategy.cancel("MomSE")

plot(mom0, color = #00bcd4, title = "MOM")
plot(mom1, color = #00FF00, title = "MOM1", display = display.none)
plot(mom2, color = #00FF00, title = "MOM2")