DronGO пишет: А почему дата меняется только утром? а не в 00:00:00?
Потому, что ночью торги ещё не начались. И в выходные торгов также нет. Вполне логично, что дата торгов меняется только в торговый день. Ключевое слово здесь "торгов".
Надо делать так, как надо. А как не надо - делать не надо.
Судя по всему, при подключении к серверу в неторговый день, теперь время сервера начинает отсчитываться с 9-ти утра, так, как будто торги последнего торгового дня ещё не закончились, точнее даже не начинались. Зачем?
Надо делать так, как надо. А как не надо - делать не надо.
Время сервера: 10:52:46 - "началась новая торговая сессия" от 06.05.2016 При этом на графике уже есть свеча за 18:45 от 06.05.2016.
Исправьте это недоразумение, чтобы скрипт всегда мог однозначно понять закончилась ли торговая сессия, дату которой QUIK транслирует или ещё не начиналась.
Надо делать так, как надо. А как не надо - делать не надо.
Добрый день, объясняю, почему так происходит. --------------------------------- getInfoParam('SERVERTIME') возвращает пустую строку ----------------------------------- string.gsub от пустой строки - пустая строка ----------------------------- message , если если его параметр пустая строка, выводит локальное время. ------------------------------- таким образом, данный прикол - это особенность работы функции message ----------------------------- Успехов в изучении КВИК.
пардон, опечатка string.gsub от пустой строки - nil ----------------------------- message , если если nil, выводит локальное время. -------------------------------
пардон, верно первое -------- getInfoParam('SERVERTIME') возвращает пустую строку ----------------------------------- string.gsub от пустой строки - пустая строка ----------------------------- message , если если его параметр пустая строка, выводит локальное время. ------------------------------- таким образом, данный прикол - это особенность работы функции message -----------------------------
Время сервера: 10:52:46 - "началась новая торговая сессия" от 06.05.2016 При этом на графике уже есть свеча за 18:45 от 06.05.2016.
Исправьте это недоразумение, чтобы скрипт всегда мог однозначно понять закончилась ли торговая сессия, дату которой QUIK транслирует или ещё не начиналась.
Прочитайте локальную дату и время и сравните ее с датой текущей сессии и временем сервера. И будет ваш скрипт знать точно, что и когда.
Ув. разработчики, стоит задача выгрузки данных по окончании торговой сессии. Но в 7-м Квике вместо времени сервера и времени последней записи после 23:59:59 зачем-то транслируется пустая строка, в связи с чем невозможно понять, то ли данные не прокачались, то ли ещё что... Вы можете предложить надёжный вариант определить период окончания вечерней сессии без необходимости чтения локального времени?
Надо делать так, как надо. А как не надо - делать не надо.
Здравствуйте, Период окончания вечерней сессии указан в расписании торгов. Если данный способ не устраивает, рекомендуем уточнить у специалистов биржи, рекомендуемый ими метод.
Именно на регламент я и ориентируюсь. К примеру, в условии скрипта указано, что если время сервера больше 23:50, то необходимо сохранить данные за прошедший торговый день. Если раньше этот способ работал, и скрипт, будучи запущенным в любой момент, срабатывал в нужное время, то теперь время сервера не является надёжным источником. И при чём тут специалисты биржи, если ваш терминал не транслирует время сервера?
Надо делать так, как надо. А как не надо - делать не надо.
Старатель, Вопрос был о способе определить период окончания вечерней сессии, на это и был дан ответ. Время сервера напрямую зависит от трансляции данных в терминал. Предположительно, причиной может быть отсутствие активных торговых шлюзов на сервере Если интересует исследование вопроса, необходимо смотреть со стороны сервера, то есть нужен брокер.
Старатель написал: Также хочу отметить, что по какой-то причине после рестарта сервера и смены даты иногда (?) параметр "LASTRECORDTIME" равен 23:59
К сожалению описанная ситуация не повторяется. Просьба сообщить больше подробностей, когда запускали терминал, когда подключали к серверу и т.д. также, просьба выложить поясняющие скриншоты
А вы проверяйте скриптом через getInfoParam('LASTRECORDTIME') Терминал работает круглосуточно. В настройках стоит "Восстанавливать связь автоматически". Утром после рестарта сервера и смены даты getTradeDate().date параметр "LASTRECORDTIME" бывает равен 23:59:хх Скринов нету, есть только логи:
Цитата
18.08.16 08:45:09.175 Disconnected 18.08.16 09:05:03.015 Trade date: 18.08.2016; Last record time: 23:59 18.08.16 09:05:03.506 Connected
Надо делать так, как надо. А как не надо - делать не надо.
Старатель написал: А вы проверяйте скриптом через getInfoParam('LASTRECORDTIME')
Уточните где именно проверяется LASTRECORDTIME? Если в каком-либо колбеке, то в каком? Или в цикле в main? Было бы замечательно получить хотя-бы пример на котором повторяется проблема. И проверить поведение на последней версии 7.2. У нас никак не получается повторить проблему
Старатель написал: Ув. разработчики, стоит задача выгрузки данных по окончании торговой сессии. Но в 7-м Квике вместо времени сервера и времени последней записи после 23:59:59 зачем-то транслируется пустая строка, в связи с чем невозможно понять, то ли данные не прокачались, то ли ещё что... Вы можете предложить надёжный вариант определить период окончания вечерней сессии без необходимости чтения локального времени?
Ошибка с неверным отображением времени сервера будет исправлена в одной из очередных версий программы. Приносим извинения за причиненные неудобства.
Sergey Gorokhov написал: Уточните где именно проверяется LASTRECORDTIME? Если в каком-либо колбеке, то в каком? Или в цикле в main? Было бы замечательно получить хотя-бы пример на котором повторяется проблема.
Вот код:
Код
local Date = getTradeDate().date
function main()
while not_stopped do
local TradeDate = getTradeDate().date
if TradeDate and TradeDate ~= '' and TradeDate ~= Date then
message('Trade date: ' .. TradeDate .. '; Last record time: ' .. getInfoParam('LASTRECORDTIME'))
return
end
sleep(1) -- Чтобы воспроизвести наверняка, можете убрать sleep
end
end
Возможно причина в том, что getTradeDate меняется раньше, чем сбрасывается LASTRECORDTIME.
Надо делать так, как надо. А как не надо - делать не надо.
local Date = getTradeDate().date
function main()
while not stopped do
local TradeDate = getTradeDate().date
if TradeDate and TradeDate ~= '' and TradeDate ~= Date then
message('Trade date: ' .. TradeDate .. '; Last record time: ' .. getInfoParam('LASTRECORDTIME'))
return
end
sleep(1) -- Чтобы воспроизвести наверняка, можете убрать sleep
end
end
Надо делать так, как надо. А как не надо - делать не надо.
Старатель написал: Ув. разработчики, стоит задача выгрузки данных по окончании торговой сессии. Но в 7-м Квике вместо времени сервера и времени последней записи после 23:59:59 зачем-то транслируется пустая строка, в связи с чем невозможно понять, то ли данные не прокачались, то ли ещё что... Вы можете предложить надёжный вариант определить период окончания вечерней сессии без необходимости чтения локального времени?
Добрый день,
Описанная проблема была устранена в версии 7.7.0 терминала QUIK. Рекомендуем Вам обновить версию программы. Приносим извинения за причиненные неудобства.