Oui je n'ai entendu dire que du bien de ce bouquin.
Par ailleurs la doc des ruskofs est vraiment inepte.
Il y a un phénomène vraiment piégeux dans Metatrader, c'est que le système dans son ensemble réagit différemment selon que l'on soit en optimisation, en backtest ou en prod (démo ou réel). En gros ça marche pareil mais il y a quelques pièges ou le débutant va tomber à pieds joint.
Pour en revenir à la question posée, tout d'abord quand on a besoin du prix, soit c'est un prix échantillonné (au sens de l'échantillonnage en théorie du signal) et donc selon le time frame, on prend le prix de la bar closed c'est à dire le close de la bar1, pas de la bar0. Dans un indic on prend donc close[1] (ou close[indice] si on est dans la boucle d'init ou de prise en compte de plusieurs nouvelles barres).
Si pour quelques raisons que ce soit l'indic utilise en sus de l'échantillonnage du time frame chaque tick, le prix du tick (depuis les builds 600 comportant la nouvelle interface d'appel) est effectivement obtenu avec close[0]. Attention, ici close est le nom de la variable attribuée au paramètres de la fonction d'appel de l'indic : OnCalculate(...) En nom de variable on met ce qu'on veut. Les exemples d'indicateurs fournis avec mt4 montrent comment s'en servir pour écrire un indic. Attention au nom des variables,
close avec c minuscule peut être piégeux car différent peu de
Close avec majuscule qui est le tableau global accessible (pas d'erreur de compil, mais ça va pas marcher en backtest).
Dans un EA, on utilise iClose qui donne exactement le même résultat que ce tableau : Close[i], quand on fait référence à la paire et au time frame du graphique sur lequel l'EA est attaché. On peut donc avoir le prix du dernier tick par Close[0], ou l'iClose(.., 0...) approprié. Personnellement je trouve cela inélégant et préfère Bid tout simplement.
Pour en revenir à la petite histoire et si ma mémoire ne me joue pas des tours, il était donc possible avant les releases 600 d'écrire pour back test dans l'indic tmpPrix=Close[0] en pensant disposer du prix du tick fournis par le tester. Que neni ! On obtenait par avance le futur prix de Close de la bar alors que ceci était sensé être correctement modélisé. Avec une telle information sur le futur, y avait moyen d'écrire des machins salement gagnants sans même sur optimiser.
