Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1800
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
Quel est le DecreaseFactor du conseiller MT standard sur mashcats?
C'est étrange, les boutons sont là maintenant. Et l'encombrement du code, parce que c'est un projet. Quoi qu'il en soit, j'ai déjà fait une version qui fonctionne, la dernière chose qu'il reste à faire est de supprimer les boutons, là encore cette merde a commencé : la fonction de suppression ne trouve aucun des 4 objets.
En cliquant sur le bouton, on crée toutes les lignes :
Si le bouton est appuyé - supprimer :
Quelle connerie est écrite, je suis désolé.
Et vous n'avez pas besoin de regarder les événements. Ils ne fonctionnent pas du tout dans le testeur. Vous devez surveiller le statut.
UPD. Pas modeste bien sûr, mais si vous aviez écouté mes conseils pour une fois, vous auriez tout fait depuis longtemps. De manière appropriée et sans les béquilles d'un immeuble à étages.
Mais chacun choisit l'abîme dans lequel il veut plonger.
Pour utiliser le débogage dans le testeur, apprenez à écrire en MQL5. Tout y fonctionne.
Il n'y a pas de renommage d'objet. Imaginez que vous remplacez un objet existant par un nouvel objet.
C'est impossible. Votre code ressemble à un fouillis de choses. C'est probablement la raison pour laquelle vous rencontrez des décalages avec les boutons. Comme je vous l'ai déjà dit, commencez par quelque chose de simple. Ne compliquez pas trop les choses. Et compliquez-le progressivement lorsque le simple commence à fonctionner et que vous avez confiance en lui.
Et comment puis-je voir les états s'ils sont déclenchés par un événement (par un clic) ? Oui, mais j'écris en mql4, c'est la même chose que de dire "apprenez à écrire en c# où le débogage fonctionne".
"Correct et sans béquilles à plusieurs étages. "Donc cacher des objets n'est qu'une béquille.
Tout ce que j'ai fait, tout fonctionne https://gist.github.com/satorkain/0cf7a8df8ec1f4b3191defd04c94a418
En cliquant sur le bouton, toutes les lignes sont créées en même temps, puis elles sont cachées et il n'en reste qu'une seule selon l'emplacement du panneau du bouton. D'autres lignes sont cachées/affichées en fonction de l'emplacement du curseur par rapport au prix.
P.S.
Si ce n'était pas pour mql4 tordu, je n'aurais pas eu à inventer cette absurdité de cacher des objets, tout aurait dû fonctionner du premier coup avec la suppression/le renommage des objets.
Et comment puis-je voir les états s'ils sont déclenchés par un événement (par un clic) ? Oui, mais j'écris en mql4, c'est la même chose que de dire "apprenez à écrire en c# où le débogage fonctionne".
"Correct et sans béquilles à plusieurs étages. " - donc cacher les objets n'est qu'une béquille.
Tout ce que j'ai fait, tout fonctionne https://gist.github.com/satorkain/0cf7a8df8ec1f4b3191defd04c94a418
En cliquant sur le bouton, toutes les lignes sont créées en même temps, puis elles sont cachées et il n'en reste qu'une seule selon l'emplacement du panneau du bouton. D'autres lignes sont cachées/affichées en fonction de l'emplacement du curseur par rapport au prix.
P.S.
Si le mql4 n'était pas tordu, je n'aurais pas eu à inventer cette absurdité pour cacher les objets, tout aurait dû fonctionner du premier coup avec la suppression/le renommage des objets également.
Cacher un objet est juste la méthode recommandée par le développeur. Et il existe une propriété spéciale pour cela. Pour voir l'état, vous devez regarder la propriété "State" du bouton.
Ce qui esttordu ici, c'est votre logique et la substitution des notions - vous prenez les moyens recommandés par le développeur comme une béquille, et vous prenez la création/suppression constante et vorace d'objets comme du code pur, mais c'est exactement ce qui est une béquille, en contournant la méthode rapide recommandée.
À propos, pour qu'un objet se retrouve rapidement au-dessus de tous les autres, vous devez le rendre invisible, puis immédiatement visible - cela redéfinira sa position dans la liste des objets, et il se retrouvera en haut.
ZS. Et même là, sur le git, tu as publié le code avec un C-moins. Totalement sujet aux erreurs. Il suffit qu'une ligne ne soit pas créée pour que tout s'effondre. Cela s'est tout de suite vu. Vous créez des lignes dans le gestionnaire d'événement - pour quoi faire ? Pourquoi avez-vous besoin de OnInit() ? Vous l'avez créé, vérifié son succès, mis un drapeau et caché. Dans OnDeinit(), vous avez supprimé les objets créés par votre programme. Vous avez également besoin du préfixe du nom pour cela.
Vous ne faites que montrer et cacher dans le gestionnaire d'événements - il ne devrait pas y avoir de construction. Pour votre cas - exactement.
J'aurais honte de publier une telle chose dans le domaine public sur git. Mais c'est pour moi.
Et vous ? Est-il normal que les gens en profitent ?
Cacher un objet est exactement la méthode recommandée par le développeur. Et il existe une propriété spéciale pour cela. Pour voir l'état, vous devez regarder la propriété "State" du bouton.
Ce qui esttordu ici, c'est votre logique et la substitution des notions - vous prenez les moyens recommandés par les développeurs comme une béquille, et vous prenez la création/suppression constante et vorace d'objets comme du code pur, mais c'est exactement ce qui est une béquille pour contourner la méthode rapide recommandée.
À propos, pour qu'un objet se retrouve rapidement au-dessus de tous les autres, vous devez le rendre invisible, puis immédiatement visible - cela redéfinira sa position dans la liste des objets, et il se retrouvera en haut.
ZS. Et même là, sur le git, tu as publié le code avec un C-moins. Totalement sujet aux erreurs. Dès qu'une ligne n'est pas créée, tout s'écroule. Cela s'est tout de suite vu. Vous créez des lignes dans le gestionnaire d'événement - pour quoi faire ? Pourquoi avez-vous besoin de OnInit() ? Vous le créez, vérifiez son succès, mettez un drapeau et le cachez. Dans OnDeinit(), vous avez supprimé les objets créés par votre programme. Vous avez également besoin du préfixe du nom pour cela.
Vous ne faites que montrer et cacher dans le gestionnaire d'événements - il ne devrait pas y avoir de construction. Pour votre cas - exactement.
J'aurais honte de publier une telle chose dans le domaine public sur git. Mais c'est pour moi.
Et vous ? Est-il normal que les gens en profitent ?
Vorace pour créer 1 ligne de 4 selon les besoins ? :) Et s'il y a 200 lignes ? Sera-t-il économique de les créer tous en même temps selon votre logique ? Et la façon dont elle a été conçue par les développeurs n'est connue que d'eux, et conçue d'une manière très peu intuitive. Comme si rien d'incroyable ou d'illogique n'était requis. Comment aurais-je pu savoir que je devais travailler avec des objets uniquement de cette manière et pas d'une autre ? Peut-être d'un manuel sur le mql4 ? Je doute que ce point y soit expliqué.
Au moins, cela fonctionne comme prévu :) C'est entre parenthèses dans le titre (public), donc ce n'est pas encore complet, mais oui, il n'y a pas de vérification pour créer des objets, corrigeons cela. Et je l'ai posté sur git uniquement parce que je ne me souvenais pas de paste bin. Honteux ? Le Git a été créé pour que les gens apprennent, échangent leurs expériences, partagent du code, qu'il fonctionne ou non, cela ne fait aucune différence, tout le monde peut créer un fork et apporter des modifications s'il n'est pas satisfait de quelque chose.
Voilà, 250 objets ont été créés et stockés en mémoire pour la durée de l'Expert Advisor. Très bien, merci, je saurai. C'est ce que j'entends par "logique non-intuitive". Par exemple, dans le tutoriel sur OnInit(), vous pouvez lire seulement que la fonction est traitée pendant l'initialisation du conseiller expert/indicateur.
Laissez-moi vous dire un secret. Vous pouvez créer jusqu'à 1 000 objets ou plus, tant que vous n'avez pas de "calculatrice". Mais il peut aussi le faire. Une calculatrice est un ordinateur doté de 4 Go de RAM. Tout ce qui est en dessous est "la calculatrice de grand-mère"... :) Vous pouvez donc créer des objets en une fois ou un par un. Cela ne fait aucune différence. Mais sans fanatisme.
Ainsi, tout fonctionne pour tout le monde si vous le faites à bon escient ....
Voracité pour créer 1 ligne de 4 selon les besoins ? :) Et s'il y a 200 lignes ? Serait-il économique de les créer tous en même temps selon votre logique ? Et la façon dont elle a été conçue par les développeurs n'est connue que d'eux, et conçue d'une manière très peu intuitive. Comme si rien d'incroyable ou d'illogique n'était requis. Comment aurais-je pu savoir que je devais travailler avec des objets uniquement de cette manière et pas d'une autre ? Peut-être d'un manuel sur le mql4 ? Je doute que ce point y soit expliqué.
Au moins, cela fonctionne comme prévu :) C'est entre parenthèses dans le titre (public), donc ce n'est pas encore complet, mais oui, il n'y a pas de vérification pour créer des objets, corrigeons cela. Et je l'ai posté sur git uniquement parce que je ne me souvenais plus de paste bin. Honteux ? Le Git a été créé pour que les gens apprennent, échangent leurs expériences, partagent du code, qu'il fonctionne ou non, cela ne fait aucune différence, tout le monde peut créer un fork et apporter des modifications s'il n'est pas satisfait de quelque chose.
Voilà, 250 objets ont été créés et stockés en mémoire pour la durée de l'Expert Advisor. Très bien, merci, je saurai. C'est ce que j'entends par "logique non-intuitive". Vous pouvez lire dans le tutoriel, par exemple, à propos de OnInit(), que la fonction est traitée pendant l'initialisation d'un EA/indicateur.
Vous pouvez créer autant d'objets que vous le souhaitez en même temps. À l'époque, MT n'était pas très développé en termes de dessin de tampons d'indicateurs, nous devions dessiner 400 chandeliers visibles avec des lignes de tendance, pour un chandelier nous avons besoin de 5 lignes, 400*5=2000, plus un objet pour chacun et ainsi de suite. Au total, nous avons obtenu environ 2500 objets. Il a fonctionné sans aucune fadeur.
Vous ne comprenez pas tout à fait la logique du travail avec les objets, mais vous savez comment argumenter. Il est préférable de faire le contraire.
Voracité pour créer 1 ligne de 4 selon les besoins ? :) Et s'il y a 200 lignes ? Serait-il économique de les créer tous en même temps selon votre logique ? Et la façon dont elle a été conçue par les développeurs n'est connue que d'eux, et conçue d'une manière très peu intuitive. Comme si rien d'incroyable ou d'illogique n'était requis. Comment aurais-je pu savoir que je devais travailler avec des objets uniquement de cette manière et pas d'une autre ? Peut-être d'un manuel sur le mql4 ? Je doute que ce point y soit expliqué.
Au moins, cela fonctionne comme prévu :) C'est entre parenthèses dans le titre (public), donc ce n'est pas encore complet, mais oui, il n'y a pas de vérification pour créer des objets, corrigeons cela. Et je l'ai posté sur git uniquement parce que je ne me souvenais pas de paste bin. Honteux ? Le Git a été créé pour que les gens apprennent, échangent leurs expériences, partagent du code, qu'il fonctionne ou non, cela ne fait aucune différence, tout le monde peut créer un fork et apporter des modifications s'il n'est pas satisfait de quelque chose.
Voilà, 250 objets ont été créés et stockés en mémoire pour la durée de l'Expert Advisor. Eh bien, merci, je le saurai. C'est ce que j'entends par "logique non-intuitive". La seule chose que vous pouvez lire dans le tutoriel, par exemple, à propos de OnInit(), est que la fonction est traitée pendant l'initialisation du conseiller expert/indicateur.
Bienvenue. Je vais essayer de l'expliquer en russe simple.
Vous allez faire une partie de pêche.
Ou bien vous pouvez prendre directement tout ce dont vous avez besoin dans le garde-manger (OnInit), pêcher sans courir partout et, en rentrant chez vous, tout ranger dans le garde-manger et le réfrigérateur (OnDeinit).
Vous en avez peut-être entendu parler ici sur le forum. Il faut juste écouter et entendre ce qu'on vous dit parfois.
Sinon, on vous pose une question, on vous répond, on vous dit "conneries" et on fait ce qu'on pense.
Vous devez d'abord réfléchir à la question, poser des questions, puis commencer à rédiger.
Savez-vous que la chose la plus simple en programmation est l'impression du code ? Et la part du lion du développement consiste à penser à la logique.
Je suis désolé de remettre ça sur le tapis une deuxième fois.
Mais il y a un problème que je ne peux pas encore résoudre, à savoir
l'ouverture d'une série d'ordres (l'un après l'autre) sur le même chandelier.
Je dois empêcher l'EA d'ouvrir un nouvel ordre sur le même chandelier.
J'ai pensé à le résoudre en utilisant Sleep(), mais Makar a dit qu'il serait mieux de ne pas arrêter le processus.
Le code ressemble maintenant à ceci :
J'ai besoin que l'EA ne puisse pas ouvrir un nouvel ordre sur la même bougie.