Технологические времена работы биржи

Страницы: 1
RSS
Технологические времена работы биржи
 
Какие технологические времена работы биржи для акций и какие для фьючеров?

06:50:00 — 09:49:59 +
09:50:00 — 18:50:00 +
19:00:01 — 23:49:59

Так?

Или надо шаманить с параметрами TRADINGSTATE + CLSTATE ?

Порой мне кажется разработчики QUIK забыли сделать пару очевидных колбеков типа OnTradingStart() и OnTradingStop(), которые срабатываюь, когда торговля начинается/возобновляется и когда она приостанавливается, вместо того, чтобы париться с расписанием торгов или вышеупомянутыми параметрами?

 
Времена часто изменяются. Они на сайте биржи в разделе расписание торгов есть. У Валютной секции совсем другие времена, для примера.
Так что да, надо читать самому статус, правда здесь тоже есть проблема, т.к. флаги приходят с явными задержками, особенно с CLSTATE в вечернюю сессию. Очень часто до 2-х минут задержка.
С TRADINGSTATE получше, но тоже задержки до 10-15 секунд.

И почему-то очень часто вижу, что время вечерней сессии 19:00, хотя 19:05 на самом деле, если нет другого сообщения. Это на фондовой секции в 19:00 начинается вечерний аукцион открытия, сама же сессия тоже в 19:05.
 
Хорошо, тогда очень простой вопрос.

Какие значения параметра TRADINGSTATUS говорят, что в данный момент можно торговать...
а) акциями
б) фьючерсами
 
Как-то тоже интересовался этим вопросом. Записывал скриптом в лог изменения статусов на срочном рынке (их аж четыре!), и параметр session_status в коллбэке OnFuturesClientHolding.

Лог:
Скрытый текст

Скрипт:
Скрытый текст

Больше всего, до нескольких минут,  задержка изменения в коллбэке OnFuturesClientHolding.
Такое впечатление, что на бирже статус меняют вручную, рубильником!
Всё пройдет. Но это не точно.
 
Ziveleos, большое спасибо за код.

Пожалуйста, просто перечисли значения параметра TRADINGSTATUS, которые показывают, что в данный момент можно торговать.
Я запутался.
 
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, спасибо 👍
 
Цитата
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, то он тормозит работу терминала.  Чтобы это устранить, можно сделать отключение скрипта, если сессия открыта для всех торгуемых инструментов, либо по времени.  
 
Опечатка, ТТП.
 
Можно сделать еще проще.
Если инструмент не торгуется, то его текущая цена равна нулю.  
 
и еще...
Если инструмент не торгуется, то сделок для и заявок нет, если торговля не приостановлена внутри сессии.
 
Цитата
nikolz написал:
Можно сделать еще проще.
Если инструмент не торгуется, то его текущая цена равна нулю.  
А я думал, что при приостановке торгов цена инстумента просто замирает (не изменяется), а не обнуляется.
 
Цитата
Сергей Че написал:
Цитата
nikolz написал:
Можно сделать еще проще.
Если инструмент не торгуется, то его текущая цена равна нулю.  
А я думал, что при приостановке торгов цена инстумента просто замирает (не изменяется), а не обнуляется.
Я про начало торгов по инструменту.
Полагаю, что при остановке торгов не будут вызываться колбеки по данному инструменту вообще.  
 
Проверять на 0 цены - это плохая затея, т.к. во-первых, есть инструменты с допустимой ценой = 0, а во-вторых, для срочного рынка во время клиринга, для фондовой между сессиями цена может "бегать" от 0 до последней.
Собственно в период, когда торги не идут, данные с сервера могут приходить какие угодно. Так что уже лучше время проверять, обеспечив точность своих часов.
У меня сделано через несколько проверок, время, статус, сделки. И если один из них не проходит, то данные не считываются, т.к. получить цену 0 как рабочую - это проблема для алгоритмов.
 
Цитата
Nikolay написал:
Проверять на 0 цены - это плохая затея, т.к. во-первых, есть инструменты с допустимой ценой = 0, а во-вторых, для срочного рынка во время клиринга, для фондовой между сессиями цена может "бегать" от 0 до последней.
Собственно в период, когда торги не идут, данные с сервера могут приходить какие угодно. Так что уже лучше время проверять, обеспечив точность своих часов.
У меня сделано через несколько проверок, время, статус, сделки. И если один из них не проходит, то данные не считываются, т.к. получить цену 0 как рабочую - это проблема для алгоритмов.
Относительно времени согласен, неоднократно писал на форуме. Синхронизация компа с сервером точного времени позволяет иметь погрешность не более 20 мс.
Относительно нулевой цены у инструментов.
Вы такими торгуете?  Можно список?
 
Это календарные спреды. Да торгую. Также, после известных событий, для обычных фьючерсов тоже диапазон цен может быть расширен в отрицательную область.
 
Цитата
Nikolay написал:
Это календарные спреды. Да торгую. Также, после известных событий, для обычных фьючерсов тоже диапазон цен может быть расширен в отрицательную область.
Если правильно понимаю, то это торговля опционами. Верно?
 
Нет, календарный спред на ММВБ - это два контракта с разной датой экспирации. Если цены будет равны, то 0. Если беквордация, то отрицательные цены. У опционов такой спред если только самому делать.

https://www.moex.com/ru/spreads
 
Цитата
nikolz написал:
Так как скрипт исполняется при каждом изменении ТТП и при этом останавливает основной поток QUIK, то он тормозит работу терминала.
При каждом изменении ТТП исполняется только первая строка.
Проверка по времени - не лучший вариант. Частенько бывают задержки возобновления торгов после клиринга. К тому же, торги могут быть приостановлены по конкретному инструменту; на срочном такое не редкость.
Проверку состояния сессии можно проводить непосредственно перед отправкой заявки, и, если инструмент не торгуется, устанавливать соответствующий флаг. А потом, в цикле контролировать возобновление торгов.
Всё пройдет. Но это не точно.
 
Цитата
Ziveleos написал:
Цитата
nikolz написал:
Так как скрипт исполняется при каждом изменении ТТП и при этом останавливает основной поток QUIK, то он тормозит работу терминала.
При каждом изменении ТТП исполняется только первая строка.
Проверка по времени - не лучший вариант. Частенько бывают задержки возобновления торгов после клиринга. К тому же, торги могут быть приостановлены по конкретному инструменту; на срочном такое не редкость.
Проверку состояния сессии можно проводить непосредственно перед отправкой заявки, и, если инструмент не торгуется, устанавливать соответствующий флаг. А потом, в цикле контролировать возобновление торгов.
Если торги остановлены, то поэтому инструменту не будут вызываться колбеки.  Что в таком случае надо еще ?  
 
Цитата
Ziveleos написал:
Цитата
nikolz написал:
Так как скрипт исполняется при каждом изменении ТТП и при этом останавливает основной поток QUIK, то он тормозит работу терминала.
При каждом изменении ТТП исполняется только первая строка.
Проверка по времени - не лучший вариант. Частенько бывают задержки возобновления торгов после клиринга. К тому же, торги могут быть приостановлены по конкретному инструменту; на срочном такое не редкость.
Проверку состояния сессии можно проводить непосредственно перед отправкой заявки, и, если инструмент не торгуется, устанавливать соответствующий флаг. А потом, в цикле контролировать возобновление торгов.
Да, поэтому и надо проверять в несколько проверок, чтобы фильтровать стоп-торги. На всех секциях планки бывают.
 
Цитата
nikolz написал:
Если торги остановлены, то поэтому инструменту не будут вызываться колбеки.  Что в таком случае надо еще ?  
1, Торги могут быть приостановлены только по одному инструменту из пары, но стакан все равно в это время может изменяться.
2, Во время клиринга колбэки приходят.
Всё пройдет. Но это не точно.
 
Цитата
Nikolay написал:
Проверять на 0 цены - это плохая затея, т.к. во-первых, есть инструменты с допустимой ценой = 0, а во-вторых, для срочного рынка во время клиринга, для фондовой между сессиями цена может "бегать" от 0 до последней.
Собственно в период, когда торги не идут, данные с сервера могут приходить какие угодно. Так что уже лучше время проверять, обеспечив точность своих часов.
У меня сделано через несколько проверок, время, статус, сделки. И если один из них не проходит, то данные не считываются, т.к. получить цену 0 как рабочую - это проблема для алгоритмов.

Вы же сами выше написали, что полагаться на время - так себе затея.
Цитата
Времена часто изменяются. Они на сайте биржи в разделе расписание торгов  есть. У Валютной секции совсем другие времена, для примера.
Страницы: 1
Читают тему
Наверх