Estratégia de tendência de impulso

Autora:ChaoZhang, Data: 2024-01-29
Tags:

img

Resumo

Esta estratégia incorpora indicadores de momento e rastreamento de tendências para identificar a tendência de alta ou baixa de médio prazo dos preços das ações e tomar posições no estágio inicial das tendências. A estratégia primeiro calcula o indicador de momento de 20 dias do preço, depois o processa em um valor de momento normalizado que varia de 0 a 1. Enquanto isso, a média móvel simples de 20 dias é calculada como um representante da tendência de médio prazo. Quando o momento normalizado é maior que 0,5 e o preço está acima da linha de tendência de médio prazo, vá longo. Quando o momento normalizado é inferior a 0,5 e o preço está abaixo da linha de tendência de médio prazo, vá curto.

Estratégia lógica

O indicador central desta estratégia é a diferença de momento de 20 dias do preço. A diferença de momento é definida como: (hoje s fechar fechar 20 dias atrás) / fechar 20 dias atrás. Esta métrica reflete o aumento ou queda percentual do preço nos últimos 20 dias. Para resolver o problema de faixas de preços muito diferentes entre ações, a diferença de momento bruto é normalizada para uma escala de 0 a 1 pelo seguinte processo: primeiro, encontre os valores máximos e mínimos da diferença de momento nos últimos 100 dias, em seguida, calcule a posição percentual da diferença atual dentro dessa faixa, resultando em uma pontuação de momento normalizada entre 0 e 1. A normalização pode capturar melhor a magnitude do movimento dos preços.

Além disso, a média móvel simples de 20 dias é incluída para determinar a direção da tendência de médio prazo. As médias móveis são ferramentas visualmente intuitivas para análise de tendência.

Ao combinar o indicador de impulso normalizado e o julgamento da tendência de médio prazo, esta estratégia visa capturar estágios significativos de alta e baixa no horizonte de médio prazo. A lógica é: se o impulso normalizado for maior que 0,5, isso significa que o preço está acelerando com uma tendência de alta recentemente. Enquanto isso, se o preço permanecer acima do MA de 20 dias, então o médio prazo ainda é uma tendência de alta. Sob essa condição, vá longo. Pelo contrário, se o impulso normalizado cair abaixo de 0,5, isso sinaliza uma tendência de queda acelerada recentemente. Além disso, com o preço abaixo do MA de 20 dias, o médio prazo é de baixa. Então devemos ficar curtos.

Para as entradas, a estratégia simplesmente entra no mercado ao observar impulso alinhado e sinais de tendência. Para o stop loss, uma parada fixa é definida no preço mais alto + tamanho mínimo de tick para longs e preço mais baixo - tamanho mínimo de tick para shorts, a fim de evitar perdas flutuantes ineficientes.

Análise das vantagens

A maior vantagem desta estratégia é a utilização de dois indicadores para confirmação, que podem efetivamente filtrar algumas entradas falsas em whipssaws. Confiando apenas em sinais de momento tende a produzir sinais falsos ocasionalmente. Adicionando a condição de tendência de médio prazo, a validade dos sinais de momento pode ser verificada para evitar ser preso em mercados variáveis. Da mesma forma, apenas seguindo a tendência pode perder algumas oportunidades no início das acelerações da tendência, enquanto combinar o momento pode capturar tais voltas de forma oportuna.

Outra vantagem é a escolha do período de 20 dias. Este parâmetro de médio prazo ajuda a reduzir a frequência de negociação em comparação com frequências mais rápidas, permitindo que a estratégia capture oscilações maiores no médio e longo prazo.

Análise de riscos

O principal risco desta estratégia está na divergência entre o momentum e a tendência. Desalinhamentos podem levar a sinais incorretos. Por exemplo, durante uma tendência de queda, rebotes de curto prazo podem empurrar o momentum para cima temporariamente. Se for direto longo, pode encontrar perdas.

Além disso, o mecanismo de stop-loss é relativamente simples e pode não conter completamente os riscos.

Orientações de otimização

Aqui estão algumas das principais direções de otimização para esta estratégia:

  1. Introduzir mais indicadores para interrogatório cruzado, tais como MACD, KD, Bandas de Bollinger, etc. Isto pode ajudar a verificar a validade dos sinais de impulso e evitar sinais falsos.

  2. Ajustar dinamicamente os níveis de stop loss, por exemplo através de modelos de preços de ATR ou opções.

  3. Otimizar os períodos de parâmetros. Os parâmetros atuais de 20 dias podem ser testados para melhorias.

  4. Diferenciar o limite de compra e venda da diferença de momento. atualmente 0.5 é usado para ambos. os níveis ideais podem diferir.

  5. Adicionar um filtro de volume de negociação para evitar falsos breakouts com volumes insuficientes.

Conclusão

Esta estratégia combina análise de tendências e indicadores de momentum para capturar oportunidades de negociação decorrentes de mudanças de momentum no médio e longo prazo. Em comparação com sistemas de indicador único, a abordagem de indicadores múltiplos melhora a precisão e a lucratividade. O mecanismo de parada simples facilita o controle rápido do risco.


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Momentum Strategy, rev.2", overlay=true)

//
// Data
//
src = input(close)
lookback = input(20)
cscheme=input(1, title="Bar color scheme", options=[1,2])

//
// Functions
//
momentum(ts, p) => (ts - ts[p]) / ts[p]

normalize(src, len) =>
    hi  = highest(src, len)
    lo  = lowest(src, len)
    res = (src - lo)/(hi - lo)

//
// Main
//
price = close
mid = sma(src, lookback)
mom = normalize(momentum(price, lookback),100)

//
// Bar Colors
//
clr1 = cscheme==1?black: red
clr2 = cscheme==1?white: green
barcolor(close < open ? clr1 : clr2)

//
// Strategy
//
if (mom > .5 and price > mid )
    strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE")
else
    strategy.cancel("MomLE")

if (mom < .5 and price < mid )
    strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE")
else
    strategy.cancel("MomSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Mais.