Esta estratégia baseia-se em indicadores de impulso combinados com médias móveis para acompanhar as tendências do mercado.
Calcular a dinâmica do preço como: (Preço atual - Preço N períodos atrás) / Preço N períodos atrás
Calcular a média móvel da metade do preço durante N períodos
Normalize o valor do momento para a faixa de 0-1
Quando o momento normalizado é maior que 0,5 e o preço está acima da média móvel, vá longo
Quando o momento normalizado é inferior a 0,5 e o preço está abaixo da média móvel, vá curto
Usar um mecanismo de stop loss móvel com níveis de stop loss adequados
A estratégia é baseada em um sistema de negociação baseado em valores de câmbio, onde o preço se move persistentemente em uma direção, gerando grandes valores de impulso.
Esta estratégia tem as seguintes vantagens:
Segue as tendências do mercado, com grandes ganhos potenciais
O Momentum é sensível às alterações de preços e responde rapidamente às tendências
As médias móveis filtram o ruído aleatório e combinam bem com o momento
O mecanismo de stop loss limita as perdas em operações individuais
Lógica simples e clara, fácil de implementar e backtest
Os parâmetros flexíveis podem adaptar-se a diferentes períodos e regimes de mercado
No geral, esta é uma ótima estratégia para mercados de tendências.
Apesar das vantagens, é necessário ter em conta alguns riscos:
Risco de ruptura em tendências de alta quando o preço reverte após a ruptura
Risco de reversão de tendências de baixa quando o preço rebota após uma queda
Whipsaw sinaliza quando o preço oscila em torno da média móvel
Sinais errados se os parâmetros não estiverem corretamente definidos
Desempenho inferior nos mercados turbulentos
Precisa-se de uma parada e de um movimento rigorosos para evitar uma saída prematura
Para enfrentar esses riscos, a estratégia de stop loss precisa de otimização, filtrar sinais desnecessários com parâmetros soltos, ajustar parâmetros para diferentes períodos e controlar o dimensionamento da posição.
Aqui estão algumas maneiras de otimizar ainda mais a estratégia:
Teste diferentes combinações de parâmetros para melhores resultados do backtest
Incorporar as regras do Turtle Trading de saída a 2N perdas e 1N lucros
Otimizar o stop loss com indicadores de volatilidade para o stop loss adaptativo
Adicionar regras de dimensionamento de posições baseadas em drawdown, tempo, etc.
Teste diferentes métodos de cálculo de momento como o momento médio móvel exponencial
Adicionar filtros de padrão de velas para sinais mais robustos
Utilize o aprendizado de máquina para otimização de parâmetros, seleção de recursos, etc.
Incorporar algumas contribuições humanas discricionárias em pontos-chave
Com essas melhorias, a estratégia pode alcançar melhor estabilidade, adaptabilidade e lucratividade.
A estratégia de rastreamento de momento é uma abordagem simples e prática de tendência. Ela pode capturar de forma ágil as tendências do mercado e lucrar com bolhas e crashes. Mas os riscos de ajustamento da curva precisam ser gerenciados com controles de risco disciplinados para manter a robustez. Com ajuste de parâmetros e extensões de funcionalidade, a estratégia pode gerar lucros constantes em mais regimes de mercado.
/*backtest start: 2023-11-02 00:00:00 end: 2023-11-09 00:00:00 period: 15m basePeriod: 5m 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)