internal bool OnBarOpen(Bar bar)
{
var item = this.items[(int)bar.Size] = this.items[(int)bar.Size] ?? new BarSliceItem();
if (item.CloseDateTime == bar.OpenDateTime)
{
item.Bars.Add(bar);
return false;
}
if (item.barCount == 0)
item.CloseDateTime = bar.OpenDateTime.AddSeconds(bar.Size);
item.barCount++;
return true;
}
}
// TODO: rewrite it private void OnBar(Event e) { DataEventCount++; var bar = (Bar)e; if (this.framework.Clock.Mode == ClockMode.Simulation) { this.framework.Clock.DateTime = bar.DateTime; } if (bar.Status != BarStatus.Open) { this.framework.DataManager.OnBar(bar); this.framework.InstrumentManager.GetById(bar.InstrumentId).Bar = bar; this.framework.ProviderManager.ExecutionSimulator.OnBar(bar); this.framework.StrategyManager.OnBar(bar); if (bar.Type == BarType.Time || bar.Type == BarType.Session) { BarSliceFactory.OnBar(bar); } return; } if ((bar.Type == BarType.Time || bar.Type == BarType.Session) && !BarSliceFactory.OnBarOpen(bar)) { return; } this.framework.ProviderManager.ExecutionSimulator.OnBarOpen(bar); this.framework.StrategyManager.OnBarOpen(bar); }