Торговые функции
© 2000-2011, MetaQuotes Software Corp.
621
OrderSend
Функция OrderSend() предназначена для совершения торговых операций через отправку запросов
на торговый сервер.
bool OrderSend(
MqlTradeRequest& request, // структура запроса
MqlTradeResult& result // структура ответа
);
Параметры
request
[in] Указатель на структуру типа MqlTradeRequest, описывающую торговое действие клиента.
result
[in,out] Указатель на структуру типа MqlTradeResult, описывающую результат торговой
операции в случае успешного выполнения (возврата true).
Возвращаемое значение
В случае успешной базовой проверки структур (проверка указателей) возвращается true - это не
свидетельствует об успешном выполнении торговой операции. Для получения более
подробного описания результата выполнения функции следует анализировать поля структуры
result.
Примечание
Торговый запрос проходит несколько стадий проверок на торговом сервере. В первую очередь
проверяется корректность заполнения всех необходимых полей параметра request, и при
отсутствии ошибок сервер принимает ордер для дальнейшей обработки. При успешном принятии
ордера торговым сервером функция OrderSend() возвращает значение true.
Рекомендуется самостоятельно проверить запрос перед отправкой его торговому серверу. Для
проверки запроса существует функция OrderCheck(), которая не только проверит достаточность
средств для совершения торговой операции, но и вернет в результатах проверки торгового
запроса многие другие полезные параметры:
код возврата, который сообщит об ошибке в проверяемом запросе;
значение баланса, которое будет после выполнения торговой операции;
значение собственных средств, которое будет после выполнения торговой операции;
значение плавающей прибыли, которое будет после выполнения торговой операции;
размер маржи, необходимый для требуемой торговой операции;
размер свободных собственных средств, которые останутся после выполнения требуемой
торговой операции;
уровень маржи, который установится после выполнения требуемой торговой операции;
комментарий к коду ответа, описание ошибки.
Следует иметь в виду при выставлении рыночного ордера, что успешное окончание работы
метода OrderSend() не всегда означает успешное совершение сделки. Необходимо проверять в
возвращаемой структуре результата result значение retcode, содержащее код возврата
торгового сервера, а также значение полей deal или order в зависимости от типа операции.
Каждый принятый ордер хранится на торговом сервере в ожидании обработки до тех пор, пока