Ошибки, баги, вопросы - страница 3331

 
JRandomTrader #:

Меня ордера в истории интересуют только фактом своего попадания туда и оставшимся объёмом. Какой там у него индекс - неважно, мне он нужен один раз.

А активные ордера держу в отсортированном массиве.

Когда 1 рыночный и пара отложек на одном инструменте это не проблема. А для динамической сетки из 100 ордеров задержки учета в реале критичны. Удалили лимитку, а в истории ее нашли через пару секунд так себе ситуация.
 
fxsaber #:

Пример 1% случаев, когда не в конце окажется и buy/sell.

  1. Асинхронно отправляется Buy-приказ.
  2. Асинхронно отправляется BuyLimit-приказ.
  3. Как только появился BuyLimit-тикет, делается его удаление.

В этом случае часто будет происходить ситуация, когда Buy-приказ будет не в конце таблицы ордеров.


Давайте разберем, что это обозначает. Пусть в таблице истории ордеров 1000 записей - ордера с индексами (HistoryOrderGetTicket) от 0 до 999.

Вот произошло событие п.3 выше - BuyLimit удалился и попал в таблицу истории ордеров. Он имеет индекс 1000 - его тикет отдается вызовом HistoryOrderGetTicket(1000).


Теперь произошло срабатывание Buy-приказа из п.1 - Buy-приказ попал в таблицу истории ордеров. Вы думаете, что его индекс 1001?

-Нет, его индекс 1000! Т.е. HistoryOrderGetTicket(1000) возвращал одно значение (BuyLimit-ticket), а через некоторое время - другое (Buy-ticket).


Интересна реакция не MQ, а форумчан. Либо это "красноречивое молчание", либо пофигизм.


А почему реакция квот не интересна? Или проблемы индейцев шерифа не интересуют?

Лично я на пятёрке не пишу, на четвёрке тоже не пишу, форум только почитываю. Но описанная ситуация - БАГ!

Интересно, а при переборе истории в цикле она также может измениться во время цикла? 
 
Valeriy Yastremskiy #:
Когда 1 рыночный и пара отложек на одном инструменте это не проблема. А для динамической сетки из 100 ордеров задержки учета в реале критичны. Удалили лимитку, а в истории ее нашли через пару секунд так себе ситуация.

Отправка приказа на удаление отмечается статусом ORD_DEL_SENT ордера в массиве активных ордеров. А появление ордера в истории - удаление из массива.

Или имеется в виду удаление по внешним причинам?

 
Sergey Gridnev #:
А почему реакция квот не интересна?

Два года уже. MQ знают, сколько сил было потрачено на форуме, ЛС и СД по этой проблеме.

Полгода назад был введен запрет на использование последнего билда терминала, где ордера попадали в таблицу истории правильно.


Лично я на пятёрке не пишу, на четвёрке тоже не пишу, форум только почитываю. Но описанная ситуация - БАГ!

Этот баг по какой-то причине не обсуждается. Да тут много технического напрямую касающегося торговли не обсуждается...

Интересно, а при переборе истории в цикле она также может измениться во время цикла? 

Таблица для советника формируется HistorySelect-вызовом. Она не меняется для советника до следующего HistorySelect.

 
JRandomTrader #:

Отправка приказа на удаление отмечается статусом ORD_DEL_SENT ордера в массиве активных ордеров. А появление ордера в истории - удаление из массива.

Или имеется в виду удаление по внешним причинам?

Так понял полное исполнение приказа подтверждение это когда ордер в истории. И его поиск, после отправки приказа, если он не в конец пишется дорогой. Даже имея тикет приказа, если он случайным образом встает то в конец, то в начало можем иметь рандомное время поиска. Для высокочастотной сетки такая среда исполнения просто не подходит. 
 
fxsaber #:

Этот баг по какой-то причине не обсуждается. Да тут много технического напрямую касающегося торговли не обсуждается...

Нужны достаточные доказательства что это именно баг. Есть некая общая база ордеров - там они расположены по времени создания, что логично. HistorySelect выполняет запрос в эту базу и результат (без дополнительной сортировки) тоже получается расположенным по времени создания. В чем тут противоречие?

Только с тестером - не более того. Но первичен терминал, а не тестер: тестер эмулирует работу терминала, а не наоборот

 
A100 #:

Нужны достаточные доказательства что это именно баг. Есть некая общая база ордеров - там они расположены по времени создания, что логично. HistorySelect выполняет запрос в эту базу и результат (без дополнительной сортировки) тоже получается расположенным по времени создания. В чем тут противоречие?

Если ордера будут случайно тасоваться в таблице, это не будет ни багом, ни противоречием. Задачу решите при текущем раскладе.

Только с тестером - не более того. Но первичен терминал, а не тестер: тестер эмулирует работу терминала, а не наоборот

Что только с Тестером? В Тестере и Терминале разная логика работы HistorySelect.

 
A100 #:

Нужны достаточные доказательства что это именно баг. Есть некая общая база ордеров - там они расположены по времени создания, что логично. HistorySelect выполняет запрос в эту базу и результат (без дополнительной сортировки) тоже получается расположенным по времени создания. В чем тут противоречие?

Только с тестером - не более того. Но первичен терминал, а не тестер: тестер эмулирует работу терминала, а не наоборот

Это кривая логика. Тестер как раз в конец последний закрытый ордер ставит, в отличие от терминала. А отличия быть не должно.

 
fxsaber #:

Что только с Тестером? В Тестере и Терминале разная логика работы HistorySelect.

Так я и говорю - противоречие только с тестером - не более того, но первичен терминал, а не тестер. Раньше сортировку делали внутри HistorySelect, а теперь:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

MT5 и скорость в боевом исполнении

Renat Fatkhullin, 2020.09.01 14:18

В последней бете 2588 функция HistorySelect очень хорошо кешируется и почти всегда(кроме первого раза) обходится бесплатно.

Скорее всего к релизу внесем еще ряд улучшений.

и пользователю предлагается самому ее делать при необходимости. А до тестера просто руки еще не дошли
 
A100 #:

Так я и говорю - противоречие только с тестером - не более того, но первичен терминал, а не тестер. Раньше сортировку делали внутри HistorySelect, а теперь:

и пользователю предлагается самому ее делать при необходимости.

Вы не в курсе истории вопроса. Два года назад все работало в Терминале, как в Тестере. При этом там не делалась никакая сортировка, т.к. просто шла дозапись в конец соответствующих OnTrade-событий.

А до тестера просто руки еще не дошли

И не дойдут, иначе будет замедление.