aide à la codification de ordersend()... - page 2

 

Tu sais, je pensais justement à ce que je t'ai dit tout à l'heure :

Si c'est un achat :

SL = Bid - StopLoss* Point

TP = Bid + TakeProfit* Point

Si c'est une vente :

SL = Ask + StopLoss* Point ;

TP = Ask - TakeProfit* Point ;

J'ai toujours fait comme ça parce que c'est comme ça qu'ils le font dans les exemples du livre MQL4 mais maintenant je pense que ça ne semble pas correct, sûrement que si vous ouvrez sur le prix de l'Ask vous voulez prendre le profit à ce prix + votre montant TP, et vous voulez arrêter à ce prix - votre montant SL ?

En d'autres termes, la façon dont vous l'avez fait semble correcte ou y a-t-il quelque chose qui m'échappe ?

 
mugged:

1) Oui, cette méthode fonctionne ! Mais y a-t-il un moyen de contourner ce problème ? Je déteste l'idée du pire cas où la commande initiale est passée mais la modification n'a pas lieu (la connexion meurt, une erreur se produit, etc etc).

Bonne question ! Je n'ai JAMAIS vu quelqu'un qui ait trouvé une solution à ce problème.

Veuillez demander à votre courtier ce qu'il en est de ce "pire cas".

 
mugged:

1) Oui, cette méthode fonctionne ! Mais y a-t-il un moyen de contourner ce problème ? Je déteste l'idée du pire des cas où l'ordre initial est passé mais que la modification n'a pas lieu (la connexion meurt, une erreur se produit, etc.).

Dans mon code, si l'OrderModify échoue, il est réessayé plusieurs fois, si les réessais échouent, l'ordre est fermé, si l'OrderClose échoue, il est réessayé, si les réessais échouent, il y a une autre fonction qui vérifie toutes les transactions, elle détectera l'ordre sans SL ou TP et essaiera de le fermer. Toutes ces défaillances génèrent des erreurs, qui sont signalées à l'écran et par e-mail, l'e-mail générant également une alerte poussée sur mon téléphone portable.

Il y a un autre mode d'échec que je n'ai pas encore traité, c'est une perte de connectivité à l'Internet immédiatement après que l'ordre est placé et avant qu'il soit modifié ... . J'ai une idée pour gérer cela, mais je n'ai pas les compétences requises en matière de codage PHP.

 

J'ai contacté mon courtier, ils ont été plutôt inutiles car ils ne proposent aucune aide à la programmation. Tout ce que le représentant savait, c'était comment appliquer un EA au graphique.

C'est un peu étrange que ce problème ait commencé à se produire, il fonctionnait parfaitement bien dans le passé. Je me demande ce qui l'a provoqué...

 
Ce problème existe-t-il depuis longtemps ou est-il nouveau ?
 
C'est un fait de la vie avec un courtier ECN.
 

Merci pour votre aide.

Je suppose que je vais faire avec.

 
RaptorUK:

Dans mon code, si l'OrderModify échoue, il est réessayé plusieurs fois, si les réessais échouent, l'ordre est fermé, si l'OrderClose échoue, il est réessayé, si les réessais échouent, il y a une autre fonction qui vérifie toutes les transactions, elle détectera l'ordre sans SL ou TP et essaiera de le fermer. Toutes ces défaillances génèrent des erreurs, qui sont signalées à l'écran et par e-mail, l'e-mail générant également une alerte poussée sur mon téléphone portable.

Il y a un autre mode d'échec que je n'ai pas encore traité, c'est une perte de connectivité à l'Internet immédiatement après que l'ordre est placé et avant qu'il soit modifié ... . J'ai une idée pour gérer cela, mais je n'ai pas les compétences requises en matière de codage PHP.


Raptor, si vous le permettez... comment prévoyiez-vous de vérifier la connectivité via php ?
 
Vous pourriez peut-être avoir un téléphone portable en mode modem connecté à l'ordinateur, de sorte que si l'ordinateur perd sa connectivité Internet normale, il peut se reconnecter temporairement en utilisant le réseau du téléphone portable.
 
RaptorUK:
Il y a un autre mode d'échec que je n'ai pas encore traité, c'est la perte de connectivité à l'Internet immédiatement après que l'ordre soit placé et avant qu'il soit modifié.... J'ai une idée pour gérer cela, mais je n'ai pas les compétences requises en codage PHP.

Mon approche consiste à simplement signaler l'erreur et à revenir. Au prochain tick, au redémarrage, à la reconnexion, la boucle orderSelect d'EA trouvera l'ordre ouvert et fixera ensuite les stops.

Le plus gros problème est que l'orderSend ne renvoie aucun résultat. L'ordre peut être ouvert ou non. Vous le saurez dès que vous aurez le prochain tick.