private Series<double> OpenBuffer;
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = @"Введите описание новой пользовательской Индикатор здесь.";
Name = "МойПользовательскийIndicator";
Calculate = Calculate.OnBarClose;
IsOverlay = false;
DisplayInDataBox = true;
DrawOnPricePanel = true;
DrawHorizontalGridLines = true;
DrawVerticalGridLines = true;
PaintPriceMarkers = true;
ScaleJustification = NinjaTrader.Gui.Chart.ScaleJustification.Right;
IsSuspendedWhileInactive = true;
AddPlot(new Stroke(Brushes.DarkGray, DashStyleHelper.Dash, 1), PlotStyle.Line, "Main Value");
}
else if (State == State.Configure)
{
OpenBuffer = new Series<double>(this);
}
}
protected override void OnBarUpdate()
{
//Добавьте логику пользовательского indicator здесь.
OpenBuffer[0] = Values[0][0] = CurrentBar;
}
protected override void OnRender(ChartControl chartControl, ChartScale chartScale)
{
if (ChartControl == null)
return;
base.OnRender(chartControl, chartScale);
try
{
for (int chartBarIndex = ChartBars.FromIndex; chartBarIndex <= ChartBars.ToIndex; chartBarIndex ++)
Print (Values[0].GetValueAt(chartBarIndex) + " " +OpenBuffer.GetValueAt(chartBarIndex)+" " +chartBarIndex);
}
catch (Exception exc)
{
Print("OnRender failure chart: " + exc.ToString());
}
}
}
The indicator must print Value from start visible bar to end visible bar and 3 values must be iqual. But the real result is not iqual values. See Attachment. Why indicator get wrong index?

Comment