Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть ещё рыночные ордера, принятые, но ещё не исполненные, находящиеся в обработке.
ОК. Упустил это обстоятельство из виду, так как пока работаю только с отложенными ордерами. Поэтому уточняю вопрос:
Как известно, отложенные ордера в терминале делятся на две категории: (1) действующие отложенные ордера и (2) исполненные отложенные ордера в истории. Как я понимаю, для работы с первой категорией ордеров предназначена функция OrderSelect(), для работы со второй - функция HistoryOrderSelect(). При этом существует описание следующей ошибки:
Вопрос 4. Правильно ли я понимаю, что появление ошибки 4754 при попытке обращения функции OrderSelect() к отложенному ордеру будет означать отсутствие запрашиваемого отложенного ордера в списке действующих отложенных ордеров (ордеров из первой категории), а появление этой же ошибки при попытке обращения функции HistoryOrderSelect() к отложенному ордеру будет означать отсутствие запрашиваемого отложенного ордера в истории (т.е. среди ордеров из второй категории)?
Иными словами, правильно ли я понимаю, что если сам по себе отложенный ордер существует и находится во второй категории ордеров, то при обращении к этому ордеру с помошью функции OrderSelect() будет в обязательном порядке получена ошибка 4754 (при прочих равных условиях)? И наоборот, при обращении к ордеру из первой категории с помошью функции HistoryOrderSelect() также будет в обязательном порядке получена ошибка 4754 (при прочих равных условиях)?
ОК. Упустил это обстоятельство из виду, так как пока работаю только с отложенными ордерами. Поэтому уточняю вопрос:
Как известно, отложенные ордера в терминале делятся на две категории: (1) действующие отложенные ордера и (2) исполненные отложенные ордера в истории. Как я понимаю, для работы с первой категорией ордеров предназначена функция OrderSelect(), для работы со второй - функция HistoryOrderSelect(). При этом существует описание следующей ошибки:
Вопрос 4. Правильно ли я понимаю, что появление ошибки 4754 при попытке обращения функции OrderSelect() к отложенному ордеру будет означать отсутствие запрашиваемого отложенного ордера в списке действующих отложенных ордеров (ордеров из первой категории), а появление этой же ошибки при попытке обращения функции HistoryOrderSelect() к отложенному ордеру будет означать отсутствие запрашиваемого отложенного ордера в истории (т.е. среди ордеров из второй категории)?
Иными словами, правильно ли я понимаю, что если сам по себе отложенный ордер существует и находится во второй категории ордеров, то при обращении к этому ордеру с помошью функции OrderSelect() будет в обязательном порядке получена ошибка 4754 (при прочих равных условиях)? И наоборот, при обращении к ордеру из первой категории с помошью функции HistoryOrderSelect() также будет в обязательном порядке получена ошибка 4754 (при прочих равных условиях)?
Ну, по логике вещей, так и будет. А тиккет-то Вы откуда берёте ? Всё это можно проверить, хотя бы в тестере.
А в связи с чем данный вопрос, что-то не сходится ?
А в связи с чем данный вопрос, что-то не сходится ?
Вопрос - "из глубины веков", как говорится. https://www.mql5.com/ru/forum/385/page3/#comment_7941 Вкратце его можно сформулировать так: как избежать выставления дублирующих отложенных ордеров. В том обсуждении советовали поработать с функцией Ontrade(), но тогда у меня всё время было занято другими текущими задачами.
Первые же результаты работы посланного на Ч-2010 советника заставили вернуться к этой теме. https://www.mql5.com/ru/forum/2248
Одновременно arnautov выдвинул версию, что винована не функция OrderSend(), а функция OrdersTotal() https://www.mql5.com/ru/forum/2236/page13/#comment_27472 Пришлось переосмыслить проблему, заодно приступив к изучению функции OnTrade(). Так как справочных материалов по функции OnTrade() практически нет, то после прочтения статьи https://www.mql5.com/ru/articles/40 и возникли перечисленные выше вопросы. Вопросы познавательного характера.
Valmars:
Ну, по логике вещей, так и будет. А тиккет-то Вы откуда берёте ? Всё это можно проверить, хотя бы в тестере.
Спасибо за ответ. Тикет берётся у отложенного ордера, обработка которого функцией OrderSend() завершилась удачно.
А вот как проверить, насколько результаты функций OrderSelect() и HistoryOrderSelect() соответствуют нахождению отложенного ордера в первой или второй категории, - не знаю. Поэтому и в тестере проверить не могу.
Подскажите пожалуйста...
Если у меня открыта позиция в 1 лот buy, и я ее переворачиваю 2 лота sell, при работе ф-ии OnTrade возможна ли ситуация когда старая позиция закрылась, произошло событие OnTrade, а новая еще не открылась?
Подскажите пожалуйста...
Если у меня открыта позиция в 1 лот buy, и я ее переворачиваю 2 лота sell, при работе ф-ии OnTrade возможна ли ситуация когда старая позиция закрылась, произошло событие OnTrade, а новая еще не открылась?
Посмотрите статью Роша на эту тему, она так и называется: "Торговые события в МТ5". Может, найдёте точный ответ.