![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Oui, bon conseil...
Répéter
Nous devons vérifier lesrésultats.l'ordre.
Si la commande est passée, cela ne signifie pas que l'affaire est déjà concl ue.
En outre, il faut également vérifier le statut de la commande et voir si elle est déjà apparue dans l'historique ou non.
L'échange ne fonctionne pas avec des positions, mais uniquement avec des ordres.
J'ai récemment soulevé un sujet sur la réouverture des commandes. Je pensais avoir résolu le problème, car tout a fonctionné sans problème pendant une semaine. Mais aujourd'hui, j'ai rencontré un problème similaire uniquement à l'ouverture.
Beaucoup d'ordres ont été ouverts sur Finam, et 9 sur Otkritie... alors qu'un seul ordre aurait dû être ouvert dans tous les cas.
Voici un extrait de code de l'EA
c'est-à-dire que nous pouvons voir dans le code que si l'opération est réussie, la variableOpenOrders augmente, qui est initialement égale à 0
S'il est supérieur à 0, il ne devrait pas y avoir d'ouverture supplémentaire de l'ordre, mais la pile entière d'ordres est ouverte avec le commentaire Ordre1.
Je vérifie s'il y a une réponse positive dans la fonction d'ouverture de la commande et si le ticket de commande a été reçu, mais pour une raison quelconque, cette fonction renvoie faux, même si la commande est effectivement établie.
Expliquez ce qui ne va pas, comment résoudre ce problème ?
Dites-moi, pour quel marché écrivez-vous ce code ?
Pour le courtier en bourse.
Répéter
En outre, vous devez également vérifier le statut de la commande et voir si elle est déjà apparue dans l'historique ou non.
La bourse ne traite pas de positions, mais uniquement d'ordres.
Eh bien Sergei, voir.... ceci est tiré de la documentation du résultat de la requête
Offre spéciale
Une transaction de ticket, si elle a été exécutée. Ceci est signalé lors d'une transaction commercialeTRADE_ACTION_DEAL
commander
Commande de billets, si un billet a été placé. Notifié pendant une opération commercialeTRADE_ACTION_PENDING
Je n'ai pas d'ordre en attente, j'utiliseTRADE_ACTION_DEAL
Vous devez travailler avec des limiteurs, puis tout est correct.... et voici l'entrée du marché au prix actuel.Eh bien Sergei, voir.... ceci est tiré de la documentation du résultat de la requête
transaction
Offre de billets, le cas échéant. À déclarer lors d'une transactionTRADE_ACTION_DEAL
commander
Commande de billets, si un billet a été placé. Notifié pendant une opération commercialeTRADE_ACTION_PENDING
Je n'ai pas d'ordre en attente, j'utiliseTRADE_ACTION_DEAL
Vous devez travailler avec des limiteurs, puis tout est correct.... et ici vous entrez du marché au prix actuel.SetTypeFilling
SetTypeFilling
Définit le type de commande en remplissant
Vous fixez ce que vous jugez bon.
Au fait, je viens de vérifier les résultats de l'envoi de la commande avec les impressions.
donc le ticket donne 0 dans tous les cas
res=OrderSend(Request,Results);
if(res)
{
Print(_Symbol+" Test True order "+(string)Results.deal);
if(Results.deal>0) return(true);
else return(false);
}
Print(_Symbol+" Test False order "+(string)Results.deal);
return(false);
Au fait, je viens de vérifier les résultats de l'envoi d'une commande avec les impressions.
Le ticket affiche 0 dans tous les cas
Des progrès ont été réalisés ... ))
Au fait, je viens de vérifier auprès des imprimeurs les résultats de l'envoi de la commande
donc le ticket donne 0 dans tous les cas
res=OrderSend(Request,Results);
if(res)
{
Print(_Symbol+" Test True order "+(string)Results.deal);
if(Results.deal>0) return(true);
else return(false);
}
Print(_Symbol+" Test False order "+(string)Results.deal);
return(false);
Où sont les codes de retour ? Comment puis-je savoir s'il y a eu une erreur ou non ?
Je vous ai donné un exemple : la double protection et la sortie du ticket et du code de retour.
Je n'ai pas trouvé d'exemple. Laissez-moi le dire ainsi.
Lorsque vous envoyez un ordre sur le marché, l'ordre doit être exécuté ou rejeté (puisque vous avez une exécution FOK).
Vous n'avez donc pas besoin d'attendre un billet, vous devez obtenir un TICKET.
Une fois que vous avez reçu un ticket, vous "allez" à OnTradeTransaction() avec le ticket.
vous écoutez TRADE_TRANSACTION_HISTORY_ADD parce que les ordres de marché arrivent toujours dans l'historique.
et regarder le ticket pour voir ce qui est arrivé à la commande.