FORTS : Codes de retour de OnTradeTransaction() - page 11

 
Dmitry Fedoseev:
On ne sait pas exactement dans quel état se trouvait la commande.

Pour SUPPRIMER un ordre, il est important qu'il existe vraiment et qu'il ne soit pas dans un état "intermédiaire".

Regardez attentivement (avec toutes les explications) :

https://www.mql5.com/ru/forum/58012/page9#comment_2074928

ФОРТС: OnTradeTransaction() коды возврата
ФОРТС: OnTradeTransaction() коды возврата
  • www.mql5.com
Сейчас, коды возврата торгового сервера функции OnTradeTransaction() выглядят так:. - Страница 9 - Категория: биржевой трейдинг
 
Михаил:

Pour SUPPRIMER un ordre, il est important qu'il existe vraiment et qu'il ne soit pas dans un état "intermédiaire".

Regardez attentivement (avec toutes les explications) :

https://www.mql5.com/ru/forum/58012/page9#comment_2074928

Cela reste intéressant, et pourrait être utile, comme un argument clair en faveur de servicedesk.
 
Dmitry Fedoseev:
Toujours intéressant, et pourrait être utile, comme un argument clair pour le servicedesk.

Vous pensez donc que la fonction CheckOrderState() n'est pas écrite correctement ?

P/S SD, silencieux comme toujours....

 
Михаил:

Vous pensez donc que la fonction CheckOrderState() n'est pas écrite correctement ?

P/S SD, silencieux comme toujours....

Je ne sais pas. Si c'était ORDER_STATE_PLACED, c'est probablement le même bug.

Et si c'était ORDER_STATE_PARTIAL, je ne sais pas. Alexander ne nous a pas parlé de ce cas et peut-être y a-t-il des subtilités.

Dans tous les cas, la fonction peut être améliorée pour savoir exactement quel était l'état de la commande.

 
Dmitry Fedoseev:

Je ne sais pas. Si c'était ORDER_STATE_PLACED, c'est probablement le même bug.

Et si c'était ORDER_STATE_PARTIAL, je ne sais pas. Alexander ne nous a pas parlé de ce cas, peut-être y a-t-il des subtilités.

Dans tous les cas, la fonction peut être améliorée pour savoir quel était exactement l'état de la commande.

Peut-être peut-on l'améliorer, mais (à mon avis) ce qui suit est important :

1. Lorsque l'ordre se trouve dans un état intermédiaire, c'est-à-dire.. :

ÉTAT_DE_LA_COMMANDE_DÉMARRÉ

DEMANDE_D'ÉTAT_DE_COMMANDE_ADDITIONNEL

DEMANDE_D'ÉTAT_DE_COMMANDE_MODIFIÉE

DEMANDE D'ANNULATION D'UN ÉTAT DE COMMANDE

alors rien ne peut être fait avec elle, donc ORD_BUSY

(Je ne vois pas du tout l'intérêt de ces états)

2. Si la commande n'est pas dans l'historique, elle EXISTE, et peut prendre UNIQUEMENT

deux états :

ORDER_STATE_PARTIAL = ORD_EXIST_PARTIAL

ORDER_STATE_PLACED = ORD_EXIST

3. Toutes ces conclusions ne sont pas tirées "du plafond", mais de la documentation de MQL5,

et si les développeurs ont des "particularités" ils DOIVENT

les décrire dans le manuel !

4. Par exemple, je ne suis pas clairvoyant et je ne peux pas savoir ce que les développeurs voulaient dire par

quand ils ont écrit telle ou telle fonction.

Quelle que soit l'explication, c'est le résultat !

P/S Bien sûr, il peut arriver que vous compreniez mal quelque chose, mais pas dans ce cas.

 

Pourquoi n'y a-t-il pas de code de retour lorsque l'ordre est "renvoyé" par le courtier (bourse) ?

case ORDER_NONE_REJECTED:
              Print( __FUNCTION__, ": Main ордер отклонён брокером(биржей). Билет = ", trans.order, " Причина: ", result.retcode, " ", result.retcode_external );
            break

2016.09.02 16:11:05.687 trader (GAZR-12.16,H1)    OnTradeTransaction: Main ордер отклонён брокером(биржей). Билет = 43595612 Причина: 0 0
2016.09.02 16:11:05.687 Trades  'xxxxx': exchange buy 9.00 GAZR-12.16 at market
2016.09.02 16:11:05.687 Trades  'xxxxx': accepted exchange buy 9.00 GAZR-12.16 at market
2016.09.02 16:11:05.687 Trades  'xxxxx': exchange buy 9.00 GAZR-12.16 at market placed for execution in 11.344 ms
2016.09.02 16:18:45.902 Trades  'xxxxx': buy limit 9.00 GAZR-3.17 at 14165
2016.09.02 16:18:45.908 Trades  'xxxxx': accepted buy limit 9.00 GAZR-3.17 at 14165
2016.09.02 16:18:45.909 Trades  'xxxxx': buy limit 9.00 GAZR-3.17 at 14165 placed for execution
 
prostotrader:

Pourquoi n'y a-t-il pas de code de retour lorsque l'ordre est "renvoyé" par le courtier (bourse) ?

Il n'y a pas toujours ce code lorsque vous donnez l'exécution à une partie.

Nous allons vérifier les passerelles et envisager de remplir ce code de retour si nous trouvons les réponses exactes.

 
Renat Fatkhullin:

Ce code n'est pas toujours présent lorsque vous donnez l'exécution à une partie.

Nous allons vérifier les passerelles et envisager de remplir ce code de retour.

Merci.
 

Il y a eu une sorte de pépin sur le serveur MT5 aujourd'hui Des ordres ont été rejoints sans raison (0 0).....

Print( __FUNCTION__, ": Buy ордер отклонён брокером(биржей). Билет = ", trans.order,
                                   " Причина: ", result.retcode, " ", result.retcode_external );

2016.10.20 20:31:08.793 trader (PLT-12.16,H1)     OnTradeTransaction: Buy ордер отклонён брокером(биржей). Билет = 46614026 Причина: 0 0
2016.10.20 20:31:08.797 trader (TATN-12.16,H1)    StopTrading: Время сервера = 20:31:08; Статус ордера = BUY_ORDER; Билет = 46614027  Ордер отклонён.
2016.10.20 20:31:08.797 trader (TATN-12.16,H1)    OnTradeTransaction: Buy ордер отклонён брокером(биржей). Билет = 46614027 Причина: 0 0
2016.10.20 20:31:08.801 trader (BR-12.16,M1)      StopTrading: Время сервера = 20:31:08; Статус ордера = SELL_ORDER; Билет = 46614028  Ордер отклонён.
2016.10.20 20:31:08.801 trader (BR-12.16,M1)      OnTradeTransaction: Sell ордер отклонён брокером(биржей). Билет = 46614028 Причина: 0 0
2016.10.20 20:31:08.804 trader (SNGP-12.16,H1)    StopTrading: Время сервера = 20:31:08; Статус ордера = BUY_ORDER; Билет = 46614029  Ордер отклонён.
2016.10.20 20:31:08.804 trader (SNGP-12.16,H1)    OnTradeTransaction: Buy ордер отклонён брокером(биржей). Билет = 46614029 Причина: 0 0
2016.10.20 20:31:08.806 trader (MXI-12.16,M1)     StopTrading: Время сервера = 20:31:08; Статус ордера = BUY_ORDER; Билет = 46614030  Ордер отклонён.