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

 
Ant_TL:

En fait, j'ai rencontré une situation où l'erreur était causée par l'une des fonctions à usage général qui pouvait être utilisée à la fois à l'intérieur et à l'extérieur des boucles de traitement des commandes, c'est-à-dire avant qu'une commande soit sélectionnée, ce qui a provoqué l'erreur. Si nous voulons créer des fonctions de service universel qui fonctionnent avec les ordres et qui peuvent être utilisées aussi bien après qu'un ordre ait été sélectionné qu'avant, aussi bien lorsqu'il y a des ordres ouverts que lorsqu'il n'y a aucun ordre, nous devons utiliser un mécanisme tel que celui mentionné à la page précédente pour éviter cette erreur.

J'ai déjà écrit plus tôt dans ce fil de discussion sur le fait que la sélection des commandes n'est pas transmise aux modules de bibliothèque et vice-versa.


Anton, joyeux anniversaire à toi aussi !
 
grell:

Habituez-vous au fait que chaque opération commerciale a sa propre sélection d'ordres et il n'y aura aucun problème. Et, oui, on vous a bien écrit, une seule commande peut être sélectionnée. Tout le reste est résolu par des tableaux.

Je ne parlais pas de la situation où la fonction B() essaie d'intercepter une sélection d'ordre de la fonction A() afin de travailler avec elle. Contournement de la sélection des commandes. Le point est différent. Mais cela peut être utile.

 
tara:

Anton, bonnes vacances à vous aussi !

Joyeuses fêtes à vous aussi !

 
FAQ:

Vous oubliez toujours qu'une seule commande peut être sélectionnée à la fois. Exit = stocker la liste des commandes dans une réserve d'épargne (votre tableau). une variable globale lastorder n'est pas suffisante. une variante de type lastords[ticket][function] serait mieux.

Conserver tous les ordres dans un tableau est approprié pour les EA à grille complexe, mais pas pour tous les EA. Dans ma situation, c'est comme tirer un canon sur un moineau. Je n'oublie pas qu'une seule commande peut être sélectionnée. Je soulignais simplement que nous ne serions pas en mesure de savoir s'il a été choisi (pas un ordre particulier, mais si un ordre arbitraire a été choisi sur ce tick, c'est-à-dire si une sélection d'ordre a été appelée avec succès) sans aucune erreur. Toutefois, une seule variable du type lastorder est tout à fait suffisante à cet effet.

 
Ant_TL:

Je ne parlais pas de la situation où la fonction B() essaie d'intercepter une sélection d'ordre de la fonction A() afin de travailler avec elle. Contournement de la sélection des commandes. Le point est différent. Bien que cela puisse être utile.


Eh bien, donnez-moi un exemple de situation pour que je comprenne la nécessité de travailler avec plus d'une commande. Au fait, bonnes vacances !
 
grell:

Eh bien, donnez-moi un exemple de situation, afin que je comprenne la nécessité de travailler avec plus d'un ordre. Au fait, bonnes vacances !

Joyeuses fêtes à vous aussi ! -))

J'en parlerai dès que quelque chose d'intéressant me viendra à l'esprit. Situations dans lesquelles il est difficile de se passer de ce mécanisme. Sinon, ils me donneront immédiatement des conseils pour programmer "correctement". ))

 
Ant_TL:

Conserver tous les ordres dans un tableau est approprié pour les EA à grille complexe, mais pas pour tous les EA. Dans ma situation, c'est comme tirer un canon sur un moineau.


C'est à vous de choisir si vous aimez tordre une fronde pour l'adapter à chaque moineau et perdre du temps à l'ajuster. Je préfère fabriquer un canon pour n'importe quel projectile une fois et être sûr que lorsqu'il sera nécessaire de tirer sur des moineaux - alors on chargera de la chevrotine et on mettra tout d'un coup :).
 
Ant_TL:

Joyeuses fêtes à vous aussi ! -))

J'en parlerai dès que quelque chose d'intéressant me viendra à l'esprit. Situations dans lesquelles il est difficile de se passer de ce mécanisme. Sinon, ils me donneront immédiatement des conseils pour programmer "correctement". ))


Qu'est-ce qu'il y a à chercher si vous essayez de prouver qu'il s'agit d'une situation de routine quotidienne. Vous pouvez travailler avec un tas d'ordres et les sélectionner un par un sans craindre de perdre de vue l'ordre. Et s'il s'agit d'une commande, sélectionner son RETOUR dans une autre fonction n'est rien comparé à la recherche d'un chat noir dans une pièce sombre.
 
grell:

Qu'y a-t-il à trouver, si vous essayez de prouver qu'il s'agit d'une situation quotidienne normale. Vous pouvez travailler avec un grand nombre de commandes et les prendre une par une sans craindre de perdre de vue l'ordre. Et si c'est un ordre, le sélectionner dans une autre fonction n'est rien comparé à la recherche d'un chat noir dans une pièce sombre.

Eh bien, j'ai rencontré cette situation dans l'un de mes EA, lorsque j'ai appelé ma fonction de modèle MyTotal() pour obtenir le nombre de tous les ordres, ouverts pour un symbole-magie donné. Évidemment, je l'ai utilisé en boucle dans certains EAs précédents et j'y ai donc ajouté la sauvegarde et la restauration de la sélection d'ordre actuelle. Et puis je l'ai utilisé sans la boucle, avant orderselect et c'est pourquoi j'ai eu l'erreur. Je veux que les fonctions de mon modèle soient universelles et puissent être utilisées à la fois dans les boucles et hors des boucles, donc je vais utiliser ce modèle avec le wrapper MySelect/TickSelect, puisque j'utilise MySelect dans toutes les boucles de toute façon au lieu de OrderSelect pour réduire la taille du code.

Je pense que nous pouvons voir pourquoi, dans cette situation particulière, nous devons traiter plus d'une commande à la fois. Nous travaillons avec une commande dans la boucle principale, puis nous appelons MyTotal, qui doit passer en revue toutes les commandes pour déterminer le nombre dont nous avons besoin.

 
Corrigez votre erreur et allez vous coucher, vous avez une journée chargée demain :)