Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 509

 
Oui, c'est évident, mais ça ne sert à rien. Il n'est pas bon de mettre des paramètres d'entrée dans une classe.
 
Вадим Мотеюнас:

Bonjour, pourriez-vous me dire pourquoi, dans ce cycle, mes ordres à cours limité ne sont supprimés que si, après avoir placé un ordre à cours limité, un autre ordre à cours limité n'a pas été placé sur la barre suivante, c'est-à-dire qu'un ordre à cours limité n'est supprimé que s'il est placé et suivi de deux barres sans ordre à cours limité.

Quel ordre avez-vous choisi ici ?

for(i=0;i<=OrderTicket();i++)
 
Nikolay Gaylis:

Et quel ordre avez-vous choisi ici ?

J'ai eu l'erreur, au lieu de OrderTicket() j'ai substitué une variable ticket à laquelle OrderSend a été assigné, cela ne supprime toujours rien, mais comment puis-je configurer la boucle pour passer par les ordres limites et supprimer ceux qui sont restés sur la 2ème barre ?

 
Вадим Мотеюнас:

Je vois l'erreur, j'ai aussi substitué une variable pour OrderTicket() avec ticket OrderSend, cela ne supprime toujours rien, mais comment puis-je configurer la boucle pour passer par les ordres limites et supprimer ceux qui sont restés sur la 2ème barre ?

C'est optimal, du moins c'est ainsi que j'ai appris mql.

Vous trouvez un EA dans kodobase qui répond approximativement à vos besoins, regardez le code et si le code est gros et pas clair, cherchez le suivant.

Après avoir trouvé un code plus compréhensible, vous commencez à l'étudier et à le modifier, ce qui vous permet de comprendre rapidement son fonctionnement.

MQL5 Code Base: Советники
MQL5 Code Base: Советники
  • www.mql5.com
В разделе торговых советников вы найдете множество приложений, автоматизирующих вашу аналитику и торговлю. Здесь вы найдете самые разные приложения, обладающие различными торговыми алгоритмами и предоставляющими различную степень автоматизации. Имеются как простенькие эксперты, так и сложные торговые роботы, способные полностью автоматизировать...
 
Juer:
Eh bien, oui, c'est évident, mais ce n'est pas bon. Il n'est pas agréable de coller des paramètres d'entrée dans une classe.

Néanmoins, ces valeurs doivent arriver d'une manière ou d'une autre). Après tout, le plus souvent, le travail de la classe est basé sur les valeurs spécifiées par l'utilisateur. Mais pour une raison quelconque, tu ne veux pas faire ça. Ils n'y apparaîtront pas par magie.

Habituellement, les paramètres d'entrée au stade de l'initialisation du programme sont transférés dans une structure spéciale. Le plus souvent, ces valeurs sont prétraitées (du moins, leur exactitude est vérifiée). Lorsqu'une nouvelle instance de la classe est créée, un lien vers cette structure lui est transmis. Quel est l'inconvénient ici ?

 
Ihor Herasko:

Néanmoins, ces valeurs doivent arriver d'une manière ou d'une autre). Après tout, le plus souvent, le travail de la classe est basé sur les valeurs spécifiées par l'utilisateur. Mais pour une raison quelconque, tu ne veux pas faire ça. Ils n'y apparaîtront pas par magie.

Habituellement, les paramètres d'entrée au stade de l'initialisation du programme sont transférés dans une structure spéciale. Le plus souvent, ces valeurs sont prétraitées (du moins, leur exactitude est vérifiée). Lorsqu'une nouvelle instance de la classe est créée, une référence à cette structure lui est passée. Quel est l'inconvénient ici ?

L'inconvénient réside uniquement dans la nécessité de passer ces valeurs à chaque fois que l'on crée un objet. Ils sont identiques à chaque fois. D'accord, je vais le créer par le constructeur mais c'est une solution privée. Le constructeur par défaut d'une EA peut contenir de tels paramètres, alors qu'ils sont très différents pour une autre EA.

La solution consiste peut-être à créer une classe entièrement différente dont les méthodes renverront les valeurs des paramètres. Je n'aurais alors besoin d'initialiser cette nouvelle classe qu'une seule fois. Et dans la classe originale, lors de la création d'un objet (même dans le même constructeur), demander les valeurs des paramètres de la nouvelle classe.

 
Juer:

Le seul inconvénient est la nécessité de passer ces valeurs à chaque fois qu'un objet est créé. Ils sont les mêmes à chaque fois. D'accord, je vais le faire par le constructeur, mais c'est une solution privée. Le constructeur par défaut d'une EA peut avoir ces paramètres, alors que le constructeur par défaut d'une autre EA est complètement différent.

La solution consiste peut-être à créer une classe entièrement différente dont les méthodes renverront les valeurs des paramètres. Je n'aurais alors besoin d'initialiser cette nouvelle classe qu'une seule fois. Et dans la classe originale, lors de la création d'un objet (même dans le même constructeur), demander les valeurs des paramètres de la nouvelle classe.

Il semble que vous résolviez héroïquement le problème inventé.
 
Artyom Trishkin:
Vous semblez résoudre héroïquement un problème inventé.
Je n'ai pas lu attentivement le problème, mais quelque chose m'a frappé : c'est le même râteau sur lequel j'ai marché et vous m'avez aidé à le dégager. N'est-ce pas ?
 
Alexey Viktorov:
Je n'ai pas lu attentivement le problème, mais quelque chose m'a frappé : c'est le même râteau sur lequel je marchais et vous m'avez aidé à le dégager. N'est-ce pas ?
Pas exactement. Vous n'aviez aucune envie d'initialiser le vide.
 
Artyom Trishkin:
On dirait que vous résolvez héroïquement un problème inventé.

Oui, c'est ce que j'ai suggéré ci-dessus, en fait de la même manière que vous avez fait avec la structure, seulement plus compliqué.

-> Et dans la classe source, lors de la création d'un objet (même dans le même constructeur), demander les valeurs des paramètres de la nouvelle classe.

Mais en général, je devrais passer une référence à cette classe auxiliaire à la classe source. En bref, oui, comme pour la structure.

Créez une classe conteneur, à travers laquelle vous pourrez créer tous ces objets par la suite. Ensuite, ces paramètres peuvent être initialisés une fois dans cette classe conteneur. C'est ce que je pense que je vais faire.

Raison: