![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
C'est la journée entière de GBPAUD H4 3.12.2018 ! Et je n'ai pas sauté jusqu'à la fin cette fois-ci.
La fonction d'impression peut-elle perdre certains rapports lorsqu'elle en a trop à imprimer ?
Je suppose qu'un autre problème pourrait être parce que les ticks de ces 3 instruments sortent dans différentes millisecondes, donc lorsque nous utilisons la fonction start/OnTick sur GBPAUD, il fait juste la fonction de démarrage chaque fois que le tick GBPAUD sort. Et je suppose que votre code pourrait dire de retourner tous les prix de ces 3 paires quand aucun d'entre eux n'est 0. Si c'est le cas, il retourne tous les prix ask/bid de tous les instruments au même moment exact.
Les données semblent correctes...
Vous avez raison à propos de la fonction d'impression... Je vois aussi beaucoup de lignes manquantes dans mes tests. Mais lorsque j'imprime tout dans un fichier, rien ne manque.
Voici quelques informations sur le code : le temps de chaque tick GBPAUD sera utilisé pour obtenir les ticks les plus récents des autres paires (jusqu'au même moment), donc il retournera toujours quelque chose, ce ne sera pas zéro.
J'ai décidé de mettre la fonction dans une classe, ce qui devrait être plus ordonné. Voir la pièce jointe. Placez-la dans votre dossier expert, avec votre EA. N'hésitez pas à la modifier.
L'exemple suivant vous montre une façon de l'utiliser (les lignes surlignées sont essentielles) :
La clé est donc juste cette ligne :ticksInfo.getTick(<SYMBOL String>,<MqlTick Struct>). Si elle renvoie false, vous devrez vérifier le journal pour le message d'erreur.
Les données semblent correctes...
Vous avez raison à propos de la fonction d'impression... Je vois aussi beaucoup de lignes manquantes dans mes tests. Mais lorsque j'imprime tout dans un fichier, rien ne manque.
Voici quelques informations sur le code : le temps de chaque tick GBPAUD sera utilisé pour obtenir les ticks les plus récents des autres paires (jusqu'au même moment), donc il retournera toujours quelque chose, ce ne sera pas zéro.
J'ai décidé de mettre la fonction dans une classe, ce qui devrait être plus ordonné. Voir la pièce jointe. Placez-la dans votre dossier expert, avec votre EA. N'hésitez pas à la modifier.
L'exemple suivant vous montre une façon de l'utiliser (les lignes surlignées sont essentielles) :
La clé est donc juste cette ligne :ticksInfo.getTick(<SYMBOL String>,<MqlTick Struct>). Si elle renvoie false, vous devrez vérifier le journal pour le message d'erreur.
Merci pour votre aide,
J'ai copié toutes ces lignes dans toutes les zones appropriées. Mais comme je ne comprends pas le code, veuillez me conseiller sur la façon de mettre les Ask et Bid de SecondPair dans Ask2,Bid2 et la même chose pour ThirdPair.
Voici ma zone globale :
Et Cette partie retourne 2 erreurs lors de la compilation. Que dois-je faire avec elles ?
'SecondPair' - expression constante requise MyEA !.mq4
ThirdPair' - expression constante requise MyEA !.mq4
Merci pour votre aide,
J'ai copié toutes ces lignes dans toutes les zones appropriées. Mais comme je ne comprends pas le code, veuillez me conseiller sur la façon de mettre les valeurs Ask et Bid de SecondPair dans Ask2,Bid2 et la même chose pour ThirdPair.
Voici ma zone globale :
Et Cette partie renvoie 2 erreurs lors de la compilation. Que dois-je faire avec elles ?
'SecondPair' - expression constante requise MyEA !.mq4
ThirdPair' - expression constante nécessaire MyEA !.mq4
Alors déclarez vos otherPairs de la même manière que allPairs. Et dans OnInit, faites ceci :
Et pour assigner des valeurs dans Ask2, Bid2, Ask3, Bid3, faites ceci dans OnTick :
Puis déclarez vos otherPairs de la même manière que allPairs. Et dans OnInit, faites ceci :
Et pour assigner des valeurs dans Ask2, Bid2, Ask3, Bid3, faites ceci dans OnTick :
Cela me donne à nouveau 00 :(
Ma zone globale :
OnInit :
OnDeinit :
OnTick :
Journal :
2019.05.14 17:37:14.686 2018.01.03 23:36:58 MonEA ! GBPAUD,H4 : Erreur GBPCAD
2019.05.14 17:37:14.686 2018.01.03 23:36:58 MyEA ! GBPAUD,H4 : Erreur GBPUSD
2019.05.14 17:37:14.686 2018.01.03 23:36:58 MyEA ! GBPAUD,H4 : GBPAUD tick numéro 221179, at 2018.01.03 23:36:58 000 Ask = 1.72479 Bid = 1.72459
2019.05.14 17:37:14.686 2018.01.03 23:36:58 MonEA ! GBPAUD,H4 : === Traiter maintenant le tick 221179
Où est-ce que je me trompe ?
Je suis désolé pour mon niveau zéro de compétence :D
Je reçois à nouveau 00 :(
Ma zone globale :
OnInit :
OnDeinit :
OnTick :
Où est-ce que je me trompe ?
Je suis désolé pour mon niveau zéro de compétence :D
Je suis désolé pour mon niveau zéro de compétence :D
OnInit - les 3 nouvelles lignes doivent aller avant tout.
Je l'ai fait. Mais c'est très étrange : le timer pour ces deux paires supplémentaires ne fonctionne pas...
Je l'ai fait. Mais c'est très étrange : la minuterie pour ces deux paires supplémentaires ne fonctionne pas...
Historique de téléchargement dans l'EA MQL4 - MQL4 et MetaTrader 4 - Forum de programmation MQL4
Corrigé
La fonction liée à, ouvre un graphique caché pour le symbole/TF en question (s'il n'est pas déjà ouvert,) mettant ainsi à jour l'historique, et plaçant temporairement le symbole sur Market Watch (s'il n'y est pas déjà,) afin que SymbolInfoDouble(symbol, SYMBOL_BID ) ou MarketInfo(symbol, MODE_BID ) ne retournent pas également zéro au premier appel.
Historique de téléchargement dans l'EA MQL4 - MQL4 et MetaTrader 4 - Forum de programmation MQL4
Corrigé
La fonction liée, ouvre un graphique caché pour le symbole/TF en question (s'il n'est pas déjà ouvert,) mettant ainsi à jour l'historique, et plaçant temporairement le symbole sur Market Watch (s'il n'y est pas déjà,) afin que SymbolInfoDouble(symbol, SYMBOL_BID ) ou MarketInfo(symbol, MODE_BID ) ne renvoient pas également zéro au premier appel.
Vous avez raison. Pas d'inquiétude cependant, car les seules choses que nous faisons dans OnInit, ici, sont d'initialiser les tableaux pour stocker les noms des symboles, et de préparer quelques handles de fichiers pour lire nos propres fichiers de données. Quant aux prix d'achat et de vente (c'est-à-dire les données de "tick"), nous n'y accédons que dans OnTick, et principalement à partir de nos propres fichiers de données, puisque le testeur de stratégie MT4 renvoie toujours des zéros lorsqu'il est interrogé sur les données d'autres symboles (notez que ce comportement diffère de la récupération des données OHLC, avec lesquelles les gens sont plus familiers).