Tester le close[0]
Modérateur : Administrateurs
Tester le close[0]
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
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]
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.
Attention, si tu BT en Close[0] tu BT la modélisation MT4 !
voir Tickstory.
Re: Tester le close[0]
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
Merci
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
C'est qu il va chercher le close reel de la bougie qu il connait forcement ...tu BT la modélisation MT4
Merci
Re: Tester le close[0]
il ne faut pas utiliser Close[0] mais
Code : Tout sélectionner
double c = iClose(...,0)
Re: Tester le close[0]
@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ù
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]
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.
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.
Les informations présentées ne peuvent être considérées ni comme un conseil en investissement, ni comme une recommandation d'investissement. Il s'agit de commentaires généraux sur les marchés et de raisonnements que l'on peut tenir à leur sujet.
Re: Tester le close[0]
Oui parfaitement, prendre Bid.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.
@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]
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...
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...
Les informations présentées ne peuvent être considérées ni comme un conseil en investissement, ni comme une recommandation d'investissement. Il s'agit de commentaires généraux sur les marchés et de raisonnements que l'on peut tenir à leur sujet.
Re: Tester le close[0]
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]
Bien vu.
Re: Tester le close[0]
Merci!ionone a écrit :
sauf que sur MT5 il n'y a pas Ask et Bid... Donc c'est une bonne habitude d'utiliser iClose.
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.
Les informations présentées ne peuvent être considérées ni comme un conseil en investissement, ni comme une recommandation d'investissement. Il s'agit de commentaires généraux sur les marchés et de raisonnements que l'on peut tenir à leur sujet.
Re: Tester le close[0]
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 :Jeff719 a écrit :Merci!ionone a écrit :
sauf que sur MT5 il n'y a pas Ask et Bid... Donc c'est une bonne habitude d'utiliser iClose.
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.
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