
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.
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.
É uma estratégia de acompanhamento de tendências mais simples, com as seguintes vantagens:
A estratégia também apresenta alguns riscos:
A estratégia pode ser melhorada em vários aspectos:
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.
/*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)