Стратегия отмены тренда на основе индикатора ADX

Автор:Чао Чжан, Дата: 2023-09-13 17:02:31
Тэги:

Эта стратегия называется Стратегия отмены тренда на основе индикатора ADX. Она использует индикатор ADX для измерения силы тренда и улавливает возможности отмены в случае перекупки / перепродажи.

ADX означает средний направленный индекс, отражающий силу тренда. Чем выше значение ADX, тем сильнее тренд. ADX выше 25 предполагает наличие значительной тенденции.

DMI включает линии DI+ и DI-. DI+ выше DI- показывает рост, а DI- выше DI+ - спад.

Логика торговли такова:

  1. Когда ADX выше 45, тенденция считается очень резкой.

  2. Если DI+ ниже DI- то это сигнализирует о перепроданном состоянии и возможности переворота тренда, идя на длинный.

  3. И наоборот, если DI- ниже DI+, это указывает на перекупленные условия и возможность реверсии для короткого.

  4. Принимать прибыль своевременно после отмены.

Преимущество заключается в использовании ADX для определения сильных точек переворота тренда. Высокие значения ADX эффективно фильтруют ложные сигналы от различных рынков. Но параметры ADX нуждаются в оптимизации, и стоп-лосс также важен.

В заключение, ADX умеет измерять сильные тенденции, но трейдеры все еще должны следить за другими факторами, используя ADX как один дополнительный индикатор.


/*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())

Больше