Servicedesk. Plaintes, suggestions. - page 7

 
Ilya Malev:
Je viens de trouver votre problème déjà dans MT5 dans un indicateur, sans sortir d'une boucle OnTimer, je vérifie la série temporelle sur un autre symbole/période (pas celle en cours) - la fonction me dit qu'elle est construite et donne le nombre correct de barres. Immédiatement après, j'appelle une autre fonction pour construire l'indicateur - à l'intérieur de cette fonction, appelée à partir du même appel de OnTimer, la timeseries parvient à être déchargée et le SeriesInfoInteger renvoie des zéros. J'ai dû intégrer une vérification cyclique supplémentaire, afin que tout se construise sans ticks entrants.

Quelle est la structure du terminal MT5 ? Mikhail a écrit que MT5 build 1200 devrait convenir :

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Service Desk. Plaintes, suggestions.

Mikhail, 2015.10.29 17:46

J'ai soulevé le problème des données dans les indicateurs il y a longtemps !

https://www.mql5.com/ru/forum/42180

On m'a assuré que le problème avait été résolu.

Ils en ont même parlé dans le résumé du communiqué de presse de 1200.

17: Terminal : Correction d'un bogue qui entraînait le déchargement des données historiques comme étant inutilisées, malgré des accès réguliers aux données par les programmes MQL5.

Et si la construction est récente, mais que l'erreur persiste - allez voir servicedesk avec des preuves !

 
Alexey Kozitsyn:

Quelle est la structure du terminal MT5 ? Mikhail a écrit que MT5 build 1200 devrait convenir :

Si la construction est nouvelle et que l'erreur est toujours présente, allez voir le Service Desk avec des preuves !

La construction est la même que celle du 1200/64. Pour reproduire l'erreur, je dois simuler la situation que j'avais dans un produit assez complexe, que je ne peux pas envoyer au bureau. Je le ferai dès que je serai libre du travail pour un moment.
 

L'auteur du sujet a reçu des conseils sur son problème dans la première réponse, qu'il a ignorés.

Stanislav Starikov| 10.29 12:41

Pour obtenir les données réelles de la période de symbole de quelqu'un d'autre, vous devez accéder à ces données plus fréquemment qu'une fois toutes les 10 secondes. Ou bien accéder à ces données à partir d'Expert Advisor, par exemple en utilisant iTime (les données sont alors accessibles au moins une fois toutes les 3 minutes).


L'auteur du sujet a manifestement suivi ce conseil, car son indicateur contient du code commenté qu'il a présenté ici.

         //if( bars_count == 0 || firstDate == 0 || serv_firstDate == 0 )
         //     {
         //      Print( "Подкачка iTime()" );
         //      datetime tm = iTime( _Symbol, period, 0 );
         //     }

Si vous insérez l'appel inconditionnel iTime(_Symbol,period,0) dans OnInit et au début de OnCalculate, vous n'aurez pas les problèmes décrits ci-dessus.

Le SeriesInfoInteger collecte simplement les informations déjà existantes sans appeler le data swap, et c'est logique.

 
Slawa:

L'auteur du sujet a reçu des conseils sur son problème dans la première réponse, qu'il a ignorés.

Stanislav Starikov| 10.29 12:41

Pour obtenir des données réelles à partir de la période de symbole de quelqu'un d'autre, vous devez accéder à ces données plus fréquemment qu'une fois toutes les 10 secondes. Ou accéder à ces données depuis Expert Advisor, par exemple en utilisant iTime (les données sont alors accessibles au moins une fois toutes les 3 minutes).


L'auteur du sujet a manifestement suivi ce conseil, car il y a du code commenté dans son indicateur, qu'il a présenté ici.

Si vous insérez l'appel inconditionnel iTime(_Symbol,period,0) dans OnInit et au début de OnCalculate, vous n'aurez pas les problèmes décrits ci-dessus.

SeriesInfoInteger collecte simplement des informations déjà existantes sans appeler le data swap, et c'est logique.

Vyacheslav, à qui t'adresses-tu maintenant ? Moi ? Ou à Ilya ?

Si vous vous adressez à Ilya, il parle déjà de mql5. Veuillez lire attentivement avant de répondre. Je vous ai dit plus d'une fois que vous êtes pressé de répondre sans entrer dans les détails.

J'ai vu votre conseil, le code commenté le confirme, merci, cela m'a aidé. Depuis que Renat a dit que le déchargement agressif des données sera corrigé, il est inutile de continuer à discuter de mql4.

Mais si la même situation continue dans mql5, alors qu'elle devrait être corrigée à partir de la build 1200, alors que faire ?

Encore une fois, si vous (les développeurs) n'avez pas l'intention de changer quoi que ce soit dans mql4, ajoutez à la documentation que SeriesInfoInteger() ne rassemble que les informations existantes, et c'est tout ! Toutes les questions disparaîtront, ou vous pourrez simplement mettre votre nez dans la documentation !

 
Alexey Kozitsyn:

Vyacheslav, à qui parles-tu maintenant ? Moi ? Ou à Ilya ?

Puisque iTime a été mentionné, il s'agit évidemment de MT4. Je n'ai pas encore donné d'exemple de code spécifique pour me répondre.
 
Ilya Malev:
Puisque iTime a été mentionné, il s'agit clairement de MT4. Je n'ai pas encore donné d'exemple de code spécifique pour me répondre.
J'ai compris, mais il est plus probable qu'on vous ait adressé la parole. Mais vous avez parlé d'une erreur dans mql5.
 
Alexey Kozitsyn:
J'ai compris, mais ça s'adressait probablement à vous aussi. Mais vous avez parlé d'une erreur dans mql5.
Je ne suis pas l'auteur du sujet :)
 
Ilya Malev:
Je ne suis pas le topicstarter :)
Oui, mais le post était comme une explication de ce que, selon Vyacheslav, je n'avais pas compris.
 
Alexey Kozitsyn:
Oui, mais le post était comme une explication de ce que, selon Vyacheslav, je n'avais pas compris.

Je pense que c'est une façon de te parler :)

Je reviendrai sur mon problème et fournirai un code de vérification. A moins que quelque chose ait été corrigé dans la version 1210. Jusqu'à présent, j'ai fait un contrôle cyclique et j'ai continué, pas le temps de m'arrêter.

 
Ilya Malev:
Ecrivez ensuite le résultat de vos expériences avec l'historique dans MT4).

J'ai commencé à expérimenter le chargement de l'historique à partir de zéro. C'est-à-dire que je supprime tout l'historique par symbole et je démarre le terminal. Paramétrage du terminal : nombre maximum de barres dans la fenêtre = 5000.

Si vous utilisez un script similaire à celui de Data Access Organization dans MT5, vous pouvez constater que l'historique est chargé soit au nombre maximum de barres, soit à la dernière date sur le serveur.

En utilisant un schéma similaire dans MT4, les données ne sont pas chargées. C'est-à-dire qu'au départ, environ 2050 sont disponibles, et pour obtenir plus d'historique, vous devez faire défiler le graphique jusqu'à la profondeur de l'historique.

J'ai également remarqué une particularité. Lors du défilement, si de nouvelles barres sont chargées, prev_calculated est remis à 0 (fonctionne comme le bouton "refresh").

Chers développeurs. Veuillez commenter s'il existe un moyen d'échanger l'historique sans utiliser le défilement du graphique (MT4 !).

Raison: