Цитата |
---|
Старатель написал: getTradeDate() в OnCleanUp всегда даёт актуальную дату торгов или это у меня так совпало? |
Добрый день.
Параметр TRADEDATE это параметр из Информационного окна Рабочего места QUIK, который обновляется так же при получении с сервера Quik новой даты торгов. Функция getInfoParam("TRADEDATE") просто возвращает значение этого параметра, который может просто еще не обновиться. Функция getTradeDate() обращается непосредственно к внутренней функции терминала GetTradeDate(), что является более надежным способом получения даты торгов, параметр TRADEDATE на момент вызова OnCleanUp() гарантированно еще старый, а функция getTradeDate() вернет новую дату торгов, если вызов OnCleanUp() был инициирован сменой сессии, а т.к. OnCleanUp() может вызываться в нескольких случаях (см. описание ниже), то актуальную дату торгов в OnCleanUp() нужно ждать в самом последнем вызове, а их может быть максимум 3. Обычно клиент подключается каждый день одним и тем же пользователем, к одному и тому же серверу, тогда вызов OnCleanUp() будет один (по смене сессии).
******************************Из документации**********************************************
OnCleanUp
Функция вызывается терминалом QUIK в следующих случаях:
- смена сервера QUIK внутри торговой сессии;
- смена пользователя, которым выполняется подключение к серверу QUIK, внутри торговой сессии;
- смена сессии.
При выполнении сразу нескольких из перечисленных условий, функция OnCleanUp() вызывается терминалом QUIK для каждого из них.Вот мой пример. Первый вызов был инициирован сменой сервера, второй сменой сессии.
Код |
---|
is_run = true
function OnStop(signal)
is_run = false
end
function OnCleanUp()
message('getInfoParam' .. tostring(getInfoParam("TRADEDATE")))
message('getTradeDate' .. tostring(getTradeDate().date))
end
function main()
while is_run do
sleep(100)
end
end |