Индикаторы: isNewBar

isNewBar:

Часто при написании индикаторов (советников) необходима информация о появлении нового бара на заданном таймфрейме. Здесь приводится пример, как это можно сделать.

При первом обращении к функции isNewBar() текущий бар не считается новым. Просто запоминается его время – это текущий бар, новым считается следующий бар.В код вставлены подробные комментарии, для легкости его понимания. Думаю, что разобраться в нем труда не составит, и надеюсь, что многим он пригодится.

Автор: Prival

Поправлено, спасибо

Rosh:
Поправлено, спасибо

изменения не вступают в силу "немедленно"? пока все осталось без изменений...

 

Изменения вступают в силу после публикации новой версии. Сделано. Спасибо.

Что вы думаете о том, как лучше использовать подход типа IsNewBar() во время бэк-тестирования?


Принятие решений на основе количества тиков - это одно, но использование IsNewBar() на основе времени или Bars() просто не очень хорошо для бэк-тестирования...

То, что нужно! Благодарю.

Что бы эта функция работала для исторических баров нужно добавить еще один входной параметр - время текущего бара на графике и использовать время в качестве стартовой позиции в функции CopyTime() :

int copied=CopyTime(_Symbol,timeFrame,time,1,new_Time);

Таким образом можно обрабатывать в цикле исторические бары графика и проверять новый бар  текущего или другого (например старшего) таймфрема.