示例#1
0
        internal void RegisterStrategy(Strategy strategy, InstrumentList instruments, int orderRouteId)
        {
            strategy.portfolio.Parent = this.portfolio;
            foreach (Instrument current in instruments)
            {
                LinkedList <Strategy> linkedList;
                if (this.strategiesByInstrument[current.Id] == null)
                {
                    linkedList = new LinkedList <Strategy>();
                    this.strategiesByInstrument[current.Id] = linkedList;
                }
                else
                {
                    linkedList = this.strategiesByInstrument[current.Id];
                }
                linkedList.Add(strategy);
                IdArray <int> idArray;
                int           num;
                (idArray = this.instrumentCountTable)[num = current.id] = idArray[num] + 1;
            }
            Dictionary <IDataProvider, InstrumentList> dictionary = new Dictionary <IDataProvider, InstrumentList>();

            foreach (Instrument current2 in instruments)
            {
                InstrumentList     instrumentList    = null;
                IDataProvider      dataProvider      = this.GetDataProvider(strategy, current2);
                IExecutionProvider executionProvider = strategy.GetExecutionProvider(current2);
                if (dataProvider.Status == ProviderStatus.Disconnected)
                {
                    dataProvider.Connect();
                }
                if (executionProvider.Status == ProviderStatus.Disconnected)
                {
                    executionProvider.Connect();
                }
                if (!dictionary.TryGetValue(dataProvider, out instrumentList))
                {
                    instrumentList           = new InstrumentList();
                    dictionary[dataProvider] = instrumentList;
                }
                instrumentList.Add(current2);
            }
            foreach (KeyValuePair <IDataProvider, InstrumentList> current3 in dictionary)
            {
                this.framework.strategyManager.RegisterMarketDataRequest(current3.Key, current3.Value);
            }
            this.strategyByOrderId[orderRouteId] = strategy;
            if (this.parent != null)
            {
                this.parent.RegisterStrategy(this, instruments, orderRouteId);
            }
        }
示例#2
0
        private void RegisterInstrument(Instrument instrument)
        {
            InstrumentList instrumentList = new InstrumentList();

            instrumentList.Add(instrument);
            IDataProvider      dataProvider      = this.GetDataProvider(this, instrument);
            IExecutionProvider executionProvider = this.GetExecutionProvider(instrument);

            if (dataProvider.Status == ProviderStatus.Disconnected)
            {
                dataProvider.Connect();
            }
            if (executionProvider.Status == ProviderStatus.Disconnected)
            {
                executionProvider.Connect();
            }
            this.framework.strategyManager.RegisterMarketDataRequest(dataProvider, instrumentList);
            if (this.parent != null)
            {
                this.parent.RegisterStrategy(this, instrumentList, (int)this.id);
            }
        }