Не создает таблица

Страницы: 1
RSS
Не создает таблица, attempt to call global 'AllocTable' (a nil value)
 
Добрый день.

Есть желание, при создании индикатора, выводить информацию и при необходимости управлять параметрами индикатора через пользовательскую таблицу.

--
Table_ID = nil -- Глобальная переменная
--
function Init()
   Table_ID = AllocTable()
   ......
end
--

При запуске индикатора сразу выдается ошибка:

attempt to call global 'AllocTable' (a nil value)

Что еще требуется для создания таблицы.
Ограничения, на использование в индикаторах, в документации не упоминаются.
 
В QLUA.chm  - "Функции и глобальные переменные переменные скрипта индикатора"
Там нет AllocTable()

Когда-то было более четкое разделение: скрипт LUA и индикатор ТА.
Со временем граница размывается, может их вообще хотят уравнять в возможностях?
Документация соответствует этой размытости, а может, она является причиной таких недоразумений.

Интересно заканчивается вышеуказанный раздел, рекурсия какая-то
  • Список функций, доступных из скрипта индикатора
   
 
Цитата
VDV написал:
Ограничения, на использование в индикаторах, в документации не упоминаются.
Упоминаются:
Индикаторы технического анализа / Функции и глобальные переменные скрипта индикатора / Список функций, доступных из скрипта индикатора.

Увы, программно управлять параметрами индикатора в текущей реализации не получится, сколько там таблиц ни создавай. Вообще, почему нельзя создавать таблицы: скрипт индикатора неинтерактивен, его задача - рассчитывать значения и возвращать Квику, который этот индикатор сам будет рисовать. Это как, например, есть у вас функция для расчета синуса, ее кто-то вызвал с аргументом числовым некоторым и ожидает, что вы вернете синус этого числа. А вы вместо этого в коде функции открываете медиаплеер и начинаете ему проигрывать ролик с  *  кандидатов в президенты.

Однако решение есть, технология примерно такая. Если вам нужны значения индикатора с возможностью его пересчета с разными параметрами, необязательно обращаться к индикатору на графике, вполне можно рассчитывать его отдельно для себя в своем основном скрипте:
1) Пишете самостоятельную функцию расчета значений индикатора, выносите ее в отдельный файл. Функцию будете вызывать как из OnCalculate в индикаторе, так и из своего скрипта.
2) Создаете у себя таблицу-массив для хранения значений индикатора.
3) В цикле единовременно рассчитываете индикатор для существующих в терминале свечек.
4) Подписываетесь на изменение массива свечек SetUpdateCallback() или отслеживаете это любым другим удобным вам способом.
5) При появлении каждой новой свечки вызываете для нее вашу функцию расчета индикатора.

Таким способом вы получаете возможность самостоятельно полностью управлять расчетом любых нужных вам индикаторов независимо от навешанных на графики или даже отсутствия таковых, в том числе целиком пересчитывать их в любой момент с любыми параметрами.
 
Цитата
Борис Гудылин написал:
В QLUA.chm  - "Функции и глобальные переменные переменные скрипта индикатора"
Там нет AllocTable()

Когда-то было более четкое разделение: скрипт LUA и индикатор ТА.
Со временем граница размывается, может их вообще хотят уравнять в возможностях?
Документация соответствует этой размытости, а может, она является причиной таких недоразумений.

Интересно заканчивается вышеуказанный раздел, рекурсия какая-то
 Список функций, доступных из скрипта индикатора
Добрый день.

Борис, если есть конкретные предложения по переоформлению документации, вы можете их описать более подробно.
На данный момент не видим трудностей в написании функций LUA и для индикаторов технического анализа.
 
Добрый день.

Так и не получил ответ на поставленный вопрос.
В чем я был не точен в формулировке?


Раздел "Список функций, доступных из скрипта индикатора" перечисляет функции терминала, которые можно вызывать для получения информации об инструменте и прочих статусах.
Этих функций более чем достаточно. В их перечень входят функции для работы с таблицами getNumberOf и getItem, т.к. все данные в QUIK хранятся в таблицах.

ВОПРОС в том, почему не получается создать свою (пользовательскую) таблицу в скрипте индикатора?
Прямых противоречий, в документации, для вызова функции AllocTable() нет. Эта функция скорей имеет отношение к интерфейсу (GUI), а не к системным таблицам.
Какая разница как создана таблица терминалом или пользователем?
Как создать свою (пользовательскую) таблицу в отдельном окне на вкладке графика, что бы данные в ней менял скрипт индикатора?
 
VDV, здравствуйте.

Сообщаем, что внутри индикаторов создавать таблицы нельзя.
Страницы: 1
Читают тему
Наверх