Канал Фибоначчи. Нужна помощь

 

С горем пополам разобрался, как отрисовать канал фибоначчи и завернуть его уровни вовнутрь. Получилось примерно так:

Но у меня ни как не получается программным кодом запросить значение цены нужного уровня, скажем, на нулевой свече. Я попробовал применить вот такой код:

Pr=ObjectGetValueByShift(FiboName,0);

Но это привело к тому, что функция вернула цену на нулевой свече для базовой линии объекта (синяя горизонтальная на скриншоте). Есть какие-нибудь соображения, как получить цену той же линии 1 (33%) на нулевой свече?

Тут вот в чём фокус. Я сделал скрипт, который располагает на графике канал фибо. Предполагается, что трейдер расположит его так, как считает нужным (изменит координаты). Мне нужно чтоб советник отыскал этот канал по имени объекта и отследил цену, скажем на нулевой свече на уровне 33%. Как это сделать? В инете информации найти не удалось. Два дня вподряд уже курю поисковики.

 
Vitaly Murlenko:

С горем пополам разобрался, как отрисовать канал фибоначчи и завернуть его уровни вовнутрь. Получилось примерно так:

Но у меня ни как не получается программным кодом запросить значение цены нужного уровня, скажем, на нулевой свече. Я попробовал применить вот такой код:

Но это привело к тому, что функция вернула цену на нулевой свече для базовой линии объекта (синяя горизонтальная на скриншоте). Есть какие-нибудь соображения, как получить цену той же линии 1 (33%) на нулевой свече?

Тут вот в чём фокус. Я сделал скрипт, который располагает на графике канал фибо. Предполагается, что трейдер расположит его так, как считает нужным (изменит координаты). Мне нужно чтоб советник отыскал этот канал по имени объекта и отследил цену, скажем на нулевой свече на уровне 33%. Как это сделать? В инете информации найти не удалось. Два дня вподряд уже курю поисковики.

Это же проценты от полной ширины от 100 до 0
 
Artyom Trishkin #:
Это же проценты от полной ширины от 100 до 0

Как получить программно полную ширину? Скрипт поставил фибо. Трейдер его передвинул и поменял ширину руками. Как считать теперь полную ширину с объекта? До одного уровня я добрался через 

ObjectGetValueByShift()
Это я в моём случае добрался до уровня 100%. Как добраться до уровня = 0%?
 

Ну почему же в справке нет примера того, как считать с объекта цену соответствующего уровня? Странная логика справки. Как создать объект показано, а как им воспользоваться - нет.

Удивляет вот ещё что - цену линии тренда на энной свече запросить можно, а цену нужного уровня надо вычислять ни пойми как. У канала это же просто линии тренда. То же касается и фибоуровней. Ну почему бы ни создать функцию спецом для фибо? Имя объекта, номер уровня, номер свечи. Возвращаемое значение - цена.

 
Vitaly Murlenko #:

Как получить программно полную ширину? Скрипт поставил фибо. Трейдер его передвинул и поменял ширину руками. Как считать теперь полную ширину с объекта? До одного уровня я добрался через 

Это я в моём случае добрался до уровня 100%. Как добраться до уровня = 0%?
Поглядите параметры функции. Там есть индекс нужной линии
 
Artyom Trishkin #:
Поглядите параметры функции. Там есть индекс нужной линии

Я пробовал. Возвращается величина процентов. Не цена, а проценты.

 
Vitaly Murlenko #:

Я пробовал. Возвращается величина процентов. Не цена, а проценты.

ObjectGetValueByTime
 
Tretyakov Rostyslav #:
ObjectGetValueByTime

Думаете сработает? Попробую конечно, спасибо, но в справке вот что написано:

Так как объект в одной координате цены может иметь несколько значений, то необходимо указать номер линии. Эта функция применима только для следующих объектов:
•Трендовая линия (OBJ_TREND)
•Трендовая линия по углу (OBJ_TRENDBYANGLE)
•Линия Ганна (OBJ_GANNLINE)
•Равноудаленный канал (OBJ_CHANNEL) - 2 линии
•Канал на линейной регрессии (OBJ_REGRESSION) - 3 линии
•Канал стандартного отклонения (OBJ_STDDEVCHANNEL) - 3 линии

Как видите объекта OBJ_FIBOCHANNEL здесь нет. Или это недокументированные возможности языка? Попробую. Спасибо.

 
Как ни странно, сработало для линии 0 и линии 1 Это как раз и есть те уровни 0% и 100%.Для остальных линий не пашет. Но это можно и математикой посчитать. Спасибо большое - искал бы до потери пульса. Я уже и костыли придумал - накладывать линии тренда на уровни наклонного канала. Ещё раз спасибо - Вы избавили моего советника от костылей :)))
 
Кстати, разработчики, линия тренда в одной координате цены не может иметь несколько значений, как у вас это написано в справке. Исправьте пожалуйста. У линии линия тренда сама по себе одна. Поэтому не нужно указывать её номер.
 

Можно ли у этого объекта запретить лучу рисоваться влево? Что-то у меня не получается - при любом раскладе рисуется в обе стороны. Конструкция не работает:

//--- установим свойство Луч 
if(ObjectGetInteger(0,UpChannelName,OBJPROP_RAY)!=true){
        ObjectSetInteger(0,UpChannelName,OBJPROP_RAY,true);
} 
// --- Продлим луч вправо
if(ObjectGetInteger(0,UpChannelName,OBJPROP_RAY_RIGHT)!=true){
        ObjectSetInteger(0,UpChannelName,OBJPROP_RAY_RIGHT,true);
}
// --- Запретим рисовать луч влево
if(ObjectGetInteger(0,UpChannelName,OBJPROP_RAY_LEFT)==true){
        ObjectSetInteger(0,UpChannelName,OBJPROP_RAY_LEFT,false);
}
Причина обращения: