Esta estratégia é conhecida como estratégia de reversão de tendência baseada no indicador ADX. A estratégia usa o indicador ADX para determinar a força da tendência e capturar oportunidades de reversão em casos de sobrevenda.
O ADX representa o índice de tendência médio, refletindo a intensidade da tendência. Quanto maior o ADX, mais forte a tendência. Quando o ADX é maior que 25, considera-se que há uma tendência mais evidente.
O DMI é composto por duas linhas: DI+ e DI−. DI+ indica uma tendência ascendente, enquanto que DI− indica uma tendência descendente.
A lógica de negociação desta estratégia:
Quando o ADX está acima de 45, a tendência é considerada muito forte.
Se o DI+ estiver abaixo do DI-, será considerado um excesso de venda e haverá uma oportunidade de inverter a tendência e fazer mais.
Por outro lado, se o DI- for menor que o DI+, será considerado um estado de sobrecompra e haverá uma oportunidade de reversão, ou seja, um estado de vazio.
O carro parou em tempo, depois de dar a volta.
A vantagem da estratégia é que o ADX é usado para determinar o ponto de reversão de uma tendência forte, e um valor alto de ADX pode filtrar efetivamente os falsos sinais de um mercado de turbulência. No entanto, os parâmetros do ADX precisam ser otimizados, e a estratégia de parada de perda também é importante.
Em geral, os indicadores ADX são melhores para determinar o momento da reversão da tendência forte. Mas os comerciantes ainda precisam prestar atenção a mais fatores, e o ADX é apenas um dos indicadores auxiliares de julgamento.
/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(shorttitle='DMI swings',title='DMI swings', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
[pos_dm, neg_dm, avg_dm] = dmi(14, 14)
//Entry
strategy.entry(id="long", long = true, when = avg_dm > 45 and pos_dm < neg_dm and window())
//Exit
strategy.close("long", when = avg_dm > 45 and pos_dm > neg_dm and window())