private void _RolloverContract() { string instrname; bool rollover = false; DateTime zonedate = TimeZoneInfo.ConvertTime(Time[0], Bars.Session.TimeZoneInfo); MasterInstrument MI = Bars.Instrument.MasterInstrument; IEnumerable <RollOver> ROCollection = MI.RollOverCollection.Cast <RollOver>(); DateTime cm = ROCollection.Where(x => x.Date <= zonedate.Date).OrderByDescending(x => x.Date).First().ContractMonth; if (cm != _curCM) { rollover = true; _curCM = cm; } if (rollover) { _priceOffset = 0.0f; if (MI.MergePolicy == MergePolicy.MergeBackAdjusted) { _priceOffset = ROCollection.Where(x => (x.ContractMonth > cm) && (x.ContractMonth <= Instrument.Expiry) && !(double.IsNaN(x.Offset))).Sum(x => x.Offset); } _foundBarInFile = false; _EOFfound = false; instrname = MI.Name + " " + cm.Month.ToString("D2") + "-" + (cm.Year % 100).ToString("D2"); _fm.Initialize(instrname, _writeData, this); } }
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(); }