Den, проблема, как я и говорил с самого начала, в длине истории, которую дает АД для расчетов индикатора.
Код: Выделить всё
function Initialize()
{
IndicatorName = "_Dummy";
PriceStudy=false;
AddInput("Input", Inputs.Candle);
AddSeries("_Dummy", DrawAs.Line, Color.Black);
AddParameter("History", 3600, 25); // просим историю длиной 3600*25
}
function Evaluate()
{
if(CurrentIndex<MaxIndex) return;
WriteLine(@"D:\ADdebug\_Dummy.txt", String.Format("TF:{0} MaxIndex:{1}", Input.Timeframe, MaxIndex));
}
Результат:
TF:1 MaxIndex:6584 - это для минут
TF:-1 MaxIndex:6584 - это для секунд (2 часа с копейками)
Видно, что историю нам дают не 3600*25, а гораздо меньше. (Если не просить бОльшую историю, то по умолчанию дается ~3600 баров.)
Т.е. вы не можете на секундах из произвольной точки сосчитать за весь день.
SumUp, SumDown обнуляются в начале счета в неизвестной точке при старте индикатора, вряд ли это начало дня.
Рестарт счета индикатора происходит при листании графика. Если даже вы стартовали с утра правильно, то если через 2 слишним часа после начала сессии листанем график куда-то на предыдущий день, а потом вернемся к текущему моменту (кнопкой перемотки >| ). то индикатор рестартуется, но счет пойдет уже не от начала дня, а максимум от 2 часов назад. Если вы попали в какой-то сессии на перемену даты (не знаю, где это у нас возможно), то суммы тоже обнулятся (в исходнике есть соответствующий код), но через 2 часа опять будет та же байда.
Возможно, если запускать индикатор в начале сессии и не листать график, то данные будут корректные, но кто знает, по какому внутреннему поводу терминал захочет рестартовать счет индикатора...
На минутах такой проблемы, конечно, не будет.