
Эта стратегия объединяет трендовый индикатор DMI (дирекционный динамический индикатор) и ADX (средний трендовый индикатор) для выявления сильных тенденций на рынке и захвата торговых возможностей. Стратегия определяет направление тренда через пересечение линий +DI и -DI в DMI, а также использует индикатор 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)