Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 913

 
psyman:


Comment puis-je m'assurer que les données sont téléchargées ?

J'ai lu l'aide "Organiser l'accès aux données", mais je me demande s'il existe un moyen simple de s'en assurer.

https://www.mql5.com/ru/code/1251

il y a ce code dans l'aide mt5

Que voulez-vous dire par "un moyen facile" ? - ...Est-ce juste un moyen de vérifier si les données ont été téléchargées par l'esprit ? ))) - Soit vous écrivez tout vous-même à partir de zéro, soit vous utilisez les solutions prêtes à l'emploi de quelqu'un d'autre. Que ce soit le premier ou le second cas, cela demande du temps - soit pour écrire et développer votre propre code, soit pour vous occuper de la solution de quelqu'un d'autre, ce qui est plus facile - à vous de choisir.

 
Igor Makanu:

https://www.mql5.com/ru/code/1251

ce code est dans l'aide de mt5

Qu'est-ce que tu veux dire par la manière facile ? - par la force de l'esprit ? ))) - Soit vous écrivez tout vous-même à partir de zéro, soit vous utilisez la solution de quelqu'un d'autre. Dans les deux cas, cela prend du temps - soit vous écrivez et développez votre propre code, soit vous vous occupez de la solution de quelqu'un d'autre.

Merci pour le lien, la bibliothèque est un moyen facile :-)

C'est vrai, j'ai lu des commentaires disant qu'il gèle dans certains cas.

Si je comprends bien, le piping asynchrone pour une copie d'un indicateur est impossible, je dois attendre qu'il traite successivement toute la file d'attente pour chaque symbole ?

 
psyman:

Merci pour le lien, la bibliothèque est le moyen le plus facile :-)

Il est vrai que les commentaires disent que ça pend dans certains cas.

D'après ce que j'ai compris, le téléchargement asynchrone pour une copie d'un indicateur est impossible, je dois attendre qu'il récupère successivement toute la file d'attente pour chaque symbole ?

La bibliothèque ne gèle pas

le téléchargement de l'historique n'est possible que dans les conseillers experts, l'aide indique qu'il ne peut pas être utilisé dans les indicateurs.

indicateurs, encore une fois, exemples dans KB ou dans les articles, chercher multisymbole ou multidevise

 

Il y a des choses intéressantes dans Mql4. Voici un exemple. Supposons qu'il existe une fonction.

ArrayResize()

Il a le type int mais il peut être appelé comme une fonction procédurale (void) sans retourner une valeur? C'est intéressant.

 

Bonjour. Pouvez-vous m'indiquer comment le réparer ?

Sur la démo, l'Expert Advisor n'ouvre pas tous les ordres, donne l'erreur 129 (mauvais prix), bien que j'aie spécifié Ask/Bid dans OrderSend, le slippage est avec réserve. J'ai remarqué que lorsque je retire l'Expert Advisor, le terminal se bloque pendant 10 secondes et affiche dans le log

Dans le testeur, il n'y a pas d'erreurs ou de problèmes.

Dossiers :
 
Igor Makanu:

la bibliothèque ne gèle pas

Le téléchargement de l'historique n'est possible que dans les conseillers experts, le fichier d'aide indique qu'il ne faut pas l'utiliser dans les indicateurs.

indicateurs, à nouveau, exemples dans KB ou dans des articles, recherche multisymbole ou multidevise


Ici, l'auteur a mis l'initialisation des tableaux dans une bibliothèque séparée, quel est l'intérêt ?

Функции для инициализации массивов расположим в подключаемом файле InitArrays.mqh
 
psyman:


L'auteur a mis l'initialisation des tableaux dans une bibliothèque séparée, quel est l'intérêt de cela ?

Je ne sais pas, l'article est de 2013, peut-être plus tôt il fallait faire comme l'auteur de l'article, l'exemple de KB (il est aussi dans l'aide) fonctionne dans les EAs et les scripts sans problèmes, je l'utilise moi-même - je n'ai pas remarqué de problèmes.

Si j'ai besoin d'écrire un indicateur qui recevra des données d'un autre cadre temporel ou d'un autre symbole, je le trouverai dans les exemples de l' auteur.

 
Voici une question. Si j'ai défini 200 barres dans mon graphique, et que iBars() renvoie 200 (201 barres si je ne considère pas 0), je supprime 5 barres du côté droit de l'archive etles barres deviendront 195 (iBars() renvoie 195 barres) et le graphique sera plus court. J'ai remarqué que lorsque je fais cela, il incrémente le nombre de mesures une par une et ne charge pas 5 d'un coup, c'est très étrange, si je saute une très grande section, il comptera une mesure à la fois, je dois donc faire des vérifications à gauche. Comment fonctionne la fonction iBars(), renvoie-t-elle toutes les barres en même temps lorsqu'il y a une connexion ou fonctionne-t-elle d'une autre manière ?
 
Seric29:
Voici une question. J'ai reçu 200 barres dans mon graphique. iBars() a retourné 200 (201 barres si je ne considère pas 0), j'ai supprimé 5 barres du côté droit de l'archive et le nombre de barres était 195 (iBars() a retourné 195 barres), le graphique est devenu plus court et ensuite j'ai activé la connexion et ces 5 barres sont apparues dans le graphique et dans l'archive des citations. J'ai remarqué que lorsque je fais cela, il incrémente le nombre de mesures une par une et ne charge pas 5 d'un coup, c'est très étrange, si je saute une très grande section, il comptera une mesure à la fois, je dois donc faire des vérifications à gauche. Comment la fonction iBars() fonctionne-t-elle ? Renvoie-t-elle toutes les barres en même temps lorsqu'il y a une connexion ou fonctionne-t-elle d'une autre manière ?

Il récupère de manière incrémentielle les données manquantes jusqu'à ce que l'ensemble de l'environnement soit entièrement synchronisé. Dès qu'une barre est entièrement chargée, la valeur du nombre de barres a augmenté. Vous ne récupérerez pas immédiatement le nombre de barres manquantes - seul le nombre de données entièrement synchronisées sera retourné.

 
Artyom Trishkin:

Il y a un chargement progressif des données manquantes jusqu'à ce que l'ensemble de l'environnement soit entièrement synchronisé. Dès qu'une barre a été entièrement chargée, le nombre de barres est incrémenté. Vous ne récupérerez pas immédiatement le nombre de barres manquantes - seul le nombre de données entièrement synchronisées sera retourné.

Je vois, je suis juste en train de calculer pour les flux de barres pointues, je pensais que cela fonctionnait de manière univoque : par exemple, il manque 5 barres, vous allumez le réseau, il charge les données et passe autant de temps que nécessaire, et ensuite le nombre de barres est renvoyé pariBars() avec une différence possible de plus d'une. Les développeurs ont donc prévu d'alimenter les barres une par une, ce qui simplifie l'écriture du code mais, en cas de grandes sections manquées, cela créera un travail inutile pour le robot. Donc, quoi qu'il arrive, il chargera les barres une par une, 195, 196, 197, 198, 199, 200. Ce mécanisme est-il fiable ou peut-il se bloquer ou quelque chose peut-il arriver qu'au lieu de charger un segment à la fois, il charge le segment entier ?