SetRangeValue

Страницы: 1
RSS
SetRangeValue
 
Замечательная казалось бы функция, позволяющая вставлять точки гуртом, а не по одиночке.
SetRangeValue(1, index-range, index-1, nil)
Но она принимает только скаляр, то есть нарисовать можно только горизонтальную линию или все стереть.
И кстати почему с помощью SetRangeValue и SetValue нельзя поставить значение на последней свечке? В чем смысл такого ограничения?
 
Цитата
валерий написал:
Но она принимает только скаляр, то есть нарисовать можно только горизонтальную линию или все стереть.
Да так и есть.

Цитата
валерий написал:
И кстати почему с помощью SetRangeValue и SetValue нельзя поставить значение на последней свечке? В чем смысл такого ограничения?

А в чем смысл? Ведь для вывода текущих значений существует OnCalculate.
 
Смысл в том чтобы расчет проводить не в индикаторе (то есть не в потоке квика, как я понимаю). А в индикатор передать уже готовые данные и просто нарисовать.
 
валерий,

Функции вполне успешно меняют значения на текущей свече, простой пример это доказывает:
Код
Settings = {
Name = "*test", 
line = {{Name = "test", Type = TYPE_LINE, Color = RGB(255, 0, 0)}}
}

function Init() 
   T = {}
   return #Settings.line
end

function OnCalculate(Index) 
   SetValue(Index, 1, 12345)
   x=GetValue(Index, 1)
   message("Index="..tostring(Index).." ".."GetValue="..tostring(x))
   return C(Index)
end


По всей видимости, у вас значение текущей свечи, после SetValue затирается другим значением указанным в return
 
Sergey Gorokhov,

Не понял - на графике рисуется C(Index), а не SetValue. Как на графике нарисовать свои данные и желательно, для экономии ресурсов, одним действием?
 
Цитата
валерий написал:
Не понял - на графике рисуется C(Index), а не SetValue.
Но messag же выдает 12345 не так ли? Разве это не говорит о том что Ваша версия о неработающем SetValue не подтверждается?

У Вас на индикаторе одни значения затираются другими.
На примере простого кода:
Код
x=123
x=1111


после его обработки, в конце Вы получите x=1111, так как x сначала был 123, а потом поменялся на 1111, в моем примере и у Вас, ровно тоже самое.
Вы сначала пишите одну цифру через SetValue, а потом, затираете ее другой цифрой через return.
Так понятно?
Страницы: 1
Читают тему
Наверх