Как определить, когда идет торговая сессия, а когда нет?
Пользователь
Сообщений: Регистрация: 19.05.2017
18.08.2017 05:42:45
Доброе утро. Написал торгового робота, который умеет подавать заявки и снимать заявки. Этот торговый робот работает круглосуточно. Проблема в том, что сама биржа не работает круглосуточно. Из-за этого часто появляются сообщения "Ошибка создания заявки. [GW][3] "Сейчас эта сессия не идет."." Как определить средствами quik+lua возможно ли подавать заявки или нет?
Пользователь
Сообщений: Регистрация: 23.01.2015
18.08.2017 08:40:10
Здравствуйте, Проверить можно через параметры TRADINGSTATUS или STATUS с помощью функции getParamEx Или еще проще, добавить проверку текущего времени. Расписание торгов заранее известно и меняется крайне редко
Пользователь
Сообщений: Регистрация: 30.01.2015
18.08.2017 09:13:18
Цитата
Sergey Gorokhov написал: Здравствуйте, Проверить можно через параметры TRADINGSTATUS или STATUS с помощью функции getParamEx Или еще проще, добавить проверку текущего времени. Расписание торгов заранее известно и меняется крайне редко
День добрый, у меня аналогичная проблема, на демо тестировал lua-скрипт на SiH8, Quik 7.16.1.36 02.02.18 в 15:48:17 (основная сессия, вечерний период) появилась аналогичная ошибка, при этом заявка в это время ни вручную ни скриптом не отправлялась. Также прошу пояснить, что произошло и как понять какие процессы происходили в терминале, так как скрипт после этого в окне "Доступные скрипты" также виден с зеленым треугольником, т.е. типа запущен, но при этом по факту не работает, так как никаких событий и сообщений в ходе его работы не появилось, т.е. дальше он не работал.
Пользователь
Сообщений: Регистрация: 27.03.2016
03.02.2018 19:35:35
На демках использование TRADINGSTATUS и STATUS сомнительно. У меня они на паре демок просто не работали. Расписание сессий в демках в ТТТ тоже недостоверны, у меня там и сессий больше было (4 против 3 на реале). Может, с демками не повезло.
О расписании торгов в реале. Даже если вам приходит сообщение, что вечерка начнется в 19:10, то по факту она может начаться и в 19:05.
Пользователь
Сообщений: Регистрация: 03.02.2018
03.02.2018 20:42:56
Поддержка, наверное, ответит в рабочее время, а пока я думаю так, на демо-сервере сдвинули время клиринга, но при чем тогда эта ошибка, если заявка не создавалась и не уходила на сервер? Хотя и не по теме второй вопрос, все жду ответа, почему запущенный в терминале скрипт не работал, может есть какой-то механизм с сервера этой ошибкой останавливать поток в терминале или что-то в этом роде?
QUIK clients support
Сообщений: Регистрация: 27.01.2015
05.02.2018 09:52:43
Добрый день,
Данную ошибку возвращает Торговая система, в случае, если торги в данный момент не проводятся.
Цитата
Андрей_Г написал: при этом заявка в это время ни вручную ни скриптом не отправлялась.
Для получения информации о транзакции, необходимо обратиться к Вашему брокеру, указав детали заявки.
Цитата
Андрей_Г написал: никаких событий и сообщений в ходе его работы не появилось, т.е. дальше он не работал.
Для диагностики работы скрипта рекомендуем воспользоваться его отладкой, например с помощью вывода message, либо с помощью сторонних отладчиков.
Пользователь
Сообщений: Регистрация: 23.01.2021
29.03.2021 10:32:20
Цитата
Sergey Gorokhov написал: Проверить можно через параметры TRADINGSTATUS или STATUS с помощью функции getParamEx Или еще проще, добавить проверку текущего времени. Расписание торгов заранее известно и меняется крайне редко
Спасибо, попробую так и сделать. P.S. Это в США стабильность и понятный график торгов по времени -- а у нас суета -- на бирже СПБ теперь есть утренняя торговая сессия -- и хаотично меняющийся список "кто утром есть, а кого утром нет". Бардак и суета на ровном месте, как в колхозе.
Пользователь
Сообщений: Регистрация: 25.09.2020
29.03.2021 12:17:40
Юрий Волошин, Я ещё на один "бардак" сегодня напоролся. Точнее, на их комбинацию: у буржуев всё просто: минимальный размер лота всегда 1 акция, а у нас их может быть, мягко говоря, МНОГО (например, размер лота у ВТБ 10000 акций). Сначала я записывал размер лота в файл и читал их оттуда - напоролся на то, что у некоторых моих тикеров он вдруг изменился и, соответственно, стала неправильно вычисляться сумма покупки/продажи. Тогда я стал читать размер лота при запуске скрипта через getParamEx-LOTSIZE. Всё было прекрасно, пока не начались утренние торги, к которым рублёвые акции подключаются только в 10 часов. А при раннем запуске LOTSIZE у них нулевой! А больше-то я его не перечитываю. Придётся, видимо, сделать так: файл результатов я теперь записываю не только по выходу, но и периодически, примерно раз в полчаса (Квик заставил, который пару раз издох на ровном месте), так в этот момент я теперь буду и перечитывать LOTSIZE, "на всякий пожарный".
Что до "кто утром есть, а кого утром нет" - я на днях давал набросок алгоритма в одной из местных веток, как с этим бороться.
я некоторые ключевые показатели -- втч getParamEx(XXXXsFull[key].birzha, key, 'TRADINGSTATUS').param_image пересчитываю каждые 9999 милисекунд... а что делать...
Пользователь
Сообщений: Регистрация: 25.09.2020
29.03.2021 13:44:40
Юрий Волошин, Что делать? Видимо, то же, что и я: ВААПЩЕ не использовать TRADINGSTATUS! Примерно так:
Пользователь
Сообщений: Регистрация: 23.01.2021
01.04.2021 09:40:43
Цитата
Владимир написал: Что делать? Видимо, то же, что и я: ВААПЩЕ не использовать TRADINGSTATUS!
Это ужасно, но Вы наверно правы! Сейчас все индикаторы TRADINGSTATUS -- ОДИНАКОВЫЕ -- хотя торги по AAPL на бирже СПБ идут, а торгов по Северсталь на Московской бирже нет! Я проверил по массиву из более чем 100 акций через dbgview -- ВСЕ ИНДИКАТОРЫ ОДИНАКОВЫЕ! По TRADINGSTATUS утренняя сессия на бирже СПБ неотличима никак! Золхоз и колхозники, их жеж мать!
ТАК КАК ЖЕ НАМ ОПРЕДЕЛИТЬ -- ЕСТЬ ТОРГИ ИЛИ НЕТ ПО ДАННОЙ ПОЗИЦИИ? По любой бирже -- биржа СПБ (утром и в нормальное время), Московская биржа, NYSE, Nasdaq...
Пользователь
Сообщений: Регистрация: 23.01.2021
01.04.2021 11:11:56
Цитата
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 НЕ РАБОТАЕТ В РЕАЛЬНОЙ ЖИЗНИ. СОВСЕМ НЕ РАБОТАЕТ. Проблема. Надо как-то реагировать. Ваш косяк? Косяк брокера? Косяк биржи? Кто у нас колхозник сегодня?
Пользователь
Сообщений: Регистрация: 23.01.2021
01.04.2021 11:27:06
Цитата
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 - закрыта. Пришлите, пожалуйста, снимок экрана, наглядно демонстрирующий проблему и фрагмент кода.
Заранее благодарим.
Пользователь
Сообщений: Регистрация: 22.10.2020
02.04.2021 20:10:30
Приветствую всех! В развитие темы пара вопросов: 1) Как получить доступ через LUA к информационным сообщениям QUIK? В частности к информации о наличии обновлений. Вопрос далеко не праздный, т.к. многие поля таблиц иногда отказываются работать если не скачать последние обновления. Отсюда вытекают сложности с автономной работой: ваш робот может не прочитать поле из-за того, что в сети появилось обновление (например поля STATUS и TRADINGSTATUS), со всеми вытекающими. Поддержка везде советует их использовать, но умалчивает о том, что они не работают когда системе необходимо обновление. 2) Как получить доступ к данным котировок начиная с определенного времени или сессии? Другими словами, как получить данные, например, с текущего момента времени без подгрузки истории?
Пользователь
Сообщений: Регистрация: 22.10.2020
02.04.2021 20:17:42
По вопросу номер 2 интересуют стандартные типовые решения (может я где проглядел), кроме самописного фильтра по времени.
Приведите, пожалуйста, пример конкретного инструмента определенного класса, по которому наблюдается описанное поведение: в таблице терминала статус - открыта , а значение tradingstatus, полученное в Lua - закрыта . Пришлите, пожалуйста, снимок экрана, наглядно демонстрирующий проблему и фрагмент кода.
Заранее благодарим.
Проверил. Проблема не у вас в Lua QUIK, проблема в криворуких макаках на биржах России или у брокера на Сервере. Вот прямо сейчас, 9:40 суббота -- все биржи закрыты -- а при этом статус "торгуется" "открыта" стоит практически у всех акции Московской биржи и у всех акций биржи СПБ (кроме немецких, немецкие в статусе "закрыта") -- макаки-с... К вам претензий нет. Как писать грамотную программу на Lua QUIK, если на Московской бирже и на Бирже СПБ макаки -- я не знаю... открыта RUAL на Московской бирже, открыта GOOG на бирже СПБ -- в 9:45 субботы, ага... Или кто за это отвечает? Кто настраивает поле "статус" - "торгуется" -- оно же getParamEx(XXXXsFull[key].birzha, key, 'TRADINGSTATUS').param_image == 'открыта'?! Кто за это отвечает?!
Пользователь
Сообщений: Регистрация: 25.09.2020
10.04.2021 15:20:56
Юрий Волошин, Никто ни за что не отвечает. А определить, когда идет торговая сессия, а когда нет, очень просто: если торги (по данному инструменту) идут, то значения LAST в ТТТ меняются. Если не меняются, нет и торгов. По любой причине: биржа не работает, брокер спит, провайдер в Инет не пускает или ещё почему.
Вот "прямо сейчас, 14:50 суббота -- все биржи закрыты", запустил Квик, запустил скрипт, в Инет не входил (данные, стало быть, вчерашние - что на Мосбирже, что на бирже СПБ, что русские акции, что немецкие, что американские, что китайские) - всё работает, а заявок скрипт не даёт, при этом статус "торгуется" "открыта" вообще не проверяется. Даванул на кнопочку "купить" для RUAL - говорит "Дай прогреться" (первую минуту у меня сделки запрещены, программа осматривается), даванул через минуту - и лишь тогда "Result=Not connected".
Теперь вхожу в Инет (скрипт по-прежнему работает)... МАМА ДОРОГАЯ! ЧТО ЭТО?! Куча сделок, продаж и покупок, и все в одну и ту же секунду! Во поэкспериментировал, блин! Раньше я сначала входил в сеть, а потом запускал скрипт. Что бы это значило?! Ха-ха-ха! Я просто В ДИКОМ восторге! Сделки-то есть, а заявок ни одной, это она залудила кучу прерываний OnTrade по моим ВЧЕРАШНИМ заявкам, вчера же и исполненным! О, сколько нам открытий чудных... Причём пока связи не было, не было и прерываний. Это брокер подсуетился, штоле? А мой-то скрипт ВЕРИТ этой лапше! Он заявки не подавал, но думает, что их подавал юзер, вручную, через стаканы и, соответственно, учитывает это как сделки по "левым" заявкам. ДА УЖЖЖЖ!
Пользователь
Сообщений: Регистрация: 29.11.2018
09.07.2021 13:29:01
Добрый день!
Подскажите, пожалуйста, а в какое время на демо идут торги, а в какое клиринг? Нужны все интервалы.
Регламент работы учебного сервера QUIK-Junior можно посмотреть по ссылке: Период клиринга длится с 15:45 до 16:00 по МСК - 15 минут, до начала вечерней торговой сессии.