[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 406
![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
Ainsi, si la demande est locale et non adressée au serveur, cette fonction devrait fonctionner instantanément ! Et il a été dit plus haut que la fonction RefreshRates() peut ne pas avoir le temps de mettre à jour les données de l'environnement de marché...
Où cela a-t-il été dit et par qui ? Il n'y a pas de problème du tout.
Donc, s'il n'y a pas de nouveau tick, le prix ne changera pas... et bien sûr, les prix précédents seront toujours valables. Il n'est donc pas nécessaire de compliquer les choses !
Et Vadim a écrit en haut qu'il était nécessaire de vérifier ce point. Mais il n'y avait aucune logique dans ses paroles, et aucune argumentation non plus. C'est étrange... J'insère donc RefreshRates() partout et à ce moment-là, les dernières données connues du terminal deviennent utilisables à la place des précédentes et tout se passe comme prévu. FourniRefreshRates() retourné TRU. Si c'est Faux, cela signifie que les données n'ont pas changé et que cela fonctionne avec les prix précédents... Est-ce que je raisonne correctement ?
Il s'avère qu'il n'y a pas besoin de s'embêter, il suffit d'appelerRefreshRates() et tout fonctionnera avec les données réelles...
C'est vrai.
avez-vous essayé break ;
interrompt les instructions while, for ou switch. Dans mon cas, il n'y a pas de tels opérateurs. Il y a une série d'instructions "si" qui doivent être interrompues à un moment donné.
Dans tous les cas, essayez ceci :
Il signale une erreur : break" - "break" ou "continue" utilisé uniquement dans certains cycles.Bid et Ask contiennent les valeurs au moment où la fonction Star() est lancée. La fonction MarketInfo() donne les valeurs réelles (les plus récentes). La fonction RefreshRates() met à jour les variables Bid et Ask.
2. Où avez-vous vu cela et comment êtes-vous arrivé à cette conclusion surprenante ?
3. Oui. Imaginez, il suffit de regarder la fenêtre d'aperçu du marché et de voir comment les chiffres rebondissent sans cesse.
4. Les variables Bid et Ask sont assignées (par le terminal) avec les valeurs qui existaient au moment où la fonction Start est lancée. Quelle que soit la durée d'exécution de la fonction, les valeurs de Bid et Ask seront les mêmes. Par conséquent, nous avons besoin de RefreshRates() ou d'utiliser MarketInfo().
1. Oui, c'est-à-dire qu'après start() nous avons 1 tick pour avoir le temps de tout calculer, sinon, si nous n'avons pas le temps, nous devons rafraîchir. C'est logique.
2. Vous l'avez écrit mot pour mot :
Entier:
S'il effectue de longs calculs, vous pouvez utiliser RefreshRates().
3. C'est ce que je veux dire.
Où, quand et par qui cela a-t-il été dit ? Il n'y a pas de problème du tout.
Ici, sur la page :
https://www.mql5.com/ru/forum/142582/page404 Vadim a écrit ceci,
Zhunko
RefreshRates() ; // Pourquoi ce frein sans traiter la valeur de retour ?
C'est ce qui m'a troublé, pour être honnête...
Ici, sur la page :
https://www.mql5.com/ru/forum/142582/page404 Vadim a écrit ceci,
C'est ce qui m'a troublé, pour être honnête...
Je vais vérifier lundi. Je peux me tromper.
==================================
De toute façon, sans RefreshRates() mes EAs ne fonctionneront pas. Je les fais en boucle. Par conséquent, la fonction RefreshRates() est obligatoire.
L'imposition initiale de l'histoire se fait sur la base de ce principe. Puis je le recharge périodiquement. Sinon, il y a des "trous" dans l'historique avec lequel le conseiller expert travaille. Je ne sais pas pourquoi cela arrive. J'ai essayé d'utiliser RefreshRates() pour la pagination. Cela ne fonctionne pas toujours. J'ai décrit le problème ci-dessus. Parfois, seule la dernière mesure entre en jeu.
Si le graphique d'un instrument est ouvert, il y a toujours un historique sur celui-ci. Il n'y a jamais eu d'erreur dans cette affaire. Le "trou" est apparu lorsque la carte de l'instrument requis n'était pas ouverte.
Le manuel indique que l'opérateur
interrompt les instructions while, for ou switch. Dans mon cas, il n'y a pas de tels opérateurs. Il y a une série d'instructions if qui doivent être interrompues à un certain moment.
Dans tous les cas, essayez de cette façon :
Une erreur est signalée : break" - "break" ou "continue" utilisé uniquement dans certains cycles.Si vous cherchez GoTo, cet opérateur n'existe pas, mais comme la pratique le montre, vous n'en avez pas besoin. Pour être en mesure de vous recommander une solution, il faut voir votre cible. Montrez-moi votre algorithme en termes généraux.
Si vous cherchez un opérateur "GoTo", cela n'existe pas, mais comme la pratique le montre, vous n'en avez pas besoin. Pour être en mesure de recommander une solution, vous devez voir votre cible. Montrez-moi votre algorithme en termes généraux.
Merci, j'ai déjà trouvé un moyen de résoudre le problème.
Ici... et beaucoup de gens le font... Ils posent une question qui peut intéresser d'autres débutants. Puis ils trouvent une solution et, au lieu de la montrer, ils disent : "Oh, merci beaucoup à tous, j'ai trouvé et fait, vous n'avez pas à avoir peur de moi toute la semaine...". " ... et ils pensent que c'est la fin de tout ça... Et la solution à ce problème n'a jamais été démontrée. Et ça tourne en rond, en rond... Le suivant revient avec la même question.
Dites-moi seulement ce qui est si terriblement secret dans votre algorithme et comment le résoudre, que dès qu'on vous a demandé de montrer l'algorithme en termes généraux, en essayant de vous aider, vous vous êtes immédiatement désinscrit en disant que tout est "grain de sel" ?
Alors ne posez pas de questions inutiles si vous ne pensez pas aux autres questionneurs... ou trouvez vous-même une solution (hé bien tant mieux pour vous !!!) et montrez-la aux autres...
De toute façon, sans RefreshRates() mes EAs ne fonctionneront pas. Je les fais en boucle. Par conséquent, la fonction RefreshRates() est obligatoire.
Le chargement de l'historique initial est effectué sur ce principe. Puis je le recharge périodiquement. Sinon, il y a des "trous" dans l'historique avec lequel le conseiller expert travaille. Je ne sais pas pourquoi cela arrive.
J'ai essayé d'utiliser RefreshRates() pour la pagination. Cela ne fonctionne pas toujours.
Mais RefreshRates() sert à mettre à jour les variables de l'environnement du marché, et non à la pagination. Bien sûr, ça ne s'échange pas.
Parfois, seule la dernière mesure arrive.
Si le graphique d'un instrument est ouvert, il y a toujours un historique pour celui-ci. Il n'y a pas eu d'erreur dans cette affaire. L'erreur est apparue lorsque le graphique de l'instrument requis n'était pas ouvert.