La balise [tp] supprimée chez certains courtiers ?

 

J'utilise les commentaires pour savoir si un ordre a été fermé par TakeProfit ou StopLoss... Je me suis rendu compte que dans MIG BANK(comptes réels) ils ont supprimé le tag "[tp]" ou "[sl]" dans les ordres... mes EAs fonctionnent dans le compte démo mais pas dans le réel car ils ont supprimé le tag... J'envisage de faire une comparaison entre le prix du TakeProfit et le prix de clôture, mais cela pourrait être imprécis en cas de dérapage à la clôture ou autre. Une idée ?

 
N'est-ce pas un de ces courtiers qui ont besoin de modifier l'ordre après ordersend() avec ordermodify() pour fixer le TP et le SL en raison de nouvelles règles ?
 
NablaQuant:

J'utilise les commentaires pour savoir si un ordre a été fermé par TakeProfit ou StopLoss... Je me suis rendu compte que dans MIG BANK (comptes réels) ils ont supprimé le tag "[tp]" ou "[sl]" dans les ordres... mes EAs fonctionnent dans le compte démo mais pas dans le réel car ils ont supprimé le tag... J'envisage de faire une comparaison entre le prix du TakeProfit et le prix de clôture, mais cela pourrait être imprécis en cas de dérapage à la clôture ou autre. Une idée ?


Les commentaires "[tp]", "[sl]" sont spécifiques au courtier. Certains les ont, d'autres non.

U peut vérifier si le prix de clôture de l'ordre est supérieur/ inférieur au prix d'ouverture et le type d'ordre.

 
Matutin:
N'est-il pas l'un de ces courtiers qui doivent modifier l'ordre après ordersend() avec ordermodify() pour fixer le TP et le SL en raison des nouvelles règles ?

Ceci est dû à l'utilisation de BT bridge (courtier semi 'ECN'), pas à de nouvelles règles.

 
Matutin:
N'est-ce pas un de ces courtiers qui doivent modifier l'ordre après orderSend() avec ordermodify() pour fixer le TP et le SL en raison des nouvelles règles ?

Non, MIG permet de définir SL et TP dans l'OrderSend().


CB

 
gordon:

Les commentaires "[tp]", "[sl]" sont spécifiques au courtier. Certains les ont, d'autres non.

Vous pouvez vérifier si le prix de clôture de l'ordre est supérieur ou inférieur au prix d'ouverture et le type d'ordre.

C'est la même chose que la fonction OrderProfit, mais ce n'est pas ce dont j'ai besoin. Vous pouvez fermer un ordre par TakeProfit en positif ou en négatif (si vous changez le TakeProfit plus tard).


Ce dont j'ai besoin est de savoir si un ordre a été fermé par TakeProfit ou StopLoss, et sans ce commentaire, je pense que ce n'est pas possible.


Je pourrais comparer le prix de clôture avec le prix initial du TakeProfit, mais cela pourrait être imprécis à cause d'un glissement ?


Merci pour vos réponses.

 
NablaQuant:

Vous pouvez fermer un ordre par TakeProfit en positif ou en négatif (si vous changez le TakeProfit plus tard).

Bon point.


Je pourrais comparer le prix de clôture avec le prix initial du TakeProfit, mais cela pourrait être imprécis en raison d'un glissement ?

Vous pouvez vérifier si MathAbs(closeprice - tp) > MathAbs(closeprice - sl)

 
C'est possible. Il vous faudrait construire une logique pour faire ce qui suit : - Persister les informations concernant les ordres que l'EA a fermés - Vérifier continuellement le pool d'historique d'ordres pour les ordres qui sont "dans le champ d'application" mais que votre EA n'a pas fermés - Vérifier le signe de profit pour déterminer si un courtier a invoqué le SL ou le TP Cela fonctionne pour moi. CB
 
Cela semble être la seule solution... Merci !
 
NablaQuant:
Cela semble être la seule solution... merci !

Je ne sais pas si cela peut aider ou non mais, en plus de faire ce que CB suggère, je mets des espaces à droite dans les commentaires de mes ordres afin que le courtier n'écrase pas les éléments importants. Ce n'est pas une sécurité absolue, mais j'aime bien cette protection supplémentaire au cas où le fichier de données externe viendrait à disparaître.

 

Hmmm.... Peut-être que quelque chose m'échappe, mais y a-t-il des cas où les éléments suivants ne suffisent pas ?


   // select the closed order first and then do this:
   
   double sl_diff = MathAbs(OrderClosePrice() - OrderTakeProfit()),
          tp_diff = MathAbs(OrderClosePrice() - OrderStopLoss());
   
   if ( sl_diff > tp_diff )
      Print("order closed at tp");
   else
      Print("order closed at sl");

   // I assume here that an equality of sl_diff and tp_diff is impossible...?