이 전략은 트렌드 지표 DMI와 이동 평균을 결합하여 트렌드 방향을 식별하여 구매 및 판매 신호를 발송합니다. DMI가 제안이 트렌드 상태에 들어와 이동 평균이 트렌드 방향을 확인하면 전략은 거래 신호를 발생시킵니다.
이 전략은 크게 두 가지 지표에 기반을 두고 있습니다.
DMI는 DMI+와 DMI-, 트렌드의 존재와 방향을 식별하기 위해 사용된다. DMI+가 DMI-보다 높으면 상승 추세를 나타내고, DMI-가 DMI+보다 높으면 하락 추세를 나타낸다.
이동 평균, 일반적으로 15 ~ 50 일간의 평균을 선택하여 가격 추세 방향을 판단합니다. 가격이 이동 평균보다 높을 때 (내외) 상승 (내외) 추세를 나타냅니다.
전략은 먼저 DMI+, DMI- 및 이동 평균을 계산한다. DMI가 트렌드 상태를 표시하는 동시에 ((DMI+가 DMI- 또는 DMI-가 DMI+보다 높다) 이동 평균이 트렌드 방향을 확인하면 거래 신호가 발생한다. 구체적으로:
이 전략은 동시에 역전 입력 옵션을 추가했다. 역전이 활성화되면, 더하고 공백 신호는 역전된다.
이러한 전략은 트렌드 지표와 트렌드 지표를 결합하여 신호의 신뢰성을 높이고 두 가지 지표의 장점을 활용하여 상호 보완 할 수 있습니다.
DMI의 장점은 트렌드를 빠르게 식별할 수 있는 것이 있다. 이동 평균은 일부 잡음을 필터링하여 트렌드 방향을 확인한다. 이 둘을 결합하여 트렌드가 형성될 때 일찍 현장에 들어갈 수 있으며, 트렌드가 형성되지 않을 때 파동적 흐름을 피할 수 있다.
또한, 이 전략에는 역전 옵션이 추가되어 실제 필요에 따라 우상 또는 역전 거래를 선택할 수 있습니다. 이것은 전략의 유연성을 증가시킵니다.
이 전략에는 다음과 같은 위험들이 있습니다.
트렌드 전환시 잘못된 신호가 발생하여 손실이 발생할 수 있습니다. 이는 파라미터를 조정하거나 위험을 제어하기 위해 스톱을 설정해야합니다.
트렌드 형성에는 시간이 필요하며, 이 기간 동안 전략은 가격 변동에 의해 방해가 될 수 있으며, 잘못된 신호를 발생시킵니다. 이러한 잡음을 필터링하기 위해 DMI와 이동 평균의 파라미터 기간을 적절하게 조정할 수 있습니다.
역전 거래는 역전 손실이 확대되는 위험에 직면한다. 역전이 활성화되면 단편 손실 비율을 제어하거나 이동 스톱을 사용하여 수익의 일부를 잠금합니다.
다른 품종과 다른 시간 주기에서, 매개 변수는 재 최적화가 필요합니다. 직접 복제 매개 변수는 다른 품종이나 주기에서 사용할 때 효과가 좋지 않을 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
다양한 이동 평균 주기 변수를 테스트하여 접착 경향 전환을 위한 최적의 변수 조합을 찾습니다.
DMI의 평형 주기 파라미터를 테스트하고, 필터 트렌드에서 발생하는 단기 반전 노이즈를 니다.
역전 옵션을 활성화하고 기본상황 거래의 역사 회귀에서의 효과의 차이를 평가하여 더 나은 옵션을 선택하십시오.
단편적 손실을 제어하기 위해 이동적 손실, 시간적 손실, 상쇄적 손실과 같은 손해 방지 전략을 추가하십시오.
다양한 품종과 주기 파라미터에서 최적화 효과를 평가하고, 파라미터 조합을 최적화한다.
강약 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")