Функция объявлена как double, а возвращает bool:
return right_bar == left_bar? left_price: double(NormalizeDouble((right_price-left_price) / (right_bar-left_bar) * (shift-left_bar) + left_price, Digits()));
Да и скобки бы неплохо поставить. Думаю (не проверял), правильнее было бы вот так:
if (right_bar == left_bar) return 0.0; double fKCoef = (right_price - left_price) / (right_bar - left_bar); double fBCoef = right_price - fKCoef * right_bar; return NormalizeDouble(fKCoef * shift + fBCoef, Digits());
Функция объявлена как double, а возвращает bool:
Да и скобки бы неплохо поставить. Думаю (не проверял), правильнее было бы вот так:
Спасибо за ответ. Но, как вы можете видеть на изображении, я получаю не логическое значение, а двойное значение, точно такое же, как значение, возвращаемое функцией ObjectGetValueByTime().
И даже зная, что я пробовал ваше решение, но оно не сработало.
Я вижу, что график нормализует значение с диапазоном цены графика. Может ли кто-нибудь сказать мне, какой метод нормализации используется, потому что метод нормализации MIN MAX неверен?
Дело не в методе нормализации, а в методе построения прямой. Бар - это довольно большой массив информации, а прямая строится по двум конкретным точкам. Постройте сами Y=AX+B.
Спасибо за ответ. Но, как вы можете видеть на изображении, я получаю не логическое значение, а двойное значение, точно такое же, как значение, возвращаемое функцией ObjectGetValueByTime().
Там какая-то хитрая конструкуция получается. С одной стороны приводите к double, а с другой стороны - оператор сравнения, подразумевающий bool, который все равно потом приводится к double.
И даже зная, что я пробовал ваше решение, но оно не сработало.
А можете представить воспроизводимый пример того, как не сработало? Иначе так еще можно очень долго гадать, что там не получается. В принципе то вопрос простой - уравнение прямой.
Привет, я нарисовал линию тренда на графике, и я фиксирую значение линии тренда, используя функцию ObjectValueByTime().
Но значение на диаграмме отличается от значения, заданного ObjectValueByTime().
Я думал, что моя пользовательская функция не работает. Но я получаю одно и то же значение из пользовательской функции и из ObjectValueByTime().
Моя пользовательская функция:
Снимок напечатанных значений:
Пожалуйста, помогите мне с этим. Как я могу получить значение, которое находится на графике в моей программе, а не какие-то странные значения.
Под курсором мышки вы видите не цену трендовой линии, а цену курсора в текущий момент. Вывод: Функция возвращает истинное значение. И не важно как это значение нормализуется.
Ну как не решает? Вы выделили знак == но это не значение возвращаемое функцией, а всего-лишь условие по которому будет возвращено одно из значений. И то что дальше не имеет значения. Ваш пример всего-лишь другое решение.
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет, я нарисовал линию тренда на графике, и я фиксирую значение линии тренда, используя функцию ObjectValueByTime().
Но значение на диаграмме отличается от значения, заданного ObjectValueByTime().
Я думал, что моя пользовательская функция не работает. Но я получаю одно и то же значение из пользовательской функции и из ObjectValueByTime().
Моя пользовательская функция:
Снимок напечатанных значений:
Пожалуйста, помогите мне с этим. Как я могу получить значение, которое находится на графике в моей программе, а не какие-то странные значения.