Обращение к данным таблицы из индюка

Страницы: 1
RSS
Обращение к данным таблицы из индюка, Что-то наподобие БД через AllocTable
 
Всем доброго!
Суть: скрипт создает и постоянно обновляет произвольную таблицу с данными. Индикатор обращается по t_id к таблице и забирает оттуда данные.
Например, пусть заполняется так:
Код
t_id = AllocTable()
   AddColumn(t_id, 1, "1", true, QTABLE_DATE_TYPE, 15)
   AddColumn(t_id, 2, "2", true, QTABLE_TIME_TYPE, 15)
   AddColumn(t_id, 3, "3", true, QTABLE_INT_TYPE, 15)
   AddColumn(t_id, 4, "4", true, QTABLE_INT_TYPE, 15)
   t = CreateWindow(t_id)
   for f = 0, 99 do
      InsertRow(t_id, -1)
      a = math.random(1000, 3000)
      SetCell(t_id, f, 3, tostring(a), a)
      a = math.random(1000, 3000)
      SetCell(t_id, f, 4, tostring(a), a)
   end 
Индикатор, например, пусть будет так:
Код
Settings={
Name="TEST",
t_id=14,
    line=                                     
                {                                     
                    {  
                        Name = "Val",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(255,0,0)
                    }
                }
}

function Init()
  return 3
end

function OnCalculate(index)
   local val

   if index == 1 then
      val = GetCell(Settings.t_id, 1, 3).value
   end
   return nil
end
Валится с ошибкой "attempt to call global 'GetCell' (a nil value)".
Я что-то страшное делаю или просто руки кривые?
 
Цитата
AndyJOKER написал:
Валится с ошибкой "attempt to call global 'GetCell' (a nil value)".

В QLUA индикаторах нет такой функции "GetCell"
Собственно в QLUA индикаторах вообще нет никаких функций для работы с GUI таблицами, они там не поддерживаются.
 
Весело.
Я правильно понимаю, что фактически в индикаторах можно использовать только данные O, H, L, C, V, T , Size?
 
Цитата
AndyJOKER написал:
Весело.
Я правильно понимаю, что фактически в индикаторах можно использовать только данные  O, H, L, C, V, T  ,  Size ?

Нет, категорически не верно, можно и другие данные, зависит от того что Вам нужно.
Если Вам нужно получить данные в индикаторе из другого скрипта, то почему бы не воспользоваться обменом через файлы? Один сприпт пишет в файл, другой читает.
 
Цитата
Sergey Gorokhov написал:
Цитата
AndyJOKER написал:
Весело.
Я правильно понимаю, что фактически в индикаторах можно использовать только данные   O, H, L, C, V, T   ,   Size  ?

Нет, категорически не верно, можно и другие данные, зависит от того что Вам нужно.
Если Вам нужно получить данные в индикаторе из другого скрипта, то почему бы не воспользоваться обменом через файлы? Один сприпт пишет в файл, другой читает.
Эммм, несколько странно слышать это от Вас, как от разработчика.  :wink:  Разумеется, у меня большая часть подобного "обмена" реализована. Не не через файлы, а через mysql. Но это же костыль... Некошерно такое делать. Согласитесь, что намного быстрее и удобнее обращаться к таблицам внутри памяти квика (не важно "стандартные" или созданные юзером) через getcell или getitem, чем вешать индикатор ожидая обращения к файлу или запроса от БД?
Интересно, в чем проблема в реализации? Много обработчиков писать?
 
Цитата
AndyJOKER написал:
Эммм, несколько странно слышать это от Вас, как от разработчика.
Почему странно?
Доступные функции явно описаны в документации:
-Индикаторы технического анализа
--Функции и глобальные переменные скрипта индикатора
--Список функций, доступных из скрипта индикатора
 
Цитата
AndyJOKER написал:
Цитата
Sergey Gorokhov написал:
 
Цитата
AndyJOKER  написал:
Весело.
Я правильно понимаю, что фактически в индикаторах можно использовать только данные    O, H, L, C, V, T    ,    Size   ?
 
Нет, категорически не верно, можно и другие данные, зависит от того что Вам нужно.
Если Вам нужно получить данные в индикаторе из другого скрипта, то почему бы не воспользоваться обменом через файлы? Один сприпт пишет в файл, другой читает.
Эммм, несколько странно слышать это от Вас, как от разработчика.    Разумеется, у меня большая часть подобного "обмена" реализована. Не не через файлы, а через mysql. Но это же костыль... Некошерно такое делать. Согласитесь, что намного быстрее и удобнее обращаться к таблицам внутри памяти квика (не важно "стандартные" или созданные юзером) через getcell или getitem, чем вешать индикатор ожидая обращения к файлу или запроса от БД?
Интересно, в чем проблема в реализации? Много обработчиков писать?
проблема в том, что надо синхронизировать потоки.
так как  написание скриптов игрушка сугубо для клиентов брокеров,
то разработчикам нет смысла с этим заморачиваться.
Если очень надо -пишите сами.
Я именно так и делал.
В итоге у вас не будет дублирование одной и той же информации в различных скриптах
и ускорится работа скриптов так как не надо будет много раз вызывать одни и те же колбеки.
Страницы: 1
Читают тему
Наверх