FORTS. Questions relatives à l'application de la loi - page 15
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
Bonjour, Renat !
Pourriez-vous commenter la situation suivante sur FORTS (réel) :
Il y a un prix dans le gobelet avec un volume de 8. Ce volume a été réalisé par deux correspondants (4 avec le même prix)
J'achète (vend) ce volume (8)en utilisant un ordrelimite.
Il se passe ce qui suit :
1. Si l'ordre est entièrement exécuté, j'obtiens dans OnTradeTransaction:
2. Si l'ordre est exécuté avec le volume du 2ème correspondant, j'obtiens ce qui suit dans OnTradeTransaction :
3. Si l'ordre est exécuté avec le volume du 1er correspondant, j'obtiens dans OnTradeTransaction :
Pourquoi ? Car dans le deuxième et le troisième cas, l'ordre a été partiellement exécuté.
J'ai fait un chèque sur cette commande et voici le résultat :
Cela s'est produit sur la version 1060 du terminal et sur la version 1035 du serveur.
Après le dégagement du soir (principal), le terminal a été mis à jour à 1085, mais je...
a arrêté la négociation pour en connaître la raison.
Sur la démo (1085 - 1085), je ne peux pas reproduire l'erreur (pas de changements rapides dans la pile).
"Pulled up" l'historique de toutes mes commandes.
L'erreur existe dans les versions 1035, 1060 et 1085.
Dans le premier cas, l'ordre est exécuté intégralement en une seule transaction et le solde non exécuté n'est pas supprimé, car l'ordre a été exécuté pour le volume total. Dans le journal, on peut voir une des entrées que vous avez mentionnées :
Dans le second cas, l'ordre est partiellement exécuté et le solde non exécuté est supprimé. Cela se produit parce que vous avez défini la politique d'exécution des ordres - ORDER_FILLING_IOC:
Dans votre cas, l'ordre portait sur 8 lots à 1222.1. Au moment où l'ordre a été passé, le volume des contre-ordres à un prix non inférieur à 1222.1 était de 4 lots. En conséquence, 4 lots ont été exécutés comme une seule transaction (parce que 4 lots étaient représentés par un seul ordre opposé). Le reste de la commande a été retiré, c'est-à-dire que la commande a été annulée.
D'après les journaux que vous avez fournis :
l'ordre a été partiellement exécuté :
Ensuite, le reste a été supprimé, c'est-à-dire que la commande a été annulée :
Dans le premier cas, l'ordre est exécuté intégralement en une seule transaction et le solde non exécuté n'est pas supprimé, car l'ordre a été exécuté pour le volume total. Dans le journal, on peut voir une des entrées que vous avez mentionnées :
Dans le second cas, l'ordre est partiellement exécuté et le solde non exécuté est supprimé. Cela se produit parce que vous avez défini la politique d'exécution des ordres - ORDER_FILLING_IOC:
Dans votre cas, l'ordre portait sur 8 lots à 1222.1. Au moment où l'ordre a été passé, il y avait 4 lots à un prix qui n'était pas inférieur à 1222.1. En conséquence, 4 lots ont été exécutés comme une seule transaction (parce que 4 lots étaient représentés par un seul ordre opposé). Le reste de la commande a été retiré, c'est-à-dire que la commande a été annulée.
D'après les journaux que vous avez fournis :
l'ordre a été partiellement exécuté :
Ensuite, le solde est supprimé, c'est-à-dire que l'ordre est annulé :
Alors comment interpréter la DOCUMENTATION ?
Le problème est que surTradeTransaction, il n'y a pas de message concernant la transaction(TRADE_TRANSACTION_DEAL_ADD) lorsqueORDER_STATE_CANCELED !
Mais l'échange a eu lieu !
Alors comment interpréter la DOCUMENTATION ?
L'ordre a été levé. On peut laisser le client rentrer chez lui.
Le problème est que surTradeTransaction il n'y a pas de message de transaction(TRADE_TRANSACTION_DEAL_ADD) lorsqueORDER_STATE_CANCELED !
Mais la transaction l'était !
Et où avez-vous vu PARTIEL (c'est une façon de faire) ? Seulement ANNULÉ !
Et dans l'historique, il est enregistré (voir image) comme ANNULÉ.
Bonjour Renat !
Pensez-vous qu'il est correct qu'un ordre partiellement exécuté soit stocké dans l'historique comme un ordreORDER_STATE_CANCELED?
et dans OnTradeTransaction nous ne devrions pas avoir une confirmation de la transaction d'un ordre partiellement exécuté ?
Dites-moi, la logique actuelle de la plate-forme reste-t-elle telle quelle ou êtes-vous prêt à apporter des changements dans un avenir proche ?
Bonjour Renat !
Pensez-vous qu'il est correct qu'un ordre partiellement exécuté soit stocké dans l'historique comme un ordreORDER_STATE_CANCELED?
et dans OnTradeTransaction nous ne devrions pas avoir une confirmation de la transaction d'un ordre partiellement exécuté ?
Dites-moi, la logique actuelle de la plate-forme reste-t-elle telle quelle ou êtes-vous prêt à apporter des changements dans un avenir proche ?
L'avez-vous vérifié vous-même ou avez-vous simplement réagi à des descriptions incomplètes de Mikalas ? La commande a été passée par le CIO après tout.
Une fois de plus, nous avons vérifié le comportement de notre côté :
1. Installation d'un Expert Advisor à partir de l'article Prescriptions of MQL5 - Processing TradeTransaction Events.
2. Nous avons placé un ordre IOC sur l'instrument à faible liquidité SILV-3.15. L'ordre a été placé pour vendre 11 lots au prix de 16.48, alors que seulement 1 lot était disponible à ce prix.
Nous avons obtenu ce qui suit :
Dans le terminal :
Outre le fait que l'ordre est "annulé", nous pouvons voir qu'un lot sur les 11 demandés a été exécuté, ce qui est le comportement correct.
Dans le journal du conseiller expert :
C'est-à-dire que la transaction relative à l'opération est intervenue dans OnTradeTransaction(). Si la transaction n'avait pas lieu, vous ne la verriez pas du tout dans le terminal. Veuillez vérifier que la transaction TRADE_TRANSACTION_DEAL_ADD n'est pas arrivée. Comparez le comportement de votre EA avec le comportement suggéré ci-dessus par l'EA.
Bonjour, Renat !
Vous ne garantissez pas l'arrivée de l'événement OnTradeTransaction, donc il n'est pas arrivé (TRADE_TRANSACTION_DEAL_ADD)
Et lorsque l'événement TRADE_TRANSACTION_HISTORY_ADD est arrivé, le statut de la commande étaitORDER_STATE_CANCELED.
C'est là que les "jambes ont poussé".
À mon avis, si l'ordre (quelle que soit la manière dont il a été exécuté) a été partiellement exécuté, alors son statut
devrait être enregistré dans l'historique comme ORDER_STATE_PARTIAL