Господа разработчики, в связи с появлением на ММВБ вечерней сессии есть пара замечаний и предложений по теме.
Вот протокол изменения статуса сессии в течении дня: -- 09:50:01 Ststus 0==>3 (открытие) 09:59:40 Ststus 3==>0 (закрыта) 10:00:00 Ststus 0==>1 (открыта) 18:39:59 Ststus 1==>0 (закрыта) 18:40:05 Ststus 0==>4 (аукцион) 18:45:20 Ststus 4==>5 (ЦАЗ) 18:50:01 Ststus 5==>0 (закрыта) 19:00:01 Ststus 0==>3 (открытие) 19:04:31 Ststus 3==>0 (закрыта) 19:05:00 Ststus 0==>1 (открыта) 23:50:00 Status 1==>0 (закрыта) -- Предложения: 1. Сделать разными статусы открытия дневной и вечерней сессии с 9-50-00 до 9-59-40 и с 19-00-00 до 19-04-30. Сейчас оба периода имеют одинаковый статус 3.
2. Периоды с 09-59-40 до 10-00-00 и с 19-04-30 до 19-05-00 имеют статус сессии 0 (закрыта). Однако в это время сервером обрабатываются встречные заявки выставленные в период открытия сессии. Логично было бы этим периодам присвоить отдельный статус.
Я уже просил сделать заполнение параметров отвечающих за время открытых сессий (как это сделано для срочной секции). Но для фондовой сессии заполняется только времена аукциона. Если я правильно помню ответ: все вопросы к бирже.
Добрый день. А можно уточнить, где он находится? Поиск по справке quik ничего не дал, в списке доступных параметров ТТТ тоже ничего похожего не встретилось.
Kolossi написал: Что то я не нашел параметра TRADINGPHASE у GetParamEx. Откуда это вообще?Приведенный мной протокол был сделан по параметру TRADINGSTATUS.
Выше написано
Цитата
Sergey Gorokhov написал: значит брокер его у себя не настроил.
... local st=getParamEx(p_classcode,p_seccode, "TRADINGSTATUS").param_value local pa=getParamEx(p_classcode,p_seccode, "TRADINGPHASE").param_value local pb=getParamEx(p_classcode,p_seccode, "TRADINGPHASE").param_image ... st=1 pa=0 pb=""
видимо читать так "В справке info.chm есть раздел Значения параметров функций" зачем дублировать одну и ту же информацию дважды?
Тогда и весь документ "Интерпретатор языка Lua" стоит исключить - зачем дублировать. Правда он еще есть в English варианте, а справку english qlua.chm не видел.
chm можно открыть только на Windows (без сторонних программ). Часто разработка ведется в других средах, где проще открыть pdf файл.
У нас есть pdf документ по языку, справка chm по языку, справка chm по терминалу. Параметры функции (причем здесь терминал) описаны в справке к терминалу. Замечу при этом, что раздел "Значения параметров функций" расположен в части "Алгоритмический язык QPILE". Уверены что это дублирование информации? Формально, описания параметров для функции языка qlua getParam(Ex) нет.
Впрочем, будем продолжать пользоваться online справками.
Nikolay написал: У нас есть pdf документ по языку, справка chm по языку, справка chm по терминалу. Параметры функции (причем здесь терминал) описаны в справке к терминалу. Замечу при этом, что раздел "Значения параметров функций" расположен в части "Алгоритмический язык QPILE". Уверены что это дублирование информации? Формально, описания параметров для функции языка qlua getParam(Ex) нет.
1) В терминале QUIK есть так называемые формальные заголовки (их видно при выводе по DDE) 2) В терминале QUIK есть язык QPILE, в котором есть функция GET_PARAM_EX, которая принимает значения из п.1 3) В терминале QUIK есть язык QLUA, в котором есть функция getParamEx, которая тоже принимает значения из п.1
все это одно и то же. Уверены что это НЕ дублирование информации?
Nikolay написал: chm можно открыть только на Windows (без сторонних программ). Часто разработка ведется в других средах, где проще открыть pdf файл.
В чем проблема скачать инструкцию в pdf с нашего сайта?
Никаких, кроме того, что там нет описания параметров. Как я и сказал, пользуемся online справками.
Цитата
1) В терминале QUIK есть так называемые формальные заголовки (их видно при выводе по DDE) 2) В терминале QUIK есть язык QPILE, в котором есть функция GET_PARAM_EX, которая принимает значения из п.1 3) В терминале QUIK есть язык QLUA, в котором есть функция getParamEx, которая тоже принимает значения из п.1
А теперь скажите где это описано в справке? Скажем, чтобы новичок разобрался. Я уже не говорю про англоговорящего пользователя. Но это уже отдельная тема, итак не по теме автора.
Сергей , не хотите дублировать, хотя бы указывайте где смотреть. Если я пишу скрипты на Lua и пользуюсь вашей документацией для этого каким чудом я должен догадаться, что параметры к getParamEx мне нужно искать в документации к QPILE которым я вообще не пользуюсь?
Nikolay написал: где это описано в справке? Скажем, чтобы новичок разобрался. Я уже не говорю про англоговорящего пользователя.
Если качать обновление, там есть все в pdf и в том числе англоязычная версия. Почему-то брокеры считают хорошим тоном перепаковать апдейт по-своему, некоторые еще и заведомо нерабочим способом (например, делают инсталлер в Program Files), при этом документация куда-то исчезает.
Kolossi написал: Если я пишу скрипты на Lua и пользуюсь вашей документацией для этого каким чудом я должен догадаться, что параметры к getParamEx мне нужно искать в документации к QPILE которым я вообще не пользуюсь?
Можно просто спросить. Все параметры ТТТ мы описать не можем, т.к. QUIK работает далеко не с одной биржей, а у каждой биржи свой набор параметров. Достаточно вывести по DDE с галкой "Формальные заголовки" любой параметр из ТТТ, чтобы понять какое значение указать в getParamEx
Nikolay написал: А теперь скажите где это описано в справке? Скажем, чтобы новичок разобрался. Я уже не говорю про англоговорящего пользователя.
Что именно написано? то что везде параметры называются одинаково? кажется это и так очевидно.
Какой такой QPILE? Мы говорим про реализацию qLua. Вы же предлагает читать документацию по QPILE как дополнение к qLua. При этом это не сказано в руководстве по языку qLua. Поставьте себя на место новичка, впервые открывшего терминал в 2020 г., желающего написать скрипт на qLua. Ваша справка такова, что вам приходится постоянно отвечать на простейшие вопросы, вместо того, чтобы пользователь просто прочитал.
Есть очень простое решения проблемы статуса сессии. Делаем раз - синхронизируем компьютер по серверу времени. Это позволяет нам синхронизироваться с временем биржи с погрешностью не более 0.01 сек Делаем два - пишем константы начала и конца сессий Делаем три - где надо и не надо просто сравниваем текущее время с константами и решаем какое сейчас состояние сессии без каких либо кодов с биржи ------------------------ Самое смешное в том, что биржа(брокер) свои коды формируют точно так же.
nikolz написал: Есть очень простое решения проблемы статуса сессии. Делаем раз - синхронизируем компьютер по серверу времени. Это позволяет нам синхронизироваться с временем биржи с погрешностью не более 0.01 сек Делаем два - пишем константы начала и конца сессий Делаем три - где надо и не надо просто сравниваем текущее время с константами и решаем какое сейчас состояние сессии без каких либо кодов с биржи ------------------------ Самое смешное в том, что биржа(брокер) свои коды формируют точно так же.
Так и делаем как дублирующий слой. Зачастую так надежней. Но времена меняются иногда, в этом проблема.
nikolz написал: Есть очень простое решения проблемы статуса сессии. Делаем раз - синхронизируем компьютер по серверу времени. Это позволяет нам синхронизироваться с временем биржи с погрешностью не более 0.01 сек Делаем два - пишем константы начала и конца сессий Делаем три - где надо и не надо просто сравниваем текущее время с константами и решаем какое сейчас состояние сессии без каких либо кодов с биржи ------------------------ Самое смешное в том, что биржа(брокер) свои коды формируют точно так же.
Как для автомобиля - крутить рукоятку если стартер не заводит автомобиль - простое решение ). Я перешел к пользованию статусом сессии именно потому, что однажды, пользуясь простым решением, забыл перевести сезонное время (я живу в стране где его надо переводить) и потерял прилично денег на этом.
nikolz написал: Есть очень простое решения проблемы статуса сессии. Делаем раз - синхронизируем компьютер по серверу времени. Это позволяет нам синхронизироваться с временем биржи с погрешностью не более 0.01 сек Делаем два - пишем константы начала и конца сессий Делаем три - где надо и не надо просто сравниваем текущее время с константами и решаем какое сейчас состояние сессии без каких либо кодов с биржи ------------------------ Самое смешное в том, что биржа(брокер) свои коды формируют точно так же.
Как для автомобиля - крутить рукоятку если стартер не заводит автомобиль - простое решение ). Я перешел к пользованию статусом сессии именно потому, что однажды, пользуясь простым решением, забыл перевести сезонное время (я живу в стране где его надо переводить) и потерял прилично денег на этом.
полагаю что потеряли вы не по причине что забыли перевести время. это лишь вариант самоуспокоения. Если Вы включили комп позже начала сессии, то никакие сигналы Вам не помогут. и статус сессии здесь не причем. Конечно решать Вам, я лишь изложил свой опыт решения данной проблемы
nikolz написал: полагаю что потеряли вы не по причине что забыли перевести время. это лишь вариант самоуспокоения. Если Вы включили комп позже начала сессии, то никакие сигналы Вам не помогут. и статус сессии здесь не причем. Конечно решать Вам, я лишь изложил свой опыт решения данной проблемы
Напрасно полагаете. И опыт ваш не пригодится. И комп я вообще не выключаю т.к. часто уезжаю на несколько недель оставляя робота работающим. В общем спасибо за заботу, вопрос был об уточнении статуса сессии.
Sergey Gorokhov написал: Kolossi, для этого есть параметр tradingphase - Биржевой статус торговой сессии
В итоге я месяц решал с брокером проблему включения этого параметра по вашей рекомендации что бы убедиться что он просто дублирует tradingstatus. -- 09:50:03 Изменение фазы: 0==>10.0(АО). Статус 3(открытие) 09:59:43 Изменение фазы: 10==>0.0(Недоступно). Статус 0(закрыта) 10:00:04 Изменение фазы: 0==>5.0(Открыта). Статус 1(открыта) 18:40:00 Изменение фазы: 5==>0.0(Недоступно). Статус 0(закрыта) 18:40:05 Изменение фазы: 0==>6.0(АЗ). Статус 4(аукцион) 18:45:26 Изменение фазы: 6==>9.0(ЦАЗ). Статус 5(ЦАЗ) 18:50:03 Изменение фазы: 9==>0.0(Недоступно). Статус 0(закрыта) 19:00:25 Изменение фазы: 0==>10.0(АО). Статус 3(открытие) 19:04:36 Изменение фазы: 10==>0.0(Недоступно). Статус 0(закрыта) 19:05:00 Изменение фазы: 0==>5.0(Открыта). Статус 1(открыта) 23:50:02 Изменение фазы: 5==>0.0(Недоступно). Статус 0(закрыта) -- Я прошу больше от меня не отмахиваться, а рассмотреть мои предложения по существу
Kolossi, Да Вы правы, предложенный вариант с tradingphase не решает поставленной задачи. Согласно биржевому протоколу, в указанном параметре tradingphase нет отдельного признака для вечерней сессии, а значит и в QUIK Вы его никак увидеть не сможете.
используйте сервер точного времени и не будете месяцами ничего согласовывать. Биржа тоже его использует. погрешность будет не более 10 мс. Это меньше, чем задержка интернета.
nikolz написал: используйте сервер точного времени и не будете месяцами ничего согласовывать. Биржа тоже его использует. погрешность будет не более 10 мс. Это меньше, чем задержка интернета.
Ну я бы в жизни не догадался. А ваш сервер точного времени точно учитывает перенос торговых дней на ММВБ или нужно еще смотреть "сервер точного торгового календаря" ? ))
Sergey Gorokhov написал: Kolossi, Да Вы правы, предложенный вариант с tradingphase не решает поставленной задачи. Согласно биржевому протоколу , в указанном параметре tradingphase нет отдельного признака для вечерней сессии, а значит и в QUIK Вы его никак увидеть не сможете.
Ладно Сергей, замнем. Вариантов решения задачи достаточно, однако создание полу-инвалидных параметров с одинаковыми возвращаемыми кодами для разных торговых фаз и статусов разработчикам чести не делает.