[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 5

 
Roman.:

N'excluez-vous pas la possibilité que le premier ordre se transforme en ordre de marché et, par conséquent, que vous ne puissiez pas le supprimer avec ce cycle sur les ordres limités ?

Je suis en train de faire une visualisation. Au moment où l'ordre devrait être supprimé, il reste en attente. Je sais comment régler le nombre magique mais je ne peux pas supprimer le premier des deux ordres en attente.
 
Roman.:

Apparemment pour cela - quelques posts plus haut :-)))) - "Le moyen le plus simple de déterminer l'ordre de deux à fermer est le nombre magique. Attribuez-leur des numéros différents lorsque vous les configurez. L'exemple que vous avez montré ci-dessus ne comporte pas ce contrôle. De même, au lieu de ticket, écrivez OrderTicket()."

OrderTicket() obtiendra probablement le ticket de la dernière commande en cours, j'ai besoin de l'avant-dernière.
 
Andreev:

OrderTicket() obtiendra probablement un ticket de la dernière commande en attente, et j'ai besoin de l'avant-dernière.

Si vous placez deux ordres en attente, il est probablement plus facile de donner au premier un 1 et au second un 2. ))

Ainsi, vous et le conseiller-expert ne serez pas déroutés par les chiffres.

 

alex12, c'est déjà bien de commencer à écrire quelque chose. Beaucoup d'erreurs, mais quand même pas mal.

1) Les deux erreurs de compilation sont dues au fait que dans le même start() vous définissez deux fois les variables locales SL et TP. Vous devez les définir une fois à l'intérieur de la fonction, sinon cela provoquera une erreur.

Supprimez le type double dans le second calcul des deux variables et l'erreur disparaîtra. Mais ce n'est pas tout.

2. Êtes-vous sûr d'avoir besoin de variables externes globales avec les mêmes noms ? Le problème est que la variable SL définie à l'intérieur de la fonction est différente de la variable globale portant le même nom. Si vous voulez que ce soit exactement la même variable que l'externe (extern), supprimez le double partout.

3. La condition if() est généralement une condition logique, bien que les calculs simples ne soient pas interdits par la syntaxe. Et vous n'avez pas de condition logique.

Exercez-vous d'abord sur des programmes simples, tels que des calculs avec sortie. Vous comprendrez alors la syntaxe.

 
Andreev:

OrderTicket() obtiendra probablement le ticket de la dernière commande en attente, et j'ai besoin de l'avant-dernière.

Vous devez vous souvenir de l'heure à laquelle l'ordre a été passé, puis comparer l'heure dans la boucle et supprimer l'ordre le plus ancien, donc - regardez ceci et intégrez-le dans votre EA.
 
Mathemat:

alex12, c'est déjà bien de commencer à écrire quelque chose. Beaucoup d'erreurs, mais quand même pas mal.

1) Les deux erreurs de compilation sont dues au fait que dans le même start() vous définissez deux fois les variables locales SL et TP. Vous devez les définir une fois à l'intérieur de la fonction, sinon cela provoquera une erreur.

Supprimez le type double dans le second calcul des deux variables et l'erreur disparaîtra. Mais ce n'est pas tout.

2. Êtes-vous sûr d'avoir besoin de variables externes globales avec les mêmes noms ? Le problème est que la variable SL définie à l'intérieur de la fonction est différente de la variable globale portant le même nom. Si vous voulez que ce soit exactement la même variable que l'externe (extern), supprimez le double partout.

3. La condition if() est généralement une condition logique, bien que les calculs simples ne soient pas interdits par la syntaxe. Et vous n'avez tout simplement pas de condition logique.

Exercez-vous d'abord sur des programmes simples, comme des calculs avec sortie. Vous comprendrez alors la syntaxe.

Merci beaucoup.
 
Roman.:

Vous vous souvenez de l'heure à laquelle vous avez passé vos commandes, puis dans le cycle comparez l'heure - supprimez la plus ancienne, comme ceci - regardez ici et connectez-la à votre EA.

Merci pour le lien ! Je vais l'étudier :) J'ai une bonne idée du temps, ainsi que du numéro magique et du type de commande (bylimit ou selllimit). Mais vous ne m'avez probablement pas bien compris. Mon problème n'est pas de marquer l'ordre, mais de savoir COMMENT LE SUPPRIMER. Je ne peux supprimer que le dernier ordre en attente, quelle que soit la manière dont je définis l'avant-dernier ordre.
 

Andreev:

Merci pour le lien ! !! Je vais m'en occuper :) Avec le temps, ainsi que le numéro de magik et par type de commande (bylimit ou selllimit) - bonne idée. Mais vous ne m'avez probablement pas bien compris. Mon problème n'est pas de marquer l'ordre, mais de savoir COMMENT LE SUPPRIMER. Je ne peux supprimer que le dernier ordre en attente, quelle que soit la façon dont je définis l'avant-dernier.


Si vous suivez au moins un des conseils qui vous sont proposés (magicien, type, temps de réglage), vous n'aurez aucun problème à supprimer exactement l'ordre que votre stratégie de trading implique. ))

Utilisez deux critères dans votre sélection, par exemple le temps d'installation et le type ou le type et la magie.

 
Andreev:

Merci pour le lien ! !! Je vais m'en occuper :) Avec le temps, ainsi que le numéro magique et par type de commande (bylimit ou selllimit) est une bonne idée. Mais vous ne m'avez probablement pas bien compris. Mon problème n'est pas de marquer l'ordre, mais de savoir COMMENT LE SUPPRIMER. Je ne peux supprimer que le dernier ordre en attente, quelle que soit la manière dont je définis l'avant-dernier ordre.

Je corrige mon code selon vos termes - je vais le poster ici maintenant.
 
Andreev:

OrderTicket() obtiendra probablement un ticket de la dernière commande en cours, et j'ai besoin de l'avant-dernière.


Recalculez à chaque tick le nombre d'ordres en attente.

S'il y en a moins, cela signifie qu'un ordre en attente est devenu un ordre au marché.

Tous les autres (qui sont devenus inutiles) peuvent être supprimés.

Raison: