Можно ли обойтись без цикла подсчета / пересчета ордеров имея оригинальные тикеты ордеров? - страница 4

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вроде о том же и написал. Копирует в окружение терминала пользователя (вопрос откуда). А прямого доступа к полям, откуда копирует, нет. Так же нет штатных полей времени изменения параметров по ходу жизни ордера, только начало и конец жизни ордера. Если бы это можно было прочитать в доках жизнь была бы легче.))))
Я цитату из доков привел)))
Как это нет аргументов? Я их давно написал, и они работают. Описал, разжевал и выложил.
На личности не перехожу - задаюсь вопросом для чего обязательно оспаривать сказанное.
Код был полезен. Ваши решения - респект, но без данных обсуждений достаточной оценки правильности решений не получается.
Оспаривания не было, (другое решение не есть оспаривание), так как нет единого решения.
В любом раскладе / кластеризации спасибо всем))))))))
Я правильно понял OrderCloseTime()!=0 для отложенных ордеров тоже работает? Этого нет в документации.
Да вот как раз в документации (не смог найти где точно, но сам брал этот подход оттуда) приводится такой код для определения факта нахождения ордера среди рабочих:
Это решение понятно. Вопрос в другом. Как имея тикет и структура ордера заполнена по этому тикету узнать состояние ордера? Вернее тогда что можно узнать, а что нельзя узнать. В документации не нашел.
Не понял. Какое именно состояние интересует?
И повторюсь)
Так правильно, с флагом по тикету или ошибка будет? В документации написано что зона выбора рыночные / исторические ордера указывается только для флага по номеру.
При выборе по тикету третий аргумент игнорируется. Ошибки не будет.
Закроется ордер через час или нет? В доках не нашел.
Не закроется. Будет отменен и перемещен в историю счета. Но не факт, что конкретный ДЦ поддерживает время истечения. Я натыкался на такие ДЦ.
Ой, прошу пардону ))) Просто уже неоднократно просил сделать пометки в рассылке к какому разделу форума относится конкретная тема. В идеале, чтобы рассылкой можно было бы управлять.
Тем не менее, было бы не плохо.
Я цитату из доков привел)))
Вообще могу только предположить конечно что структуры ордеров где то хранятся. и то что к ним нет штатного доступа по полям, а только по копированию структуры в терминал пользователя через селект ордера...
Вроде соответствует цитате из доков.))))
Да вот как раз в документации (не смог найти где точно, но сам брал этот подход оттуда) приводится такой код для определения факта нахождения ордера среди рабочих:
Не понял. Какое именно состояние интересует?
При выборе по тикету третий аргумент игнорируется. Ошибки не будет.
Не закроется. Будет отменен и перемещен в историю счета. Но не факт, что конкретный ДЦ поддерживает время истечения. Я натыкался на такие ДЦ.
Понял.
все понятно, кроме как есть ли поле в структуре ордера Время когда ордер сменил тип с отложенного на рыночный.
Ошибки не будет и если тикет есть то будет Истина всегда?
Странно что этого нет в доках. Что значит отменен? Рыночный ордер можно только закрыть вроде. Если ДЦ не поддерживает время истечения рыночного ордера то должна существовать проверка на возможность применения параметра. Компиляция в маркете поздна)))
Понял.
все понятно, кроме как есть ли поле в структуре ордера Время когда ордер сменил тип с отложенного на рыночный.
Тикет у ордера остается на все время его жизни. Выбрать ордер по тикету и запросить тип.
Ошибки не будет и если тикет есть то будет Истина всегда?
Если ордер есть хоть в каком-то пуле, то OrderSelect вернет true. Но в МТ4 есть одна неприятная фича. Если пользователь настроил отображение истории не "Вся история", а за какой-то период, то и программный доступ будет только к видимой пользователю истории. То есть ордер когда-то существовал, но обращение к нему приведет к false.
Странно что этого нет в доках. Что значит отменен?
Отложенный ордер отменяется (cancel) или удаляется (delete). В разных источниках можно встретить обе формулировки.
Рыночный ордер можно только закрыть вроде. Если ДЦ не поддерживает время истечения рыночного ордера то должна существовать проверка на возможность применения параметра. Компиляция в маркете поздна)))
К сожалению, нет такой проверки (и еще много, каких нет; например, нельзя узнать, разрешено ли встречное закрытие). Это можно узнать только по коду ошибки после выполнения OrderSend().
Тикет у ордера остается на все время его жизни. Выбрать ордер по тикету и запросить тип.
Вопрос про время смены типа с отложенного на рыночный. Есть ли поле этого времени в структуре параметров ордера.
И время сохранения данных структуры ордера. В терминале понятно, ограничено. А в ДЦ как долго хранятся исторические ордера? (у меня грустное предположение просто, что есть синхронизация с терминалами и чистка истории ордеров в ДЦ по настройкам терминальным пользователей, и если есть ограничение времени истории, то в ДЦ эти данные тоже будут удалены)......
Вопрос про время смены типа с отложенного на рыночный. Есть ли поле этого времени в структуре параметров ордера.
нет таких данных
все, что есть это:
- предыдущий тик и тип ордера OP_BUYLIMIT и на текущем тике тип ордера стал OP_BUY - открылся ордер
- предыдущий тик и тип ордера OP_BUYLIMIT и OrderCloseTime() > 0 - удалили отложенный ордер, он теперь в истории ордеров
видимо для этой цели и сделан OrderSelect(ticket, SELECT_BY_TICKET ) с доступом в общий пул ордеров, чтобы удобнее было сделать OrderSelect() и сразу же проверить тип и время закрытия ордера
не бойтесь циклов с OrderSelect() и решайте свою задачу, нет там потери производительности, а вот "головную боль" Вы сами себе нажили
задача, скорее у Вас в другом - как между тиками состояние ордеров передавать - тогда нужно со структурами, классами или списками уметь хоть немного работать https://www.mql5.com/ru/docs/standardlibrary/datastructures
или вообще нужно пересмотреть торговую логику - не выставлять десяток отложек и каждый тик мониторить их состояние, а выставлять по одной отложке и всего навсего проверять есть ли отложка с нашим магиком - если нет, то проверим есть ли рыночные ордера - есть? ну значит добавим еще отложку...
Я правильно понял OrderCloseTime()!=0 для отложенных ордеров тоже работает? Этого нет в документации.
...
Не ищите в истории отложенные ордера, их там нет.