Если настройку не трогать, то заявки будут выставляться по нашему внутреннему флагу начала торгов, который определяется по первой пачке с тиками. Флагам начала торгов, которые присылает биржа, нельзя доверять. По рекомендации биржи, эти флаги информационные, по ним нельзя определить, что заявки уже принимаются.
Что делает данная настройка? На пересчете скрипта формируются заявки. Данные заявки задерживаются до срабатывания настройки "Пользовательское время начала торговли". Время задержки должно быть не более, чем параметр "Таймаут заявки" в настройках программы. Для этого лучше использовать дополнительный пересчет перед началом торгов, можно использовать встроенный блок "Пересчет скрипта в заданное время" или, если пишите свой код на c# создайте свой пересчет. После срабатывания таймера, заявки отправляются на биржу
Необходимо читать логи. Это не сложно, используйте обычный блокнот windows и сочетание клавиш ctrl с , ctrl v
Установите синхронизацию времени с ntp биржи. Используйте сайт для информации https://www.moex.com/s2116 И статью по настройке Windows Синхронизация времени
Настройка. Например, если поставить настройку на 09:59:59.999 В скрипте дополнительно используется дополнительный пересчет блоком "Пересчет скрипта в заданное время". Настроен на пересчет в 09:59:59.000
Рекомендация, ставить Дополнительный пересчет не позднее, чем за 2 секунды до начала выставления заявок по пользовательскому флагу.
Заявка обработана TSLab после пересчета
09:59:59.00[391]DEBUG:RTS add new limit order to queue trId=2146243050 comment=OrderType:Limit; ContainerId:0; PortfolioOrderId:356436992; TradeName:SpeedTest02 Сработал таймер нашей настройки:
09:59:59.99[389]WARN :[RTS_CGate] Orders sending is enabled by timer. Создаем транзакцию (она создается роутером)
10:00:00.01[RTS Trade Thread 998]DEBUG:Start transaction 2146243050 Транзакция создана и отправлена на биржу
10:00:00.19[RTS Trade Thread 998]DEBUG:Send transaction 2146243050 price=124810 by user qty=1 isbuy=True type=Limit isin=RTS-6.19 client_code=00T comment=fgc0cm_000000
Получен ответ с биржи, что транзакция принята (реально заявка уже скорее всего исполнилась)
10:00:00.52[RTS Trade Thread 998]DEBUG:RTS transaction reply(0, 2146243050) Пришла сделка, время исполнения 10:00:00.520 520 - миллисекунды. В секунде 1000 миллисекунд
10:00:00.61[MQ<TradeWithOwner>]DEBUG:Trade=2271028648:35146579953:RIM9:124200:19-04-18 10:00:00.520:1:C00000T:356436992 | SpeedTest02.L$Limit$ |ot=Limit|sp=
Подбирайте время начала торгов так, чтобы строка "Send transaction" была ровно в 10:00, или раньше, до получения сообщения от биржи "Торги не идут" или "Failed to create new message", это будет означать, что пользовательский флаг начала торгов сработал слишком рано и необходимо его сдвинуть ближе к 10:00 (если торги начинаются в 10:00)
Несколько тезисов службы поддержки moex по поводу выставления заявок в начале дня.
Отвечая на ваши вопросы хотим обратить ваше внимание на следующие особенности работы рынка на «открытии» торгов и на моментах высокой волатильности: 1. Нет никакой разницы по какой цене выставляется заявка (при условии, что цена попадает в допустимый коридор колебаний), цена не имеет значения при обработке заявки и никак не влияет на скорость ее обработки 2. Ядро торговой системы имеет определенную пропускную способность как в части риск модулей (проверка достаточности обеспечения при постановке заявки), так и в части непосредственно матчинга. В условиях того, что большое количество пользователей отправляют свои заявки практически одновременно (в интервал <1 мс) они неизбежно выстраиваются в очередь на обработку. Скорость обработки вашей конкретной заявки зависит исключительно от того, в какую часть этой очереди она попала. 3. Мощность и скорость непосредственного оборудования в данном процессе играют косвенную роль. Они важны когда вы реагируете на сигнал, но в случае открытия торгов на местоположение вашей заявки в очереди зависит от того, в какое время вы ее послали и сколько всего заявок от всех пользователей было послано в данный конкретный момент времени. К сожалению, мы не можем дать каких-то конкретных рекомендаций по тому, как вам выстроить процесс выставления заявок так, что бы они попадали в систему раньше других на открытии торгов.