Я просмотрел документацию и нашел эти строки: https://www.mql5.com/en/docs/objects/objectgetvaluebytime
Меня интересует Trendline (OBJ_TREND).
Это может быть опасно для моего кода, поскольку мой код зависит от значений, полученных из функции.
Пожалуйста, дайте мне знать, как я могу написать свою собственную функцию ObjectGetValueByTime ()? Надеюсь, вы дадите мне логическое представление о том, как работает эта функция и как она может получить значение линии тренда (OBJ_TREND).
Пожалуйста, помогите мне в этом.
вот готовый код https://www.mql5.com/ru/code/24803
- а там, Ваша сообразительность.
Я просмотрел документацию и нашел эти строки: https://www.mql5.com/en/docs/objects/objectgetvaluebytime
Меня интересует Trendline (OBJ_TREND).
Это может быть опасно для моего кода, поскольку мой код зависит от значений, полученных из функции.
Пожалуйста, дайте мне знать, как я могу написать свою собственную функцию ObjectGetValueByTime ()? Надеюсь, вы дадите мне логическое представление о том, как работает эта функция и как она может получить значение линии тренда (OBJ_TREND).
Пожалуйста, помогите мне в этом.
Артём Тришкин поможет.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопросы от начинающих MQL5 MT5 MetaTrader 5
Artyom Trishkin, 2020.05.02 12:27
Используйте уравнение прямой:
//+------------------------------------------------------------------+ //| Уравнение прямой | //+------------------------------------------------------------------+ 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); } //+------------------------------------------------------------------+
Указываете номер и цену бара точки слева, указываете номер и цену бара точки справа (по этим точкам строится виртуальная линия) и указываете искомый бар.
Функция вернёт цену искомого бара.
Спасибо за ответ. Но я не ищу цены закрытия позиций или что-то вроде того, что вы предложили.
Но ваше предложение хорошее.
У меня проблема с использованием ObjectGetValueByTime (), потому что он ненадежен. Это ленивая функция. Я хочу получать значения быстрее, поскольку мне нужно использовать значения строк из программы, которую я пишу.
Во-вторых, есть тысяча строк. Я не могу переименовать их по очереди. Невозможно даже иметь тысячу строк с тем же именем.
Также мне не нужно крайнее значение линии. Но промежуточный. Скажите средние или близкие к средним значениям. Следовательно, это сложно, если ObjectGetValueByTime () не работает.
Но я не ищу цены закрытия позиций или что-то вроде того, что вы предложили.
А в чем разница? Уравнение прямой от этого не изменяется.
Артём Тришкин поможет.
Артем Тришкин - отличный человек. Я видел, как он творит много чудес.
Но то, что вы мне предложили, - это не то, о чем я спрашиваю. Я могу рисовать линии с помощью моей программы, но я не могу получить доступ к значениям из линий. К крайним точкам я могу получить доступ через функцию ObjectGetDouble (), используя OBJPROP_PRICE. Но не где-то посередине значения.
Я нашел только один способ - использовать ObjectGetValueByTime (). Но это нехорошо. Поскольку он может иногда давать неправильные значения, поскольку это синхронная функция.
Следовательно, я ищу другой способ доступа к значениям строк, помимо ObjectGetValueByTime ().
Надеюсь, я высказал свою точку зрения.
Но то, что вы мне предложили, - это не то, о чем я спрашиваю. Я могу рисовать линии с помощью моей программы, но я не могу получить доступ к значениям из линий. К крайним точкам я могу получить доступ через функцию ObjectGetDouble (), используя OBJPROP_PRICE. Но не где-то посередине значения.
Зная координаты ЛЮБЫХ двух точек прямой, можно получить координату ЛЮБОЙ другой точки этой же линии. Функцию Вам дали.
Артем Тришкин - отличный человек. Я видел, как он творит много чудес.
Но то, что вы мне предложили, - это не то, о чем я спрашиваю. Я могу рисовать линии с помощью моей программы, но я не могу получить доступ к значениям из линий. К крайним точкам я могу получить доступ через функцию ObjectGetDouble (), используя OBJPROP_PRICE. Но не где-то посередине значения.
Я нашел только один способ - использовать ObjectGetValueByTime (). Но это нехорошо. Поскольку он может иногда давать неправильные значения, поскольку это синхронная функция.
Следовательно, я ищу другой способ доступа к значениям строк, помимо ObjectGetValueByTime ().
Надеюсь, я высказал свою точку зрения.
Попробуйте разобраться в том, что предлагает Артём. Если у вас есть координаты трендовой, то по этим координатам составляется уравнение прямой и из этого уравнения получаем цену в заданной точке времени. А точнее в точке указанного бара. В той формуле используется не время, а просто номер бара получить который не составляет труда.
Попробуйте разобраться в том, что предлагает Артём. Если у вас есть координаты трендовой, то по этим координатам составляется уравнение прямой и из этого уравнения получаем цену в заданной точке времени. А точнее в точке указанного бара. В той формуле используется не время, а просто номер бара получить который не составляет труда.
Хорошо, я попробую это. Благодарю.
Хорошо, я попробую это. Благодарю.
О результатах пожалуйста сообщите. Это реально работает. Я самостоятельно тоже делал, но мои наработки разбросаны по нескольким советникам, а не одной функцией.
О результатах пожалуйста сообщите. Это реально работает. Я самостоятельно тоже делал, но мои наработки разбросаны по нескольким советникам, а не одной функцией.
Вау, это решение действительно работает. Спасибо, что поделились со мной.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я просмотрел документацию и нашел эти строки: https://www.mql5.com/en/docs/objects/objectgetvaluebytime
Меня интересует Trendline (OBJ_TREND).
Это может быть опасно для моего кода, поскольку мой код зависит от значений, полученных из функции.
Пожалуйста, дайте мне знать, как я могу написать свою собственную функцию ObjectGetValueByTime ()? Надеюсь, вы дадите мне логическое представление о том, как работает эта функция и как она может получить значение линии тренда (OBJ_TREND).
Пожалуйста, помогите мне в этом.