Calcul MACD_v en express - erreurs

Post Reply
kiyohira
Posts: 32
Joined: 17 May 2013 12:41

Calcul MACD_v en express - erreurs

Post by kiyohira »

Bonjour,

J'essaye de coder la MACDV pour l'intégrer à mon système de trading et j'utilise les formules suivantes (code complet : MACDVvbeta06):

MACD-V = [[EMA(12,close) - EMA(26,close)] / ATR(26)] * 100 (personnellement j'utilise 9 et 19 périodes).

ATR:

A = high – low
B = ABS(high – close[i+1])
C = ABS(low – close[i+1])
TrueRange = MAX(A,MAX(B,C))
ATR(26) = WilderAverage 26 périodes du TrueRange ce qui revient au calcul d'une EMA ((26 périodes x2)-1) du TrueRange (personnellement j'utilise le code avec l'EMA et 19 périodes pour être cohérent avec la MACD).

J'ai besoin d'utiliser une boucle (car je code ensuite des signaux) et j'ai 2 erreurs qui me bloquent:

Erreur N°1: Dans l'indicateur MACDVvbeta06 - DEBUG ci-joint:

- La ligne en bleu est celui de la fonction express "AtrAbs"
- La ligne en rose fuchsia est l'ATR codé en express et visiblement il y a une différence donc ma MACD-V codée est différence de la MACD_v de la Nano (indicateur hors indicateur express)
- Question N°1: Est-ce qu'il y a une erreur dans mon code express True Range ou ATR ou est-ce que la fonction express "AtrAbs" utilise une autre moyenne mobile pour calculer la moyenne du True Range (peut-être la Smoothed Moving Average et pas la Wilder ? comme je l'ai vu sur internet pour le calcul de la MACD_v).

Erreur N°2: mon ATR codé en express en rose fuchsia descend très bas (-514490 pts sur le SP500 en 5 minutes voir ci-dessous) sur la période en cours (la période [ 0 ]) ce qui évidemment fausse le calcul de la MACD_v car la division de la MACD par 514490 donne une valeur proche de 0, donc la ligne MACD_v est toujours égale à 0 sur la période [ 0 ]. :cry:

Question N°2: comment éviter cette erreur de calcul ? J'ai essayé de reduire la boucle à FinalBarIndex() -1 mais cela ne marche pas.

Question N°3: pourquoi est-ce que la plateforme affiche les indicateurs en période [ 0 ] ? en toute rigueur tant que la période n'est pas terminée on ne devrait pas avoir de calcul en situation de CalculateAtEveryTick(false), peut-on donc éviter ceci ?

Est-ce que quelqu'un aurait une idée pour mes 3 questions ? :idea:

Mille merci d'avance car là je suis bien bloqué. :oops:

Cordialement,

K.
You do not have the required permissions to view the files attached to this post.
Post Reply

Return to “WHS NANOTRADER - EXPRESS PROGRAMMING”