Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
31 août 2008 7 31 /08 /août /2008 14:56

La Médiane, un nouvel indicateur magique ?

La Médiane n'est pas disponible par défaut sur Prorealtime.  Cet indicateur reprend la valeur médiane d'un échantillon, CAD tel que 50% des données soient inférieures à sa valeur et bien sûr 50% des données supérieures à cette même valeur.  Normalement, on procède par un tri par ordre croissant de l'échantillon et on prend la donnée de rang (N+1)/2 pour N impair sinon la moyenne des données de rang N/2 et (N/2)+1 pour N pair.

La plateforme Prorealtime ne permettant pas l'usage de tableaux, il est assez fastidieux de programmer de tels tris.  D'autant plus que l'on est toujours à la merci du message d'erreur "boucle sans fin" si on dépasse un certain nombre d'instructions.

Dutchy propose sur le forum Aktienboard.com, un programme qui contourne le problème du tri.  Mais cette version garde comme inconvénients d'être limitée à une longueur de 15 (sinon on a le message d'erreur "boucle sans fin'), d'être approximative dans le cas où plusieurs valeurs de l'échantillon sont égales et de ne fonctionner que pour un paramètre impair.  J'ai amélioré le programme pour les 2 premiers points, reste le problème du paramètrage pair où il faudrait faire tourner le programme deux fois et en extraire la moyenne des 2 sorties, ce qui est trop lourd pour le logiciel.

Pour contourner le problème du nombre d'instructions exécutables (boucle dans une boucle), je crée un sous programme "MEADIAN SUB", dont voici le code (il faut introduire x et len en variables) :

/////////// median sub /////////////////
inf=0
sign=0
egal=0
for p=0 to len-1
    if close[p]<close[x] then
        inf=inf+1
    elsif close[p]=close[x] then
        egal=egal+1
    endif
next
sup=len-inf-egal
if min(inf,sup)+egal>max(inf,sup) then
    sign=1
endif
return sign

Et maintenant le code de l'indicateur lui-même (il faut introduire par en variable, qui représente la longueur de l'échantillon sur laquelle le calcul est effectué) :

///////////////// indicateur médiane /////////////
par=(par mod 2=0)+par
for i=0 to par-1
    my10=call "median sub"[i,par]
    if my10=1 then
        medi=close[i]
        break
    endif
next
if barindex<par then
    medi=undefined
endif
return medi

Et une vue de la Médiane appliquée à l'indice DOW JONES, en bleu de longueur 5 et en blanc de longueur 25 :



Le programme reste lourd pour des paramètrages de valeurs élevées du fait de l'emploi de la subroutine.

Partager cet article

Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article

commentaires