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