Ошибки, баги, вопросы - страница 3331
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Меня ордера в истории интересуют только фактом своего попадания туда и оставшимся объёмом. Какой там у него индекс - неважно, мне он нужен один раз.
А активные ордера держу в отсортированном массиве.
Пример 1% случаев, когда не в конце окажется и buy/sell.
В этом случае часто будет происходить ситуация, когда Buy-приказ будет не в конце таблицы ордеров.
Давайте разберем, что это обозначает. Пусть в таблице истории ордеров 1000 записей - ордера с индексами (HistoryOrderGetTicket) от 0 до 999.
Вот произошло событие п.3 выше - BuyLimit удалился и попал в таблицу истории ордеров. Он имеет индекс 1000 - его тикет отдается вызовом HistoryOrderGetTicket(1000).
Теперь произошло срабатывание Buy-приказа из п.1 - Buy-приказ попал в таблицу истории ордеров. Вы думаете, что его индекс 1001?
-Нет, его индекс 1000! Т.е. HistoryOrderGetTicket(1000) возвращал одно значение (BuyLimit-ticket), а через некоторое время - другое (Buy-ticket).
Интересна реакция не MQ, а форумчан. Либо это "красноречивое молчание", либо пофигизм.
Когда 1 рыночный и пара отложек на одном инструменте это не проблема. А для динамической сетки из 100 ордеров задержки учета в реале критичны. Удалили лимитку, а в истории ее нашли через пару секунд так себе ситуация.
Отправка приказа на удаление отмечается статусом ORD_DEL_SENT ордера в массиве активных ордеров. А появление ордера в истории - удаление из массива.
Или имеется в виду удаление по внешним причинам?
Два года уже. MQ знают, сколько сил было потрачено на форуме, ЛС и СД по этой проблеме.
Полгода назад был введен запрет на использование последнего билда терминала, где ордера попадали в таблицу истории правильно.
Лично я на пятёрке не пишу, на четвёрке тоже не пишу, форум только почитываю. Но описанная ситуация - БАГ!
Этот баг по какой-то причине не обсуждается. Да тут много технического напрямую касающегося торговли не обсуждается...
Таблица для советника формируется HistorySelect-вызовом. Она не меняется для советника до следующего HistorySelect.
Отправка приказа на удаление отмечается статусом ORD_DEL_SENT ордера в массиве активных ордеров. А появление ордера в истории - удаление из массива.
Или имеется в виду удаление по внешним причинам?
Этот баг по какой-то причине не обсуждается. Да тут много технического напрямую касающегося торговли не обсуждается...
Нужны достаточные доказательства что это именно баг. Есть некая общая база ордеров - там они расположены по времени создания, что логично. HistorySelect выполняет запрос в эту базу и результат (без дополнительной сортировки) тоже получается расположенным по времени создания. В чем тут противоречие?
Только с тестером - не более того. Но первичен терминал, а не тестер: тестер эмулирует работу терминала, а не наоборот
Нужны достаточные доказательства что это именно баг. Есть некая общая база ордеров - там они расположены по времени создания, что логично. HistorySelect выполняет запрос в эту базу и результат (без дополнительной сортировки) тоже получается расположенным по времени создания. В чем тут противоречие?
Если ордера будут случайно тасоваться в таблице, это не будет ни багом, ни противоречием. Задачу решите при текущем раскладе.
Только с тестером - не более того. Но первичен терминал, а не тестер: тестер эмулирует работу терминала, а не наоборот
Что только с Тестером? В Тестере и Терминале разная логика работы HistorySelect.
Нужны достаточные доказательства что это именно баг. Есть некая общая база ордеров - там они расположены по времени создания, что логично. HistorySelect выполняет запрос в эту базу и результат (без дополнительной сортировки) тоже получается расположенным по времени создания. В чем тут противоречие?
Только с тестером - не более того. Но первичен терминал, а не тестер: тестер эмулирует работу терминала, а не наоборот
Это кривая логика. Тестер как раз в конец последний закрытый ордер ставит, в отличие от терминала. А отличия быть не должно.
Что только с Тестером? В Тестере и Терминале разная логика работы HistorySelect.
Так я и говорю - противоречие только с тестером - не более того, но первичен терминал, а не тестер. Раньше сортировку делали внутри HistorySelect, а теперь:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
MT5 и скорость в боевом исполнении
Renat Fatkhullin, 2020.09.01 14:18
В последней бете 2588 функция HistorySelect очень хорошо кешируется и почти всегда(кроме первого раза) обходится бесплатно.
Скорее всего к релизу внесем еще ряд улучшений.
Так я и говорю - противоречие только с тестером - не более того, но первичен терминал, а не тестер. Раньше сортировку делали внутри HistorySelect, а теперь:
и пользователю предлагается самому ее делать при необходимости.
Вы не в курсе истории вопроса. Два года назад все работало в Терминале, как в Тестере. При этом там не делалась никакая сортировка, т.к. просто шла дозапись в конец соответствующих OnTrade-событий.
А до тестера просто руки еще не дошли
И не дойдут, иначе будет замедление.