Прежде чем отправить торговому серверу запрос на торговую операцию, рекомендуется проверить, что он заполнен без формальных ошибок. Проверка осуществляется функцией OrderCheck, которой передается сам проверяемый запрос в структуре MqlTradeRequest и приемная переменная типа структуры MqlTradeCheckResult, куда и будет записан результат проверки.
Помимо корректности запроса структура позволит оценить состояние счета после выполнения торговой операции, в частности, баланс, средства и маржу.
struct MqlTradeCheckResult
|
В следующей таблице приводится описание полей.
Поле |
Описание |
|---|---|
retcode |
Предполагаемый код возврата |
balance |
Значение баланса, которое будет после выполнения торговой операции |
equity |
Значение собственных средств, которое будет после выполнения торговой операции |
profit |
Значение плавающей прибыли, которое будет после выполнения торговой операции |
margin |
Общий размер заблокированной маржи после торговой операции |
margin_free |
Размер свободных собственных средств, которые останутся после выполнения торговой операции |
margin_level |
Уровень маржи, который установится после выполнения торговой операции |
comment |
Комментарий к коду ответа, описание ошибки |
В структуре, заполненной вызовом OrderCheck, поле retcode будет содержать код результата из числа тех, что платформа поддерживает для обработки реальных торговых запросов и проставляет в аналогичное поле retcode структуры MqlTradeResult после вызова торговых функций OrderSend и OrderSendAsync.
Константы с кодами возврата представлены в документации MQL5. Для их более наглядного вывода в журнал при отладке экспертов было определено прикладное перечисление TRADE_RETCODE в файле TradeRetcode.mqh. В нем все элементы имеют идентификаторы, совпадающие со встроенными константами, но без общего префикса "TRADE_RETCODE_". Например,
enum TRADE_RETCODE
|
Таким образом, использование TRCSTR(r.retcode), где r — структура, предоставит минимальное описание числового кода.
Пример применения макроса и анализа структуры мы рассмотрим в следующем разделе про функцию OrderCheck.