Page 1 sur 1

Tester le close[0]

Publié : 10 déc. 2016, 15:57
par steph06
Bonjour

J ai utilisé un ea builder en ligne et j'ai pu constater que si l on teste le Close de la bougie en cours pour declencher un trade, en backtest, cela fonctionne.

Mais en live ?

Je ne comprends pas comment cela est possible puisque la bougie n est fermee qu une fois qu un autre est ouverte...

Je verrais bien à la reouverture du marché mais pour l instant j en appelle à vos lumieres

merci

stephane

Re: Tester le close[0]

Publié : 10 déc. 2016, 17:27
par MaPomme
Le Close est la dernière cotation de la bougie. En cours ou pas.
Attention, si tu BT en Close[0] tu BT la modélisation MT4 !
voir Tickstory.

Re: Tester le close[0]

Publié : 10 déc. 2016, 22:12
par steph06
Merci pour ta réponse.

Donc si j ai bien compris, le close est le premier tick quand on est au deuxieme tick.

Par conte je ne comprends pas ce que signifie
tu BT la modélisation MT4
C'est qu il va chercher le close reel de la bougie qu il connait forcement ...

Merci

Re: Tester le close[0]

Publié : 15 déc. 2016, 12:05
par ionone
il ne faut pas utiliser Close[0] mais

Code : Tout sélectionner

double c = iClose(...,0)

Re: Tester le close[0]

Publié : 15 déc. 2016, 15:34
par Trader55
@steph06

si tu en es à te poser ce type de question, je te conseille d'acheter le bouquin (dispo en pdf) de mon ami Henri Baltzer, "programmer en mql4".

Tres bien fait, simple, exemples, progressivité.

Je peux te connecter avec lui au cas où

Re: Tester le close[0]

Publié : 16 déc. 2016, 16:40
par Jeff719
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, 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. :mrgreen:

Re: Tester le close[0]

Publié : 16 déc. 2016, 20:59
par Trader55
Jeff719 a écrit :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.
Oui parfaitement, prendre Bid.

@Jeff719, et toi comment as tu appris le MQL4 ? Juste avec le forum MQL ?
Tu fais un peu de MT 5 également ?

Re: Tester le close[0]

Publié : 16 déc. 2016, 22:52
par Jeff719
Disons que je suis un vieux programmeur - j'ai peut être écrit un demi million de lignes dans ma carrière - avec qq sources exemple, mql c'était brossé en quelques jours.

J'ai compris après quelques mois d'expérience des marchés que ça allait être compliqué. Lorsqu'un jeune crétin de commercial broker explique au prétexte que la syntaxe ressemble à C++, qu'ainsi les particuliers disposent de presque les mêmes outils que les professionnels... j'ai été saisi du fait que ça allait être très dur, lorsque vos fournisseurs d'informations en fait vous enfument.

Parce qu'avant les releases 600, mql4 c'était un méchant petit langage procédural évoquant le Pascal d'il y a 30 ans. D'ailleurs la semi compil évoque le Pcode.

Je n'ai pas encore fait de mql5. Avec le marché US et IB, il faudra bien... 8)

Re: Tester le close[0]

Publié : 17 déc. 2016, 13:12
par ionone
Jeff719 a écrit :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.

sauf que sur MT5 il n'y a pas Ask et Bid... Donc c'est une bonne habitude d'utiliser iClose.

Jeff

Re: Tester le close[0]

Publié : 17 déc. 2016, 22:54
par Trader55
Bien vu.

Re: Tester le close[0]

Publié : 18 déc. 2016, 11:31
par Jeff719
ionone a écrit :
sauf que sur MT5 il n'y a pas Ask et Bid... Donc c'est une bonne habitude d'utiliser iClose.
Merci!

Tiens, si tu maitrise 4 et 5, ce serait bien de saupoudrer à l'occasion ces remarques. Les différences pour passer de 4 à 5. Un papier d'ensemble est assommant tant à lire qu'à écrire, surtout que c'est par petites touches qu'on mémorise.

Re: Tester le close[0]

Publié : 19 déc. 2016, 13:11
par ionone
Jeff719 a écrit :
ionone a écrit :
sauf que sur MT5 il n'y a pas Ask et Bid... Donc c'est une bonne habitude d'utiliser iClose.
Merci!

Tiens, si tu maitrise 4 et 5, ce serait bien de saupoudrer à l'occasion ces remarques. Les différences pour passer de 4 à 5. Un papier d'ensemble est assommant tant à lire qu'à écrire, surtout que c'est par petites touches qu'on mémorise.
je vais modérer mon propos, il y a un Ask et un Bid que l'on peut récupérer mais pas directement par Ask et Bid, il faut utiliser :

Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
et
Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);


pour utiliser MT5, je recommande fortement d'utiliser cTrade pour manager les ordres car sinon c'est un casse-tête sans fin, pour ouvrir un simple ordre il faut plusieurs dizaines de lignes...cTrade simplifie tout ça...

Jeff