Скачать MetaTrader 5

OrderCheck() Вопросы

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Скачай MetaTrader 5 и начни торговать уже сегодня!
Yedelkin
4532
Yedelkin 2010.09.04 17:50 

Вопрос 1.  Из описания структуры результатов проверки торгового запроса (MqlTradeCheckResult) следует, что поле retcode предназначено для отражения кодов возврата торгового сервера. При этом в описании поля retcode ссылка на коды возврата торгового сервера содержится без каких-либо оговорок, из чего можно сделать вывод, что после выполнения функции OrderCheck() в поле retcode может быть отражен любой код из перечня имеющихся кодов возврата торгового сервера.

Но если функция OrderCheck() предназначена всего лишь для проверки достаточности средств для совершения требуемой торговой операции (а также для проверки правильности заполненных параметров в переменной типа структуры MqlTradeRequest), и не предназначена для отправки торговых запросов на торговый сервер, то каким образом в поле retcode могут быть отражены такие коды, как 10008 (Ордер размещен), 10009 (Заявка выполнена), 10010 (Заявка выполнена частично) и т.д.?

Иными словами, все ли имеющиеся коды возврата торгового сервера могут быть фактически отражены в поле retcode у переменной типа структуры MqlTradeCheckResult? И если в этом поле не могут быть отражены те или иные коды возврата, то какие именно?

Дмитрий Александрович
1705
Дмитрий Александрович 2010.09.05 13:05  
Yedelkin:

Вопрос 1.  Из описания структуры результатов проверки торгового запроса (MqlTradeCheckResult) следует, что поле retcode предназначено для отражения кодов возврата торгового сервера. При этом в описании поля retcode ссылка на коды возврата торгового сервера содержится без каких-либо оговорок, из чего можно сделать вывод, что после выполнения функции OrderCheck() в поле retcode может быть отражен любой код из перечня имеющихся кодов возврата торгового сервера.

Но если функция OrderCheck() предназначена всего лишь для проверки достаточности средств для совершения требуемой торговой операции (а также для проверки правильности заполненных параметров в переменной типа структуры MqlTradeRequest), и не предназначена для отправки торговых запросов на торговый сервер, то каким образом в поле retcode могут быть отражены такие коды, как 10008 (Ордер размещен), 10009 (Заявка выполнена), 10010 (Заявка выполнена частично) и т.д.?

Иными словами, все ли имеющиеся коды возврата торгового сервера могут быть фактически отражены в поле retcode у переменной типа структуры MqlTradeCheckResult? И если в этом поле не могут быть отражены те или иные коды возврата, то какие именно?

Можно попробовать проверить обращается ли терминал к серверу во время вызова этой функции, отсюда судить о кодах ответа.
Ну а лучше узнать у разработчиков, но они наверно в отпуске, давно не видно было:)
Дмитрий Александрович
1705
Дмитрий Александрович 2010.09.05 13:22  

Проверил, не обращается к серверу, OrderCheck() работает даже без соединения с сервером:

//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                                             ProF |
//|                                                          http:// |
//+------------------------------------------------------------------+
#property copyright "ProF"
#property link      "http://"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
        MqlTradeRequest req;
        MqlTradeCheckResult res;
        MqlTick tick;
        SymbolInfoTick(_Symbol,tick);
        req.action = TRADE_ACTION_DEAL;
        req.magic = 123;
        req.symbol = _Symbol;
        req.volume = 0.1;
        req.price = tick.ask;
        req.sl = 0;
        req.tp = 0;
        req.deviation = 20;
        req.type = ORDER_TYPE_BUY;
        req.type_filling = ORDER_FILLING_AON;
   bool result = OrderCheck(req,res);
  }
//+------------------------------------------------------------------+

Так, что большая часть кодов ответа скорее всего не используется.:)
Проверил какие коды смогу получить: 10014,10016(при не правильной стопах и цене(!) - хотя при цене должна быть ошибка 10015) и 0 (если нет ошибки)

Vladimir Batrudinov
4926
Vladimir Batrudinov 2010.09.05 13:26  
mrProF:

Проверил, не обращается к серверу, OrderCheck() работает даже без соединения с сервером:

Так, что большая часть кодов ответа скорее всего не используется.:)

Тут скорей всего нет, а вот в других местах да. Да и отвечает скорей всего не сервер (в данном случае), а функция...
Дмитрий Александрович
1705
Дмитрий Александрович 2010.09.05 13:33  
Я имел ввиду что большая часть кодов ответа не используется в поле retcode структуры MqlTradeCheckResult. :)
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результатов проверки торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результатов проверки торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура результатов проверки торгового запроса - Документация по MQL5
Vladimir Batrudinov
4926
Vladimir Batrudinov 2010.09.05 13:36  
mrProF:
Я имел ввиду что большая часть кодов ответа не используется в поле retcode структуры MqlTradeCheckResult. :)
Это понятно...
Yedelkin
4532
Yedelkin 2010.09.05 15:42  
mrProF:
Я имел ввиду что большая часть кодов ответа не используется в поле retcode структуры MqlTradeCheckResult. :)

ОК. Если разработчики не опровергнут этот вывод, то остаётся вопрос: какие именно коды возврата не предназначены для отражения в поле retcode у переменной типа структуры MqlTradeCheckResult?

Дмитрий Александрович
1705
Дмитрий Александрович 2010.09.05 16:24  
Yedelkin:

ОК. Если разработчики не опровергнут этот вывод, то остаётся вопрос: какие именно коды возврата не предназначены для отражения в поле retcode у переменной типа структуры MqlTradeCheckResult?

"Проверил какие коды смогу получить: 10014,10016(при не правильной стопах и цене(!) - хотя при цене должна быть ошибка 10015) и 0 (если нет ошибки)" и наверно 10019 (не уверен)

Остальные мне не встречались...

Yedelkin
4532
Yedelkin 2010.09.05 17:11  
mrProF:

"Проверил какие коды смогу получить: 10014,10016(при не правильной стопах и цене(!) - хотя при цене должна быть ошибка 10015) и 0 (если нет ошибки)" и наверно 10019 (не уверен)

Кстати, в перечислении ENUM_TRADE_RETURN_CODES, описывающем все коды возврата торгового сервера, код 0 отсутствует. Откуда он взялся и что означает (о каких ошибках идёт речь)?
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера - Документация по MQL5
Дмитрий Александрович
1705
Дмитрий Александрович 2010.09.05 17:18  
Yedelkin:
Кстати, в перечислении ENUM_TRADE_RETURN_CODES, описывающем все коды возврата торгового сервера, код 0 отсутствует. Откуда он взялся и что означает (о каких ошибках идёт речь)?
Когда OrderCheck() возвращает true - в retcode - "0".
Yedelkin
4532
Yedelkin 2010.09.05 17:21  
mrProF:
Когда OrderCheck() возвращает true - в retcode - "0".

Понял. Спасибо большое!

Прихожу к выводу, что описание поля retcode у переменной типа структуры MqlTradeCheckResult далеко от совершенства.

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результатов проверки торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результатов проверки торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура результатов проверки торгового запроса - Документация по MQL5
12345
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий