getParamEx дает status.param_type=2 а status.param_value= 0.000000, но де-факто торги идут, поясните пожалуйста

Страницы: 1
RSS
getParamEx дает status.param_type=2 а status.param_value= 0.000000, но де-факто торги идут, поясните пожалуйста
 
Добрый день,

Помогите понять плиз, getParamEx  дает status.param_type=2 а status.param_value= 0.000000, но де-факто торги идут. Вероятно потому что сейчас праздники и как-то по особому все идет ... Как я понял, status.param_type=2 означает что status.param_value тупо не получен.  Но как тут быть, чтобы автоматически понимать идут торги или нет  ?



ниже текст

function check_aviability(p_classcode, p_seccode)

local status = getParamEx(p_classcode, p_seccode, "status") -- trading

message(tostring(status.param_type) .. "   " .. tostring(status.param_value))


if status.param_type=="4" and status.param_value=="1.000000" then
return true
end

end  
 
Цитата
S C написал:
Как я понял, status.param_type=2 означает что status.param_value тупо не получен.  
Согласно документации param_type это Тип данных параметра, используемый в Таблице текущих торгов. Для param_type=2 это тип данных LONG
нигде не сказано что param_type=2 означает что данные не получены.

Проверьте что на самом деле отображается в таблице текущих торгов. И о каком классе идет речь?
 
вот таблица

getParamEx{
-- Table: {1}
{
  ["param_type"]="2",
  ["param_value"]="0.000000",
  ["result"]="1",
  ["param_image"]="",
},
 
p_classcode= "SPBFUT"
p_seccode = "LKM8"
 
вообще когда все работает нормально param_type=4  
 
Цитата
S C написал:
вообще когда все работает нормально param_type=4

Да так и есть. И у нас описанная функция так и возвращает. т.е. проблема не воспроизводится.
Открыта ли у Вас таблица Текущих торгов? Что отображается в параметре "Статус"?
 
да все открыто, хотя до сегодня у меня все работало и при закрытой ...
таблица статус вот(это я ее пишу в файл):  


{
["param_type"]="2",
["param_value"]="0.000000",
["result"]="1",
["param_image"]="",
},
 
S C,
Большая просьба ответить на поставленный вопрос.
Цитата
Sergey Gorokhov написал:
Что отображается в параметре "Статус"?
Цитата
S C написал:
таблица статус вот(это я ее пишу в файл):
Да Вы это уже говорили выше.
 
Текущих торгов - статус путой
 
Цитата
S C написал:
Текущих торгов - статус путой

Вот эта информация и требовалась. Пустым параметр не должен быть.
Проверьте настройки терминала, в меню Система - Настройки - Основные - Программа - Получение данных, должна быть включена опция "Исходя из настроек открытых пользователем таблиц"
После чего попробуйте выполнить перезаказ данных, через меню Система - Заказ данных - Перезаказать.
Сообщите появятся ли данные в параметре "Статус" в таблице текущих торгов.
 
Теперь заработало, но но это я рукой сделал... а суть автоматизации а том чтобы без меня работало :)
До сегодня у меня даже таблица не была открыта и  status.param_type=="4" and status.param_value=="1.000000"  работало.

В итоге, что все таки случилось и как автоматизировать проверку сессии корректно ?  
 
Цитата
S C написал:
В итоге, что все таки случилось и как автоматизировать проверку сессии корректно ?
Т.е. Ваш вопрос звучит "как заказывать данные автоматически"?.
Тогда для этого есть getParamEx2
И глава в документации "Функции для заказа параметров Таблицы текущих торгов"
 
это единственный вариант или есть "правильный" способ ? у меня квик вылетает при перезаказе дынных, вероятно потому что еще два квика одновременно работают ...  (разные счета)
 
Цитата
S C написал:
или есть "правильный" способ ?
Вопрос не понятен.
Что значит "правильный" способ? Чем по Вашему использование функций для заказа данных является не правильным способом?
Либо Вы сами в терминале заказываете данные, либо за Вас это делает Lua скрипт.
Других вариантов не видно. Если есть идеи, готовы выслушать.
 
у меня квик вылетает при перезаказе дынных
 
Цитата
S C написал:
у меня квик вылетает при перезаказе дынных

при каком перезаказе данных?
Вам было сообщено о двух вариантах. Через терминал и через сами скрипты.
Вы пробовали в Lua скрипте выполнить заказ как уже было сказано?
 
Система - Заказ данных - Перезаказать.  
 
короче, вот так сейчас написал, это правильно?  



function check_aviability(p_classcode, p_seccode)

local status = getParamEx(p_classcode, p_seccode, "tradingstatus") --

if status.param_type=="4" and status.param_value=="1.000000" then
return true
end

if status.param_type=="2" and status.param_value=="0.000000" then
status = getParamEx2 (p_classcode, p_seccode, "tradingstatus")
if status.param_type=="4" and status.param_value=="1.000000" then
return true
end
return false
end

end
 
Цитата
S C написал:
это правильно?  
Конечно не правильно.
Настоятельно рекомендуем ознакомиться с документацией QLUA.chm
-Функции взаимодействия скрипта Lua и Рабочего места QUIK
--Функции получения значений Таблицы текущих торгов
---Особенности получения значений Таблицы текущих торгов

и самое важное с главой "Функции для заказа параметров Таблицы текущих торгов" о которой уже было сказано.

В связи с этой документацией, заказ данных происходит через функцию ParamRequest

и все эти проверки про param_type=="2" явно лишние
 
может просто напишешь как правилльно ? или кнтр - ц, кнтр-в сделаешь откуда то  
 
S C,

Открываете файл QLUA.chm
Ищите главу "Функции для заказа параметров Таблицы текущих торгов"
там описание функции ParamRequest
Цитата:

Функция заказывает получение параметров Таблицы текущих торгов.

BOOLEAN ParamRequest(STRING class_code, STRING sec_code, STRING db_name)

Для корректной работы функции включите в настройках Рабочего места QUIK признак получения данных «Исходя из настроек открытых пользователем таблиц» (меню Система / Настройки / Основные настройки..., раздел «Программа» / «Получение данных»).
Параметры:

class_code – код класса;
sec_code – код бумаги;
db_name – код параметра.
В случае успешного завершения функция возвращает «true», иначе – «false».
 
вот так правильно ?

function check_aviability(p_classcode, p_seccode)

local status = getParamEx(p_classcode, p_seccode, "tradingstatus") --

if status.param_type=="4" and status.param_value=="1.000000" then
return true
end

if status.param_type=="2" and status.param_value=="0.000000" then
 if ParamRequest(p_classcode, p_seccode, "tradingstatus")==true then
 status = getParamEx(p_classcode, p_seccode, "tradingstatus")
 end
 if status.param_type=="4" and status.param_value=="1.000000" then
 return true
 end
return false
end
 
Цитата
S C написал:
вот так правильно ?

Согласно синтаксису правильно.
 
вот видите как просто ответить, а вы два часа  воду льете ! двойка вам за качество поддержки!
 
Страницы: 1
Читают тему
Наверх