Я правильно понимаю, что при построении индикатора, возвращающего средневзвешенную цену в стакане, я должен:
1) вернуть нужную мне цену путём просмотра стакана вглубь на последнем баре
2) вернуть что-то другое (например лучштий бид/аск), для остальных баров. ЧТобы не делать ничего лишнего на истории, где нужным нам данных нет
?
Не совсем.
Проблема у Вас в том, что генерируются сделки в прошлом. Их и надо отсечь. Индикатор пусть считается как и задуман, а не совершать виртуальные сделки в прошлом можно добавив в скрипт условие на открытие позиции, например:
i == barsCount-1
Т.е. открывать позицию только, если текущий бар - это последний имеющийся бар.
Возвращать "что-то другое" (например 0) в индикаторе для не последнего бара, тоже можно, но в скрипте все равно потребуется условие на откр. позиции с проверкой этого что-то.
Как-то так...