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.
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.
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.
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.
/*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")