Exemplo n.º 1
0
        private void AddHistorySessionHolder(string portfolio)
        {
            var session = new HistorySessionHolder(EmulationConnector.TransactionIdGenerator)
            {
                IsMarketDataEnabled  = false,
                IsTransactionEnabled = true,
            };

            _basketSessionHolder.InnerSessions.Add(session, 0);
            _basketSessionHolder.Portfolios[portfolio] = session;
        }
Exemplo n.º 2
0
            public StrategyConnector(StrategyContainer strategy, DateTimeOffset startDate, DateTimeOffset stopDate, TimeSpan useCandlesTimeFrame, bool onlyInitialize)
            {
                if (strategy == null)
                {
                    throw new ArgumentNullException("strategy");
                }

                UpdateSecurityLastQuotes = false;
                UpdateSecurityByLevel1   = false;

                var entityRegistry = ConfigManager.GetService <IStudioEntityRegistry>();

                _strategy            = strategy;
                _useCandlesTimeFrame = useCandlesTimeFrame;
                _onlyInitialize      = onlyInitialize;
                _sessionStrategy     = entityRegistry.ReadSessionStrategyById(strategy.Strategy.Id);

                if (_sessionStrategy == null)
                {
                    throw new InvalidOperationException("sessionStrategy = null");
                }

                Id   = strategy.Id;
                Name = strategy.Name + " Connector";

                _realConnector             = (StudioConnector)ConfigManager.GetService <IStudioConnector>();
                _realConnector.NewMessage += RealConnectorNewMessage;

                EntityFactory = new StudioConnectorEntityFactory();

                _securityProvider = new StudioSecurityProvider();

                var session = new HistorySessionHolder(TransactionIdGenerator, _securityProvider)
                {
                    StartDate = startDate,
                    StopDate  = stopDate,
                };

                session.UpdateCurrentTime(startDate);

                var storageRegistry = new StudioStorageRegistry {
                    MarketDataSettings = strategy.MarketDataSettings
                };

                MarketDataAdapter = _historyMessageAdapter = new HistoryMessageAdapter(session)
                {
                    StorageRegistry = storageRegistry
                };
                TransactionAdapter = new PassThroughMessageAdapter(session);

                _historyMessageAdapter.SessionHolder.MarketTimeChangedInterval = useCandlesTimeFrame;
                // при инициализации по свечкам, время меняется быстрее и таймаут должен быть больше 30с.
                _historyMessageAdapter.SessionHolder.ReConnectionSettings.TimeOutInterval = TimeSpan.MaxValue;

                _historyMessageAdapter.BasketStorage.InnerStorages.AddRange(GetExecutionStorages());

                ApplyMessageProcessor(MessageDirections.In, true, true);
                ApplyMessageProcessor(MessageDirections.Out, true, true);

                this.LookupById(strategy.Security.Id);

                new ChartAutoRangeCommand(true).Process(_strategy);
            }