Сигнал появляется точно на свечке смены тренда, когда она отрисовалась полностью, открытие позиции происходит в тестах на следующей свече, на её цене открытия (если установлено исполнять на открытии), аналогично в реальности. Исполнять на открытии это "тоже самое" что на закрытие предыдущей свечи, т.к. цены там примерно одни и те же (если нет гэпа)
Почему?
В OnUpdate() можно оперировать данными только по полностью закрытой свече. Точно надо знать что свеча полностью отрисована и известны все её параметры для оценки OHLC, Volume, OI !!! Только в момент первого тика следующей свечи, т.е. когда начинается рисоваться новая свеча OnUpdate() получит информацию, что предыдущая свеча отрисована и её можно анализировать. Для OnUpdate() это будет свеча под индексом [0], хотя в реальности произошёл первый тик следующей за ней свечи. Поэтому и исполнение произойдёт на этой следующей свече, которая только начала отрисовку.
Есть конечно UseCloseBar = false, но это другая история.
---
визуально может казаться, что пробой прошёл ранее по индикатору, но это не так. Так рисуется линия на графике, если на текущем баре я указываю рисовать линию, то отрисовка её будет идти от предыдущего бара до текущего и создается иллюзия, что смена тренда была на бар ранее. Кстати, до того же предыдущего бара рисуется и линия предыдущего тренда, обратите на это внимание.
Рисунок ниже:
Под первой стрелкой показано что тренд на этом баре меняется и там красная линия на этом же баре что и начало зеленой, это важно!
Сигнал не на этом же баре появился, а на следующем, полностью отрисованном, выполняется отсылка команды на открытие позиции и она будет открыта на открытии следующего бара за сигнальным, что почти одно и тоже что по цене закрытия сигнального бара.
Тема: Re: SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA