получение параметров индикатора

Страницы: 1
RSS
получение параметров индикатора, обращение к line
 
есть код индикатора



Код
Settings= 
{ 
  Name = "AAAA", 
  Smooth=10,   
  line =  
  { 
    { 
      Name = "Hi", 
      Color = RGB(255, 0, 0), 
      Type = TYPE_LINE, 
      Width = 2
   }
  }
   
} 

function Init() 
  return 1
end 



function write_name(p)
   file=io.output("d:\\name1.ini")  -- getScriptPath()..
   d=file:write(p)
   file:close()
end


function OnCalculate(index) 
local ur=0
   local param=tostring(Settings.line.Name)
   if tonumber(T(index).day)==15 then
      write_name(param)
   end   
return ur
end

не могу получить имя линии.
получение имени индикатора Settings.Name вернет  "AAAA"
по идеии Settings это массив и должно быть Settings["line"][1]["Name"] но это не работает возвращает nil
Господа, подскажите как получить название линии?
 
Settings.line[1].Name
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Серж пишет:
Settings.line[1].Name
поставил в 32 строке local param=tostring(Settings.line[1].Name)
все равно возвращает ошибку:
...\LuaIndicators\file03.lua:32: attempt to index field 'line' (a nil value)
 
Цитата
Сергей Радченко пишет:
поставил в 32 строке local param=tostring(Settings.line[1].Name)
все равно возвращает ошибку:
...\LuaIndicators\file03.lua:32: attempt to index field 'line' (a nil value)
Очевидно, на этот вопрос должны ответить сотрудники техподдержки QUIK
Надо делать так, как надо. А как не надо - делать не надо.
 
Settings.line[1].Name
 
вот тест :

Settings=
{
 Name = "AAAA",
 Smooth=10,
 line =
 {
   {
     Name = "Hi",
--    Color = RGB(255, 0, 0),
     Type = TYPE_LINE,
     Width = 2
  }
 }


}
print(Settings.line[1].Name)
-------результат--------------
>lua -e "io.stdout:setvbuf 'no'" "test2015.lua"
Hi
>Exit code: 0
 
Николай, исполнение индикатора в терминале quik отличается от исполнения скрипта в интерпретаторе lua. Так проверять нельзя.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Что интересно, вне функций и внутри Init параметр line доступен. Далее он отсутствует, как будто удаляется из Settings.
Надо делать так, как надо. А как не надо - делать не надо.
 
что-то разработчиков не слышно
 
действительно в setting в OnCalculate исчезают параметры,
которые определены как таблицы.
 
Цитата
Старатель пишет:
Что интересно, вне функций и внутри Init параметр line доступен. Далее он отсутствует, как будто удаляется из Settings.
Как понимаю, сделано это с целью запретить изменять настройки "на лету" из самого индикатора.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Добрый день.

Settings.line[1].Name в функции OnCalculate не поддерживается.
 
Забавные очередные "пасхальные яйца" от разработчиков:))

Может, существуют ещё какие-то "моменты" в скриптах индикаторов, которые не работают в одном месте и работают в другом??? Или, - как всегда: "... спрашивайте, интересуйтесь" и... не забывайте терять на этом свои деньги и время??? :))))
 
Добрый день.
Действительно, параметры линий обратно в скрипт не передаются. Для некоторых индикаторов это просто бессмысленно и затратно по ресурсам.
мы обязательно отразим этот момент в документации.
 
я думаю, можно зарегистрировать такое пожелание: вместо постоянных "косметических" апдейтов квика и ещё меньших серьёзных апдейтов QLUA, прошу:
зарегистрировать пожелание на составление действительно всеобъемлющей документации бо как многие вопросы и ошибки возникают из-за элементарной скудности информации.
 
Цитата
Egor Zaytsev пишет:
Добрый день.

Settings.line[1].Name в функции OnCalculate не поддерживается.
У меня получается, что в функции OnCalculate не поддерживаются в Settings любые параметры типа таблицы, а не только line.
 
Да, обратно возвращаются только те параметры, которые отображаются в диалоге настроек индикатора.
 
Цитата
Michael Bulychev пишет:
Да, обратно возвращаются только те параметры, которые отображаются в диалоге настроек индикатора.
Вроде бы Ваше утверждение не верно.
Так как параметры line в диалоге отображается а обратно не возвращаются.
Т е не возращаются любые параметры которые таблицы. ВО КАК!
 
Как  вообще пользоваться Settings? В скрипте(не индикаторе) могу ли потестировать и понять как оно работает и что вообще позволяет делать?
 
Пока от индикаторов еще не отказался, но собирался поставить временные "костыли" в целях противодействия бессмысленному перерасчету всех индикаторов, например, при безобидной смене цвета линии какого-либо индикатора.
У меня очень "тяжелые" индикаторы (процессор) и их количество на одном графике может достигать нескольких десятков. И, в частности,  собирался опереться на значения параметров.
Тоже столкнулся с аналогичной проблемой. Похоже, у разработчиков нет внятной идеологии работы OnCalculate - сколько раз и в каких случаях надо использовать полный перерасчет индикаторов и надо ли вообще его делать, да еще ошибки реализации.
Но, по ощущениям, не все так драматично.
Вот пример простого индикатора
Код
Settings =
{
        Name = "!!ind3",
        line =
        {
          {
          Name = "ind3",
          Color = RGB(0,0,255),
          Type = TYPE_LINE,
          Width = 2
          }
        }
}

Init = function()
  message("!!ind3: Init", 1)
    GetName()
    GetWidth()
  return 1
end

function OnCalculate(index)
        if index == 1 then
          message("!!ind3: index=1", 1)
          GetName()
          GetWidth()
        end

        if index==Size()-1 then
          message("!!ind3: index="..tostring(Size()-1),1)
        end

        return 180
end

function GetName()
  message("!!ind3: Name="..Settings.Name, 1)
  return
end

function GetWidth()
  message("!!ind3: Width="..tostring(Settings.line[1].Width),1)
  return
end
Рисуется одна горизонтальная линия. Контролирую вызов функции Init, приход первой свечки и приход предпоследней свечки.
В двух местах выдаю выбранные из Settings имя индикатора и толщину линии индикатора.
Протокол работы.
 
Индикатор нормально добавился, получил все свечки и успешно выдал в протокол имя индикатора и толщину линии из функции Init и при получении первой свечки (строки 1-7 ), отрисовал прямую..
Затем я зашел в настройки индикатора и ничего не меняя выдал OK.
Пошел перерасчет индикатора, при получении первой свечки имя индикатора было успешно выдано, а на доступе к толщине линии - облом. Оставшиеся свечки обработались нормально. Строки 8-11.
Затем пошел второй перерасчет индикатора (сейчас это, как бы, норма) с тем же обломом. Строки 12-15.
То, что индикатор смог один раз отработать нормально (ведь, могут же!), дает мне надежду, что разработчики возводят на себя поклеп. Нужно их пояснение.
 
 
Цитата
Борис Гудылин написал:
Затем пошел второй перерасчет индикатора (сейчас это, как бы, норма)
Когда два, а когда и три раза индикаторы пересчитываются.
Вот код:
Скрытый текст
Чтобы задать сразу параметры индикатора, дабы избежать лишних пересчётов, делаю следующее: открываю "Редактирование настроек графика" -> Добавить -> Выбираю индикатор -> Добавить
Далее в свойствах индикатора меняю значение параметра -> OK
Не тут-то было. Вот результат:
Скрытый текст
Как видно, индикатор рассчитывается три раза (!), причём первый расчёт идёт со старым значением, но уже после нажатия на кнопку OK.

Предложения:

1. Исправьте ошибку с лишними пересчётами индикаторов при их добавлении или изменении.

2. Дайте доступ к чтению свойств линий из OnCalculate
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
ROBOBORO написал:
Как  вообще пользоваться Settings? В скрипте(не индикаторе) могу ли потестировать и понять как оно работает и что вообще позволяет делать?
Если скрипт не индикатор, то в нем таблица Settings ничем не отличается от любой другой таблицы.

Цитата
Старатель написал:
1. Исправьте ошибку с лишними пересчётами индикаторов при их добавлении или изменении.
Мы знаем об этой проблеме и уже работаем над ее устранением.

Цитата
Борис Гудылин написал:
То, что индикатор смог один раз отработать нормально (ведь, могут же!), дает мне надежду, что разработчики возводят на себя поклеп. Нужно их пояснение.
Проблема изучается. Постараемся в ближайшее время дать ответ.
 
Цитата
Sergey Gorokhov написал:
ЦитатаБорис Гудылин написал:
То, что индикатор смог один раз отработать нормально (ведь, могут же!), дает мне надежду, что разработчики возводят на себя поклеп. Нужно их пояснение.
Проблема изучается. Постараемся в ближайшее время дать ответ.

В текущей реализации свойства линии доступны в OnCalculate только при добавлении индикатора.
На основе Вашего обращения мы зарегистрировали пожелание на доработку.
 
Самое забавное индикатор пересчитывается даже при удалении.
 
Борис Гудылин, Добрый день,
      Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам,       что реализация пожелания признана потенциально целесообразной.       Если по результатам дальнейшего анализа, включающего юридические       аспекты, анализ на непротиворечивость с общей политикой компании,       никаких возражений не возникнет, мы постараемся включить Ваше       пожелание в план доработок при выпуске одной из следующих версий       нашего ПО.
Страницы: 1
Читают тему
Наверх