[Erreur dans la récupération de l'heure du senior TF dans le chronomètre ! - page 8
![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
3. point d'analyse intéressant, ce que retourne CopyClose(), je l'ai vérifié moi-même, s'il n'y a pas de fichier .hst pour le TF demandé, CopyClose() ne retourne jamais plus de 2048 - c'est-à-dire que c'est la valeur maximale qui peut être téléchargée ?
No. 2048 est la partie des données qui est téléchargée du serveur lorsqu'il n'y a pas de fichier sur le client.
Non. 2048 est un morceau de données qui est téléchargé du serveur quand il n'y a pas de données sur le client.
Hm, je fais des MQL depuis longtemps, mais c'est toujours inattendu pour moi.
OK, voici un exemple tiré de l'aide: https://www.mql5.com/ru/docs/series/timeseries_access
il est dit que :
Le prochain contrôle important consiste à vérifier le type de programme à partir duquel la fonction est appelée. Rappelons que l'envoi d'une demande de mise à jour de séries temporelles avec la même période que l'indicateur demandant la mise à jour est hautement indésirable. Le caractère indésirable de la demande de données de la même période que celle de l'indicateur est déterminé par le fait que la mise à jour des données historiques est effectuée dans le même thread, dans lequel l'indicateur travaille. Il y a donc une forte probabilité de conflit. Pour le vérifier, nous utilisons la fonctionMQL5InfoInteger() avec le modificateurMQL5_PROGRAM_TYPE.
c'est-à-dire l'exemplehttps://www.mql5.com/ru/code/449
il ne convient pas pour le chargement de données historiques dans un indicateur MT4, et comment puis-je télécharger l'historique complet par l'indicateur, s'il n'y a pas de fichier .hst préparé, c'est-à-dire que l'indicateur initialise le chargement de l'historique par son propre symbole.
comment puis-je savoir qu'ici j'ai "téléchargé" l'historique complet égal à iBars(Symbol(),PERIOD_CURRENT) ;
iBars() retournera également une valeur incorrecte ? - il n'y a pas encore d'historique, donc il n'y a pas de iBars()
il semble que dans MT5 l'historique est téléchargé sans problèmes, il faut juste attendre et vérifier le statut des données historiques, mais dans MT4 ?
PS : dans kodobase hier je cherchais un indicateur multidevise fonctionnant correctement pour MT4, mais les codes ne sont pas sujets à imitation, dans de nombreux exemples de kodobase, en général il n'y a pas de pagination de l'historique dans l'indicateur
Chez les quadruplés, la touche "home" a été enfoncée. Il n'y a pas d'autre moyen. Si vous étudiez le sujet depuis un certain temps, vous devez vous souvenir de l'expression "brique sur le clavier".
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Vous pouvez consulter mon programme de téléchargement gratuit.
Vous pouvez voir mon téléchargeur gratuit.
Je sais comment télécharger l'historique, mais je ne sais pas comment vérifier l'indicateur de téléchargement.
En quadruple "appuyez sur la touche d'accueil". Il n'y a pas d'autre moyen. Si vous étudiez le sujet depuis longtemps, vous devez vous souvenir de l'expression "brique sur le clavier".
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Lorsque j'ai commencé à utiliser MQL ces dernières années, je n'ai pas du tout appris MQL, depuis cette année, je suis vraiment surpris que les développeurs aient rendu la compatibilité entre MT5 et MT4 aussi grande que possible et aient amélioré les performances de MQL4 - même si on nous a dit auparavant que MT4 en tant que projet ne sera plus développé, il n'y a que des bugs à corriger.
et voici un espoir que je n'ai pas trouvé d'information sur le chargement automatique de l'historique dans l'indicateur MT4
Fondamentalement, si vous voulez garantir le téléchargement de tout l'historique dans MT4 et sans vérifications supplémentaires, alors il est plus facile d'utiliser le code dfix - écrire la date de la barre t=0 dans le fichier .hst ;
Alors comment suggérez-vous que je regarde votre code ?
Je pensais que vous aviez juste besoin que l'historique soit chargé automatiquement...
À mon grand regret, je dois revenir une fois de plus sur le sujet de l'obtention de données TF senior dans MT4. Cette fois, c'est parce que les techniques suggérées ici n'ont pas fonctionné.
Voici le code que nous utilisons :
Il met en œuvre la pagination des données comme on me l'a conseillé :
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
[SERVICESDESK] Erreur dans la récupération de l'heure de l'ancien TF dans le timer !
Slava, 2018.09.27 06:20
Ce sujet a été abordé à de nombreuses reprises. 12 pages sur "erreur 4066".
Et on vous a conseillé à juste titre d'envoyer la requête dans OnInit et de l'analyser dans OnCalculate.
Pourquoi avez-vous besoin d'une minuterie en millisecondes ? Vous empêchez le terminal client de démarrer normalement. Ce ne sont pas les messages du vent qui interfèrent avec votre minuterie, c'est votre minuterie qui interfère avec tout le monde. Encore une fois : LES INDICATEURS DANS LE TERMINAL MT4 DU CLIENT TRAVAILLENT EN POTENTIEL D'INTERFACE.
L'implémentation est exactement la suivante : la première demande de données a lieu dans OnInit(). Ensuite, nous attendons que la connexion avec le serveur commercial soit établie, puis dans OnCalculate() ! nous obtenons les données du TF élevé. Nous obtenons le résultat lors du premier lancement aujourd'hui :
Comme nous pouvons le voir dans le journal, nous avons obtenu des valeurs erronées pour l'heure et le jour.
Oui, les développeurs(@Slava) peuvent remarquer que je n'ai pas appliqué tous les conseils qui m'ont été donnés. En d'autres termes, j'exécute toujours le timer rapide dans OnInit(), bien qu'on m'ait conseillé à l'origine d'exécuter le timer lent. Cependant, dans ce cas, c'est fait exprès. Si la minuterie rapide est lancée dans le thread de l'interface et qu'elle peut ralentir la récupération des données des autres indicateurs, cela pose un gros problème. La documentation ne contient aucun avertissement à ce sujet, vous pouvez mettre un programme avec une minuterie rapide qui peut devenir une sorte de "virus" et provoquer des "pannes" d'autres programmes.
Au vu de ce qui précède, je pense que nous devrions soit introduire des restrictions sur le timer en millisecondes, soit préciser dans la documentation de EventSetMillisecondTimer() que la fonction ne peut pas être lancée dans OnInit() pour permettre au terminal de se lever normalement au démarrage.
Maintenant, la partie amusante. Le code est sans aucune minuterie :
Et vous n'arrivez toujours pas à obtenir le résultat que vous voulez. Les développeurs(@Slava), veuillez commenter. Il est impossible d'obtenir des données correctes lors du chargement du terminal à partir de plusieurs TF supérieurs. La condition obligatoire est que le terminal doit être éteint plus d'une heure après l'arrêt (car nous obtenons des données de la barre d'une heure). Et, bien sûr, démarrage sur TF moins d'une heure.
Le chronomètre s'est avéré ne pas être impliqué.