Совершенно не понятно о каком именно канале идёт речь. Скажем так, это инструмент "Равноудалённый канал"? Или может это Канал Фибоначчи? Или может это....
Скорее всего Вам нужен именно метод Get с указанием номера линии. В общих чертах это так. Но без конкретики мы будем тыкать пальцем в небо.
Совершенно не понятно о каком именно канале идёт речь. Скажем так, это инструмент "Равноудалённый канал"? Или может это Канал Фибоначчи? Или может это....
Скорее всего Вам нужен именно метод Get с указанием номера линии. В общих чертах это так. Но без конкретики мы будем тыкать пальцем в небо.
Да, это равноудаленный канал
эта функция покажет цену из точки привязки, а мне нужна текущая цена на линии
Все это рассчитывается по уравнению прямой. Если нужны данные от второй линии, то сначала для первой линии нужно рассчитать коэффициенты b (это то, что уже получено через ObjectGetValueByShift, но удобнее будет сделать самостоятельно) и k (тангенс угла наклона линий к оси абсцисс). На основании полученного значения k рассчитывается коэффициент b для второй линии. Зная коэффициенты для обеих линий, легко и быстро рассчитываются значения линий на любом баре.
я надеялся, что есть библиотечная функция как и для первой линии, не силен в математике, ну все равно спасибо! попробую разобраться
я надеялся, что есть библиотечная функция как и для первой линии, не силен в математике, ну все равно спасибо! попробую разобраться
библиотечная вроде как работает. ObjectGetValueByTime имеет параметр номер линии. Для канала основная линия 0, дополнительная 1.
Для произвольного времени (например времени привязки) взять оба значения и вычесть одно из другого
--
Но с хитростью - до вызова надо установить свойства OBJPROP_RAY (и RAY_LEFT RAY_RIGHT) в 1, после вызова вернуть как было.
И с глюками - в терминале, их алгоритмами и функциями, параллельные линии иногда пересекаются, причём быстро :-)
Специальной функции в справке не нашел. Придется рассчитывать в ручную. Нужно найти расстояние по вертикали между линиями (в районе единственной точки). Поскольку канал равноудаленный, то расстояние везде одинаковое. Далее от основной линии (с двумя точками) отнимать/прибавлять это расстояние.
-------------
PS
Из личного опыта:
Если нужны данные по уже известным барам, назад(в прошлое). Тогда удобнее вычислять по барам.
Если нужно заглянуть вперед(в будующее), тогда лучше вычислять по времени, использую переменную типа datetime, и пропорции или тригонометрию.
Специальной функции в справке не нашел. Придется рассчитывать в ручную. Нужно найти расстояние по вертикали между линиями (в районе единственной точки). Поскольку канал равноудаленный, то расстояние везде одинаковое. Далее от основной линии (с двумя точками) отнимать/прибавлять это расстояние.
-------------
PS
Из личного опыта:
Если нужны данные по уже известным барам, назад(в прошлое). Тогда удобнее вычислять по барам.
Если нужно заглянуть вперед(в будующее), тогда лучше вычислять по времени, использую переменную типа datetime, и пропорции или тригонометрию
Ну вот.. значит тригонометрию вычеркиваем из планов на вечер))), вот такие объяснения мне понятны, низкий поклон!)
Ну вот.. значит тригонометрию вычеркиваем из планов на вечер))), вот такие объяснения мне понятны, низкий поклон!)
Держите тригонометрию
//+------------------------------------------------------------------+ //| Уравнение прямой | //+------------------------------------------------------------------+ double EquationDirect(const int left_bar,const double left_price,const int right_bar,const double right_price,const int bar_to_search) { return(right_bar==left_bar ? left_price : (right_price-left_price)/(right_bar-left_bar)*(bar_to_search-left_bar)+left_price); } //+------------------------------------------------------------------+
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Так я вытащил текущую цену линии канала, которая идет с двумя точками привязки, а как узнать текущую цену второй линии с одной точкой привязки?