Ihor Herasko #: Нет никаких проблем. Все то же самое. Просто индексы баров отрицательные. Единственное, что меняется, это обязательный перерасчет значения на каждом новом баре.
Для ObjectGetValueByTime правая координата не может быть правее текущего бара.
следовательно полного соответствия не будет. Это я сам только сейчас понял. Для полного соответствия надо время в будущем обрезать до времени текущего бара.
следовательно полного соответствия не будет. Это я сам только сейчас понял. Для полного соответствия надо время в будущем обрезать до времени текущего бара.
Так ведь это проблемы ObjectGetValueByTime(), а не расчета. Чем плохо, что та фукнция не может, а наш расчет может?
Так ведь это проблемы ObjectGetValueByTime(), а не расчета. Чем плохо, что та фукнция не может, а наш расчет может?
Ничем не плохо. Но Владимир на протяжении всего обсуждения любой вариант сравнивает с показаниями ObjectGetValueByTime() и никак не может получить нужное значение. По картинкам на предыдущей странице видно, что правая координата трендовой в будущем…
Alexey Viktorov #: Ничем не плохо. Но Владимир на протяжении всего обсуждения любой вариант сравнивает с показаниями ObjectGetValueByTime() и никак не может получить нужное значение. По картинкам на предыдущей странице видно, что правая координата трендовой в будущем…
И тем не менее, расчет от ObjectGetValueByTime(), судя по скрину, правильно показывает цену, которая расположена на трендовой линии. То есть расчет нельзя назвать неправильным. В то же время, собственный расчет почему-то показывает цену, которая не лежит на трендовой линии. Вот это для меня загадка. Возможно, в собственном расчете в качестве правой точки подставлен бар с индексом 0 или положительный вместо отрицательного. Я потому и запросил исходные данные для воспроизведения.
Ihor Herasko #: И тем не менее, расчет от ObjectGetValueByTime(), судя по скрину, правильно показывает цену, которая расположена на трендовой линии. То есть расчет нельзя назвать неправильным. В то же время, собственный расчет почему-то показывает цену, которая не лежит на трендовой линии. Вот это для меня загадка. Возможно, в собственном расчете в качестве правой точки подставлен бар с индексом 0 или положительный вместо отрицательного. Я потому и запросил исходные данные для воспроизведения.
Если стоит галка то формула тангенса полностью совпадает с ObjectGetValueByTime(), если галки нет, то чем больше угол трендовой тем больше разница в результатах.
Вывод, если хотим, чтоб при убранной галке ваша пользовательская функция совпадала с ObjectGetValueByTime(), то нужно округлять значение времени до времени открытия свечи таймфрейма.
Гифка работает только если на неё кликнуть.
ps вот такой вариант округления в пользовательской функции, даёт одинаковый результат с ObjectGetValueByTime(), не зависимо от галки в настройках.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Результат не верный
Давайте рассмотрим эту конкретную ситуацию. Дайте точные данные проведенной линии:
Нет никаких проблем. Все то же самое. Просто индексы баров отрицательные. Единственное, что меняется, это обязательный перерасчет значения на каждом новом баре.
Вот именно…
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Аналог ObjectGetValueByTime может кто то реализовывал ?
Alexey Viktorov, 2026.04.17 18:23
Для ObjectGetValueByTime правая координата не может быть правее текущего бара.следовательно полного соответствия не будет. Это я сам только сейчас понял. Для полного соответствия надо время в будущем обрезать до времени текущего бара.
Вот именно…
На расчет это никак не влияет.
следовательно полного соответствия не будет. Это я сам только сейчас понял. Для полного соответствия надо время в будущем обрезать до времени текущего бара.
На расчет это никак не влияет.
Так ведь это проблемы ObjectGetValueByTime(), а не расчета. Чем плохо, что та фукнция не может, а наш расчет может?Ничем не плохо. Но Владимир на протяжении всего обсуждения любой вариант сравнивает с показаниями ObjectGetValueByTime() и никак не может получить нужное значение. По картинкам на предыдущей странице видно, что правая координата трендовой в будущем…
И тем не менее, расчет от ObjectGetValueByTime(), судя по скрину, правильно показывает цену, которая расположена на трендовой линии. То есть расчет нельзя назвать неправильным. В то же время, собственный расчет почему-то показывает цену, которая не лежит на трендовой линии. Вот это для меня загадка. Возможно, в собственном расчете в качестве правой точки подставлен бар с индексом 0 или положительный вместо отрицательного. Я потому и запросил исходные данные для воспроизведения.
Экспериментирую
Результат
Не сходятся значения.
Пробовал ставить 0 то же не сходятся.
Исключил бар за пределами.
Экспериментирую
Результат
Не сходятся значения.
Пробовал ставить 0 то же не сходятся.
Исключил бар за пределами.
Экспериментирую
Результат
Не сходятся значения.
Пробовал ставить 0 то же не сходятся.
Исключил бар за пределами.
И почему индекс бара для TimeCurrent() установлен как 1? Он должен быть 0.
Также еще учтите, что если правый бар находится правее текущего бара, то вот здесь:
будет получено -1 вместо правильного индекса бара.
Нашёл причину. Галочка "Точная шкала времени.
Если стоит галка то формула тангенса полностью совпадает с ObjectGetValueByTime(), если галки нет, то чем больше угол трендовой тем больше разница в результатах.
Вывод, если хотим, чтоб при убранной галке ваша пользовательская функция совпадала с ObjectGetValueByTime(), то нужно округлять значение времени до времени открытия свечи таймфрейма.
Гифка работает только если на неё кликнуть.
ps вот такой вариант округления в пользовательской функции, даёт одинаковый результат с ObjectGetValueByTime(), не зависимо от галки в настройках.
Думаю здесь все понимают, что вот это
fKKoef = (fY2 - fY1) / (nX2 - nX1); return fY1 - fKKoef * nX1;и то, что написал я, это одно и то же. Формула тангенса.