Как определить, когда идет торговая сессия, а когда нет?

Страницы: 1
RSS
Как определить, когда идет торговая сессия, а когда нет?
 
Доброе утро. Написал торгового робота, который умеет подавать заявки и снимать заявки. Этот торговый робот работает круглосуточно. Проблема в том, что сама биржа не работает круглосуточно. Из-за этого часто появляются сообщения "Ошибка создания заявки. [GW][3] "Сейчас эта сессия не идет."." Как определить средствами quik+lua возможно ли подавать заявки или нет?
 
Здравствуйте,
Проверить можно через параметры TRADINGSTATUS или STATUS с помощью функции getParamEx
Или еще проще, добавить проверку текущего времени. Расписание торгов заранее известно и меняется крайне редко
 
Цитата
Sergey Gorokhov написал:
Здравствуйте,
Проверить можно через параметры TRADINGSTATUS или STATUS с помощью функции getParamEx
Или еще проще, добавить проверку текущего времени. Расписание торгов заранее известно и меняется крайне редко
а заказать эти параметры к получению можно?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
s_mike@rambler.ru,
Да можно
 
День добрый, у меня аналогичная проблема, на демо тестировал lua-скрипт на SiH8, Quik 7.16.1.36
02.02.18 в 15:48:17 (основная сессия, вечерний период) появилась аналогичная ошибка, при этом заявка в это время ни вручную ни скриптом не отправлялась.
Также прошу пояснить, что произошло и как понять какие процессы происходили в терминале, так как скрипт после этого в окне "Доступные скрипты" также виден с зеленым треугольником, т.е. типа запущен, но при этом по факту не работает, так как никаких событий и сообщений в ходе его работы не появилось, т.е. дальше он не работал.
 
На демках использование TRADINGSTATUS и STATUS сомнительно. У меня они на паре демок просто не работали. Расписание сессий в демках в ТТТ тоже недостоверны, у меня там и сессий больше было (4 против 3 на реале).  Может, с демками не повезло.

О расписании торгов в реале. Даже если вам приходит сообщение, что вечерка начнется в 19:10, то по факту она может начаться и в 19:05.  
 
Поддержка, наверное, ответит в рабочее время, а пока я думаю так, на демо-сервере сдвинули время клиринга, но при чем тогда эта ошибка, если заявка не создавалась и не уходила на сервер?
Хотя и не по теме второй вопрос, все жду ответа, почему запущенный в терминале скрипт не работал, может есть какой-то механизм с сервера этой ошибкой останавливать поток в терминале или что-то в этом роде?
 
Добрый день,

Данную ошибку возвращает Торговая система, в случае, если торги в данный момент не проводятся.
Цитата
Андрей_Г написал:
при этом заявка в это время ни вручную ни скриптом не отправлялась.
Для получения информации о транзакции, необходимо обратиться к Вашему брокеру, указав детали заявки.
Цитата
Андрей_Г написал:
никаких событий и сообщений в ходе его работы не появилось, т.е. дальше он не работал.
Для диагностики работы скрипта рекомендуем воспользоваться его отладкой, например с помощью вывода message, либо с помощью сторонних отладчиков.
 
Цитата
Sergey Gorokhov написал:
Проверить можно через параметры TRADINGSTATUS или STATUS с помощью функции getParamEx
Или еще проще, добавить проверку текущего времени. Расписание торгов заранее известно и меняется крайне редко
Спасибо, попробую так и сделать.
P.S. Это в США стабильность и понятный график торгов по времени -- а у нас суета -- на бирже СПБ теперь есть утренняя торговая сессия -- и хаотично меняющийся список "кто утром есть, а кого утром нет". Бардак и суета на ровном месте, как в колхозе.
 
Юрий Волошин, Я ещё на один "бардак" сегодня напоролся. Точнее, на их комбинацию: у буржуев всё просто: минимальный размер лота всегда 1 акция, а у нас их может быть, мягко говоря, МНОГО (например, размер лота у ВТБ 10000 акций). Сначала я записывал размер лота в файл и читал их оттуда - напоролся на то, что у некоторых моих тикеров он вдруг изменился и, соответственно, стала неправильно вычисляться сумма покупки/продажи. Тогда я стал читать размер лота при запуске скрипта через getParamEx-LOTSIZE. Всё было прекрасно, пока не начались утренние торги, к которым рублёвые акции подключаются только в 10 часов. А при раннем запуске LOTSIZE у них нулевой! А больше-то я его не перечитываю. Придётся, видимо, сделать так: файл результатов я теперь записываю не только по выходу, но и периодически, примерно раз в полчаса (Квик заставил, который пару раз издох на ровном месте), так в этот момент я теперь буду и перечитывать LOTSIZE, "на всякий пожарный". :smile:

Что до "кто утром есть, а кого утром нет" - я на днях давал набросок алгоритма в одной из местных веток, как с этим бороться.
 
Цитата
Владимир написал:
примерно раз в полчаса
я некоторые ключевые показатели -- втч getParamEx(XXXXsFull[key].birzha, key, 'TRADINGSTATUS').param_image пересчитываю каждые 9999 милисекунд... а что делать...
 
Юрий Волошин, Что делать? Видимо, то же, что и я: ВААПЩЕ не использовать TRADINGSTATUS! :smile: Примерно так:

https://forum.quik.ru/messages/forum10/message54262/topic6339/#message54262
 
Цитата
Владимир написал:
Что делать? Видимо, то же, что и я: ВААПЩЕ не использовать TRADINGSTATUS!
Это ужасно, но Вы наверно правы! Сейчас все индикаторы TRADINGSTATUS -- ОДИНАКОВЫЕ -- хотя торги по AAPL на бирже СПБ идут, а торгов по Северсталь на Московской бирже нет! Я проверил по массиву из более чем 100 акций через dbgview -- ВСЕ ИНДИКАТОРЫ ОДИНАКОВЫЕ! По TRADINGSTATUS утренняя сессия на бирже СПБ неотличима никак! Золхоз и колхозники, их жеж мать!

9:29 01.04.2021
[8928] key = AAPL
[8928] .param_image = закрыта
[8928] .param_type = 4
[8928] .param_value = 0.000000
[8928] .result = 1

[8928] key = CHMF
[8928] .param_image = закрыта
[8928] .param_type = 4
[8928] .param_value = 0.000000
[8928] .result = 1

ТАК КАК ЖЕ НАМ ОПРЕДЕЛИТЬ -- ЕСТЬ ТОРГИ ИЛИ НЕТ ПО ДАННОЙ ПОЗИЦИИ? По любой бирже -- биржа СПБ (утром и в нормальное время), Московская биржа, NYSE, Nasdaq...
 
Цитата
Sergey Gorokhov написал:
Здравствуйте,
Проверить можно через параметры TRADINGSTATUS или STATUS с помощью функции getParamEx
Или еще проще, добавить проверку текущего времени. Расписание торгов заранее известно и меняется крайне редко
Ваша фантазия не соответствует реальной жизни. Вот прямо сейчас торги идут, а в Lua QUIK 8.13 мы видим:
11:07 01.04.2021
[8928] key = CCL
[8928] .param_image = закрыта
[8928] .param_value = 0.000000
[8928] .result = 1

ВАША TRADINGSTATUS с помощью функции getParamEx НЕ РАБОТАЕТ В РЕАЛЬНОЙ ЖИЗНИ. СОВСЕМ НЕ РАБОТАЕТ. Проблема. Надо как-то реагировать. Ваш косяк? Косяк брокера? Косяк биржи? Кто у нас колхозник сегодня?
 
Цитата
Sergey Gorokhov написал:
Проверить можно через параметры TRADINGSTATUS или STATUS с помощью функции getParamEx
Нет, нельзя. Сейчас проверил на большом массиве с помощью dbgview и PrintDbgStr

for key in pairs(XXXXsFull) do local qwe = getParamEx(XXXXsFull[key].birzha, key, 'TRADINGSTATUS').param_image
PrintDbgStr('key = '..key)
PrintDbgStr('.param_image = '..qwe)
PrintDbgStr('.param_type = '..getParamEx(XXXXsFull[key].birzha, key, 'TRADINGSTATUS').param_type)
PrintDbgStr('.param_value = '..getParamEx(XXXXsFull[key].birzha, key, 'TRADINGSTATUS').param_value)
PrintDbgStr('.result = '..getParamEx(XXXXsFull[key].birzha, key, 'TRADINGSTATUS').result)
end

примерно в 30% чушь -- [8928] .param_image = закрыта
примерно в 70% правильно -- [8928] .param_image = открыта

остальные
[8928] .param_type = 4
[8928] .param_value = 1.000000
[8928] .param_value = 1.000000
всегда идентичны.

И чё? Как нам узнать идут тогри или нет по данной позиции с помощью Lua QUIK?! Без 30% ошибок!
 
Юрий Волошин, добрый день!

Приведите, пожалуйста, пример конкретного инструмента определенного класса, по которому наблюдается описанное поведение: в таблице терминала статус - открыта, а значение tradingstatus, полученное в Lua - закрыта.
Пришлите, пожалуйста, снимок экрана, наглядно демонстрирующий проблему и фрагмент кода.

Заранее благодарим.
 
Приветствую всех!
В развитие темы пара вопросов:
1) Как получить доступ через LUA к информационным сообщениям QUIK? В частности к информации о наличии обновлений. Вопрос далеко не праздный, т.к. многие поля таблиц иногда отказываются работать если не скачать последние обновления. Отсюда вытекают сложности с автономной работой: ваш робот может не прочитать поле из-за того, что в сети появилось обновление (например поля STATUS и TRADINGSTATUS), со всеми вытекающими. Поддержка везде советует их использовать, но умалчивает о том, что они не работают когда системе необходимо обновление.
2) Как получить доступ к данным котировок начиная с определенного времени или сессии? Другими словами, как получить данные, например, с текущего момента времени без подгрузки истории?
 
По вопросу номер 2 интересуют стандартные типовые решения (может я где проглядел), кроме самописного фильтра по времени.
 
Андрей, добрый день!

1)
Цитата
Андрей написал:
Как получить доступ через LUA к информационным сообщениям QUIK?
Такой возможности на текущий момент нет.
Цитата
Андрей написал:
многие поля таблиц иногда отказываются работать если не скачать последние обновления
Уточните, пожалуйста, о каких полях конкретно идет речь (включая status и tradingstatus) и почему Вы так решили?

2) Уточните, пожалуйста, о каких данных идет речь. История котировок (очереди заявок) в терминале на хранится.
 
Цитата
Roman Azarov написал:
Юрий Волошин, добрый день!

Приведите, пожалуйста, пример конкретного инструмента определенного класса, по которому наблюдается описанное поведение: в таблице терминала статус -  открыта , а значение tradingstatus, полученное в Lua -  закрыта .
Пришлите, пожалуйста, снимок экрана, наглядно демонстрирующий проблему и фрагмент кода.

Заранее благодарим.
Проверил. Проблема не у вас в Lua QUIK, проблема в криворуких макаках на биржах России или у брокера на Сервере. Вот прямо сейчас, 9:40 суббота -- все биржи закрыты -- а при этом статус "торгуется" "открыта" стоит практически у всех акции Московской биржи и у всех акций биржи СПБ (кроме немецких, немецкие в статусе "закрыта") -- макаки-с... К вам претензий нет. Как писать грамотную программу на Lua QUIK, если на Московской бирже и на Бирже СПБ макаки -- я не знаю... открыта RUAL на Московской бирже, открыта GOOG на бирже СПБ -- в 9:45 субботы, ага... Или кто за это отвечает? Кто настраивает поле "статус" - "торгуется" -- оно же getParamEx(XXXXsFull[key].birzha, key, 'TRADINGSTATUS').param_image == 'открыта'?! Кто за это отвечает?!
 
Юрий Волошин, Никто ни за что не отвечает. А определить, когда идет торговая сессия, а когда нет, очень просто: если торги (по данному инструменту) идут, то значения LAST в ТТТ меняются. Если не меняются, нет и торгов. По любой причине: биржа не работает, брокер спит, провайдер в Инет не пускает или ещё почему.

Вот "прямо сейчас, 14:50 суббота -- все биржи закрыты", запустил Квик, запустил скрипт, в Инет не входил (данные, стало быть, вчерашние - что на Мосбирже, что на бирже СПБ, что русские акции, что немецкие, что американские, что китайские) - всё работает, а заявок скрипт не даёт, при этом статус "торгуется" "открыта" вообще не проверяется. Даванул на кнопочку "купить" для RUAL - говорит "Дай прогреться" (первую минуту у меня сделки запрещены, программа осматривается), даванул через минуту - и лишь тогда "Result=Not connected".

Теперь вхожу в Инет (скрипт по-прежнему работает)... МАМА ДОРОГАЯ! ЧТО ЭТО?! Куча сделок, продаж и покупок, и все в одну и ту же секунду! Во поэкспериментировал, блин! Раньше я сначала входил в сеть, а потом запускал скрипт. Что бы это значило?! Ха-ха-ха! Я просто В ДИКОМ восторге! Сделки-то есть, а заявок ни одной, это она залудила кучу прерываний OnTrade по моим ВЧЕРАШНИМ заявкам, вчера же и исполненным! О, сколько нам открытий чудных... Причём пока связи не было, не было и прерываний. Это брокер подсуетился, штоле? А мой-то скрипт ВЕРИТ этой лапше! Он заявки не подавал, но думает, что их подавал юзер, вручную, через стаканы и, соответственно, учитывает это как сделки по "левым" заявкам. ДА УЖЖЖЖ!  :lol:  
 
Добрый день!

Подскажите, пожалуйста, а в какое время на демо идут торги, а в какое клиринг?
Нужны все интервалы.  
 
Здравствуйте Андрей,

Регламент работы учебного сервера QUIK-Junior можно посмотреть по ссылке: QUIK-Брокер учебная копия — ARQA Technologies
Период клиринга длится с 15:45 до 16:00 по МСК - 15 минут, до начала вечерней торговой сессии.
Страницы: 1
Читают тему
Наверх