Esta estratégia calcula o indicador de momentum do preço para determinar se a tendência de preço se invertiu, a fim de capturar oportunidades de reversão de preço. Quando a tendência de alta ou baixa do preço diminui, ele indica que o momentum de preço se invertiu. Neste momento, a estratégia abrirá posições longas ou curtas.
A estratégia baseia-se principalmente no cálculo de indicadores de momento. O indicador de momento reflete a velocidade e a força das mudanças de preços. Dois indicadores de momento MOM e MOM1 são calculados na estratégia.
Fórmula de cálculo da MOM:
MOM = Preço de fechamento de hoje - Preço de fechamento N dias atrás
Fórmula de cálculo da MOM1:
MOM1 = MOM hoje - MOM ontem
Julgar se os preços se inverteram de acordo com os valores de MOM e MOM1. Se MOM > 0 e MOM1 < 0, significa que a tendência de alta do preço desacelerou e um sinal de reversão parece ir longo. Se MOM < 0 e MOM1 > 0, significa que a tendência de queda do preço desacelerou e um sinal de reversão parece ir curto.
Principais métodos de redução dos riscos:
Esta estratégia calcula o indicador de impulso do preço para determinar se a tendência do preço se invertiu, indo automaticamente para longo ou curto. Os testes posteriores mostram que esta estratégia funciona sem problemas em geral e capta efetivamente os pontos de reversão do preço.
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Momentum - Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_type = strategy.commission.percent, commission_value = 0.2 ) 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) strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE") else strategy.cancel("MomLE") if (mom0 < 0 and momX < 0) strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE") else strategy.cancel("MomSE") plot(mom0, color = #0000FF, title = "MOM") plot(mom1, color = #00FF00, title = "MOM1", display = display.none) plot(mom2, color = #00FF00, title = "MOM2")