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 4
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
Il n'y a 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 ont déjà été utiles auparavant.
Non, il n'y aura certainement aucune suggestion visant à modifier la logique de travail avec les graphiques - le code multiplateforme devrait fonctionner de la même manière.
Il se peut que lorsque l'utilisateur a cliqué sur le bouton mais ne voit rien, tout est bien là, mais le graphique n'est pas encore mis à jour (il ne se mettra à jour qu'à l'arrivée du tic-tac).
Non, il ne sera certainement pas proposé de modifier la logique graphique - le code multiplateforme doit fonctionner de la même manière.
La seule chose que je peux suggérer pour améliorer les boutons est que dans tous les cas, lorsque la série chronologique requise n'est pas encore disponible, il n'est toujours pas possible de construire un graphique sur ses données. Dans ce cas, nous devons attendre le moment où les données seront disponibles et rendre les boutons inactifs pendant l'attente - par exemple en les rendant similaires aux interfaces Windows : si aucune action n'est disponible sur le bouton, celui-ci est grisé. Cette logique peut être présente pour les deux plateformes, de sorte qu'il n'y a pas de différence dans le code.
J'ai ChartRedraw() déclenché à la sortie de grands blocs, par exemple OnChartEvent() et autres. Il n'y a donc rien de mal à cette fonction.
À propos des infobulles. Ils sont comme des indicateurs qui indiquent que lorsque vous cliquez sur un chiffre ou un symbole, tout fonctionnera.
Si vous cliquez sur le nombre et le symbole, l'un des éléments OnChartEvent() - CHARTEVENT_OBJECT_CLICK doit se déclencher. Il n'est pas déclenché si l'infobulle n'apparaît pas. J'aimerais savoir pourquoi cela se produit. CHARTEVENT_OBJECT_CLICK ne fonctionne pas .
Et je surveillerai de près l'accès aux séries chronologiques.
J'ai ChartRedraw() déclenché à la sortie de gros blocs, comme OnChartEvent() et autres. Il n'y a donc rien de mal à cette fonction.
À propos des infobulles. Ils sont comme des indicateurs qui indiquent que lorsque vous cliquez sur un chiffre ou un symbole, tout fonctionnera.
Si vous cliquez sur le nombre et le symbole, l'un des éléments OnChartEvent() - CHARTEVENT_OBJECT_CLICK doit se déclencher. Il n'est pas déclenché si l'infobulle n'apparaît pas. J'aimerais savoir pourquoi cela se produit. CHARTEVENT_OBJECT_CLICK ne fonctionne pas .
Et je surveillerai de près l'accès aux séries chronologiques.
Au tout début du gestionnaire d'événements du graphique, enregistrez le paramètre sparam - ensuite, toute action sera enregistrée. Ensuite, commencez à limiter la sortie - s'il y a un événement de clic d'objet (id==CHARTEVENT_OBJECT_CLICK), alors la sortie sparam dans le journal. Et ainsi vous arriverez lentement à la cause.
Au tout début du gestionnaire d'événements du graphique, enregistrez le paramètre sparam - ensuite, toute action sera enregistrée. Ensuite, commencez à limiter la sortie - s'il y a un événement de clic d'objet (id== CHARTEVENT_OBJECT_CLICK), alors la sortie sparam dans le journal. Et ainsi vous arriverez lentement à la cause.
Pour éviter les problèmes de liaison des nombres et des symboles, vous devez augmenter la priorité des nombres et des symboles avec OBJPROP_ZORDER.
Il fonctionne dans MT4 sans lui. Cependant, j'ai augmenté la priorité dans MT4 juste au cas où. De plus, la priorité des symboles d'ondes était plus élevée que celle des chiffres.
J'ai réglé le problème.
J'essaie de modifier toutes les séries temporelles au bout de 2 minutes - je sélectionne différentes variantes pour que cette tâche soit la plus fluide possible.
Le processus a commencé...
Pour éviter les problèmes de liaison des nombres et des symboles, vous devez augmenter la priorité des nombres et des symboles avec OBJPROP_ZORDER.
Il fonctionne dans MT4 sans lui. Cependant, j'ai augmenté la priorité dans MT4 juste au cas où. De plus, la priorité des symboles d'ondes était plus élevée que celle des chiffres.
J'ai réglé le problème.
J'essaie de modifier toutes les séries temporelles au bout de 2 minutes - je sélectionne différentes variantes pour que cette tâche soit la plus fluide possible.
Le processus a commencé...
La douceur n'est pas une option ici :)
Il y a des freins.
Mais nous devons nous contenter de ce que nous avons.
Il est impossible d'embrasser l'immensité).
La douceur n'est pas une option ici :)
Il est impossible de le séparer. Si au moins une transaction n'est pas mise à jour, l'indicateur peut rendre certaines constructions graphiques incorrectes.
D'autre part, j'ai vérifié la disponibilité des séries temporelles avant OnCalculate et OnChartEvent. Comme suggéré.
La mise à jour des séries temporelles et la vérification de la disponibilité des séries temporelles provoquent des ralentissements importants.
J'ai toujours des interruptions d'accès aux séries chronologiques. Comme je l'ai dit lors de la création de la branche dans l'un des premiers messages. Cela confirme que nous devons mettre à jour les séries chronologiques de manière programmatique.
C'est le premier.
Deuxièmement. Pourquoi chaque développeur doit-il se soucier d'organiser l'accès aux séries chronologiques ?
Pourquoi n'y a-t-il pas un "mécanisme" supplémentaire qui élimine ces tracas ?
Si quelqu'un a besoin de ce tracas, personne n'interdit l'utilisation de ce qui est maintenant disponible. Et pour ceux qui pensent qu'un accès alternatif universel aux séries chronologiques est bien, il est préférable que cet accès soit fait par les développeurs.
Plusieurs personnes m'ont demandé de traduire un programme de MT4 à MT5. Je l'ai fait. Je ne suis pas satisfait de la traduction. Mais tant que j'ai téléchargé le programme, je n'ai pas à me plaindre. Peut-être qu'ils en sont satisfaits. Bien que j'en doute.
Je voudrais ajouter quelque chose de mon côté. J'ai arrêté d'expérimenter l'optimisation de l'accès aux séries chronologiques. C'est une utilisation improductive du temps. Il y a des choses plus intéressantes à faire. Que ceux qui sont intéressés travaillent avec MT5. La seule chose qui peut être mâchée dans MT5 est l'historique des cotations. A utiliser dans l'enseignement des NS.
D'autre part, j'ai vérifié la disponibilité des séries temporelles avant les fonctions OnCalculate et OnChartEvent. Comme suggéré.
La mise à jour des séries temporelles et la vérification de la disponibilité des séries temporelles provoquent des ralentissements importants.
Il a été suggéré de le faire sur une minuterie toutes les minutes et demie. Pas avant chaque tick, et certainement pas sur un événement graphique.
L'accès aux séries chronologiques dans MT5 n'est vraiment pas idéal. Mais si vous devez résoudre un problème plutôt que de trouver une excuse, c'est possible.