Или надо шаманить с параметрами TRADINGSTATE + CLSTATE ?
Порой мне кажется разработчики QUIK забыли сделать пару очевидных колбеков типа OnTradingStart() и OnTradingStop(), которые срабатываюь, когда торговля начинается/возобновляется и когда она приостанавливается, вместо того, чтобы париться с расписанием торгов или вышеупомянутыми параметрами?
Времена часто изменяются. Они на сайте биржи в разделе расписание торгов есть. У Валютной секции совсем другие времена, для примера. Так что да, надо читать самому статус, правда здесь тоже есть проблема, т.к. флаги приходят с явными задержками, особенно с CLSTATE в вечернюю сессию. Очень часто до 2-х минут задержка. С TRADINGSTATE получше, но тоже задержки до 10-15 секунд.
И почему-то очень часто вижу, что время вечерней сессии 19:00, хотя 19:05 на самом деле, если нет другого сообщения. Это на фондовой секции в 19:00 начинается вечерний аукцион открытия, сама же сессия тоже в 19:05.
Как-то тоже интересовался этим вопросом. Записывал скриптом в лог изменения статусов на срочном рынке (их аж четыре!), и параметр session_status в коллбэке OnFuturesClientHolding.
Лог:
Скрытый текст
Актуальный статус торговой сессии. Возможные значения: «0» – не определено; «1» – основная сессия; «2» – начался промклиринг; «3» – завершился промклиринг; «4» – начался основной клиринг; «5» – основной клиринг: новая сессия назначена; «6» – завершился основной клиринг; «7» – завершилась вечерняя сессия
22/Aug 09:39:32 22/Aug 09:41:18 приостановлена Назначен пр. 22/Aug 09:41:49 приостановлена Назначен пр. BRU4: 1 22/Aug 09:41:49 приостановлена Назначен пр. SRU4: 1 22/Aug 09:50:03 торгуется Назначен пр. 22/Aug 09:59:39 приостановлена Назначен пр. 22/Aug 10:00:11 торгуется Назначен пр. 22/Aug 10:31:50 торгуется Назначен пр. BRU4: 1 22/Aug 10:32:14 торгуется Назначен пр. BRU4: 1 22/Aug 10:50:49 22/Aug 10:54:08 торгуется Назначен пр. 22/Aug 10:54:25 торгуется Назначен пр. BRU4: 1 22/Aug 10:54:25 торгуется Назначен пр. SRU4: 1 22/Aug 11:00:49 торгуется Назначен пр. SiU4: 1 22/Aug 11:01:56 торгуется Назначен пр. SiU4: 1 22/Aug 14:00:02 приостановлена Идёт пр. 22/Aug 14:01:35 приостановлена Идёт пр. SRU4: 3 22/Aug 14:01:35 приостановлена Идёт пр. BRU4: 3 22/Aug 14:01:35 приостановлена Идёт пр. SiU4: 3 22/Aug 14:05:10 торгуется Завершен пр. 22/Aug 14:20:49 торгуется Завершен пр. MMU4: 3 22/Aug 14:21:08 торгуется Завершен пр. MMU4: 3
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 23/Aug 23:00:45 23/Aug 23:01:35 открыта открыта Назначен пр. торгуется 23/Aug 23:01:48 открыта открыта Назначен пр. торгуется MMU4: 6 23/Aug 23:01:48 открыта открыта Назначен пр. торгуется SiU4: 6 23/Aug 23:50:01 открыта закрыта Назначен пр. приостановлена 23/Aug 23:50:07 закрыта закрыта Назначен пр. приостановлена
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк
26/Aug 09:46:57 закрыта закрыта Назначен пр. приостановлена 26/Aug 09:47:19 закрыта закрыта Назначен пр. приостановлена SiU4: 1 26/Aug 09:50:01 закрыта открытие Назначен пр. торгуется 26/Aug 09:50:13 аукцион открытие Назначен пр. торгуется 26/Aug 09:59:23 аукцион закрыта Назначен пр. приостановлена 26/Aug 09:59:27 закрыта закрыта Назначен пр. приостановлена 26/Aug 10:00:09 открыта закрыта Назначен пр. приостановлена 26/Aug 10:00:19 открыта открыта Назначен пр. торгуется
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк
26/Aug 11:12:09 открыта открыта Назначен пр. торгуется 26/Aug 11:12:35 открыта открыта Назначен пр. торгуется SiU4: 1 26/Aug 11:26:16 открыта открыта Назначен пр. торгуется GZU4: 1 26/Aug 11:54:50 открыта открыта Назначен пр. торгуется MMU4: 1 26/Aug 13:18:37 открыта открыта Назначен пр. торгуется MMU4: 1 26/Aug 13:18:37 открыта открыта Назначен пр. торгуется MMU4: 1 26/Aug 13:35:31 открыта открыта Назначен пр. торгуется MMU4: 1 26/Aug 14:00:02 открыта закрыта Идёт пр. приостановлена ************ 26/Aug 14:00:06 закрыта закрыта Идёт пр. приостановлена 26/Aug 14:01:37 закрыта закрыта Идёт пр. приостановлена SiU4: 3 26/Aug 14:01:37 закрыта закрыта Идёт пр. приостановлена GZU4: 3 26/Aug 14:01:37 закрыта закрыта Идёт пр. приостановлена MMU4: 3 26/Aug 14:05:08 открыта закрыта Идёт пр. приостановлена 26/Aug 14:05:10 открыта открыта Завершен пр. торгуется ************ 26/Aug 14:31:19 открыта открыта Завершен пр. торгуется BRU4: 3 26/Aug 14:35:41 открыта открыта Завершен пр. торгуется BRU4: 3
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 26/Aug 18:48:37 26/Aug 18:49:39 открыта открыта Завершен пр. торгуется 26/Aug 18:49:51 открыта открыта Завершен пр. торгуется BRU4: 3 26/Aug 18:49:51 открыта открыта Завершен пр. торгуется GZU4: 3 26/Aug 18:49:51 открыта открыта Завершен пр. торгуется MMU4: 3 26/Aug 18:49:51 открыта открыта Завершен пр. торгуется SiU4: 3 26/Aug 18:50:03 открыта закрыта Идёт осн. завершена 26/Aug 18:50:11 закрыта закрыта Идёт осн. завершена 26/Aug 18:50:14 закрыта закрыта Идёт осн. завершена SiU4: 4 26/Aug 18:50:14 закрыта закрыта Идёт осн. завершена GZU4: 4 26/Aug 18:50:14 закрыта закрыта Идёт осн. завершена MMU4: 4 26/Aug 18:50:14 закрыта закрыта Идёт осн. завершена BRU4: 4 26/Aug 18:58:37 неопределен закрыта Идёт осн. завершена 26/Aug 18:58:39 неопределен закрыта Идёт осн. назначена 26/Aug 18:58:49 неопределен закрыта Идёт осн. назначена SiU4: 5 26/Aug 18:58:49 неопределен закрыта Идёт осн. назначена GZU4: 5 26/Aug 18:58:49 неопределен закрыта Идёт осн. назначена MMU4: 5 26/Aug 18:58:49 неопределен закрыта Идёт осн. назначена BRU4: 5 26/Aug 19:05:02 неопределен закрыта Идёт осн. назначена MMU4: 5 26/Aug 19:05:07 открыта открыта Идёт осн. торгуется 26/Aug 19:05:23 открыта открыта Идёт осн. торгуется MMU4: 5 26/Aug 19:07:51 открыта открыта Идёт осн. торгуется MMU4: 5 26/Aug 19:08:57 открыта открыта Назначен пр. торгуется 26/Aug 19:08:59 открыта открыта Назначен пр. торгуется SiU4: 6 26/Aug 19:09:00 открыта открыта Назначен пр. торгуется GZU4: 6 26/Aug 19:09:00 открыта открыта Назначен пр. торгуется MMU4: 6 26/Aug 19:09:00 открыта открыта Назначен пр. торгуется BRU4: 6 26/Aug 19:09:17 открыта открыта Назначен пр. торгуется MMU4: 6
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 27/Aug 10:52:15 27/Aug 10:55:42 открыта открыта Назначен пр. торгуется 27/Aug 10:55:57 открыта открыта Назначен пр. торгуется MMU4: 1 27/Aug 11:19:22 27/Aug 11:20:03 открыта открыта Назначен пр. торгуется 27/Aug 11:20:26 открыта открыта Назначен пр. торгуется MMU4: 1 27/Aug 14:00:06 закрыта закрыта Идёт пр. приостановлена 27/Aug 14:04:14 закрыта закрыта Идёт пр. приостановлена MMU4: 3 27/Aug 14:05:06 открыта закрыта Идёт пр. приостановлена 27/Aug 14:05:11 открыта открыта Завершен пр. торгуется 27/Aug 18:50:03 открыта закрыта Идёт осн. завершена 27/Aug 18:50:05 открыта закрыта Идёт осн. завершена MMU4: 4 27/Aug 18:50:06 закрыта закрыта Идёт осн. завершена 27/Aug 18:58:05 неопределен закрыта Идёт осн. завершена 27/Aug 18:58:07 неопределен закрыта Идёт осн. назначена 27/Aug 18:58:17 неопределен закрыта Идёт осн. назначена MMU4: 5 27/Aug 19:05:07 открыта открыта Идёт осн. торгуется 27/Aug 19:08:59 открыта открыта Назначен пр. торгуется 27/Aug 19:09:00 открыта открыта Назначен пр. торгуется MMU4: 6 27/Aug 19:46:14 открыта открыта Назначен пр. торгуется IMOEXF: 6 27/Aug 19:54:35 открыта открыта Назначен пр. торгуется IMOEXF: 6
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 28/Aug 13:19:10 28/Aug 13:23:34 открыта открыта Назначен пр. торгуется 28/Aug 13:23:55 открыта открыта Назначен пр. торгуется IMOEXF: 1 28/Aug 14:00:06 закрыта открыта Назначен пр. торгуется 28/Aug 14:00:10 закрыта закрыта Идёт пр. приостановлена 28/Aug 14:01:39 закрыта закрыта Идёт пр. приостановлена IMOEXF: 3 28/Aug 14:05:11 открыта открыта Завершен пр. торгуется 28/Aug 16:13:09 открыта открыта Завершен пр. торгуется MMU4: 3 28/Aug 17:31:04 открыта открыта Завершен пр. торгуется BRU4: 3 28/Aug 17:54:39 открыта открыта Завершен пр. торгуется BRU4: 3 28/Aug 18:15:40 открыта открыта Завершен пр. торгуется MMU4: 3 28/Aug 18:50:02 открыта закрыта Идёт осн. завершена 28/Aug 18:50:05 открыта закрыта Идёт осн. завершена IMOEXF: 4 28/Aug 18:50:05 открыта закрыта Идёт осн. завершена MMU4: 4 28/Aug 18:50:05 открыта закрыта Идёт осн. завершена BRU4: 4 28/Aug 18:50:07 закрыта закрыта Идёт осн. завершена 28/Aug 18:57:47 неопределен закрыта Идёт осн. назначена 28/Aug 18:57:56 неопределен закрыта Идёт осн. назначена IMOEXF: 5 28/Aug 18:57:56 неопределен закрыта Идёт осн. назначена MMU4: 5 28/Aug 18:57:56 неопределен закрыта Идёт осн. назначена BRU4: 5 28/Aug 19:02:09 неопределен закрыта Идёт осн. назначена MMU4: 5 28/Aug 19:02:09 неопределен закрыта Идёт осн. назначена BRU4: 5 28/Aug 19:05:07 открыта открыта Идёт осн. торгуется 28/Aug 19:08:23 открыта открыта Назначен пр. торгуется 28/Aug 19:08:23 открыта открыта Назначен пр. торгуется IMOEXF: 6 28/Aug 19:08:24 открыта открыта Назначен пр. торгуется MMU4: 6 28/Aug 19:08:24 открыта открыта Назначен пр. торгуется BRU4: 6 28/Aug 21:30:28 открыта открыта Назначен пр. торгуется BRU4: 6 28/Aug 23:50:05 закрыта открыта Назначен пр. торгуется 28/Aug 23:50:10 закрыта закрыта Назначен пр. приостановлена
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 29/Aug 09:27:11 29/Aug 09:28:48 закрыта закрыта Назначен пр. приостановлена 29/Aug 09:29:01 закрыта закрыта Назначен пр. приостановлена BRU4: 1 29/Aug 09:50:02 закрыта открытие Назначен пр. торгуется 29/Aug 09:50:06 аукцион открытие Назначен пр. торгуется 29/Aug 09:59:36 аукцион закрыта Назначен пр. приостановлена 29/Aug 09:59:41 закрыта закрыта Назначен пр. приостановлена 29/Aug 10:00:01 закрыта открыта Назначен пр. торгуется 29/Aug 10:00:06 открыта открыта Назначен пр. торгуется 29/Aug 13:16:16 открыта открыта Назначен пр. торгуется MMU4: 1 ............................................................................ 29/Aug 13:50:19 открыта открыта Назначен пр. торгуется MMU4: 1 29/Aug 14:00:02 открыта закрыта Идёт пр. приостановлена 29/Aug 14:00:07 закрыта закрыта Идёт пр. приостановлена 29/Aug 14:00:46 закрыта закрыта Идёт пр. приостановлена MMU4: 2 29/Aug 14:01:38 закрыта закрыта Идёт пр. приостановлена BRU4: 3 29/Aug 14:01:57 закрыта закрыта Идёт пр. приостановлена MMU4: 3 29/Aug 14:05:07 открыта закрыта Идёт пр. приостановлена 29/Aug 14:05:12 открыта открыта Завершен пр. торгуется 29/Aug 14:45:34 открыта открыта Завершен пр. торгуется MMU4: 3 ........................................................................... 29/Aug 18:45:15 открыта открыта Завершен пр. торгуется MMU4: 3 29/Aug 18:50:04 открыта закрыта Идёт осн. завершена 29/Aug 18:50:05 открыта закрыта Идёт осн. завершена BRU4: 4 29/Aug 18:50:05 открыта закрыта Идёт осн. завершена MMU4: 4 29/Aug 18:50:05 открыта закрыта Идёт осн. завершена NGU4: 4 29/Aug 18:50:10 закрыта закрыта Идёт осн. завершена 29/Aug 19:03:39 неопределен закрыта Идёт осн. назначена NGU4: 5 29/Aug 19:03:39 неопределен закрыта Идёт осн. назначена MMU4: 5 29/Aug 19:05:05 неопределен открыта Идёт осн. торгуется 29/Aug 19:05:10 открыта открыта Идёт осн. торгуется 29/Aug 19:09:24 открыта открыта Назначен пр. торгуется 29/Aug 19:09:27 открыта открыта Назначен пр. торгуется BRU4: 6 29/Aug 19:09:27 открыта открыта Назначен пр. торгуется MMU4: 6 29/Aug 19:09:27 открыта открыта Идёт осн. торгуется NGU4: 6 29/Aug 19:09:30 открыта открыта Назначен пр. торгуется
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 30/Aug 09:43:50 30/Aug 09:45:13 закрыта закрыта Назначен пр. приостановлена 30/Aug 09:50:05 закрыта открытие Назначен пр. торгуется 30/Aug 09:50:09 аукцион открытие Назначен пр. торгуется 30/Aug 09:59:55 закрыта закрыта Назначен пр. приостановлена 30/Aug 10:00:10 открыта закрыта Назначен пр. приостановлена 30/Aug 10:00:15 открыта открыта Назначен пр. торгуется 30/Aug 13:10:38 открыта открыта Назначен пр. торгуется MMU4: 1 30/Aug 13:42:33 открыта открыта Назначен пр. торгуется MMU4: 1 30/Aug 14:00:05 закрыта закрыта Идёт пр. приостановлена 30/Aug 14:00:45 закрыта закрыта Идёт пр. приостановлена MMU4: 2 30/Aug 14:01:34 закрыта закрыта Идёт пр. приостановлена MMU4: 3 30/Aug 14:01:56 закрыта закрыта Идёт пр. приостановлена MMU4: 3 30/Aug 14:05:10 открыта открыта Завершен пр. торгуется 30/Aug 14:16:50 открыта открыта Завершен пр. торгуется MMU4: 3 30/Aug 15:16:34 открыта открыта Завершен пр. торгуется MMU4: 3 30/Aug 16:40:35 открыта открыта Завершен пр. торгуется BRU4: 3 30/Aug 16:40:38 открыта открыта Завершен пр. торгуется BRU4: 3 30/Aug 16:40:48 открыта открыта Завершен пр. торгуется NGU4: 3 30/Aug 16:40:50 открыта открыта Завершен пр. торгуется NGU4: 3 30/Aug 16:41:24 открыта открыта Завершен пр. торгуется CRU4: 3 30/Aug 16:43:41 открыта открыта Завершен пр. торгуется CRU4: 3
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 30/Aug 23:03:51 30/Aug 23:11:12 открыта открыта Назначен пр. торгуется 30/Aug 23:11:29 открыта открыта Назначен пр. торгуется BRU4: 6 30/Aug 23:11:29 открыта открыта Назначен пр. торгуется CRU4: 6 30/Aug 23:11:29 открыта открыта Назначен пр. торгуется MMU4: 6 30/Aug 23:11:29 открыта открыта Назначен пр. торгуется NGU4: 6 30/Aug 23:15:54 открыта открыта Назначен пр. торгуется NAU4: 6 30/Aug 23:16:09 открыта открыта Назначен пр. торгуется NAU4: 6 30/Aug 23:50:02 открыта закрыта Назначен пр. приостановлена 30/Aug 23:50:07 закрыта закрыта Назначен пр. приостановлена
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 02/Sep 22:39:41 02/Sep 22:41:23 открыта открыта Назначен пр. торгуется 02/Sep 22:41:40 открыта открыта Назначен пр. торгуется NAU4: 6 02/Sep 23:39:30 открыта открыта Назначен пр. торгуется NAU4: 6 02/Sep 23:50:09 закрыта закрыта Назначен пр. приостановлена
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 03/Sep 11:17:43 открыта открыта Назначен пр. торгуется SiU4: 1 03/Sep 14:00:03 открыта закрыта Идёт пр. приостановлена 03/Sep 14:00:08 закрыта закрыта Идёт пр. приостановлена 03/Sep 14:01:51 закрыта закрыта Идёт пр. приостановлена NAU4: 3 03/Sep 14:01:52 закрыта закрыта Идёт пр. приостановлена SiU4: 3 03/Sep 14:05:13 открыта закрыта Идёт пр. приостановлена 03/Sep 14:05:18 открыта открыта Завершен пр. торгуется 03/Sep 14:24:04 открыта открыта Завершен пр. торгуется SiU4: 3 ........................................................................
03/Sep 18:45:56 открыта открыта Завершен пр. торгуется SiU4: 3 03/Sep 18:50:02 открыта закрыта Идёт осн. завершена 03/Sep 18:50:06 открыта закрыта Идёт осн. завершена NAU4: 4 03/Sep 18:50:06 открыта закрыта Идёт осн. завершена SiU4: 4 03/Sep 18:50:06 открыта закрыта Идёт осн. завершена BRV4: 4 03/Sep 18:50:06 открыта закрыта Идёт осн. завершена NGU4: 4 03/Sep 18:50:07 закрыта закрыта Идёт осн. завершена 03/Sep 18:58:42 неопределен закрыта Идёт осн. завершена 03/Sep 18:58:47 неопределен закрыта Идёт осн. завершена SiU4: 4 03/Sep 18:58:47 неопределен закрыта Идёт осн. назначена 03/Sep 18:58:55 неопределен закрыта Идёт осн. назначена NAU4: 5 03/Sep 18:58:55 неопределен закрыта Идёт осн. назначена SiU4: 5 03/Sep 18:58:55 неопределен закрыта Идёт осн. назначена BRV4: 5 03/Sep 18:58:55 неопределен закрыта Идёт осн. назначена NGU4: 5 03/Sep 19:03:35 неопределен закрыта Идёт осн. назначена SiU4: 5 03/Sep 19:05:02 неопределен открыта Идёт осн. торгуется 03/Sep 19:05:07 неопределен открыта Идёт осн. торгуется SiU4: 5 03/Sep 19:05:08 открыта открыта Идёт осн. торгуется 03/Sep 19:07:11 открыта открыта Идёт осн. торгуется SiU4: 5 03/Sep 19:09:10 открыта открыта Идёт осн. торгуется SiU4: 5 03/Sep 19:09:17 открыта открыта Идёт осн. торгуется NAU4: 6 03/Sep 19:09:17 открыта открыта Идёт осн. торгуется SiU4: 6 03/Sep 19:09:17 открыта открыта Идёт осн. торгуется BRV4: 6 03/Sep 19:09:17 открыта открыта Идёт осн. торгуется NGU4: 6 03/Sep 19:09:18 открыта открыта Назначен пр. торгуется 03/Sep 19:13:30 открыта открыта Назначен пр. торгуется SiU4: 6 ........................................................................
03/Sep 22:51:34 открыта открыта Назначен пр. торгуется BRV4: 6 03/Sep 23:50:07 закрыта закрыта Назначен пр. приостановлена
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 04/Sep 09:33:12 04/Sep 09:34:48 закрыта закрыта Назначен пр. приостановлена 04/Sep 09:35:07 закрыта закрыта Назначен пр. приостановлена BRV4: 1 04/Sep 09:35:07 закрыта закрыта Назначен пр. приостановлена NAU4: 1 04/Sep 09:35:07 закрыта закрыта Назначен пр. приостановлена SiU4: 1 04/Sep 09:50:02 закрыта открытие Назначен пр. торгуется 04/Sep 09:50:07 аукцион открытие Назначен пр. торгуется 04/Sep 09:59:27 аукцион закрыта Назначен пр. приостановлена 04/Sep 09:59:32 закрыта закрыта Назначен пр. приостановлена 04/Sep 10:00:07 открыта закрыта Назначен пр. приостановлена 04/Sep 10:00:12 открыта открыта Назначен пр. торгуется 04/Sep 10:06:00 открыта открыта Назначен пр. торгуется SiU4: 1 04/Sep 10:10:07 открыта открыта Назначен пр. торгуется SiU4: 1 04/Sep 10:10:55 открыта открыта Назначен пр. торгуется NAU4: 1 04/Sep 10:12:08 открыта открыта Назначен пр. торгуется NAU4: 1 04/Sep 10:26:08 04/Sep 10:27:03 открыта открыта Назначен пр. торгуется 04/Sep 10:27:26 открыта открыта Назначен пр. торгуется BRV4: 1 04/Sep 10:27:26 открыта открыта Назначен пр. торгуется NAU4: 1 04/Sep 10:27:26 открыта открыта Назначен пр. торгуется SiU4: 1 04/Sep 11:00:22 открыта открыта Назначен пр. торгуется NAU4: 1 04/Sep 11:49:48 открыта открыта Назначен пр. торгуется SiU4: 1 04/Sep 11:52:29 открыта открыта Назначен пр. торгуется NAU4: 1 04/Sep 12:49:56 открыта открыта Назначен пр. торгуется NAU4: 1 04/Sep 14:00:04 закрыта открыта Назначен пр. торгуется 04/Sep 14:00:09 закрыта закрыта Идёт пр. приостановлена 04/Sep 14:01:41 закрыта закрыта Идёт пр. приостановлена SiU4: 3 04/Sep 14:01:41 закрыта закрыта Идёт пр. приостановлена NAU4: 3 04/Sep 14:01:41 закрыта закрыта Идёт пр. приостановлена BRV4: 3 04/Sep 14:05:10 открыта закрыта Идёт пр. приостановлена 04/Sep 14:05:14 открыта открыта Завершен пр. торгуется 04/Sep 15:49:32 открыта открыта Завершен пр. торгуется NAU4: 3 04/Sep 17:09:55 открыта открыта Завершен пр. торгуется NAU4: 3 04/Sep 17:34:45 открыта открыта Завершен пр. торгуется SiU4: 3 04/Sep 17:39:04 открыта открыта Завершен пр. торгуется SiU4: 3 04/Sep 17:56:22 открыта открыта Завершен пр. торгуется MMU4: 3 04/Sep 18:02:42 открыта открыта Завершен пр. торгуется MMU4: 3 04/Sep 18:21:32 открыта открыта Завершен пр. торгуется BRV4: 3 04/Sep 18:22:56 открыта открыта Завершен пр. торгуется BRV4: 3
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 05/Sep 00:21:16 05/Sep 00:22:24 закрыта закрыта Назначен пр. приостановлена 05/Sep 00:22:51 закрыта закрыта Назначен пр. приостановлена BRV4: 6 05/Sep 00:22:51 закрыта закрыта Назначен пр. приостановлена MMU4: 6 05/Sep 00:22:51 закрыта закрыта Назначен пр. приостановлена NAU4: 6 05/Sep 00:22:51 закрыта закрыта Назначен пр. приостановлена SiU4: 6
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 05/Sep 13:22:12 05/Sep 13:29:50 открыта открыта Назначен пр. торгуется 05/Sep 14:00:09 закрыта закрыта Идёт пр. приостановлена 05/Sep 14:05:09 открыта открыта Завершен пр. торгуется 05/Sep 18:25:27 открыта открыта Завершен пр. торгуется BRV4: 3 05/Sep 18:29:59 открыта открыта Завершен пр. торгуется BRV4: 3 05/Sep 18:30:52 открыта открыта Завершен пр. торгуется SiU4: 3 05/Sep 18:34:05 открыта открыта Завершен пр. торгуется SiU4: 3 05/Sep 18:39:03 открыта открыта Завершен пр. торгуется BRV4: 3 05/Sep 18:40:15 открыта открыта Завершен пр. торгуется BRV4: 3 05/Sep 18:50:07 открыта закрыта Идёт осн. завершена BRV4: 4 05/Sep 18:50:07 открыта закрыта Идёт осн. завершена SiU4: 4 05/Sep 18:50:16 закрыта закрыта Идёт осн. завершена 05/Sep 18:58:02 неопределен закрыта Идёт осн. завершена 05/Sep 18:58:12 неопределен закрыта Идёт осн. назначена 05/Sep 18:58:16 неопределен закрыта Идёт осн. назначена BRV4: 5 05/Sep 18:58:16 неопределен закрыта Идёт осн. назначена SiU4: 5 05/Sep 19:05:07 открыта закрыта Идёт осн. назначена 05/Sep 19:05:12 открыта открыта Идёт осн. торгуется 05/Sep 19:06:10 открыта открыта Идёт осн. торгуется SiU4: 5 05/Sep 19:07:15 открыта открыта Идёт осн. торгуется SiU4: 5 05/Sep 19:08:32 открыта открыта Назначен пр. торгуется 05/Sep 19:08:34 открыта открыта Назначен пр. торгуется BRV4: 6 05/Sep 19:08:34 открыта открыта Назначен пр. торгуется SiU4: 6 05/Sep 19:10:54 открыта открыта Назначен пр. торгуется MMU4: 6 05/Sep 20:57:13 открыта открыта Назначен пр. торгуется BRV4: 6 05/Sep 21:12:34 открыта открыта Назначен пр. торгуется MMU4: 6
Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк 10/Sep 22:06:46 10/Sep 22:08:12 открыта открыта Назначен пр. торгуется
Скрипт:
Скрытый текст
Код
function OnInit(scr_path)
is_run = true
file = io.open(scr_path:sub(1,-4).."log", "a+")
callBack = {}
sec = "CNYRUBF" -- Стартовый тикер
end
function OnFuturesClientHolding(t)-- Позиции по клиентским счетам (фьючерсы).
table.sinsert(callBack, t)
end
function OnStop()
file:close()
is_run = false
return 2000
end
function main()
--file:write("\n Дата Время Сессия Бирж.сесс. Статус кл. Статус Коллбэк \n")
file:write("\n Дата\t Время\t Сессия\t Бирж.сесс.\t Статус кл.\t Статус\t Коллбэк \n")
local function UpdStts(param)
return getParamEx("SPBFUT", sec, param).param_image
end
while is_run do
trd_phase = UpdStts("TRADINGPHASE") -- Сессия.
trd_stts = UpdStts("TRADINGSTATUS") -- Биржевой статус торговой сессии.
cl_stts = UpdStts("CLSTATE") -- Статус клиринга.
status = UpdStts("STATUS") -- Статус.
while #callBack > 0 or trd_phase ~= prev_trdphs or trd_stts ~= prev_trdst or cl_stts ~= prev_clst or status ~= prev_st do
if callBack[1] then -- Есть коллбек.
local t = table.sremove(callBack, 1)
sec = t.sec_code
cb_stts = sec ..": ".. t.session_status
else
cb_stts = " "
end
prev_trdphs = trd_phase
prev_trdst = trd_stts
prev_clst = cl_stts
prev_st = status
--file:write(os.date(" %d/%b %X "),trd_phase," ",trd_stts," ",cl_stts," ",status," ",cb_stts,"\n")
file:write(string.format("%s\t %s\t %s\t %s\t %s\t %s\n", os.date(" %d/%b %X"), trd_phase, trd_stts, cl_stts, status, cb_stts))
file:flush()
end
sleep(300)
end
end
Больше всего, до нескольких минут, задержка изменения в коллбэке OnFuturesClientHolding. Такое впечатление, что на бирже статус меняют вручную, рубильником!
param_image = "открыта" или, что то же самое, param_value = 1
На срочном у меня так:
Код
function OnParam(class, sec)
if class == "SPBFUT" and (sec == Tr[1].sec or sec == Tr[2].sec) then
local sessn = (getParamEx("SPBFUT",sec,"TRADINGSTATUS").param_image == "открыта")
if sessn and (cond & 0x0080 == 0x0080) then
cond = cond & 0xFF7F -- Сброс "Сессия стоп".
SetColor(tw_id, 5, -1, -1, -1, -1, -1)
elseif not sessn and cond & 0x0080 == 0 then
cond = cond | 0x0080 -- "Сессия стоп".
SetColor(tw_id, 5, -1, yellow, -1, -1, -1)
end
end
end
Ziveleos написал: param_image = "открыта" или, что то же самое, param_value = 1
На срочном у меня так:
Код
function OnParam (class, sec)
if class = = "SPBFUT" and (sec = = Tr[ 1 ].sec or sec = = Tr[ 2 ].sec) then
local sessn = ( getParamEx ( "SPBFUT" ,sec,"TRADINGSTATUS").param_image = = "открыта" )
if sessn and (cond & 0x0080 = = 0x0080 ) then
cond = cond & 0xFF7F -- Сброс "Сессия стоп".
SetColor (tw_id, 5 , - 1 , - 1 , - 1 , - 1 , - 1 )
elseif not sessn and cond & 0x0080 = = 0 then
cond = cond | 0x0080 -- "Сессия стоп".
SetColor (tw_id, 5 , - 1 , yellow, - 1 , - 1 , - 1 )
end
end
end
Так как скрипт исполняется при каждом изменении ТПП и при этом останавливает основной поток QUIK, то он тормозит работу терминала. Чтобы это устранить, можно сделать отключение скрипта, если сессия открыта для всех торгуемых инструментов, либо по времени.
Проверять на 0 цены - это плохая затея, т.к. во-первых, есть инструменты с допустимой ценой = 0, а во-вторых, для срочного рынка во время клиринга, для фондовой между сессиями цена может "бегать" от 0 до последней. Собственно в период, когда торги не идут, данные с сервера могут приходить какие угодно. Так что уже лучше время проверять, обеспечив точность своих часов. У меня сделано через несколько проверок, время, статус, сделки. И если один из них не проходит, то данные не считываются, т.к. получить цену 0 как рабочую - это проблема для алгоритмов.
Nikolay написал: Проверять на 0 цены - это плохая затея, т.к. во-первых, есть инструменты с допустимой ценой = 0, а во-вторых, для срочного рынка во время клиринга, для фондовой между сессиями цена может "бегать" от 0 до последней. Собственно в период, когда торги не идут, данные с сервера могут приходить какие угодно. Так что уже лучше время проверять, обеспечив точность своих часов. У меня сделано через несколько проверок, время, статус, сделки. И если один из них не проходит, то данные не считываются, т.к. получить цену 0 как рабочую - это проблема для алгоритмов.
Относительно времени согласен, неоднократно писал на форуме. Синхронизация компа с сервером точного времени позволяет иметь погрешность не более 20 мс. Относительно нулевой цены у инструментов. Вы такими торгуете? Можно список?
Это календарные спреды. Да торгую. Также, после известных событий, для обычных фьючерсов тоже диапазон цен может быть расширен в отрицательную область.
Nikolay написал: Это календарные спреды. Да торгую. Также, после известных событий, для обычных фьючерсов тоже диапазон цен может быть расширен в отрицательную область.
Если правильно понимаю, то это торговля опционами. Верно?
Нет, календарный спред на ММВБ - это два контракта с разной датой экспирации. Если цены будет равны, то 0. Если беквордация, то отрицательные цены. У опционов такой спред если только самому делать.
nikolz написал: Так как скрипт исполняется при каждом изменении ТТП и при этом останавливает основной поток QUIK, то он тормозит работу терминала.
При каждом изменении ТТП исполняется только первая строка. Проверка по времени - не лучший вариант. Частенько бывают задержки возобновления торгов после клиринга. К тому же, торги могут быть приостановлены по конкретному инструменту; на срочном такое не редкость. Проверку состояния сессии можно проводить непосредственно перед отправкой заявки, и, если инструмент не торгуется, устанавливать соответствующий флаг. А потом, в цикле контролировать возобновление торгов.
nikolz написал: Так как скрипт исполняется при каждом изменении ТТП и при этом останавливает основной поток QUIK, то он тормозит работу терминала.
При каждом изменении ТТП исполняется только первая строка. Проверка по времени - не лучший вариант. Частенько бывают задержки возобновления торгов после клиринга. К тому же, торги могут быть приостановлены по конкретному инструменту; на срочном такое не редкость. Проверку состояния сессии можно проводить непосредственно перед отправкой заявки, и, если инструмент не торгуется, устанавливать соответствующий флаг. А потом, в цикле контролировать возобновление торгов.
Если торги остановлены, то поэтому инструменту не будут вызываться колбеки. Что в таком случае надо еще ?
nikolz написал: Так как скрипт исполняется при каждом изменении ТТП и при этом останавливает основной поток QUIK, то он тормозит работу терминала.
При каждом изменении ТТП исполняется только первая строка. Проверка по времени - не лучший вариант. Частенько бывают задержки возобновления торгов после клиринга. К тому же, торги могут быть приостановлены по конкретному инструменту; на срочном такое не редкость. Проверку состояния сессии можно проводить непосредственно перед отправкой заявки, и, если инструмент не торгуется, устанавливать соответствующий флаг. А потом, в цикле контролировать возобновление торгов.
Да, поэтому и надо проверять в несколько проверок, чтобы фильтровать стоп-торги. На всех секциях планки бывают.
nikolz написал: Если торги остановлены, то поэтому инструменту не будут вызываться колбеки. Что в таком случае надо еще ?
1, Торги могут быть приостановлены только по одному инструменту из пары, но стакан все равно в это время может изменяться. 2, Во время клиринга колбэки приходят.
Nikolay написал: Проверять на 0 цены - это плохая затея, т.к. во-первых, есть инструменты с допустимой ценой = 0, а во-вторых, для срочного рынка во время клиринга, для фондовой между сессиями цена может "бегать" от 0 до последней. Собственно в период, когда торги не идут, данные с сервера могут приходить какие угодно. Так что уже лучше время проверять, обеспечив точность своих часов. У меня сделано через несколько проверок, время, статус, сделки. И если один из них не проходит, то данные не считываются, т.к. получить цену 0 как рабочую - это проблема для алгоритмов.
Вы же сами выше написали, что полагаться на время - так себе затея.
Цитата
Времена часто изменяются. Они на сайте биржи в разделе расписание торгов есть. У Валютной секции совсем другие времена, для примера.
Только на время. Но и без него есть проблемы, т.к. приход измененного статуса опаздывает, что не столь критично при старте сессии (хотя кому как), но более важно при окончании. Например, статус об окончании сессии пришел на 5 секунд позже. Казалось бы - не важно. Но проблема в ордерах - снятие существующих, установка новых. Например, надо хранить какие ордера переносить через сессию, запоминая активные. Нельзя устанавливать ордера в эти 5 секунд и т.д. Т.е. время плюс статус - уже более надежный показатель.
Если статус изменится внутри сессии, то полная проверка уже не пройдет. Если статус немного опоздал, то по времени полная проверка не пройдет. Т.е. можно сочетать варианты. Также можно добавить и другие косвенные показатели, например, запрещая торговать в период планки и т.д. Задача разработчика предусмотреть ситуации. Задача пользователя включить те сочетания, что его устраивают.
Что касается разного времени для секций, то естественно необходимо хранить разные отметки по классам, секциям. Т.к. даже внутри одной фондовой секции разные времена - 7 утра для части акций, 9 - утра для ОФЗ, и 10 утра для всех. Зачем это сделано - это вопрос в палату. Но раз сделано, то сделано.
Для случая нормальной работы можно использовать время начала и завершения торгового дня из предыдущей сессии. Если это выходные, то из предыдущих выходных.
paluke написал: У тинькова в апи есть расписание торгов по инструментам
С расписанием особых проблем нет. Оно хоть и меняется, но не так часто. А вот стоп торги по инструменту внутри сессии - это только через статус торгов в данный конкретный момент. Или, что уже чаще бывает, перенос старта торгов после клиринга на срочной сессии. Это уже почти постоянно, сдвинуть на 20 минут обычное дело.