최근에 나는 시장의 바닥과 꼭대기를 식별하기 위해 주로 DMI 지표에 기반한 새로운 양적 거래 전략을 개발했습니다. 이 기사는이 거래 전략의 논리, 장점 및 잠재적 위험을 상세히 설명합니다.
평균 방향 움직임 지표 (DMI) 는 1970년대에 시장의 경향과 강도를 측정하기 위해 웰스 와일더 (Welles Wilder) 에 의해 만들어졌다. DMI는 세 가지 라인으로 구성된다.
+DI가 -DI를 넘으면 상승 추세가 강화되는 것을 나타내고 긴 포지션을 고려할 수 있습니다. -DI가 +DI를 넘으면 하락 추세가 강화되는 것을 신호하고 짧은 포지션을 고려할 수 있습니다.
이 전략의 핵심 논리는 다음과 같습니다.
즉, 리버스 DI가 포워드 DI와 크게 다르면, 현재 추세가 반전될 가능성이 있다고 판단될 수 있고, 적절한 리버스 거래 입장을 취할 수 있습니다.
소음을 필터링하기 위해 이 전략은 다음과 같이 설정된 매개 변수와 함께 DI의 이동 평균을 채택합니다.
이동 평균 매개 변수를 조정하면 거래 신호의 빈도를 조정할 수 있습니다.
이 전략은 주로 NIFTY50 인덱스 옵션 거래에 적용됩니다. 다른 제품에도 사용할 수 있습니다. 특히 거래를 위해, 돈 옵션을 선택하고, 손실이 10%를 초과하면 20%로 중지 손실을 설정하고, 손실이 초기 자본의 20%를 초과하면 포지션을 추가하십시오.
간단한 DI 크로스 전략과 비교하면 이 전략은 DI 이동 평균을 사용하여 소음을 필터하고 거래를 줄여 트랜잭션 비용과 미끄러짐을 줄입니다.
순수한 트렌드 다음 전략과 비교하면 이 전략은 트렌드 반전 지점을 더 정확하게 파악하여 턴에 맞춰 적시에 입력할 수 있습니다.
전략 최적화는 성능 조정에 대한 유연한 매개 변수로 간단합니다.
이 전략은 단지 방향 신호만을 제공 합니다. 스톱 로스 및 수익 취득에 대한 구체적인 요구 사항은 개인의 위험 선호도에 따라 설정되어야 합니다.
DMI는 범위 제한 기간 동안 많은 잘못된 신호를 생성 할 수 있습니다. 트렌드가 아닌 시장에서이 전략을 사용하지 마십시오.
DI 크로스오버는 트렌드 반전을 완전히 예측할 수 없습니다. 일부 타이밍 오류가 발생할 수 있습니다. 다른 지표가 거래 신호를 검증하는 데 사용되어야합니다.
이 전략은 트렌드 전환 기회를 효과적으로 식별 할 수 있습니다. 다른 트렌드 다음 전략과 비교하면 역전 인식 능력이 강하다는 장점이 있습니다. 전반적으로이 전략은 유연한 매개 변수 조정을 가지고 있으며 양적 거래 시스템에서 모듈로 사용될 수 있습니다. 잘못된 신호에주의하고 사용할 때 시장 체제를 적절히 평가하십시오.
/*backtest start: 2023-09-05 00:00:00 end: 2023-09-12 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © email_analysts // This code gives indication on the chart to go long based on DMI and exit based on RSI. //Default value has been taken as 14 for DMI+ and 6 for RSI. //@version=5 strategy(title="DMI Strategy", overlay=false) lensig = input.int(11, title="ADX Smoothing", minval=1, maxval=50) len = input.int(11, minval=1, title="DI Length") up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) trur = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / trur) minus = fixnan(100 * ta.rma(minusDM, len) / trur) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig) //plot(adx, color=#F50057, title="ADX") plot(plus, color=color.green, title="+DI") plot(minus, color=color.red, title="-DI") hlineup = hline(40, color=#787B86) hlinelow = hline(10, color=#787B86) buy = plus < 10 and minus > 40 if buy strategy.entry('long', strategy.long) sell = plus > 40 and minus < 10 if sell strategy.entry('short', strategy.short)