Le problème du transfert de MT4 à MT5. Ou, plus précisément, l'impossibilité d'exécuter certains algorithmes dans MT5 sans "err". - page 3

 
Eugeni Neumoin:

J'ai essayé de répondre à la question. Les données ne sont pas disponibles.

Le journal est dans l'infobulle. Le code pour l'infobulle est donné. La série chronologique a été générée. Un graphique avec W1 séries temporelles est construit. Dostap est absent. La fonction iBarShift génère une erreur. La même erreur n'apparaît pas dans MT4.

Une fois de plus, vous ignorez la demande de montrer le code et le résultat du travail.

Veuillez fournir un code MQL5 reproductible.

 
Eugeni Neumoin:

Artem, c'est vous qui avez supprimé mon message dans le fil de discussion de l'article. Où ai-je répondu à la demande d'un membre du forum ?

Je ne faisais qu'aborder le sujet soulevé dans ce fil de discussion du forum. Et cette attitude cavalière m'a mis en colère. J'ai donc créé ce fil de discussion sur le forum.

======

J'ai déjà eu des désaccords sur ce forum. Vous ne voulez pas discuter ici. Il existe de nombreux forums où vous pouvez dire beaucoup de choses sans être censuré.

En 2005, un modérateur (HQ) a fait quelque chose de similaire sur le forum Alpari. Et ensuite, presque tout le forum est passé d'Alpari à Onyx.

Non, je n'ai rien supprimé.

 
Vladimir Karputov:

Une fois de plus, vous ignorez la demande de montrer le code et le résultat du travail.

Veuillez fournir un code MQL5 reproductible.

Le problème est que le code compte environ 50 000 lignes. Je ne le publierai pas.

La situation est flottante. Mais... Je vais essayer de créer un autre code. Il ne sera pas petit non plus.

Et cela prendra du temps.

J'espère que vous avez lu mes liens dans le guide linguistique auquel je fais référence. Il est écrit noir sur blanc par quelqu'un de Metakvotes que l'accès aux données peut être interrompu à tout moment.

Voici la citation complète du manuel de langue :

Disponibilité des données.

La disponibilité des données au format HCC ou même au format HC prêt à l'emploi ne signifie pas toujours que ces données sont inconditionnellement disponibles pour être affichées sur un graphique ou pour être utilisées dans des programmes mql5.

Lorsque nous accédons aux données de prix ou aux valeurs d'indicateurs à partir des programmes mql5, nous devons nous rappeler qu'il n'est pas garanti qu'elles soient disponibles à un certain moment, ou à partir d'un certain point dans le temps. Cela est dû au fait que MetaTrader 5 ne stocke pas la copie complète des données requises pour le programme mql5, mais donne un accès direct à la base de données du terminal afin d'économiser des ressources.

L'historique des prix pour toutes les échéances est construit à partir des données communes au format HCC et toute mise à jour du serveur entraîne la mise à jour des données pour toutes les échéances et le recalcul des indicateurs. Par conséquent, l'accès aux données peut être refusé même si ces données étaient disponibles il y a un instant.

Vous pouvez également le faire d'une manière plus simple. Plusieurs personnes ont déjà acheté ce programme. Si je reçois des plaintes de leur part concernant ce fil, je publierai leurs messages ici. Et que chacun sache que cela est stipulé par les développeurs du langage : l'accès aux données peut être refusé même si ces données étaient disponibles il y a un instant.

 
Eugeni Neumoin:


Fournir les paramètres du terminal avec le code : nombre de barres sur le graphique.

 
Vladimir Karputov:

Fournir les paramètres du terminal avec le code : nombre de barres sur le graphique.

Le nombre de barres est la valeur par défaut. Quelque part autour de 100 000. Et l'accès est refusé dans les exemples ci-dessus à 271 bars.

 
Eugeni Neumoin:

Le nombre de barres est par défaut. Quelque part autour de 100 000. Et l'accès est refusé dans les exemples ci-dessus à 271 bars.

Lorsqu'on travaille déjà sur H1, cela représente un nombre négligeable de barres.

Donc : code reproductible, paramètres du terminal(nombre de barres sur le graphique).


Sans ce minimum, il n'y a tout simplement rien à discuter - car jusqu'à présent, c'est de l'air.

 
Eugeni Neumoin:

Le nombre de barres est par défaut. Quelque part autour de 100 000. Et l'accès est refusé dans les exemples ci-dessus à 271 bars.

Toutes les deux minutes, nous devons obtenir les données de toutes les périodes et symboles utilisés dans l'indicateur.

Dans le handler OnTimer(), en d'autres termes - dans le timer, appliquer une fois toutes les 90 secondes à tous les timeframes, qui sont nécessaires pour le travail de l'indicateur. Vous pouvez utiliser n'importe quelle fonction de copie. Il suffit de récupérer les données "au milieu de nulle part", par exemple à partir de la première barre ou de la barre actuelle pour chaque période utilisée. Cela sera suffisant pour maintenir à jour toutes les données pour toutes les périodes.

Et au tout début de OnCalculate(), vérifiez ce que retourne la fonction qui accède aux données des délais souhaités. S'il renvoie -1, alors sortez avant le prochain tick.

 
Artyom Trishkin:

Toutes les deux minutes, vous devez recevoir les données de toutes les périodes et de tous les symboles utilisés dans l'indicateur.

Dans le gestionnaire OnTimer(), en d'autres termes - dans le timer, toutes les 90 secondes environ, adressez tous les délais, qui sont nécessaires pour le travail de l'indicateur. Vous pouvez utiliser n'importe quelle fonction de copie. Il suffit de récupérer les données "au milieu de nulle part", par exemple à partir de la première barre ou de la barre actuelle pour chaque période utilisée. Cela sera suffisant pour maintenir à jour toutes les données pour toutes les périodes.

Et au tout début de OnCalculate(), vérifiez ce qui est renvoyé par la fonction, qui accède aux données des échéances souhaitées. Si c'est -1, il faut sortir avant le prochain tick.

Pas de problème avec OnCalculate(). L'ensemble de l'interface graphique fonctionne grâce à OnChartEvent() . Il y a plus de 400 boutons dans l'interface graphique. Certains boutons n'interagissent en aucune façon avec la série chronologique. Les fonctions OnCalculate() et OnTrade() peuvent attendre le prochain tick. Cela n'est pas perceptible sur le plan psychologique. Et c'est plus compliqué avec OnChartEvent(). La psychologie humaine est ici impliquée. L'utilisateur du programme appuie sur le bouton GUI. Et il/elle n'obtient pas la réponse qu'il/elle souhaite. Quelle est sa réaction ? L'une des réactions est qu'il/elle appuie une seconde fois sur le même bouton. J'ai fait en sorte qu'une deuxième pression sur de nombreux boutons désactive la fonctionnalité liée à ce bouton. J'anticipe votre suggestion de rendre l'action du bouton désactivable d'une autre manière. Mais il existe le même programme pour MT4. Il y fonctionne normalement. Il s'avère que MT4 a un algorithme d'interaction avec l'interface graphique tandis que MT5 en a un autre. Un tel comportement du même programme ne peut que provoquer le rejet.

J'ai fait quelque chose de similaire lors de la traduction vers MT5 - j'ai activé la sortie de OnChartEvent(). Je ne veux pas mentir, c'est pourquoi l'interface graphique était en train de mourir.

Et dans mon cas, la référence à la timeseries dans OnTimer() se produit après 5 minutes. Je le ferai après 2 minutes. Je vais vérifier ce qui va se passer.

Artem, vos suggestions étaient également utiles auparavant.

 
Vladimir Karputov:

Lorsque l'on travaille déjà sur H1, le nombre de barres est négligeable.

Donc : code reproductible, paramètres du terminal(nombre de barres sur le graphique).


Sans ce minimum, il n'y a tout simplement rien à discuter - car jusqu'à présent, c'est de l'air.

Veuillez ne plus vous mêler des problèmes que je soulève sur le forum.

La communication avec vous n'a rien donné d'utile, ni avant ni maintenant.

Vous pouvez écrire quelque chose dans d'autres branches du forum. Et dans mes branches s'il vous plaît ne participez pas.

 
Artyom Trishkin:

J'ai fait en sorte que tous les horizons temporels soient accessibles toutes les deux minutes. Le contrôle de l'accès aux échéances dansOnCalculate() ne semble pas causer de difficultés dans le fonctionnement du programme.

Mais la vérification dansOnChartEvent() affecte le fonctionnement. Dans certains cas, l'interface graphique refuse de fonctionner.

Je vais observer comment le programme fonctionne lorsque tous les tf sont accédés une fois toutes les deux minutes.

================

À propos, j'ai trouvé une autre différence entre MT5 et MT4.

La liaison des outils graphiques via l'interface graphique est effectuée sur des nombres d'extrémités de zagzags ou des symboles de balisage d'ondes.

La liaison a lieu lorsque le programme "voit" le nombre ou le symbole. Laissez-moi vous expliquer ce que cela signifie. Lorsque vous survolez un chiffre ou un symbole, une info-bulle apparaît.

Si l'infobulle apparaît, alors le programme "voit" le nombre ou le symbole. S'il n'y a pas d'infobulle, le nombre ou le symbole reste invisible. L'outil graphique n'est pas attaché. Par conséquent, l'outil graphique n'apparaît pas sur le graphique.

Si, par exemple, le Pitchfork d'Andrews est déjà lié à ce nombre ou symbole (je ne l'ai pas vérifié avec d'autres outils graphiques), l'info-bulle apparaît dans MT4. Mais l'infobulle apparaît très rarement dans MT5. Mais si je cache la fourchette d'Andrews liée au numéro donné, l'info-bulle s'affichera normalement.

J'ai l'impression que s'il y a d'autres objets graphiques à proximité du nombre, MT5 sera moins sensible lors de l'affichage de l'infobulle. Mais je n'exclus pas que cela se produise parce que MT5 doit effectuer des mises à jour supplémentaires des séries chronologiques qui ne sont pas disponibles dans MT4. Ces mises à jour supplémentaires peuvent entraîner un retard dans certaines fonctions de MT5. (C'est mon imagination. Je ne connais pas les rouages de MT5).

Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Определение трендов, построение каналов, выявление циклов и уровней поддержки/сопротивления — все эти и многие другие задачи решаются при помощи аналитических объектов. Всего в торговой платформе доступно 46 таких инструментов. Среди них имеются геометрические фигуры, различные каналы, инструменты Ганна, Фибоначчи, Эллиотта и многое другое. В...
Raison: