6.17.0.58 bugs collection

Страницы: 1 2 След.
RSS
6.17.0.58 bugs collection, разработчикам на заметку. (все остальные - прошу проходить мимо и не засорять топик)
 
В этой теме буду выкладывать переходящие из версии к версии баги QUIK и QLUA. Для себя уже давно составил коллекцию уязвимостей скриптов на QLUA и скриптов QLUA-индикаторов. Для справки: QLUA-индикаторов в QUIK используется отдельная усечённая sandbox-реализация LUA VM.

Итак, вот "код", а точнее, BUG в формате OnePageLesson:

Код
--testBUG#0001

Settings=
{
Name = "test Labels",
ChartID1 = "rima",
line =
      {
         {
         Name = "test Labels",
         Color = RGB(0,0,255),
         Type = TYPE_LINE,
         Width = 1
         }
      }
}
labelparams1 = {
            TEXT = "",
            IMAGE_PATH = getScriptPath() .. "заведомо отсутствующий файл и путь", 
            ALIGNMENT = "RIGHT",
            YVALUE = 0,
            DATE = "19000101",
            TIME = "100000",
            R = 0,
            G = 0,
            B = 255,
            TRANSPARENCY = 0,
            TRANSPARENT_BACKGROUND = 0,
            FONT_FACE_NAME = "Arial",
            FONT_HEIGHT = 18,
            HINT = ""
            }

function Init()
lab1 = AddLabel(Settings.ChartID1, labelparams1)
return 1
end            
function OnCalculate(index)
return nil
end 

function OnDestroy()
DelAllLabels(Settings.ChartID1)
end
 
Действия:

  1. при успешно загруженном квике создаю график RIM5 с идентификатором "rima"
  2. накладываю на него этот "индикатор". Индикатор успешно наложился, что подтверждается добавлением подписи на pane чарта. (то, что сам индикатор "пустой" - в данном случае, не суть)
  3. сохраняем настройки окон (и, соответственно индикаторов) в файл info.wnd (стандартными средствами через соответствующий пункт меню)
  4. отключаемся от сервера и выключаем квик
  5. пытаемся вновь запустить квик  и, ... ждём. долго так ждём, потом опять ждём. а тем временем, на экране:


старина QUIK нам каГбе намекает, что ждать можно чуть меньше чем (ну вы поняли...  :) )) )

-----------------------------------

Пояснения: сам файл скрипта-индикатора находится в стандартном месте, в папке LuaIndicators.
-----------------------------------

Возможные причины:
Индикаторная "песочница" LUA VM слабо устойчива к параметрам и их корректности в функции AddLabel. И похоже даже использование pcall - не спасает.
Кроме того, перед запуском QUIK, а точнее QLUA парсит всю папку и подпапки LuaIndicators, пытаясь запустить каждый, находящийся в ней скрипт (а это уже повод для использования в вирусописательстве).
-----------------------------------

Методы устранения:
все, абсолютно все параметры передаваемые из пользовательских скриптов обязаны проверяться на валидность прежде чем целиком и полностью заглатывать таблицу (в данном случае). То есть, внутри AddLabel (qlua-side) сперва должна быть проверка на валидность параметров. Уверен, что она у вас итак есть. так что спишем на недочёт.
Кроме того, для скриптов просто обязан быть watchdog-таймер (даже в интернет-браузерах это есть и пользователю всегда предлагается отключить тормозной скрипт)
-----------------------------------

Когда в первый раз была озвучена проблема (и технично похе..рена проигнорирована):
http://forum.quik.ru/messages/forum10/message586/topic113/#message586

Советую обратить внимание на фразу, что даже если у нас индикатор не наложен ни на один график НО! присутствует в папке индикаторов - баг (зависание) обеспечен.
 
Здравствуйте,
Уточните Вы воспроизводили с функцией getScriptPath или без нее?
 
делал всё именно так, как написано в скрипте-примере.

и вообще, причём здесь, с ней или без неё? getScriptPath - одинаково доступна и в обычных скриптах и в скриптах-индикаторах. по кр. мере - так сказано в вашей документации.
 
ваша задача, как разработчиков - обеспечить 100%-ную стабильность квика - дабы он при любом раскладе не зависал от скриптов.
если скриптовая система ( в клуа-вской реализации) заведомо не обладает устойчивостью к действиям пользователя то, спрашивается:
на хрена козе баян??
 
Цитата
sam063rus пишет:
делал всё именно так, как написано в скрипте-примере.

и вообще, причём здесь, с ней или без неё? getScriptPath - одинаково доступна и в обычных скриптах и в скриптах-индикаторах. по кр. мере - так сказано в вашей документации.
Просьба уточнить это требуется для воспроизведения описанной ситуации
 
Цитата
sam063rus пишет:
ваша задача, как разработчиков - обеспечить 100%-ную стабильность квика - дабы он при любом раскладе не зависал от скриптов.
если скриптовая система ( в клуа-вской реализации) заведомо не обладает устойчивостью к действиям пользователя то, спрашивается:
на хрена козе баян??
Второе предупреждение, следите за языком. Просьба вести культурный диалог.
 
Sergey Gorokhov

Выскажу свою точку зрения:

мне неинтересны ваши предупреждения да и в общем-то диалог с вами. судя по вашим ответам - вы не обладаете необходимой минимальной компетенцией, чтоб отвечать на вопросы пользователей по квику.  Советую для начала, набраться опыта - хотя бы до уровня Михаила Булычева (это единственный человек, компетентность которого не вызывает сомнений).

поэтому, вы можете меня смело забанить на этому форуме. я от этого абсолютно ничего не потеряю.

Удачи вам, Сергей...

:)))
 
Цитата
sam063rus пишет:
Sergey Gorokhov

Выскажу свою точку зрения:

мне неинтересны ваши предупреждения да и в общем-то диалог с вами. судя по вашим ответам - вы не обладаете необходимой минимальной компетенцией, чтоб отвечать на вопросы пользователей по квику. Советую для начала, набраться опыта - хотя бы до уровня Михаила Булычева (это единственный человек, компетентность которого не вызывает сомнений).

поэтому, вы можете меня смело забанить на этому форуме . я от этого абсолютно ничего не потеряю.

Удачи вам, Сергей...

))
Михаил это разработчик, а не сотрудник саппорта. И его работа заключается в разработке. Соответсвенно его появление на форуме абсолютно на добровольной основе. Поэтому Вам в любом случае придется довольствоваться тем что есть.
Если заявлено о проблеме, то первый шаг к ее изучению, это попытка воспроизвести. Собственно это правило которого придерживаются специалисты в любой отрасли.
В Вашем случае, приведенный код не приводит к зависаниям.
Но это потому, что я убрал функцию getScriptPath
Если ее оставить то код вообще не запуститься.
От сюда и логичный вопрос, как Вы его запускали
 
в последний раз (третий) говрю, именно так, как и написано в примере кода. то есть ВМЕСТЕ с getscriptpath

p.s. вместе с той же getscripthpath у меня есть и вполне отлично работающий пример. главное, чтобы путь и файл были корректными и РЕАЛЬНО существовали.

так что ещё раз хочу отметить абсолютно нет никакой разницы есть gescriptpath или нет в скрипте.
 
то есть, если в поле IMAGE_PATH - у нас заведомо некорректный путь к файлу то, происходит зависание.
 
то есть внутри функции AddLabel -должны быть 2 проверки (при получении/обновлении параметров):
  • isPathExist
  • isFileExist
 
Цитата
sam063rus пишет:
то есть, если в поле IMAGE_PATH - у нас заведомо некорректный путь к файлу то, происходит зависание.
имеется ввиду, что зависание будет при сохранении настроек в info.wnd и следующем перезапуске квика разумеется.
 
К сожалению, повторить проблему никак не получается. Но тем не менее мы изучим проблему. Постараемся в ближайшее время дать ответ.
 
на всякий случай, если это, действительно важно: OS WIN XP PRO SP3

конечно жаль, что в данном случае, минидамп не был сформирован (почему-то)
 
Цитата
sam063rus пишет:
на всякий случай, если это, действительно важно: OS WIN XP PRO SP3

конечно жаль, что в данном случае, минидамп не был сформирован (почему-то)
Спасибо за уточнение
 
Цитата
Sergey Gorokhov пишет:
Но это потому, что я убрал функцию getScriptPath
Если ее оставить то код вообще не запуститься.
работает. и ещё как работает)))


для начала, начнём именно с этого момента. почему у вас именно так. Хотелось бы услышать ваши мысли по этому поводу?

p.s. если произвести некоторые изменения в скрипте то, вот такой код работает:

Код
 labelimagepath1 = getScriptPath() .. "\\blueline.bmp"
подразумевается, файл blueline.bmp реально существует и находится в папке LuaIndicators. По крайней мере у меня так)))

-----------------------
у меня всё это дело успешно работает в скрипте-индикаторе отображения спреда Best Quotes. Полностью скрипт не могу привести - т.к. не собираюсь дарить его дармоедам (речь разумеется не о вас)
 
Цитата
sam063rus пишет:
для начала, начнём именно с этого момента. почему у вас именно так. Хотелось бы услышать ваши мысли по этому поводу?
так как у Вас терминал зависает и без функции getScriptPath то скорее всего она не причем.
но с ней явно есть какая-то беда. с этим разберемся отдельно, это уже наша внутренняя тема.
 
Цитата
Sergey Gorokhov пишет:
зависает и без функции getScriptPath то скорее всего она не причем.
именно про это  и говорю с самого начала.
 
могу только дать не большую наводку: если IMAGE_PATH ="" - то так тоже всё работает. т.к. путь не является некорректным или содержащим отсутствующий файл. а является просто пустым, что не считается недопустимым или ошибочным в функции AddLabel.
 
если далее присвоить IMAGE_PATH эту конструкцию: labelimagepath1 = getScriptPath() .. "\\blueline.bmp" - то, тоже всё работает.
Таким образом, тут думаю имеет крайне важное значение порядок инициализации labelparams в AddLabel. То есть если IMAGE_PATH в ней НЕ является пустым и содержит не правильный путь то, именно тогда начинаются "грабли".
 
Цитата
sam063rus пишет:
если далее присвоить IMAGE_PATH эту конструкцию: labelimagepath1 = getScriptPath() .. "\\blueline.bmp" - то, тоже всё работает.
Таким образом, тут думаю имеет крайне важное значение порядок инициализации labelparams в AddLabel. То есть если IMAGE_PATH в ней НЕ является пустым и содержит не правильный путь то, именно тогда начинаются "грабли".
Ясно, понятно. Будем изучать возникшую проблему.
 
Цитата
sam063rus пишет:
OS WIN XP PRO SP3
А скажите, если не секрет - такой выбор ОС обусловлен тем, что QUIK лучше всего работает именно под Windows XP, а не под Windows 7 или более новой?
 
тем, что у меня куча программ СТАБИЛЬНО работает на этой системе и ради каких-то "псевдоновшеств" семёрки и восьмёрки - я пока не собираюсь "перекапывать огород". К тому же XP для меня более чем изучена, а в других системах - куча недосказанностей.
 
Цитата
Sergey Gorokhov пишет:
так как у Вас терминал зависает и без функции getScriptPath то скорее всего она не причем.
но с ней явно есть какая-то беда. с этим разберемся отдельно, это уже наша внутренняя тема.
Явная беда именно с ней. У меня в скриптах индикаторов эта функция использовалась и с версии 6.17 эти индикаторы перестали работать. В 6.16 всё было ок. Вставка message(getScriptPath()) в самое начало скрипта индикатора у меня стабильно воспроизводит проблему.
 
Здравствуйте!

Ваше письмо получено, проблема изучается. Постараемся в ближайшее время дать ответ.
 
Цитата
SDL пишет:
Цитата
Sergey Gorokhov пишет:
так как у Вас терминал зависает и без функции getScriptPath то скорее всего она не причем.
но с ней явно есть какая-то беда. с этим разберемся отдельно, это уже наша внутренняя тема.
Явная беда именно с ней. У меня в скриптах индикаторов эта функция использовалась и с версии 6.17 эти индикаторы перестали работать. В 6.16 всё было ок. Вставка message(getScriptPath()) в самое начало скрипта индикатора у меня стабильно воспроизводит проблему.
Добрый день,

Ошибка будет исправлена в одной из следующих версий программы
 
Здравствуйте!
Также обнаружил, что любой вызов функции getScriptPath() в скрипте индикатора (и вообще любого скрипта, находящегося в папке LuaIndicators) приводит к зависанию терминала при попытке открыть окно добавления индикатора на график, но только в том случае, если вызов getScriptPath() производится не внутри какой-либо другой функции (типа Init(), OnCalculate() и т.п.). Версия терминала 6.16.0.42
 
Цитата
Дмитрий пишет:
Здравствуйте!
Также обнаружил, что любой вызов функции getScriptPath() в скрипте индикатора (и вообще любого скрипта, находящегося в папке LuaIndicators) приводит к зависанию терминала при попытке открыть окно добавления индикатора на график, но только в том случае, если вызов getScriptPath() производится не внутри какой-либо другой функции (типа Init(), OnCalculate() и т.п.). Версия терминала 6.16.0.42
Здравствуйте,
Мы в курсе описанной проблемы.
Она будет исправлена в одной из следующих версий программы.
 
если не секрет: причина в отсутствии pcall?
 
Не секрет - нет, причина не в этом.
 
Решил не создавать новую тему, эта вполне подходит по названию.

Читаем документацию QLua.chm :
Цитата
SetValue

Функция предназначена для установки указанного значения на выбранной линии определенной свечи индикатора:
Формат вызова:
BOOLEAN SetValue(NUMBER index, NUMBER line_number, NUMBER value)

Параметры:
  • index – индекс свечи;
  • line_number – номер линии;
  • value – индекс первой свечки. Первая (самая левая) свечка имеет индекс 0.
Ясно, что value – это не индекс первой свечки, а значение, которое мы устанавливаем.
Однако, эта "опечатка" - еще не беда.

Беда в том, что из следующего за этим предложения "Первая (самая левая) свечка имеет индекс 0." легко можно прийти к выводу, что для функций SetValue, GetValue и SetRangeValue нумерация свечей индикатора начинается с 0.
В то же время несложный тест показывает, что это не так - нумерация на самом деле начинается с 1.
На всякий случай прошу разработчиков разъяснить - это действительно ошибка в документации или же ошибка в работе перечисленных функций?
А также впоследствии прошу ее исправить.


Заметил также еще одну особенность работы функций SetValue и SetRangeValue - если с их помощью установить значения индикатора (индикатор рисовал в отдельном окне), которые выходят за границы минимальных/максимальных значений индикатора, установленных ранее с помощью return в OnCalculate, то новые значения в итоге не видны, так как оказываются за границами окна (автомасштабирование на такую смену значений индикатора не реагирует).
Прошу исправить это в следующих версиях терминала.
 
насчёт документации разработчикам уже даже и перестал напоминать  :) ))
просто отчаился - это бесполезно. Даже тему создал: https://forum.quik.ru/forum8/topic521/
а в ответ - тишина.
думаю, недолго осталось - эволюция сделает своё дело - безответственные фирмы - рано или поздно разваливаются...
 
Цитата
Дмитрий пишет:
это действительно ошибка в документации или же ошибка в работе перечисленных функций?
Здравствуйте,
Это ошибка в документации, мы ее обязательно поправим.
Цитата
Дмитрий пишет:
если с их помощью установить значения индикатора (индикатор рисовал в отдельном окне), которые выходят за границы минимальных/максимальных значений индикатора, установленных ранее с помощью return в OnCalculate, то новые значения в итоге не видны
Указанная проблема у нас не воспроизводится. Тестировали на терминале версии 6.17.1.17.
Если у Вас терминал более старой версии, выполните обновление.
Если такой же версии, приведите пример скрипта.
 
Цитата
Sergey Gorokhov пишет:
Указанная проблема у нас не воспроизводится. Тестировали на терминале версии 6.17.1.17.
Если у Вас терминал более старой версии, выполните обновление.
Если такой же версии, приведите пример скрипта.
Я тестировал на терминале точно такой же версии (на часовом графике, отключив связь с сервером).
Вот пример скрипта:

Код
Settings =
{
  Name = "Test",
  line =
  {
    {
      Name = "Hour",
      Color = RGB(0, 255, 0),
      Type = TYPE_HISTOGRAM
    }
  }
}

function Init()
  return 1
end

function OnCalculate(index)

  if index == 9 then
    for i = 1, 8 do
      SetValue(i, 1, i)  -- 2) получаем значения индикатора: 1, 2, 3, 4, 5, 6, 7, 8, 18
    end
  end

  SetRangeValue(1, 2, 4, -3)  -- 3) получаем значения индикатора: 1, -3, -3, -3, 5, 6, 7, 8, 18

  return T(index).hour  -- 1) получаем значения индикатора: 10, 11, 12, 13, 14, 15, 16, 17, 18

end
В итоге в (отдельном) окне с индикатором отображается шкала по вертикали от 9 до 24 и все первые 8 значений индикатора не видны.
 
Здравствуйте!

Информация получена, проблема изучается. Постараемся в ближайшее время дать ответ.
 
Дмитрий, Добрый день,

Документация будет исправлена в одной из очередных версий программы.
Приносим извинения за причиненные неудобства.
 
Дмитрий,
Добрый день.
Документация будет исправлена в одной из очередных версий программы.
Приносим извинения за причинённые неудобства.
 
Цитата
Дмитрий пишет:
Заметил также еще одну особенность работы функций SetValue и SetRangeValue - если с их помощью установить значения индикатора (индикатор рисовал в отдельном окне), которые выходят за границы минимальных/максимальных значений индикатора, установленных ранее с помощью return в OnCalculate, то новые значения в итоге не видны, так как оказываются за границами окна (автомасштабирование на такую смену значений индикатора не реагирует).
Здравствуйте!
Удалось ли воспроизвести проблему с помощью приведенного мною скрипта?
 
Цитата
Дмитрий пишет:
Цитата
Дмитрий пишет:
Заметил также еще одну особенность работы функций SetValue и SetRangeValue - если с их помощью установить значения индикатора (индикатор рисовал в отдельном окне), которые выходят за границы минимальных/максимальных значений индикатора, установленных ранее с помощью return в OnCalculate, то новые значения в итоге не видны, так как оказываются за границами окна (автомасштабирование на такую смену значений индикатора не реагирует).
Здравствуйте!
Удалось ли воспроизвести проблему с помощью приведенного мною скрипта?
Да, описанное поведение воспроизводится.
Ответа по проблеме пока нет.
 
Было бы неплохо также распространить автомасштабирование на  установленные метки.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru пишет:
Было бы неплохо также распространить автомасштабирование на установленные метки.
Михаил,
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
 
Цитата
Дмитрий пишет:
Цитата
Sergey Gorokhov пишет:
Указанная проблема у нас не воспроизводится. Тестировали на терминале версии 6.17.1.17.
Если у Вас терминал более старой версии, выполните обновление.
Если такой же версии, приведите пример скрипта.
Я тестировал на терминале точно такой же версии (на часовом графике, отключив связь с сервером).
Вот пример скрипта:
Код
 Settings =
{
  Name = "Test",
  line =
  {
    {
      Name = "Hour",
      Color = RGB(0, 255, 0),
      Type = TYPE_HISTOGRAM
    }
  }
}

function Init()
  return 1
end

function OnCalculate(index)

  if index == 9 then
    for i = 1, 8 do
      SetValue(i, 1, i)  -- 2) получаем значения индикатора: 1, 2, 3, 4, 5, 6, 7, 8, 18
    end
  end

  SetRangeValue(1, 2, 4, -3)  -- 3) получаем значения индикатора: 1, -3, -3, -3, 5, 6, 7, 8, 18

  return T(index).hour  -- 1) получаем значения индикатора: 10, 11, 12, 13, 14, 15, 16, 17, 18

end
 
В итоге в (отдельном) окне с индикатором отображается шкала по вертикали от 9 до 24 и все первые 8 значений индикатора не видны.
Добрый день,

Описанная ошибка будет исправлена в одной из ближайших версий программы.
Приносим извинения за причиненные неудобства.
 
Цитата
Michael Bulychev пишет:
Не секрет - нет, причина не в этом.
к ответу на основной вопрос топика - похоже не только я один с таким сталкивался. А вот и ответ: http://forum.qlua.org/post1395.html#p1395
фраза:
Цитата
2. В теле индикатора (за пределами функций) нельзя указывать ничего, кроме "тупых" присваиваний. Кстати, определение функций, с точки зрения луа, это тоже "тупое" присваивание. Иначе индикатор просто не появится в списке. Так строка в теле индикатора log=FilePath.."\"..FileName (кроме присваивания, есть вычисление) не даст появится ему в списке.
если вынести основную мысль и перенести по аналогии то получим:

похоже когда свойству в таблице параметров метки прямо указываешь в качестве значения формулу да ещё и с функцией - QLua этого переварить не может. А когда по отдельности - через буферную переменную - то всё ОК.
Что было мной подтверждено выше. Так что тут не только и не столько была проблема с getScriptPath - сколько вот в таких "мелочах" и недосказанностях.

Но, как всегда, истинную причину нам опять не сказали. В общем, всё приходится вытягивать.
 
Цитата
Stanislav Tvorogov пишет:
Цитата
Дмитрий пишет:
В итоге в (отдельном) окне с индикатором отображается шкала по вертикали от 9 до 24 и все первые 8 значений индикатора не видны.
Описанная ошибка будет исправлена в одной из ближайших версий программы.
А я предлагаю добавить отдельную опцию для индикаторов "Автоматически масштабировать" - иногда требуется видеть только близкие к цене значения индикатора, а далёкие от графика цены - не важны.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель пишет:
Цитата
Stanislav Tvorogov пишет:
Цитата
Дмитрий пишет:
В итоге в (отдельном) окне с индикатором отображается шкала по вертикали от 9 до 24 и все первые 8 значений индикатора не видны.
Описанная ошибка будет исправлена в одной из ближайших версий программы.
А я предлагаю добавить отдельную опцию для индикаторов "Автоматически масштабировать" - иногда требуется видеть только близкие к цене значения индикатора, а далёкие от графика цены - не важны.
Добрый день.

Ваше пожелание зарегистрировано.
 
Цитата
s_mike@rambler.ru пишет:
Было бы неплохо также распространить автомасштабирование на установленные метки.
Добрый день,

Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной. Если по результатам дальнейшего анализа, включающего юридические аспекты, анализ на непротиворечивость с общей политикой компании, никаких возражений не возникнет, мы постараемся включить Ваше пожелание в план доработок при выпуске одной из следующих версий нашего ПО.
 
Цитата
Дмитрий пишет:
Цитата
Sergey Gorokhov пишет:
Указанная проблема у нас не воспроизводится. Тестировали на терминале версии 6.17.1.17.
Если у Вас терминал более старой версии, выполните обновление.
Если такой же версии, приведите пример скрипта.
Я тестировал на терминале точно такой же версии (на часовом графике, отключив связь с сервером).
Вот пример скрипта:
Код
 Settings =
{
  Name = "Test",
  line =
  {
    {
      Name = "Hour",
      Color = RGB(0, 255, 0),
      Type = TYPE_HISTOGRAM
    }
  }
}

function Init()
  return 1
end

function OnCalculate(index)

  if index == 9 then
    for i = 1, 8 do
      SetValue(i, 1, i)  -- 2) получаем значения индикатора: 1, 2, 3, 4, 5, 6, 7, 8, 18
    end
  end

  SetRangeValue(1, 2, 4, -3)  -- 3) получаем значения индикатора: 1, -3, -3, -3, 5, 6, 7, 8, 18

  return T(index).hour  -- 1) получаем значения индикатора: 10, 11, 12, 13, 14, 15, 16, 17, 18

end
 
В итоге в (отдельном) окне с индикатором отображается шкала по вертикали от 9 до 24 и все первые 8 значений индикатора не видны.
Добрый день,

Описанная в данном инциденте ошибка была исправлена в версии 7.0.0 терминала QUIK.
Данная версия терминала была выслана всем брокерам, использующим систему QUIK вчера, 07.10.2015, в установленном порядке передачи обновлений .
Рекомендуем Вам дождаться обновления версии терминала у Вашего брокера и обновить Ваш терминал.

Приносим извинения за причиненные неудобства.
 
Цитата
Дмитрий написал:
Решил не создавать новую тему, эта вполне подходит по названию.

Читаем документацию QLua.chm :
Цитата
SetValue
 
Функция предназначена для установки указанного значения на выбранной линии определенной свечи индикатора:
Формат вызова:
BOOLEAN SetValue(NUMBER index, NUMBER line_number, NUMBER value)
 
Параметры:
    index  – индекс свечи;     line_number  – номер линии;     value  – индекс первой свечки. Первая (самая левая) свечка имеет индекс 0.
Ясно, что   value  – это не индекс первой свечки , а значение, которое мы устанавливаем.
Однако, эта "опечатка" - еще не беда.

Беда в том, что из следующего за этим предложения " Первая (самая левая) свечка имеет индекс 0." легко можно  прийти к выводу, что для функций  SetValue,   GetValue  и SetRangeValue нумерация свечей индикатора начинается с 0.
В то же время несложный тест показывает, что это не так - нумерация на самом деле начинается с 1.
На всякий случай прошу разработчиков разъяснить - это действительно ошибка в документации или же ошибка в работе перечисленных функций?
А также впоследствии прошу ее исправить.


Заметил также еще одну особенность работы функций  SetValue   и SetRangeValue - если с их помощью установить значения индикатора (индикатор рисовал в отдельном окне), которые выходят за границы минимальных/максимальных значений индикатора, установленных ранее с помощью return в OnCalculate, то новые значения в итоге не видны, так как оказываются за границами окна (автомасштабирование на такую смену значений индикатора не реагирует).
Прошу исправить это в следующих версиях терминала.
    Добрый день.
   
Данная проблема была устранена в версии 7.4.0     терминала QUIK.
   
    Рекомендуем Вам обновить версию программы.
   
    Приносим извинения за причинённые неудобства.
 
Вот бы еще кто-нибудь потрудился пояснить как именно исправлена ошибка  с SetValue  
 
Цитата
swerg написал:
Вот бы еще кто-нибудь потрудился пояснить как именно исправлена ошибка  с SetValue
Добрый день,

В руководстве пользователя QLUA.chm исправлено описание на следующее:
value - устанавливаемое значение. Параметр может  иметь значение «nil». Функция возвращает «true» в случае успешного завершения, иначе – «false».
Страницы: 1 2 След.
Читают тему
Наверх