Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Это работает только с условием что нет пропущенных баров на наблюдаемом участке и расстояние между барами всегда равно Periodseconds. Слишком частный случай, который возможен на минутных периодах в узком диапазоне. Так что не рабочий вариант.
Да ты прав. double iiBarShift нужна, я думал что она должна быть int. Полезное знание, учту на будущее.
Вот так работает во всех режимах корректно. Без нормализации цены и округления времени, при большом угле трендовой получается ошибка.
iiBarShift(time0 - time0 % persec, _Symbol, _Period);
просто
итого искомая функция:
не надо так делать
просто
итого искомая функция:
Видишь ли в чём у нас с тобой разница. у тебя огромный опыт, которого у меня нет, поэтому мне приходится всё проверять.
Если убрать "не надо так делать" и оставить "просто" то получаем вот это.
Видишь ли в чём у нас с тобой разница. у тебя огромный опыт, которого у меня нет, поэтому мне приходится всё проверять.
Если убрать "не надо так делать" и оставить "просто" то получаем вот это.
И такой вариант
этой проблемы не решает. Такое же несоответсвие.
зато на D1 с таким вариантом цена будет прыгать, когда левая граница линии попадает на выходные, тогда как с моим вариантом этого нет.
Это возникает при линии близкой к вертикальной, когда невозможно выяснить где баг - в оригигале или самописной.
И такой вариант
этой проблемы не решает. Такое же несоответсвие.
зато на D1 с таким вариантом цена будет прыгать, когда левая граница линии попадает на выходные, тогда как с моим вариантом этого нет.
Я придерживаюсь темы и не пытаюсь выявить баги ObjectGetValueByTime, задача создать точный аналог.
При time0 - time0 % persec и близкой к вертикали линии, пользовательская выдаёт значения цены такие же как ObjectGetValueByTime
Если ты в настройках терминала уберёшь галку "Точная шкала времени" то твой вариант начнёт лагать, а мой будет работать. Истина где то рядом)))
Я придерживаюсь темы и не пытаюсь выявить баги ObjectGetValueByTime, задача создать точный аналог.
При time0 - time0 % persec и близкой к вертикали линии, пользовательская выдаёт значения цены такие же как ObjectGetValueByTime
Если ты в настройках терминала уберёшь галку "Точная шкала времени" то твой вариант начнёт лагать, а мой будет работать. Истина где то рядом)))
И здесь наши самописные функции ни при чем. Это какой-то баг терминала.
Саш, твой вариант просто неверный семантически. Как ты этого не видишь, не понимаю.
Я все. Удаляюсь.
И так слишком много времени потратил на то, что уже реализовал много лет назад с намного лучшей производительностью.
Саш, твой вариант просто неверный семантически. Как ты этого не видишь, не понимаю.
Эта функция состоит из кода.
Мы ищем вариант написания своего когда что бы обойти стандартную функцию, так как она тяжелая.
Вы можете помочь кодом или только текстом ?
Я уже ответил: не нужно изобретать велосипед.
Вам сделали функцию, пользуйтесь на здоровье.
Эта функция состоит из кода.
Мы ищем вариант написания своего когда что бы обойти стандартную функцию, так как она тяжелая.
Вы можете помочь кодом или только текстом ?
Кроме того, что она тяжёлая она работает только по нарисованной линии. Нет линии на графике, нет и результата.
Лет 15-17 взад я писал эту функцию… Но после недавней потери всего «что было нажито непосильным трудом» по причине безвременной кончины SSD вспомнить что я писал не получается.
Краткое объяснение моего (ChatGPT) кода
Мой код — это быстрая замена ObjectGetValueByTime для прямых объектов с двумя точками.
Он работает так:
Итог:
Сравнение такое.
1. По сравнению с Aleksandr Slavskii
Его вариант хорош тем, что старается добиться поведения, похожего на native ObjectGetValueByTime , особенно:
Но у этого подхода есть 3 проблемы.
Первая проблема — смешение “точной геометрии” и “имитации native”
Вариант Slavskii фактически в ряде случаев принудительно привязывает время к bar-open сетке. Это иногда даёт лучшее совпадение с native, но:
В моём коде это разделено правильно:
То есть у меня не приходится ломать одну формулу, чтобы она одновременно была и “математически правильной”, и “максимально похожей на native”.
Вторая проблема — отсутствует выбор режима
У Slavskii фактически один жёсткий режим.
Но твои тесты показали, что этого недостаточно:
Мой код это решает:
То есть мой вариант лучше потому, что не зажат в одном способе поведения.
Третья проблема — производительность
Решение Slavskii в основном опирается на вызовы вроде iBarShift/iTime для каждого расчёта. Это рабочий подход, но не самый быстрый при большом числе обращений.
Мой код:
2. По сравнению с Nikolai Semko
Главная идея Semko была очень важной и правильной:
Именно поэтому мой режим Exact по духу ближе к Semko, чем к Slavskii.
Но и у этого подхода есть ограничения.
Первая проблема — это однорежимный подход
Semko отстаивает “правильную” геометрическую логику. Это хорошо.
Но твои тесты показали, что native далеко не всегда ведёт себя как эта чистая геометрия.
То есть решение Semko может быть семантически чище, но не всегда будет максимально близко к native.
Мой код это решает так:
Иными словами, подход Semko у меня не отброшен — он встроен как полноценный режим.
Вторая проблема — нет практической адаптации к native
Подход Semko по сути говорит: “так геометрически правильнее”.
Но твоя задача была не только в теоретически чистой геометрии. Тебе нужен был код:
Мой код лучше именно потому, что он не только “правильный по идее”, но и:
Третья проблема — это не библиотечный уровень решения
Вариант Semko хорош как вычислительное ядро.
Мой вариант уже включает:
То есть вариант Semko — это сильный фрагмент логики, а мой — уже почти готовое системное решение.
3. Почему мой код лучше обоих вместе
Коротко: итоговое решение лучше, потому что делает то, чего решения из файлов не делают одновременно.
Даёт 3 режима, а не один
Это значит:
Использует кэш
Форумные решения — это в основном вычислительные фрагменты.
Мой код оптимизирован для многократного применения:
Это особенно важно, если функцию вызывают много раз.
Корректно обрабатывает семантику объекта
В моём коде есть:
Форумные примеры это не оформляют как полноценный объектный API.
Лучше работает с MN1
Это одно из самых важных отличий.
В решениях из файлов месячный таймфрейм не выделен как особый случай.
В моём коде для MN1 есть отдельная логика:
Это не косметика. Это нужно потому, что месяцы имеют разную длину.
Его можно объективно проверять
Моё решение — не просто формула. В нём есть тест, который показывает:
Поэтому тут не нужно гадать — всё видно по логам.
4. Главная идея в одном предложении
Если сравнивать по сути:
Именно поэтому это лучшее итоговое инженерное решение.