Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 76
![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
problème résolu en comparant les prix
Dans ce contexte, mon point de vue est le suivant :
Pour cette raison, il serait préférable d'avoir des tableaux globaux - pour les ordres et les positions fermés et ouverts. Lors d'un nouveau tick, nous passons une fois la quantité nécessaire d'ordres/positions, en remplissant les deux tableaux avec eux. Et ensuite, nous obtenons d'eux toutes les données nécessaires sur le même tic-tac. Notez que non seulement le dernier ordre/position fermé/ouvert et toutes ses données sont calculés, mais aussi tous les ticks parents et enfants de toutes les positions sont recherchés en cas de clôture partielle. Ainsi, à tout moment, je peux voir de quel ticket provient telle ou telle position, si elle a été partiellement fermée plus d'une fois - tout cela fonctionne déjà dans une classe qui tourne dans un timer. J'ai besoin de nombreuses autres données avec un petit nombre total de cycles. La profondeur d'historique nécessaire pour les tableaux est définie pour le testeur.
Et ainsi de suite...
Désolé. Un autre ajout (pas pour contrebalancer, mais comme un ajout), j'aimerais ajouter que les tableaux locaux avecstatic ne sont pas perdus. C'est-à-dire, si les conditions vous permettent de ne pas les déclarer globalement.
Je suis en train de le réécrire lentement pour 5. Je veux dire que le prix peut changer très rapidement et que le niveau peut être inférieur à la valeur stop-loss, ce qui entraînera une erreur. Je veux dire que le prix peut changer très rapidement et que le niveau sera inférieur au niveau d'arrêt autorisé, ce qui entraînera une erreur.
Je comprends que ce"SymbolInfoTick" est nécessaire pour obtenir le prix actuel ?
Donc, pour obtenir l'offre et la demande réelles dans mql4, le rafraîchissement aurait dû être appelé de toute façon. Et il s'avère que la charge est peu susceptible de changer par rapport à l'appel de SymbolInfoTick().
Mais voici un autre ajout : j'écris SymbolInfoTick() dans la boucle suivante pour obtenir des prix précis
while(!SymbolInfoTick(_Symbol, mqlTick));
Si nous obtenons des prix normaux dès la première fois, cette boucle n'augmentera pas le temps d'exécution. Et s'il y a un échec, il vaut mieux répéter que d'obtenir le même prix au lieu du prix actuel.
Donc, pour obtenir l'offre et la demande réelles dans mql4, vous devez appeler refresh de toute façon. Et il s'avère que la charge est peu susceptible de changer par rapport à l'appel de SymbolInfoTick().
Mais voici un autre ajout : pour obtenir sans erreur les prix réels, je mets SymbolInfoTick() dans cette boucle
while(!SymbolInfoTick(_Symbol, mqlTick));
Si nous obtenons des prix normaux dès la première fois, cette boucle n'augmentera pas le temps d'exécution. Et s'il y a un échec, il vaut mieux répéter que d'obtenir le même prix au lieu du prix actuel.
Je vois, mais où dois-je le mettre, à l'intérieur du cycle, ou avant ?
Donc, pour obtenir l'offre et la demande réelles dans mql4, vous devez appeler refresh de toute façon. Et il s'avère que la charge est peu susceptible de changer par rapport à l'appel de SymbolInfoTick().
Mais voici un autre ajout : pour obtenir sans erreur les prix réels, je mets SymbolInfoTick() dans cette boucle
while(!SymbolInfoTick(_Symbol, mqlTick));
Si nous obtenons des prix normaux dès la première fois, cette boucle n'augmentera pas le temps d'exécution. Et s'il y a un échec, il vaut mieux répéter que d'obtenir le même prix au lieu du prix actuel.
Et si elle ne le reçoit pas du tout ? Comment ralentir le cycle ?
Oui, logiquement, cela pourrait être, par exemple, que le terminal a perdu la connexion - il y a beaucoup de raisons pour cela, j'ai eu des pertes de connexion 50 fois par jour.
Quel est le meilleur moyen d'obtenir des prix actualisés, tout en étant moins gourmand en ressources, remarquez - pour la recherche sur le réseau.
Oui, logiquement, cela pourrait être, par exemple, que le terminal a perdu la connexion - il y a beaucoup de raisons pour cela, j'ai eu des pertes de connexion 50 fois par jour.
Quel est le meilleur moyen d'obtenir des prix actualisés, tout en étant moins gourmand en ressources, rappelez-vous - pour le chalutage du réseau.
Retournez 10 pages en arrière, il y a un très bon schéma.