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

 

Tout d'abord, une citation du guide linguistique de MQL5. Sous le titre Organiser l'accès aux données.

"...L'accessibilité des données

La disponibilité des données au format HCC ou même au format HC ready ne signifie pas toujours l'accessibilité inconditionnelle de ces données pour les afficher sur des graphiques ou pour les utiliser dans des programmes mql5.

Lorsque vous accédez aux données de prix ou aux valeurs d'indicateurs à partir des programmes mql5, vous devez vous rappeler qu'il n'est pas garanti qu'elles soient disponibles à un certain moment, ou à partir d'un certain point dans le temps...".

Dans l'immédiat, veuillez ne pas donner de conseils sur la manière de contourner le problème décrit. Ce document s'adresse principalement aux développeurs MQL5.

L'algorithme de filtrage fractal est implémenté dans le ZUP pour MT4. LeZUP est un zigzag universel avec des motifs Pesavento. L'interface graphique est un peu écrite à son sujet. Mais ici, je vais décrire l'algorithme une fois de plus.

Lors de l'affichage d'outils graphiques sur un graphique avec la liaison d'outils graphiques sélectionnés (par exemple Andrew's Pitchfork, ou tout autre) pour zigzaguer les extrêmes ou les modèles de vagues en utilisant l'interface graphique, l'algorithme de filtrage fractal est engagé.

Le filtrage fractal supprime l'outil graphique créé aux échéances où la sortie de cet outil graphique perd sa signification.

Par exemple, il n'y a pas de cotations pour l'extremum sélectionné sur certaines périodes (ceci est pertinent pour les périodes inférieures) ou deux extrema ou plus apparaissent dans le corps d'une barre sur des périodes supérieures avec des variations d'emplacement dans la barre.

Il n'est pas logique d'afficher un outil graphique précédemment créé sur de telles échéances. Il perd sa fonctionnalité. Dans ce cas, le filtrage fractal empêche automatiquement l'affichage d'outils graphiques "en difficulté". J'ajouterai pour les réseaux neuronaux au fur et à mesure... il y a des idées très intéressantes sur l'implémentation dans les réseaux neuronaux... ... mais c'est un autre sujet.

Le problème avec MQL5 est que même après avoir généré des séries temporelles sur tous les horizons temporels pour tous les extrema attachés à un outil graphique, il y a des moments où l'accès à certains horizons temporels pour l'extremum sélectionné est interrompu en raison de particularités de l'accès aux données (voir ci-dessus). En conséquence, des données incorrectes sur les délais pour l'algorithme de filtrage fractal sont générées. C'est-à-dire que, par exemple, en accédant à tous les délais, le cf supérieur des données pour le filtrage fractal donne la valeur du cf supérieur du délai mensuel. Mais à l'heure où l'accessibilité n'est pas garantie, le tf supérieur de cet extremum est limité au cadre temporel actuel.

Un utilisateur clique sur le symbole auquel est attaché un outil graphique. Le symbole du graphique s'affiche. L'utilisateur passe à l'ancienne période. L'algorithme du filtre fractal supprime l'outil graphique. L'utilisateur est perplexe. Les extrêmes sont tous visibles, mais l'outil graphique disparaît.

Et ici, il est impossible d'organiser l'attente de la liaison des symboles du graphique après qu'un utilisateur ait cliqué sur un symbole sélectionné jusqu'au moment de l'accès à des séries temporelles différentes de l'horizon temporel actuel.

Il n'y a pas de tels problèmes dans MT4.

Cette situation est le problème qui m'a empêché, dans ce cas, de développer des programmes pour MT5. Ce problème était clair même lorsque MT5 a été introduit sur le marché...

J'ai traduit le code ZUP en MT5. Et je l'ai placé dans mon marché. Mais le problème décrit ci-dessus y est présent. Je n'ai pas construit de béquilles pour contourner le problème. Si vous êtes au courant de ce problème, vous pouvez simplement supprimer l'outil graphique créé. Et l'afficher à nouveau. Mais c'est, comment dire si gentiment, .....

Je pense que le problème décrit ci-dessus est toujours une imperfection du langage MQL5 ou du terminal MT5. Il DEVRAIT ! !! être un accès garanti aux séries temporelles déjà générées à tout moment !

Sur une note complémentaire. Lors de la création d'un partitionnement d'onde dans ZUP, le filtrage fractal est activé. Nous avons ici les éléments suivants. Lorsque j'ai accès à toutes les séries chronologiques de toutes les périodes, les modèles de vagues sont corrects. Mais si l'accès aux séries temporelles est interrompu soudainement, les modèles d'ondes peuvent être produits de manière imprévisible. C'est-à-dire que lors de la création du partitionnement des ondes, tout était bien rangé. Et à un moment ultérieur, lorsque le partitionnement des vagues a été créé lors de la transition vers d'autres horizons temporels, il s'est affiché de manière imprévisible. Et il n'est pas facile de créer des béquilles pour éliminer les opérations terminales erronées.

 
Oubliez les objets graphiques. C'est très peu pratique et limité. Avec kanvas, tout fonctionnera plus facilement, plus rapidement et avec des possibilités graphiques illimitées.
 

À propos, hier encore, j'écrivais un indicateur dans lequel je devais copier périodiquement des données par tranches d'un an à partir de W1. Très souvent, les tentatives de copie ont échoué. Finalement, ça n'a pas marché, j'ai dû tout faire selon un autre principe.

 
Eugeni Neumoin:

...

Également peu habitué et peu commode avec l'accès aux données après 4.

L'accès aux données dans 5 est limité à TF.

Si vous tracez une ligne de tendance assez longue sur TF D1 ou sur W1 puis que vous allez sur M1 ou M5, vous ne la verrez pas en raison de la limitation de l'accès au point de tendance lointain.

Vous pouvez le vérifier facilement.

Nous devons nous occuper de la toile. Mais il est possible qu'une telle embuscade attende là aussi.

 
Pouvez-vous démontrer de manière reproductible l'indisponibilité des données ?

Vous affirmez sans preuve reproductible.
 
Super ! Je voulais préparer l'indicateur, enlever le superflu pour montrer l'essentiel. Je l'ai fait. Mais tout d'un coup, ça a fonctionné comme une montre suisse.
 
Uladzimir Izerski:

L'accès aux données après 4 est également peu habituel et peu pratique.

L'accès aux données dans 5 est limité au TF.

Si vous tracez une ligne de tendance assez longue sur TF D1 ou sur W1 puis que vous allez sur M1 ou M5, vous ne la verrez pas en raison de la limitation de l'accès au point de tendance lointain.

Vous pouvez le vérifier facilement.

Nous devons nous occuper de la toile. Mais peut-être que la même embuscade attend là aussi.

C'est une histoire complètement différente. Le point le plus éloigné devrait avoir l'historique sur les petits prix pour montrer la tendance.

Dessinons avec la fourchette W1 en s'y référant. Le délai minimal est de m20. C'est ce que montre l'algorithme du filtrage fractal. Dans ce cas, il est affiché dans l'infobulle. Cela n'a pas de sens de construire quelque chose en se référant au premier point de la fourche sur le tf inférieur.

L'endroit indiqué par la flèche vers le haut dans l'image suivante sur m20 est marqué par une ligne verticale. Tout s'affiche bien. Mais sur des images moins profondes, ces bifurcations ne seront pas montrées par la filtration fractale. L'historique va au-delà deTERMINAL_MAXBARS sur les trames plus superficielles. C'est pourquoi il ne sera pas montré sur les TF inférieurs à m20.

Tout est parfaitement exposé. Pas d'horaires. Et il fonctionne parfaitement dans MT5. Cependant, pour pouvoir l'afficher de cette manière, il faut définir le moment exact de l'extremum sur la plus petite échelle de temps, dans notre cas sur m20, lors de l'affichage des fourches.

D'ailleurs, vous pouvez voir que la ligne SLM318 (ligne pointillée) a bien fonctionné le 09-11-2018. C'est comme la technique du sniper, dont l'académie de forex de Minsk fait la promotion. Mais ici, le marché a "vu" la ligne SLM318 et a simplement travaillé de façon magistrale...

 
Renat Fatkhullin:
Pouvez-vous démontrer de manière reproductible l'inaccessibilité des données ?

Vous affirmez sans preuve reproductible.

Je n'ai pas sauvegardé l'image. Mais je posterai les photos quand la situation se présentera. Je ne pourrai pas le reproduire avec du code de test. C'est trop de code à créer.

Je vais juste décrire la façon dont c'était. J'ai dessiné la fourche sur H3. Je l'ai lié aux extrema disponibles sur les images supérieures également. Je suis passé en H4. Les fourches ont disparu. J'ai commencé à comprendre pourquoi c'est arrivé. J'ai vérifié l'info-bulle sur laquelle se trouve la limite TF de la filtration fractale. Il est apparu quela limite supérieure était sur H3. J'ai supprimé la fourche du tableau. La fourche a été reliée aux mêmes extrémismes. J'ai vérifié la limite supérieure. Il s'est avéré qu'il s'agissait d'un délai d'un mois. Et de telles situations se sont répétées. Mais pas fréquemment.

Le programme accède à tous les coffres pour les 10 premiers extrema lors de l'affichage d'un zigzag. A chaque fois, le zigzag est redessiné. Le zigzag n'est redessiné que lorsque le prix quitte la barre de zéro. Pas à chaque tic.

Je ferme le terminal. Je le décharge de la mémoire de l'ordinateur. J'accède au dossier avec l'historique où se trouvent les fichiers *.hc. Les fichiers de séries chronologiques pour toutes les périodes ont la date et l'heure du moment où le terminal a été déchargé de la mémoire de l'ordinateur. C'est-à-dire que toutes les séries temporelles sont formées.

 
Pas intéressé par l'image, elle est dérivée de votre code.

C'est le refus de fournir des données avec des journaux clairs qui est intéressant.
 
Renat Fatkhullin:
Ce n'est pas l'image qui m'intéresse, elle est dérivée de votre code.

C'est le refus de fournir des données avec des journaux clairs qui est intéressant.

Cela doit être modélisé. Pour créer des journaux. Je vais réfléchir à la manière de procéder.

 
Renat Fatkhullin:
Pouvez-vous démontrer de manière reproductible l'inaccessibilité des données ?

Vous affirmez sans preuve reproductible.

Si c'est une question pour moi ?

Alors voici la reproduction d'un exemple simple.

D1.

v1

Aller à H4

H4


Aller à H1

H1


Il y aura un graphique clair sur une petite TF.

Les objets sont dans les listes, mais ils ne sont pas sur le graphique.

m1