Параметром передаем сколько мы хотим хранить индексов начала бара дней.
Для примера, в серию выводим смещение относительно текущего бара до последнего индекса бара начала дня, т.е. сколько баров прошло от начала текущего дня (дня видимо последнего бара графика)

Ничего не мешает использовать весь список для анализа т.е. D[0], D[1], ... D[D.Count-1] - в нём хранятся значения индекса бара начала предыдущих дней.
Чтобы получить, например, цену открытия 5 дней назад код такой
Input.Open(CurrentIndex - D[4]);
Код: Выделить всё
function Initialize()
{
IndicatorName = "DayBar";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("Shift", DrawAs.Histogram, Color.Red);
AddParameter("Days", 20); // размерность списка (сколько индексов баров начала дня сохранять в список)
AddGlobalVariable("D", Types.IntList); //Список индексов начала дня
}
function Evaluate()
{
//Новый день
if (BarDate(0) != BarDate(1))
{
D.Insert(0, CurrentIndex);
if (D.Count > Days) D.RemoveAt(D.Count - 1);
}
if (D.Count > 0)
{
Shift = CurrentIndex - D[0];
}
}