DMI와 이동 평균 거래 전략을 결합하는 방법

저자:차오장, 날짜: 2023-09-28 12:39:44
태그:

전반적인 설명

이 전략은 방향 이동 지표 (DMI) 와 이동 평균을 결합하여 트렌드 방향을 파악하고 거래 신호를 생성합니다. DMI가 가격이 트렌드 상태에 있음을 표시하고 이동 평균이 트렌드 방향을 확인 할 때 구매 및 판매 신호를 생성합니다.

전략 논리

이 전략은 두 가지 주요 지표에 기반합니다.

  1. DMI+와 DMI-를 포함한 DMI-는 트렌드의 존재와 방향을 식별하는 데 사용됩니다. DMI+가 DMI-보다 높을 때 상승 추세가 나타납니다. DMI-가 DMI+보다 높을 때 하락 추세가 나타납니다.

  2. 보통 15~50일로 설정된 이동 평균은 가격 트렌드 방향을 결정하는 데 사용됩니다. 가격이 이동 평균보다 높을 때 상승 추세 (하락 추세) 가 표시됩니다.

이 전략은 먼저 DMI+, DMI- 및 이동 평균을 계산합니다. DMI가 트렌드 상태를 표시하고 이동 평균이 방향을 확인하면 거래 신호가 생성됩니다. 구체적으로:

  • DMI+가 DMI-를 넘고 가격이 MA를 넘으면, 긴 거래가 됩니다.

  • DMI가 DMI+를 넘어서고 가격이 MA를 넘어서면, 단축한다.

리버스 입력 옵션도 포함되어 있습니다. 활성화되면 긴 신호와 짧은 신호가 반전됩니다.

이점 분석

DMI와 같은 트렌드를 따르는 지표와 이동 평균과 같은 트렌드 지표를 결합하면 두 가지의 강점을 활용하여 신호 신뢰성을 향상시킬 수 있습니다.

DMI의 장점은 신흥 트렌드를 빠르게 식별하는 것입니다. 이동 평균은 소음을 필터하고 트렌드 방향을 확인하는 데 도움이됩니다. 둘을 함께 사용하면 트렌드 시장에서 잘못된 신호를 피하면서 더 이른 트렌드 항목을 사용할 수 있습니다.

리버스 옵션은 또한 트렌드와 함께 또는 트렌드 반대로 거래할 수 있는 유연성을 더합니다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. 트렌드 전환 주위에서 잘못된 신호가 발생하여 손실이 발생할 수 있습니다. 매개 변수를 조정하거나 스톱을 사용하면이 위험을 제어 할 수 있습니다.

  2. 트렌드 형성은 시간이 걸립니다. 한편, 가격 변동은 잘못된 신호를 생성 할 수 있습니다. DMI 및 MA 기간을 연장하면 이러한 소음을 필터링 할 수 있습니다.

  3. 리버스 트레이딩은 불리한 움직임에서 더 큰 손실 위험을 가지고 있습니다. 리버스 옵션에서는 손실 규모가 제한되어야하며 수익을 잠금하기 위해 트레일링 스톱을 사용해야합니다.

  4. 매개 변수는 다른 제품과 시간 프레임에 대해 다시 최적화해야합니다. 매개 변수를 직접 복사하는 것은 잘 작동하지 않을 수 있습니다.

최적화 방향

이 전략에 대한 가능한 최적화는 다음과 같습니다.

  1. 트렌드 전환에 가장 적합한 것을 찾기 위해 다른 이동 평균 기간을 테스트합니다.

  2. 트렌드 내에서 짧은 반전을 필터링하기 위해 DMI 평형 기간을 테스트합니다.

  3. 역방향 옵션의 효과를 평가하고, 역전환 트렌드를 따라 과거 백테스트를 통해 더 나은 접근 방식을 선택합니다.

  4. 트레일링 스톱, 타임 스톱 또는 브레이크아웃 스톱과 같은 스톱 전략을 포함하여 손실 크기를 제한합니다.

  5. 다른 제품과 시간 프레임에 걸쳐 매개 변수 성능을 평가하고 매개 변수를 최적화합니다.

  6. RSI와 같은 필터를 추가하여 특정 극한에서 잘못된 신호를 피합니다.

요약

이 전략은 트렌드를 따르는 DMI와 이동 평균 지표의 강점을 결합하여 트렌드에 일찍 진입하면서 불안정한 시장에서 위프사우를 피합니다. 역 옵션은 또한 유연성을 추가합니다. 파라미터 최적화, 정지 및 추가 필터와 결합하여 안정성의 추가 향상이 발생할 수 있습니다. 그러나 매개 변수는 다른 제품과 시간 틀에 적용 가능성에 대해 다시 테스트해야합니다.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/03/2017
// The related article is copyrighted material from Stocks & Commodities Aug 2009 
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Combining DMI And Moving Average For A EUR/USD Trading System")
Length_MA = input(30, minval=1)
Length_DMI = input(14, minval=1)
reverse = input(false, title="Trade reverse")
xMA = sma(close, Length_MA)
up = change(high)
down = -change(low)
trur = rma(tr, Length_DMI)
xPDI = fixnan(100 * rma(up > down and up > 0 ? up : 0, Length_DMI) / trur)
xNDI = fixnan(100 * rma(down > up and down > 0 ? down : 0, Length_DMI) / trur)
nPDI = xPDI
nNDI = xNDI
nMA = xMA
nPDI_1 = xPDI[1]
nNDI_1 = xNDI[1]
nMA_1 = xMA[1]
bMDILong =iff(nPDI > nNDI and nPDI_1 < nNDI_1, true, 
           iff(nPDI < nNDI and nPDI_1 > nNDI_1, false, false)) 
bMDIShort =  iff(nPDI > nNDI and nPDI_1 < nNDI_1, false, 
              iff(nPDI < nNDI and nPDI_1 > nNDI_1, true, false)) 
bMALong = iff(close > nMA and close[1] < nMA_1, true, 
           iff(close < nMA and close[1] > nMA_1, false, false))
bMAShort = iff(close > nMA and close[1] < nMA_1, false, 
             iff(close < nMA and close[1] > nMA_1, true, false))
pos = iff(bMDILong and bMALong, 1, 
     iff(bMDIShort and bMAShort, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1 )
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nPDI, color=green, title="DMI Plus")
plot(nNDI, color=red, title="DMI Minus")

더 많은