Repro:
1. New custom indicator with input series GC 12-20 and the following code
private Series<double> rawCalcs; ... if (State == State.SetDefaults) AddPlot(... ... if (State == State.Configure) AddDataSeries("[B]EURGBP[/B]" protected override void OnBarUpdate() Print(string.Format("OnBarUpdate(Bar#{0}; Current={1}) => Close={2}", BarsInProgress, CurrentBar, Close[0])); if (BarsInProgress == 1) rawCalcs[0] = Close[0]; // *** ERROR - exception, ArgumentOutOfRangeException
OnBarUpdate(Bar#1; Current=0) => Close=1.305
OnBarUpdate(Bar#1; Current=1) => Close=1.30508
OnBarUpdate(Bar#1; Current=2) => Close=1.3055
OnBarUpdate(Bar#1; Current=3) => Close=1.30501
OnBarUpdate(Bar#1; Current=4) => Close=1.30501
OnBarUpdate(Bar#1; Current=5) => Close=1.30493
OnBarUpdate(Bar#1; Current=6) => Close=1.30498
OnBarUpdate(Bar#1; Current=7) => Close=1.30576
OnBarUpdate(Bar#1; Current=8) => Close=1.30542
OnBarUpdate(Bar#1; Current=9) => Close=1.30487
OnBarUpdate(Bar#1; Current=10) => Close=1.30477
OnBarUpdate(Bar#1; Current=11) => Close=1.30492
OnBarUpdate(Bar#0; Current=0) => Close=1925.8
OnBarUpdate(Bar#1; Current=12) => Close=1.30554
OnBarUpdate(Bar#0; Current=1) => Close=1928.2
OnBarUpdate(Bar#1; Current=13) => Close=1.30565
OnBarUpdate(Bar#0; Current=2) => Close=1928.2
OnBarUpdate(Bar#1; Current=14) => Close=1.3055
OnBarUpdate(Bar#0; Current=3) => Close=1930.4
OnBarUpdate(Bar#1; Current=15) => Close=1.30567
OnBarUpdate(Bar#0; Current=4) => Close=1928.3
OnBarUpdate(Bar#1; Current=16) => Close=1.30551
OnBarUpdate(Bar#0; Current=5) => Close=1929.7
OnBarUpdate(Bar#1; Current=17) => Close=1.30542
Expected:
I would expect BarsInProgress to be alternated between 0 and 1. I would not expect for Bar#1 to be called with data 12 times before Bar#0 starts getting called with data.
Any idea why this would be happening?
Comment