Что изменилось в 11.1.1.11, что перестали приходить данные по CreateDataSource?

Страницы: 1
RSS
Что изменилось в 11.1.1.11, что перестали приходить данные по CreateDataSource?
 
Все было нормально, но после обновления до последней версии перестали приходить данные по CreateDataSource без последних параметров.
Вернее приходит только значения из открытого графика. По остальным инструментам не приходят.
Уже перепробовал отключать в настройках "Исходя из настроек открытых пользователем таблиц". Не помогло.
Не могу понять, что изменилось то?
 
без последних параметров, имелось ввиду так:
ds2 = CreateDataSource("SPBFUT", "RIU3", INTERVAL_M1)
 
  • param – необязательный параметр. Если параметр не задан,
    то заказываются данные на основании таблицы обезличенных сделок, если задан –
    данные по этому параметру.
А если брокер не дает поток обезличенных сделок или отключен в настройках? Тогда как работает?
 
Функцию CreateDataSource можно использовать только внутри функций main() и
callback.
А что будет, если в Init первый вызов был? Чет не обращал раньше на это внимание и все работало.
 
Можно ли несколько раз main (не очень часто) вызвать CreateDataSource переопределяя переменную?
 
 
Cyber, добрый день.

Просим Вас прислать используемый Lua-скрипт.
Также уточните, пожалуйста, к какому серверу подключаетесь?
 
Цитата
Anton Belonogov написал:
Cyber, добрый день.

Просим Вас прислать используемый Lua-скрипт.
Также уточните, пожалуйста, к какому серверу подключаетесь?
К серверу брокера.
Вроде решил проблему принудительным обновлением CreateDataSource  перед самым началом торгов.
Код
if SEC_CODES['m15'][i] == 0 or SEC_CODES['m15'][i] == nil then            
   SEC_CODES['m15'][i] = CreateDataSource(SEC_CODES['class_codes'][i],SEC_CODES['sec_codes'][i],INTERVAL_M15)
end    
--- обновление свечей утром перед стартом
if (dt.hour == 9 and dt.min == 59 and dt.sec < 20) then
    SEC_CODES['m15'][i] = CreateDataSource(SEC_CODES['class_codes'][i],SEC_CODES['sec_codes'][i],INTERVAL_M15)
end
local m15d = SEC_CODES['m15'][i]
SEC_CODES['pre_m15'][i] = m15d:C(m15d:Size()-1)
Но вопрос остается открытым, можно ли так обновлять результат CreateDataSource? Не занимает ли это дополнительной памяти?
 
Cyber, добрый день.

Да, таким способом можно обновить результат.
 
Цитата
Цитата
Вроде решил проблему принудительным обновлением CreateDataSource  перед самым началом торгов.
Код
   if  SEC_CODES[ 'm15' ][i]  =  =   0   or  SEC_CODES[ 'm15' ][i]  =  =   nil   then             
   SEC_CODES[ 'm15' ][i]  =   CreateDataSource (SEC_CODES[ 'class_codes' ][i],SEC_CODES[ 'sec_codes' ][i],INTERVAL_M15)
 end     
 --- обновление свечей утром перед стартом 
 if  (dt.hour  =  =   9   and  dt.min  =  =   59   and  dt.sec  <   20 )  then 
    SEC_CODES[ 'm15' ][i]  =   CreateDataSource (SEC_CODES[ 'class_codes' ][i],SEC_CODES[ 'sec_codes' ][i],INTERVAL_M15)
 end 
 local  m15d  =  SEC_CODES[ 'm15' ][i]
SEC_CODES[ 'pre_m15' ][i]  =  m15d:C(m15d: Size () -  1 )
  
Но вопрос остается открытым, можно ли так обновлять результат CreateDataSource? Не занимает ли это дополнительной памяти?
Это не перед самым началом торгов, а по окончанию предторговой сессии.  
 
Всем привет.
В продолжении вопроса ветки еще раз хочу уточнить: выполняю операцию создания источника данных, пытаюсь получить значение функции size и мне выдает ошибку
Текст модуля:
Код
function main()
   if isConnected() then
      DataSource = CreateDataSource ("TQBR", "FLOT", INTERVAL_H1)
      dssize = DataSource:size()
      message(tostring(dssize))
   end      
end
Текст ошибки: " attempt to call a nil value (method 'size') "

Добавлял ожидание в 10 секунду перед обращением к размеру, результат тот же.
 
попробуйте так DataSource:Size() и проверьте константу INTERVAL_H1
 
Цитата
Georgii написал:
Всем привет.
В продолжении вопроса ветки еще раз хочу уточнить: выполняю операцию создания источника данных, пытаюсь получить значение функции size и мне выдает ошибку
Текст модуля:
Код
   function   main ()
    if   isConnected ()  then 
      DataSource  =   CreateDataSource  ( "TQBR" ,  "FLOT" , INTERVAL_H1)
      dssize  =  DataSource:size()
       message (tostring(dssize))
    end       
 end 
  
Текст ошибки: " attempt to call a nil value (method 'size') "

Добавлял ожидание в 10 секунду перед обращением к размеру, результат тот же.
CreateDataSource  надо делать один раз, а у вас на каждый чих.
Вы сервер просто за...ли .
Напишите с проверкой и ожиданием.
На форуме когда выкладывал.
 
"а у вас на каждый чих" - у меня циклов нет и функция main вызывается один раз - не понял комментария.
"Вы сервер просто за...ли " - вы это сами придумали или какая-то аргументированная информация?
"Напишите с проверкой и ожиданием." - что проверять? Я предположил, что метод size мне по идее и должен служить проверкой - если 0, то нужно подождать ещё. Но метод size не возвращает 0, он возвращает ошибку. Если есть варианты проверок, прошу подсказать.
В общем, думаю, что пока что нет авторитетного, конструктивного ответа на мой вопрос.
 
Цитата
Georgii написал:
Текст ошибки: " attempt to call a nil value (method 'size') "
Написано ясно - нет метода "size". Lua имеет регистрозависимый синтаксис, следует использовать "Size".
Страницы: 1
Читают тему
Наверх