
이 전략은 DMI의 +DI 및 -DI 라인의 교차로로 트렌드 방향을 결정하고, ADX 지표를 사용하여 트렌드 강도를 측정하고, 트렌드가 명확한 경우에만 거래합니다. 이것은 전체적인 트렌드 추적 거래 시스템으로, 현장 신호, 손실 차단 및 기타 위험 관리 기능을 포함합니다.
전략의 핵심 논리에는 다음과 같은 핵심 요소가 포함됩니다.
대책:
DMI+ADX 교차 전략은 고전적인 트렌드 추적 전략으로, 방향과 강도 지표를 결합하여 강력한 트렌드 시장에서 거래 기회를 찾습니다. 전략 논리는 명확하고, 위험 관리가 완벽하며, 실용성과 확장성이 좋습니다. 지속적인 최적화와 개선으로 전략은 다양한 시장 환경에 더 잘 적응하여 거래 효과를 향상시킬 수 있습니다.
/*backtest
start: 2024-02-19 00:00:00
end: 2024-10-25 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("DMI + ADX Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=250)
// Nastavenie parametrov
adxLength = input.int(14, title="ADX Length")
adxSmoothing = input.int(14, title="ADX Smoothing")
dmiLength = input.int(14, title="DMI Length")
adxThreshold = input.float(25.0, title="ADX Threshold")
stopLossPerc = input.float(1.0, title="Stop Loss (%)")
takeProfitPerc = input.float(2.0, title="Take Profit (%)")
// Výpočet DMI a ADX pomocou ta.dmi
[plusDI, minusDI, adxValue] = ta.dmi(dmiLength, adxSmoothing)
// Nákupné podmienky
longCondition = ta.crossover(plusDI, minusDI) and adxValue > adxThreshold
if (longCondition)
strategy.entry("Long", strategy.long)
// Predajné podmienky
shortCondition = ta.crossunder(plusDI, minusDI) and adxValue > adxThreshold
if (shortCondition)
strategy.entry("Short", strategy.short)
// Definovanie Stop a Limit pre Long pozíciu
longStop = strategy.position_avg_price * (1 - stopLossPerc / 100)
longLimit = strategy.position_avg_price * (1 + takeProfitPerc / 100)
if (strategy.position_size > 0)
strategy.exit("Long Exit", "Long", stop=longStop, limit=longLimit)
// Definovanie Stop a Limit pre Short pozíciu
shortStop = strategy.position_avg_price * (1 + stopLossPerc / 100)
shortLimit = strategy.position_avg_price * (1 - takeProfitPerc / 100)
if (strategy.position_size < 0)
strategy.exit("Short Exit", "Short", stop=shortStop, limit=shortLimit)
// Vizualizácia indikátorov na grafe
plot(adxValue, title="ADX", color=color.blue)
hline(adxThreshold, "ADX Threshold", color=color.gray)
plot(plusDI, title="+DI", color=color.green)
plot(minusDI, title="-DI", color=color.red)