이 전략의 이름은 ADX 지표에 기반한 트렌드 반전 전략이다. 이 전략은 ADX 지표를 사용하여 트렌드 강도를 판단하고, 과매매할 때 반전 기회를 잡는다.
ADX는 평균 트렌드 지수를 나타내며 트렌드의 강도를 나타냅니다. ADX 값이 높을수록 트렌드가 강하다는 것을 나타냅니다. ADX가 25보다 크면 더 분명한 트렌드가 있다고 생각합니다.
DMI는 DI+와 DI-의 양선을 포함한다. DI+는 상승세를 나타내고, DI-는 하락세를 나타낸다.
이 전략의 거래 논리:
ADX가 45보다 높을 때, 동향이 매우 강하다고 생각합니다.
이 때 DI+가 DI-보다 낮으면 과매매 상태라고 판단하고, 트렌드 반전의 기회가 생겨 더 많이 한다.
반대로, DI-가 DI+보다 낮다면, 과매매 상태로 판단되며, 반전 기회가 발생하고, 공백이 발생한다.
뒤집은 뒤에서 멈춰야 한다.
이 전략의 장점은 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())