Torben Moving Median

Torben Moving Median

Median filtering is a commonly used technique in signal processing. Typically used on signals that may contain outliers skewing the usual statistical estimators, it is usually considered too expensive to be implemented in real-time or CPU-intensive applications.

Let us define the median of N numerical values by:

  • The median of a list of N values is found by sorting the input array in increasing order, and taking the middle value.
  • The median of a list of N values has the property that in the list there are as many greater as smaller values than this element.


Torben’s method

This method was pointed out by Torben Mogensen.

It is certainly not the fastest way of finding a median, but it has the very interesting property that it does not modify the input array when looking for the median. It becomes extremely powerful when the number of elements to consider starts to be large, and copying the input array may cause enormous overheads. For read-only input sets of several hundred megabytes in size, it is the solution of choice, also because it accesses elements sequentially and not randomly. Beware that it needs to read the array several times though: a first pass is only looking for min and max values, further passes go through the array and come out with the median.

Credits to Fast median search: an ANSI C implementation.

PRT implementation

I have translated that C implementation by N. Devillard of Torben Mogensen algorithm in PRT, obtaining this moving median indicator:

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. yanntorp • 11/09/2020 #

    je souhaiterai savoir comment vous définissez la variable closedbar = t puisque cela me retourne une erreur.
    Merci pour votre aide.

    • Nicolas • 11/09/2020 #

      Le plus simple est de télécharger le fichier itf présent sur cette page et de l’importer dans la plateforme, vous aurez ainsi accès à toutes les fonctionnalités du code directement.

    • Daniele Maddaluno • 11/09/2020 #

      Le closedbar est simplement une variable de type boolean, et = t signifie qu’il est égal à true (c’est-à-dire checked box, 1).
      Cependant, il est beaucoup plus rapide d’importer le fichier “.itf”, comme l’a suggéré Nicolas.

      The closedbar is just a variable of type boolean, and = t means it is equal to true (i.e. a checked box, 1).
      However, it is much faster to import the “.itf” file, as Nicolas suggested.

  2. yanntorp • 11/09/2020 #

    merci pour vos réponses et le partage de ce code. Cela fonctionne très bien.

  3. Bruno Carnazzi • 11/09/2020 #

    GENIUS !

  4. AK27 • 11/09/2020 #

    Bonjour pensez vous qu’il est possible de creer un screener par rapport à cet indicateur, que le screener avertisse dès qu’une bougie validée clôture au dessus de la torben 20 par exemple 🙂

    • Daniele Maddaluno • 11/09/2020 #

      Bien sûr, vous pouvez écrire quelque chose comme ceci dans un screener:

      torben = CALL “Torben Moving Median”[20, 1](close)
      filter = close crosses over torben

    • AK27 • 11/09/2020 #

      merci Daniele vous êtes top, vous pensez qu’il est plus judicieux d’utiliser un screener de croisement de torben ou de franchissement du prix de la torben 20 ? je priorise le % de réussite au % de gain. 🙂

  5. AK27 • 11/09/2020 #

    Bonjour Daniele j’ai une idée d’indicateur qui va vous plaire je peux vous parler ou ? discord, twitter ? mail ?

  6. Daniele Maddaluno • 11/09/2020 #
  7. AK27 • 11/09/2020 #

    C’est payant visiblement sur linkdin je peux pas vous envoyer, discord vous avez ?

Register or


avatar avatar avatar avatar avatar avatar avatar
Related users ' posts
7 months ago
Kalman Filter
Kalman Filter
Stenozar Hi Sever, how can I visualize the coloured areas?
Sever Hi Stenozar, You need to add the color zones yourself , just go to Add Color Zone To set ...
atlante hi nicolas this indicator have 2 wrong borderline and islalastbarupdate. thank you can you h...
Nicolas That'"s because you are not using PRT v11? Just remove lines 59 to 62
Kanamax Hi Roberto, sorry for my confusing previous posts (forget them). My request is very simple,...
robertogozzi Please start a new topic in ProOrder support.
robertogozzi There you go: myMagicTrend = CALL “Magic Trend custom”[20, 14, 1, 5] alpha = 105 b = 0...
johann8 exactly :) Thank you all for the help!
max_92 Ciao Roberto, ho scaricato l'indicatore e come ti avevano già scritto sopra anch'io vedo la ...
Xenotrax A première vue, sa à l'air d'être un indicateur très puissant sur de petites temporalités, j...
merri Bonjour Nicolas, Comment transformer cet indicateur en bot sur PRT ?
Nicolas Cela a déjà été fait, voir ce sujet:
Nicolas change the last line with: return v coloured(r,g,b) style(line,2), v+band coloured(168,168,1...
Paolo.B Thanks ... works as i wanted.
Kanamax Bonjour Nicolas, comme Paolo.B je souhaiterais utiliser cette indicateur au sein d'un code. ...
zilliq Thanks @Nicolas. I tried to use it as Trend in a proorder system, but don't know why, it doe...
Suzu Yuk He is right. MT and mavgMT are not defined and causing errors..... "style(line,2)" C'è una guida ai parametri che si possono modificare ? Tipo stile della lin...
IV Mcm
Nicolas C'est dans ce sujet: M...
Pensera Bonjour Nicolas, comment est-il possible de backtester cet indicateur? cela fait une erreu...
Nicolas Oui bien sûr, il doit y avoir pas mal de sujets dans le forum à ce propos.
Nicolas Il doit s'agir d'un mauvais copier/coller. Je suggère de télécharger le fichier itf contenu ...
Bard Hello @Nicolas, I can get this to display in a separate indicator panel but not on Price as ...
Stenozar Hi @Nicolas, how can I put the bands on price? Thanks, Stefano
Guillaume Mcm I gave the above message fix ;)
Tradingrob Is it possible to put the itf-file in the right way here in Prorealcode? so the right 'trend...
Guillaume Mcm Update link ;)
Screw27 Hi man, I installed the indicator and i don't know why but my graph it is so big
HelixKing sounds interesting I'll take a look