BOT START SIGNAL

DMI Indicator

DMI (Directional Movement Index) measures trend direction and strength: +DI and −DI show who dominates, ADX shows how strong the trend is. In the ELIXOAI start signal builder you get dmi_cross (+DI crosses −DI) and dmi_adx_strength (ADX > 25) presets. Period 14, three outputs, and 12+ strategies explained.

DMI indicator with +DI, −DI, and ADX lines on a cryptocurrency chart
DMI combines +DI, −DI, and ADX: directional line crosses give direction signals, ADX shows whether the trend is strong enough to trade.

The Start Bots Signal category describes signals and indicators that can start a trading bot. One of the technical indicators is DMI (Directional Movement Index).

When creating or editing any bot, there is a Start signal builder block at the bottom of settings. You can choose individual indicators, ready-made presets, and their combinations. Conditions are grouped: AND inside a group, OR between groups. The same indicator can be configured in different ways - for Long and Short, for breakouts and bounces, for level comparisons and for crosses.

What is DMI (Directional Movement Index)

DMI (Directional Movement Index) is a trend indicator developed by Welles Wilder. It consists of three lines: +DI (Positive Directional Indicator, bullish direction), −DI (Negative Directional Indicator, bearish direction), and ADX (Average Directional Index). DMI answers two questions: which way the market is moving and how strongly the trend is expressed.

A +DI/−DI cross is the classic dominance shift signal: when +DI crosses above −DI, bulls take control; when −DI crosses above +DI, bears do. But the cross alone does not measure trend strength - in ranges the lines whipsaw. That is what ADX is for: it measures trend intensity regardless of direction. ADX rises when +DI and −DI diverge; it falls when the market calms down.

In the ELIXOAI start signal builder, DMI is used as an automatic bot start condition: the dmi_cross preset catches +DI crossing −DI, the dmi_adx_strength preset fires when ADX exceeds 25 (trend strong enough to trade). Both presets can be combined with EMA, RSI, or higher-timeframe filters.

DMI vs MACD and EMA

All three tools relate to trend, but solve different problems:

  • MACD is built on the difference between two EMAs and shows momentum through line or zero crosses. MACD has no separate “trend strength” metric - only direction and acceleration. DMI explicitly separates direction (+DI vs −DI) and strength (ADX).
  • EMA is a price moving average; price position vs EMA shows trend but not strength. DMI +DI/−DI crosses give earlier momentum shift signals; ADX filters weak moves in chop.
  • DMI is the only one of the three that gives a numeric trend strength reading via ADX. Classic thresholds: ADX < 20 - weak trend or range; 20–25 - trend forming; > 25 - trend strong enough to trade; > 40–50 - very strong trend (watch for reversals).

How DMI works

DMI is calculated from True Range and directional movement over a period (default 14 candles):

  • +DI (pdi) - upward movement strength. The higher +DI vs −DI, the more buyers dominate.
  • −DI (mdi) - downward movement strength. When −DI is above +DI, bears control the market.
  • ADX (adx) - smoothed measure of divergence between +DI and −DI. ADX does not show direction - it can rise in both rallies and selloffs. High ADX means the trend is strong, Long or Short.

In the builder you set a comparison condition on one output: “+DI crosses above −DI,” “ADX greater than 25,” “+DI greater than −DI,” and so on. The system fetches live DMI values from the exchange via TAAPI and checks the condition on your timeframe - at candle close or every minute.

Three DMI outputs

The builder exposes three numeric outputs for the dmi indicator:

  • pdi (+DI): positive directional indicator. Used as the main line in dmi_cross - pdi crossing mdi.
  • mdi (−DI): negative directional indicator. In dmi_cross it is the cross target: pdi cross up mdi.
  • adx (ADX): trend strength index. Used in dmi_adx_strength - ADX > 25 as a “trend strong enough” filter. Any threshold works: gt 20, gt 30, gte 25.

Period parameter

  • Range: 1 to 300.
  • Default: 14 - Wilder’s classic setting; balanced for 15m–4h.
  • Short period (7–10): DMI reacts faster, more +DI/−DI crosses, more false signals in ranges. Useful on 5m–15m for scalping with a mandatory ADX filter.
  • Long period (20–28): smoother DMI, less frequent dominance changes. Better for 1h–4h swing - fewer but more sustained trend signals.

DMI(14) on 15m and DMI(14) on 4h are different indicators. When changing timeframe, revisit period and preset mix (cross vs adx_strength).

Ready-made presets in the builder

The builder offers two DMI presets with default settings. Each can be fully customized: different operator, output, threshold, or timeframe.

dmi_cross - +DI crosses above −DI (Long)

Default condition: pdi (+DI) crosses mdi (−DI) from below to above (cross up) on the selected timeframe (15m interval, period 14, check at bar close).

Classic DMI Long signal: bullish direction begins to dominate bearish. Unlike “pdi > mdi,” the cross captures the transition moment, not just current position. For Short, set operator “crosses below” - pdi cross down mdi.

dmi_adx_strength - ADX > 25 (strong trend)

Default condition: ADX greater than 25 (gt) on the selected timeframe (15m interval, period 14, check at bar close).

Trend strength filter: the bot starts when the market leaves chop and the trend becomes strong enough. ADX > 25 alone gives no direction - combine with dmi_cross, EMA, or price above/below a key average. For Short context, add mdi > pdi in the same group.

Available operators
  • Crosses above (cross up): Output was below the target and moved above. For dmi_cross: pdi cross up mdi - Long. Custom: adx cross up 25 - ADX just exceeded the strength threshold.
  • Crosses below (cross down): Output was above the target and dropped below. pdi cross down mdi - Short. adx cross down 25 - trend weakening, exit from strong move.
  • Greater than (gt): Value strictly above threshold. ADX gt 25 - strong trend right now. pdi gt mdi - bulls dominate without requiring a fresh cross.
  • Less than (lt): Value strictly below threshold. ADX lt 20 - weak trend, range. mdi gt pdi (or pdi lt mdi) - bears dominate.
  • Greater or equal (gte): Value at or above threshold. ADX gte 25 on 4h - sustained higher-TF trend as a filter.
  • Less or equal (lte): Value at or below threshold. ADX lte 20 - market in range, DMI crosses unreliable.
ADX levels

ADX is the key to filtering DMI noise. ADX < 20 - weak or no trend; +DI/−DI crosses are often false. ADX 20–25 - trend forming. ADX > 25 - trend strong enough to trade (dmi_adx_strength preset threshold). ADX > 40–50 - extremely strong trend; sharp corrections possible. ADX shows strength, not direction - for Long check pdi > mdi, for Short mdi > pdi.

General builder settings

  • Timeframe (interval): 1m, 5m, 15m, 30m, 1h, 4h, 1d. Shorter intervals give more signals but more noise. Swing bots often use 1h–4h; scalping uses 5m–15m.
  • Check mode: At candle close checks after the candle closes - fewer false triggers. Every minute checks inside the current candle - faster reaction, higher false-start risk.
  • Operator: greater than, less than, crosses above, crosses below, greater or equal, and others define how the indicator value is compared to the target.
  • Target value: a number (e.g. 30 for RSI), an indicator line (e.g. %D for Stochastic), or price (for Bollinger Bands).
  • Condition groups: up to 3 groups with up to 5 conditions each. Example: group 1 - RSI < 30 AND price < lower band; group 2 - Stochastic < 20. The bot starts if group 1 OR group 2 is satisfied.

Setup examples for different strategies

Classic Long: dmi_cross

Goal: bot start on dominance shifting to bulls.
Long: dmi_cross preset, pdi cross up mdi, 15m timeframe, period 14, check at bar close.
Short: pdi cross down mdi, same settings.
Basic DMI strategy without extra filters - more signals, higher false-cross risk in ranges.

Short on −DI cross

Condition: mdi cross up pdi (equivalent to pdi cross down mdi), period 14, 15m, check at close.
Filter: ADX gt 20 in the same group - short only when trend is forming, not in dead chop.
Fits short grids on local uptrend reversals.

DI cross + ADX strength

Group 1: dmi_cross (pdi cross up mdi) on 15m AND dmi_adx_strength (ADX gt 25) on the same 15m.
Logic: Long only when both direction (+DI above −DI) and strength (ADX > 25) confirm. Fewer false starts than pure dmi_cross.
Short: pdi cross down mdi AND ADX gt 25 AND mdi > pdi.

Trend confirmation via EMA

Long: dmi_cross on 15m AND close price above EMA 50 on 1h.
Short: pdi cross down mdi on 15m AND price below EMA 50 on 1h.
EMA shows global direction; DMI catches local momentum shift with the trend.

Scalping: period 10 on 5m–15m

Long: dmi_cross, period 10, 5m timeframe, check at close AND ADX gt 20.
Short: pdi cross down mdi, same settings.
Period 10 speeds up DMI; ADX filter is mandatory - without it 5m whipsaws heavily.

Swing: period 14 on 1h–4h

Long: dmi_cross on 4h, period 14, check at close AND ADX gt 25.
Short: pdi cross down mdi on 4h, ADX gt 25.
Rare but meaningful signals - closer to a “real” trend shift on a higher interval.

Multi-timeframe

Long: ADX gt 25 on 4h (separate condition, dmi_adx_strength) AND dmi_cross on 15m.
Short: ADX gt 25 on 4h AND pdi cross down mdi on 15m.
Higher TF confirms trend strength; lower TF gives entry - avoids buying every local cross against weak global ADX.

DMI + RSI

Long: dmi_cross on 15m AND RSI cross up 30 (or RSI < 40) on the same 15m - DMI direction and RSI bounce aligned.
Short: pdi cross down mdi AND RSI cross down 70.
RSI catches oversold/overbought; DMI confirms directional dominance shift.

Pullback in trend

Group 1: pdi gt mdi on 4h (period 14) AND dmi_cross on 15m.
Logic: higher TF shows sustained bullish dominance (+DI above −DI); lower TF catches resumption after a short correction. Fewer false starts against the global trend.

Strong trend: ADX gt 30

Long: ADX gt 30 on 1h AND pdi gt mdi on 1h - bot starts only in clearly strong trends.
Short: ADX gt 30 AND mdi gt pdi on 1h.
Stricter than 25 - fewer trades, higher quality in trending phases. Downside - later entry vs move start.

DCA on trend resumption

Long: dmi_cross on 1h (period 14) AND ADX gte 20 on 1h AND price > EMA 200 on 4h.
Short: pdi cross down mdi AND ADX gte 20 AND price < EMA 200 on 4h.
For DCA bots on pullbacks: +DI/−DI cross is softer than a hard breakout; EMA 200 sets global context.

Condition groups: practical example

Bot with two Long scenarios:
Group 1: dmi_cross on 15m AND ADX gt 25 on 15m - impulse entry with confirmed strength.
Group 2: ADX gt 25 on 4h AND pdi gt mdi on 15m - higher-TF trend, bullish dominance on lower TF.
Groups combined with OR: either scenario can start the bot. Configure Short symmetrically (pdi cross down mdi, mdi gt pdi).

Tip
DMI cross without an ADX filter in ranges produces many false starts: +DI and −DI constantly cross when ADX < 20. Always combine dmi_cross with dmi_adx_strength (ADX gt 25) or a higher-timeframe EMA filter. Remember: ADX shows strength, not direction - for Long check pdi > mdi, for Short mdi > pdi. Use check at bar close to ignore intrabar noise.