ADX 지표에 기초한 트렌드 역전 전략

저자:차오장, 날짜: 2023-09-13 17:02:31
태그:

이 전략은 ADX 지표에 기반한 트렌드 역전 전략 (Trend Reversal Strategy Based on ADX Indicator) 이라고 불립니다. 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())

더 많은