Yedelkin: Да, так и стараюсь делать. OrderCheck() решил ввести, чтобы поменьше грузить торговый сервер, если запрос по каким-либо причинам окажется некорректным.
Чтобы меньше сервер грузить Вы сделайте корректную обработку ошибки, например, если рынок закрыт - ждать, если реквота - попробовать еще пару раз, затем пауза, если неверные стопы много раз - прекратить работу и сообщить (если не на чемпионате) и т.п. Чтобы не было зацикливания при возникновении ошибки.
Ну я бы не сказал что это ошибка, в описании написано:
В случае нехватки средств или ошибочно заполненных
параметров функция возвращает false. В случае успешной базовой проверки структур
(проверка указателей) возвращается true – это не является свидетельством того, что запрашиваемая
торговая операция непременно выполнится успешно. Для получения подробного описания результата выполнения
функции следует анализировать поля структуры result.
Так что это функция так, для виду, последнее слово за сервером.
Я не сказал что ошибка - недоработка.
Связи с сервером то может и не быть, да и запрет на автоматическую торговлю в терминале (кнопкой) никто не отменял...
PS
Хотя если рассматривать функцию только для корректности заполнения структур...
Здравствуйте, уважаемые форумчане! Столкнулся с проблемой обработки запроса. Получаю код 10013- неправильный запрос. Уже голову сломал- не могу найти ошибку. Может кто поможет. Вот сам запрос:
Здравствуйте, уважаемые форумчане! Столкнулся с проблемой обработки запроса. Получаю код 10013- неправильный запрос. Уже голову сломал- не могу найти ошибку. Может кто поможет. Вот сам запрос:
Да, так и стараюсь делать. OrderCheck() решил ввести, чтобы поменьше грузить торговый сервер, если запрос по каким-либо причинам окажется некорректным.
Ну я бы не сказал что это ошибка, в описании написано:
В случае нехватки средств или ошибочно заполненных параметров функция возвращает false. В случае успешной базовой проверки структур (проверка указателей) возвращается true – это не является свидетельством того, что запрашиваемая торговая операция непременно выполнится успешно. Для получения подробного описания результата выполнения функции следует анализировать поля структуры result.
Я не сказал что ошибка - недоработка.
Связи с сервером то может и не быть, да и запрет на автоматическую торговлю в терминале (кнопкой) никто не отменял...
PS
Хотя если рассматривать функцию только для корректности заполнения структур...
Хотя если рассматривать функцию только для корректности заполнения структур...
По сути она таковой и является. Именно это и написано в справке.
По сути она таковой и является. Именно это и написано в справке.
А почему к примеру не позволить ей проводить дополнительную проверку, к примеру контролировать есть или нет соедиение с сервером?
Коды то это позволяют...
Я конечно понимаю что проверить закрыт ли рынок, есть или нет соединение с сервером (да и многое другое) можно другими способами.
Но тут вся проверка будет комплексной...
MetaTrader 5 Client Terminal build 321
...
12. MQL5: Исправлена работа функции OrderCheck.
...
https://www.mql5.com/ru/forum/23/page8/#comment_18067
Об исправлении какой именно ошибки идёт речь?
MetaTrader 5 Client Terminal build 321
...
12. MQL5: Исправлена работа функции OrderCheck.
...
https://www.mql5.com/ru/forum/23/page8/#comment_18067
Об исправлении какой именно ошибки идёт речь?
Здравствуйте, уважаемые форумчане! Столкнулся с проблемой обработки запроса. Получаю код 10013- неправильный запрос. Уже голову сломал- не могу найти ошибку. Может кто поможет. Вот сам запрос:
MqlTradeRequest req;
MqlTradeCheckResult res;
MqlTick tick;
SymbolInfoTick(_Symbol,tick);
req.action = TRADE_ACTION_DEAL;
req.symbol = _Symbol;
req.volume = Lots/m;
req.price = tick.bid;
req.sl=0;
req.tp=0;
req.deviation = 20;
req.type = ORDER_TYPE_SELL;
req.type_filling = ORDER_FILLING_IOC;
bool result1 = OrderCheck(req,res);
int ret=res.retcode;
Print(" result1 = ",result1," код ошибки ---- ", ret, res.comment);
Здравствуйте, уважаемые форумчане! Столкнулся с проблемой обработки запроса. Получаю код 10013- неправильный запрос. Уже голову сломал- не могу найти ошибку. Может кто поможет. Вот сам запрос:
MqlTradeRequest req;
MqlTradeCheckResult res;
MqlTick tick;
SymbolInfoTick(_Symbol,tick);
req.action = TRADE_ACTION_DEAL;
req.symbol = _Symbol;
req.volume = Lots/m;
req.price = tick.bid;
req.sl=0;
req.tp=0;
req.deviation = 20;
req.type = ORDER_TYPE_SELL;
req.type_filling = ORDER_FILLING_IOC;
bool result1 = OrderCheck(req,res);
int ret=res.retcode;
Print(" result1 = ",result1," код ошибки ---- ", ret, res.comment);
У меня так работатет.Свери что тебе не так.
Ну и провер как все переменние-в виде лот и слипидж,правилно ли инициализировани.1. С некоторых пор переменные типа MqlTradeRequest желательно обнулять:
2. Значение объёма также желательно нормализовывать:
2. Значение объёма также желательно нормализовывать:
А еще желательно не советовать новичкам писать неправильный код.
Объем нормализуется с учетом LotStep и Min Max Lot, но никак не _Digits.