예제 #1
0
        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);
            }
        }
예제 #2
0
        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();
        }