Tushar Chande’s DMI (with RSX)

Tushar Chande’s DMI (with RSX)

An indicator used in technical analysis that determines the overbought and oversold conditions of a particular asset. This indicator is very similar to the Relative Strength Index (RSI). The main difference between the two is that the RSI uses a fixed number of time periods (usually 14), while the Dynamic Momentum Index uses different time periods as volatility changes.

This indicator is interpreted in the same manner as the RSI where the readings below 30 are deemed to be oversold and more than 70 levels are deemed to be overbought. The number of time periods used in the dynamic momentum index decreases as the volatility of the underlying asset increases, making this indicator more sensitive to price changes than the RSI. This version has an additional smoothing in an RSX usage form for calculating the original RSI pitch. It has been added to make it a little more readable. The DMI Chande is less smooth than this original version and can raise more false signals. Using the RSX instead of RSI not add any lag at all, so we can say that using an RSX instead of RSI could be classified as “1% improvement” rule – which is sure it not be worse than the original Chande’s DMI.

(description found on internet). Indicator translated from Metatrader5 version by a request in forum.

Settings explanation:

_ MAStdDevMode : moving average type for smoothing the ATR value used to get the volatility of the current instrument

_ DmiLowerLimit & DmiUpperLimit : bounds for DMI periods (DMI calculated period can’t be less or more than these 2 limits)


Share this

Risk disclosure:

No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.

ProRealTime ITF files and other attachments : How to import ITF files into ProRealTime platform?

PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials

  1. macbartin • 01/31/2018 #

    Bonjour, merci pour l’indicateur, j’utilise un RSI de 7 période, sur du 1 min, est’il possible de changer sa base de période ? si oui comment faire ? merci encore j’avais pas pensé que le RSI pouvait avoir du retard !

    • Nicolas • 01/31/2018 #

      Changer la base de périodes du RSI original ? Le RSI a du “retard” puisqu’il est toujours nécessaire d’évaluer le terrain (et donc de regarder le passé) pour donner l’information sur la bougie courante.

    • macbartin • 01/31/2018 #

      merci, je voulais savoir quel paramètre il faut modifier sur votre indicateur pour le modifier sur la période 7 de votre indicateur

    • Nicolas • 01/31/2018 #

      Cet indicateur est dynamique, il n’utilise pas de période fixe

  2. falco44 • 01/31/2018 #

    Bonjour Nicolas,
    Lorsque j’importe l’indicateur via l’itf et que je l’attache au graphique, il apparait ce message “Erreur dans l’indicateur : PRC_DMI of RSX (5 8 0 15 10 50 60 40) — Un parametre de type entier positif est attendu avec SUMMATION”.
    Pourrais-tu m’eclairer à ce sujet stp ?
    Je suis sur la v11 de prt.
    Merci à toi,

    • Nicolas • 01/31/2018 #

      Dans ce cas, il faut changer les lignes qui comportent l’instruction SUMMATION comme ceci: summation[max(1,RSIterm)]

  3. falco44 • 01/31/2018 #

    Bonjour Nicolas, je suis desolé mais cela ne fonctionne toujours pas …
    Merci de ton retour

  4. AG1 • 01/31/2018 #

    Hello Nicholas
    Is it possible to attach a revised code?
    I tried to change according to your instructions but the indicator is not working yet.
    Thanks in advance for your help

    • Nicolas • 01/31/2018 #

      PFA below a revised version:
      //PRC_DMI of RSX | indicator
      //Nicolas @ http://www.prorealcode.com
      //Sharing ProRealTime knowledge
      //translated from MT5 code

      // — settings
      StdDevPeriod = 5 // Period of Standard Deviation
      MAStdDevPeriod = 8 // Period of smoothing
      MAStdDevMode = 0 // Mode of smoothing MA
      DMIPeriod = 15 // Dynamic Momentum Index Period
      DmiLowerLimit = 10 // Dynamic Periods Lower Bound
      DmiUpperLimit = 50 // Dynamic Periods Upper Bound
      LevelUp = 60 // Lower level
      LevelDown = 40 // Upper level
      // — end of settings

      if barindex>DMIperiod then
      SD = STD[StdDevPeriod](customclose)
      ASD = Average[MAStdDevPeriod,MAStdDevMode](SD)

      RSIterm = max(1,ROUND(DMIPeriod / (SD/ASD)))
      RSIterm = Max(Min(RSIterm,DmiUpperLimit),DmiLowerLimit)

      //RSI calculation
      plus = summation[max(1,round(RSIterm))](customclose-customclose[1]>0)
      minus = summation[max(1,round(RSIterm))](customclose-customclose[1]per then
      beta = 0.45*(per-1)/(0.45*(per-1)+2)
      if pow=1 then
      alpha = beta
      elsif pow=2 then
      alpha = beta*beta
      elsif pow=3 then
      alpha = beta*beta*beta
      elsif pow=4 then
      alpha = beta*beta*beta*beta
      elsif pow=5 then
      alpha = beta*beta*beta*beta*beta
      alpha = beta

      tmp0 = (1-alpha)*plus + alpha*tmp0[1]
      tmp1 = (plus – tmp0[0])*(1-beta) + beta*tmp1[1]
      tmp2 = tmp0[0] + tmp1[0]
      tmp3 = (tmp2[0] – tmp4[1])*((1-alpha)*(1-alpha)) + (alpha*alpha)*tmp3[1]
      tmp4 = tmp4[1] + tmp3[0]
      avgplus = tmp4

      ftmp0 = (1-alpha)*minus + alpha*ftmp0[1]
      ftmp1 = (minus – ftmp0[0])*(1-beta) + beta*ftmp1[1]
      ftmp2 = ftmp0[0] + ftmp1[0]
      ftmp3 = (ftmp2[0] – ftmp4[1])*((1-alpha)*(1-alpha)) + (alpha*alpha)*ftmp3[1]
      ftmp4 = ftmp4[1] + ftmp3[0]
      avgminus = ftmp4


      RS = avgplus/avgminus
      DMIRSX = 100 – 100 / ( 1 + RS )

      if DMIRSX>LevelUp then
      elsif DMIRSX<LevelDown then

      return DMIRSX coloured(r,g,b) style(line,3) as "Dynamic Momentum Index", levelup coloured(100,100,100) style(dottedline) as "level up", leveldown coloured(100,100,100) style(dottedline) as "level down"

  5. AG1 • 01/31/2018 #

    Thanks Nicolas
    Still a problem in line 29
    Please take a look.
    thanks again

    • Nicolas • 01/31/2018 #

      code is modified in the above post, use that one.

    • AG1 • 01/31/2018 #

      Still a problem in line 29
      Please take a look.
      thanks again

Register or


avatar avatar avatar avatar avatar avatar avatar
Related users ' posts
luxrun I have a problem that I don't understand: by changing the parameters of the CCI and RSI peri...
Iván Hi! Sorry... You have to check lines 9 to 13 and delete. //CCIper = 14 //RSIper = 14 //Ma...
luxrun grazie Ivàn!
Faisalx ChatGPT Hola Iván. Gracias por tu excelente trabajo. Te agradecería si pudieras echarle un...
Iván ok, perfecto! me pongo con ello
2 months ago
luiskohnen This indicator re-paint?
Iván Hi, Sorry, but what do you mean?
luiskohnen Hola, queria saber si el indicador repinta, porque a mi me parecio que si. Saludos y gracias...
P. Marlowe Quite an impressive work, Iván. Extremely useful and accurate. Congratulations. Keep it up¡
lkiklkik i love it !!! thanks.
Lean Me parece muy buen indicador, y se complementa muy bien en mi sistema, ¿podrías crear un scr...
Iván Gracias! Para el screener sólo tienes que copiar el indicador y poner como condición de búsq...
Lean Muchas gracias Iván, ya lo he podido crear.
7 months ago
Matriciel Very nice job ! Is it possible to do the opposite because what interests me is to have the ...
YvesRobert Hi Matriciel, how can we do this, because stochastic is limited between 0 and 100 but price ...
Traderfox06 Dear zeiiermantrading, I really like your approach combining adaptive averages with MACD in...
jacquesgermain Hello IASD it's normal , when this occurs, uncheck RSI and MFI line and click then the MAC...
emiliobercial Thank you very much for sharing!
Carlose estoy de acuerdo con IASD Esta muy bien el MAD y el indicador en el precio no se ven bien...
bousalahane merci pour le partage de cet l'indicateur, j'ai rajouté un autre indicateur pour faire une s...
joaoarcher Hi, thank you for the this. Is it possible to create a screener from this indicator, so that...
ThaNoizy Yes, you cannot use CFDs on IG for Weekly strats you need to use their Index Futures, they h...
KumoNoJuzza Thanks. I did not know IG had Futures. I am always missing an info or a detail. I used to th...
joaoarcher Hi, thank you for the this. Is it possible to create a screener from this indicator, so that...
1 year ago
Violet Nicolas, you calculate iRSI, but don't use it. You show RSI in the returned values, which, a...
Nicolas Yes, that's an error. RSI instruction is set by default to 14 if you don't indicate it that'...
DELBERT Bonjour , Nicolas , je voudrais installer cet indicateur sur ma PRT , version 10.3 , mais je...
Nicolas En effet, il faut à minima une version 11. La 10.3 est tellement ancienne maintenant.. Je pe...
DELBERT Bonjour , Nicolas , merci pour ta réponse , je fais un essai et je verrais . Salutations .
Khaled Thank you Nicolas! Looks like TDI (Trader Dynamic Index). Interesting to give Exit Signal as...
Nicolas ColorBetween is an instruction added last year: https://www.prorealcode.com/documentation/co...
AntoGH Bonjour peut-on backtester cela ? Et si vous l'avez fait pourriez vous nous donner le code.....
Nicolas désolé c'est un oubli de ma part, tu peux supprimer cette ligne, elle n'est plus utile dans ...
DELBERT Bonjour , Nicolas , merci pour ta réponse , je suis en effet avec PRT 10.3 , et j'ai bidouil...
supertiti https://zupimages.net/viewer.php?id=20/50/2e3v.jpg
volanirina Bonjour Je souhaite l'avoir sur l'indicateur MT4 si possible s'il vous plait. car je l'ai fa...
Nicolas ProRealCode est un site dédié à l'utilisation de la plateforme de trading ProRealTime: https...
Nicolas Merci d'ouvrir un sujet dans le forum des screeners en respectant les règles de publication ...
Pensera Bravo Nicolas ! Tu es en quelque sorte l’inventeur de Metascore…(oups je viens de lire jusqu...
Nicolas Dans un but d'investissement pure, et non spéculatif.
Nicolas Please open a topic in ProScreener forum with your query, I'll reply you there. Thank you.
manafull Thanks Nicolas, I post my question, along with the codes I am trying to convert from your in...
Nicolas I replied to your post here: https://www.prorealcode.com/topic/screener-for-rsi-and-linear-r...