protected override sealed void OnTermination() { GOnTermination(); if (_fm != null) { _fm.Dispose(); _fm = null; } }
protected override sealed void OnStartUp() { if (BarsPeriod.Id == PeriodType.Volume) { _maxVolume = BarsPeriod.Value; } if (BarsPeriod.Id == PeriodType.Tick) { _maxTick = BarsPeriod.Value; } _fm = (IGDataManager)Activator.CreateInstance(GDataManagerList.Type[_iDataManager]); _fm.Initialize(BarsArray[0].Instrument.FullName, _writeData, this); GOnStartUp(); }
static GDataManagerList() { var types = from t in Assembly.GetExecutingAssembly().GetTypes() where t.IsClass && !t.IsAbstract && (t.GetInterface(typeof(IGDataManager).Name) != null) select t; foreach (var type in types) { IGDataManager instance = (IGDataManager)Activator.CreateInstance(type); Name.Add((string)(type.GetProperty("Name").GetValue(instance, null))); Writable.Add((bool)(type.GetProperty("IsWritable").GetValue(instance, null))); MillisecCompliant.Add((bool)(type.GetProperty("IsMillisecCompliant").GetValue(instance, null))); Type.Add(type); instance.Dispose(); } }
protected override sealed void OnBarUpdate() { GOnBarUpdate(); if (BarsInProgress == 0) { if (Historical) { MasterInstrument MI = Bars.Instrument.MasterInstrument; if ((Bars.FirstBarOfSession || (BarsPeriod.Id == PeriodType.Day)) && (MI.InstrumentType == InstrumentType.Future) && (MI.MergePolicy != MergePolicy.DoNotMerge) && !_writeData && !Bars.Instrument.FullName.Contains("##-##")) { _RolloverContract(); } _OnBarUpdateHistorical(); } else { if (_dataManagerNotDisposedOf) { if (!_writeData) { _fm.Dispose(); _fm = null; _dataManagerNotDisposedOf = false; } } _OnBarUpdateRealTime(); } GOnBarUpdateDone(); } }