Esempio n. 1
0
        public StudioRegistryConnector(IConnector studioConnector)
        {
            EntityFactory = new StudioConnectorEntityFactory();

            MarketDataAdapter  = _adapter = new PassThroughMessageAdapter(new PassThroughSessionHolder(TransactionIdGenerator));
            TransactionAdapter = new PassThroughMessageAdapter(new PassThroughSessionHolder(TransactionIdGenerator));

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

            _entityRegistry = ConfigManager.GetService <IStudioEntityRegistry>();
            _entityRegistry.Securities.Added += s => _adapter.SendOutMessage(s.ToMessage(GetSecurityId(s)));
            _entityRegistry.Portfolios.Added += p => _adapter.SendOutMessage(p.ToMessage());

            var cmdSvc = ConfigManager.GetService <IStudioCommandService>();

            //cmdSvc.Register<LookupSecuritiesCommand>(this, cmd => LookupSecurities(cmd.Criteria));
            cmdSvc.Register <RequestPortfoliosCommand>(this, false, cmd => Portfolios.ForEach(pf => new PortfolioCommand(pf, true).Process(this)));

            NewPortfolios += portfolios => portfolios.ForEach(pf => new PortfolioCommand(pf, true).Process(this));
            //NewPositions += positions => positions.ForEach(pos => new PositionCommand(pos, true).Process(this));

            // для корректной работы правил коннектор всегда должен быть реальным
            //NewSecurities += securities => securities.ForEach(s => s.Connector = studioConnector);
            NewPortfolios += portfolios => portfolios.ForEach(p => p.Connector = studioConnector);
        }
Esempio n. 2
0
        public void Set(IStudioEntityRegistry registry)
        {
            registry.Strategies.Added   += s => StrategyInfosCollectionChanged();
            registry.Strategies.Removed += s => StrategyInfosCollectionChanged();
            registry.Strategies.Cleared += StrategyInfosCollectionChanged;

            StrategyInfosCollectionChanged();
        }
Esempio n. 3
0
		public void Set(IStudioEntityRegistry registry)
		{
			registry.Strategies.Added += s => StrategyInfosCollectionChanged();
			registry.Strategies.Removed += s => StrategyInfosCollectionChanged();
			registry.Strategies.Cleared += StrategyInfosCollectionChanged;

			StrategyInfosCollectionChanged();
		}
Esempio n. 4
0
        public static SessionStrategy ReadSessionStrategyById(this IStudioEntityRegistry registry, Guid id)
        {
            var battleSession   = registry.Sessions.Battle;
            var sessionStrategy = battleSession.Strategies.ReadByStrategyId(id);

            if (sessionStrategy != null)
            {
                return(sessionStrategy);
            }

            return(registry
                   .Sessions
                   .Where(s => s != battleSession)
                   .Select(s => s.Strategies.ReadByStrategyId(id))
                   .FirstOrDefault(s => s != null));
        }
Esempio n. 5
0
        public static void CreateDefaultStrategies(this IStudioEntityRegistry registry)
        {
            if (registry == null)
            {
                throw new ArgumentNullException("registry");
            }

            if (registry.Strategies.Count != 0)
            {
                return;
            }

            new AddStrategyInfoCommand(new StrategyInfo
            {
                Name         = LocalizedStrings.Str3291,
                Description  = LocalizedStrings.Str3609,
                Path         = string.Empty,
                StrategyType = typeof(DiagramStrategy),
                Body         = Properties.Resources.SmaDiagramStrategy,
                Type         = StrategyInfoTypes.Diagram
            }).Process(registry);

            new AddStrategyInfoCommand(new StrategyInfo
            {
                Name         = LocalizedStrings.Str3610,
                Description  = LocalizedStrings.Str3611,
                Path         = string.Empty,
                StrategyType = typeof(DiagramStrategy),
                Body         = Properties.Resources.ArbitrageStrategy,
                Type         = StrategyInfoTypes.Diagram
            }).Process(registry);

            new AddStrategyInfoCommand(new StrategyInfo
            {
                Name         = LocalizedStrings.Str3183,
                Description  = LocalizedStrings.Str3612,
                Path         = string.Empty,
                StrategyType = typeof(TerminalStrategy),
                Body         = string.Empty,
                Type         = StrategyInfoTypes.Terminal
            }).Process(registry);
        }
Esempio n. 6
0
 public StudioSecurityProvider()
 {
     _registry = ConfigManager.GetService <IStudioEntityRegistry>();
 }
		public StudioSecurityProvider()
		{
			_registry = ConfigManager.GetService<IStudioEntityRegistry>();
		}
Esempio n. 8
0
		public StudioRegistryConnector(IConnector studioConnector)
		{
			EntityFactory = new StudioConnectorEntityFactory();

			_adapter = new PassThroughMessageAdapter(TransactionIdGenerator);
			Adapter.InnerAdapters.Add(_adapter.ToChannel(this));

			_entityRegistry = ConfigManager.GetService<IStudioEntityRegistry>();
			_entityRegistry.Securities.Added += s => _adapter.SendOutMessage(s.ToMessage(GetSecurityId(s)));
			_entityRegistry.Portfolios.Added += p => _adapter.SendOutMessage(p.ToMessage());

			var cmdSvc = ConfigManager.GetService<IStudioCommandService>();

			//cmdSvc.Register<LookupSecuritiesCommand>(this, cmd => LookupSecurities(cmd.Criteria));
			cmdSvc.Register<RequestPortfoliosCommand>(this, false, cmd => Portfolios.ForEach(pf => new PortfolioCommand(pf, true).Process(this)));

			NewPortfolios += portfolios => portfolios.ForEach(pf => new PortfolioCommand(pf, true).Process(this));
			//NewPositions += positions => positions.ForEach(pos => new PositionCommand(pos, true).Process(this));

			// для корректной работы правил коннектор всегда должен быть реальным
			//NewSecurities += securities => securities.ForEach(s => s.Connector = studioConnector);
			NewPortfolios += portfolios => portfolios.ForEach(p => p.Connector = studioConnector);
		}