Comment vérifier si une commande est sélectionnée - page 7

 
tara:

L'Espagne aussi :)
L'Espagne est méridionale et Barcelone a un climat très doux, sans froid ni chaleur insupportable, et la ville elle-même est très belle et compacte, donc moi, en tant que Moscovite, j'ai beaucoup aimé !
 

Le TS veut profiter d'une fonctionnalité non documentée de MT4. La fonction OrderSelect() crée un pointeur (que TC appelle "ordre sélectionné") qui est global à l'EA (script). Les deux scripts suivants illustrent cela

Le pointeur créé par cette procédure appelée est disponible dans la procédure appelante :

int start()
{
   ordsel();
   Print( OrderTicket( ) );
   return(0);
}
void ordsel()
{
   OrderSelect( 1, SELECT_BY_POS, MODE_HISTORY );
   Print( OrderTicket( ) );
}

2013.02.17 02:50:48 111 EURUSD,H1 : uninit reason 0
2013.02.17 02:50:48 111 EURUSD,H1 : 18338793
2013.02.17 02:50:48 111 EURUSD,H1 : 18338793
2013.02.17 02:50:48 111 EURUSD,H1 : chargé correctement

Le pointeur créé est disponible dans la procédure appelée :

int start()
{
   OrderSelect( 1, SELECT_BY_POS, MODE_HISTORY );
   Print( OrderTicket( ) );
   ordsel();
   return(0);
}
void ordsel()
{
   Print( OrderTicket( ) );
}

2013.02.17 02:56:10 111 EURUSD,H1 : uninit reason 0
2013.02.17 02:56:10 111 EURUSD,H1 : 18338793
2013.02.17 02:56:10 111 EURUSD,H1 : 18338793
2013.02.17 02:56:10 111 EURUSD,H1 : chargement réussi


Mais c'est un peu flippant de l'utiliser.

 
tara:
Tu devrais te marier, mon frère.
Pour quoi faire ? De nombreuses personnes vivent ici sans être enregistrées et avec des enfants. Pourquoi payer toutes sortes de frais ? Alors, j'ai tout eu, alors il n'y a pas besoin.
 
Ant_TL:

Apparemment, tout le monde ici est super cool, mais j'ai peur que si je commence à me concentrer sur l'aspect cool de tout ça, je reçoive un coup de marteau dans la tête de M. FAQ, qui est sans aucun doute cool aussi. Donc merci à tous ceux qui ont participé à la discussion, le sujet peut probablement être clos puisque personne n'est intéressé par la question à part moi.

Peut-être que le nom du sujet était trompeur, il aurait dû s'appeler"Comment vérifier si l'ordre actuel dans mql4 est actuellement sélectionné" ou quelque chose comme ça. Sinon, certains éducateurs doivent expliciter les questions au niveau des bucs.


1) Je pense que c'est votre"génialité" qui fait pleurer vos yeux.

2) Si vous continuez à être grossier, vous recevrez ce que vous appelez un "banhammer" à des fins éducatives.

3) Votre message (en gras) a été compris sans "explicitation" depuis la page 2 et j'ai (comme pour ceux qui sont dans le réservoir) déjà répondu non. Un tel mandat n'existe pas, si vous voulez en avoir un, occupez-vous-en vous-même et bien à l'avance.

4) Vous pouvez écrire des programmes aussi longs que vous le souhaitez, mais si vous avez un manque de connaissances et que vous voulez le combler aux dépens de la société (ce qui est le but de ce forum), alors essayez de vous comporter décemment.

 
Mislaid:

Le TS veut profiter d'une fonctionnalité non documentée de MT4. La fonction OrderSelect() crée un pointeur (que TC appelle "ordre sélectionné") qui est global à l'EA (script). Comme le montrent les deux scripts suivants

Mais c'est flippant de l'utiliser.

Pourquoi sans-papiers et pourquoi bizarre ? Cela fonctionne toujours, sauf pour les bibliothèques personnalisées, car apparemment ce "pointeur" n'est global qu'au sein d'une EA ou d'un module de script, et un module de bibliothèque possède son propre pointeur.

 
FAQ:

3) Votre message (en gras) est déjà clair sans le "détailler" dès la page 2, et j'ai (comme pour ceux du char) déjà répondu non. Un tel mandat n'existe pas, si vous voulez en avoir un, occupez-vous-en vous-même et bien à l'avance.

4) Vous pouvez écrire des programmes aussi longs que vous le souhaitez, mais si vous avez un manque de connaissances et que vous voulez le combler aux dépens de la société (ce qui est le but de ce forum), alors essayez de vous comporter décemment.

Quel autre mandat n'y a-t-il pas ? Je n'ai aucune lacune dans mes connaissances, c'est votre fabrication. J'ai attiré l'attention sur un problème qui, à mon avis, est une lacune dans le mécanisme de travail avec les ordres dans mql4, c'est tout. Si un certain nombre de fonctions fonctionnent avec un ordre en surbrillance, il devrait être possible de vérifier si un ordre est en surbrillance ou non, afin de ne pas générer d'erreur. Je comprends que l'on puisse inventer des béquilles, mémoriser la sélection de l'ordre à une douzaine d'endroits, passer un paramètre pour ne pas se tromper, et ainsi de suite.

FAQ:

2) Si vous continuez à être impoli, vous recevrez sûrement ce que vous appelez un "banhammer" à des fins éducatives.

Le fait que votre ami Bori ait été grossier avec moi pendant plusieurs pages est manifestement passé à côté de vos yeux aiguisés. Vous êtes sélectif.

 
Ant_TL:

Quel autre mandat n'y a-t-il pas ? Je n'ai aucune lacune dans mes connaissances, c'est votre fiction. J'ai signalé le problème, qui, à mon avis, est une lacune dans le mécanisme de travail avec les ordres dans mql4, c'est tout. Si certaines fonctions fonctionnent avec un ordre sélectionné, nous devons pouvoir vérifier si un ordre est sélectionné ou non, afin de ne pas générer d'erreur. Je comprends que l'on puisse faire des béquilles, se souvenir de sélectionner un ordre à une douzaine d'endroits, envoyer un paramètre pour ne pas se tromper, etc.

Il n'y a pas de vide dans le mql4. L'état de l'ordre sélectionné peut changer au cours de n'importe quelle opération avec les ordres : ouverture/fermeture, prise/arrêt, exécution/suppression d'un ordre en attente, ou fermeture partielle d'un ordre. Il n'est donc pas nécessaire de mémoriser et de transmettre quoi que ce soit. Vous ne devez jamais compter sur le fait que l'état n'a pas changé. Un ordre peut être sélectionné, mais il n'est plus le même.
 
Mislaid:
Il n'y a pas de vide dans le mql4. L'état d'un ordre sélectionné peut changer au cours de n'importe quelle opération avec des ordres : ouverture/fermeture, prise/arrêt, exécution/suppression d'un ordre en suspens ou clôture partielle d'un ordre. Il ne faut donc pas mémoriser et transmettre n'importe quoi. Vous ne devez jamais compter sur le fait que l'état n'a pas changé. Un ordre peut être sélectionné, mais il n'est plus le même.

J'ai indiqué une situation spécifique : nous avons une boucle principale qui fonctionne avec des commandes. Et il y a un certain nombre de fonctions auxiliaires qui sont utilisées dans cette boucle, qui fonctionnent également avec les ordres. La logique de la boucle principale ne doit pas être interrompue après l'appel de ces fonctions. Cela signifie que si une fonction auxiliaire affecte le travail avec des ordres, elle doit se souvenir de l'état du "pointeur" au moment de son appel et le ramener à l'état dans lequel il se trouvait lorsqu'elle a terminé. Mais elle ne peut le faire sans béquilles et en générant des erreurs. C'est exactement une lacune ici.

En fait, comme je l'ai écrit dans le premier billet, ignorer la nécessité de contrôler l'état du "pointeur" dans les fonctions auxiliaires peut conduire à des erreurs difficiles à détecter.

 
Ant_TL:

J'ai indiqué une situation spécifique : nous avons une boucle principale qui fonctionne avec des commandes. Et il y a un certain nombre de fonctions auxiliaires qui sont utilisées dans cette boucle, qui fonctionnent également avec les ordres. La logique de la boucle principale ne doit pas être interrompue après l'appel de ces fonctions. Cela signifie que si une fonction auxiliaire affecte le travail avec des ordres, elle doit se souvenir de l'état du "pointeur" au moment de son appel et le ramener à l'état dans lequel il se trouvait lorsqu'elle a terminé. Mais elle ne peut le faire sans béquilles et en générant des erreurs. C'est exactement une lacune ici.

En fait, comme je l'ai écrit dans le premier billet, ignorer la nécessité de surveiller l'état du "pointeur" dans les fonctions auxiliaires peut conduire à des erreurs difficiles à détecter.

Supposons que vous ayez transmis votre EA à quelqu'un. Vous ne savez pas s'il a d'autres EAs qui fonctionnent, peut-être qu'il échange ses propres mains.

Peut-être avez-vous terminé cette évaluation environnementale et commencez-vous à en écrire une autre. C'est là que l'ancien système va faire défaut.

 
Mislaid:

Supposons que vous ayez transmis votre EA à quelqu'un. Vous ne savez pas, peut-être qu'il a d'autres EAs qui fonctionnent, il échange ses propres mains.

Peut-être avez-vous terminé cette évaluation environnementale et commencez-vous à en écrire une nouvelle. C'est là que l'ancien modèle se bloque.

Excusez-moi ? Qu'est-ce que cela a à voir avec la personne à qui j'ai donné le conseiller expert ? Pensez-vous que l'état du "pointeur" est influencé par les actions des autres EA et du terminal ? Le "pointeur" (le ticket de la commande actuellement sélectionnée) est une variable de niveau module. Ce serait bien d'y accéder sans générer d'erreur 4105, ce qui est ce que j'ai écrit pendant tout ce temps.