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); }
public void Set(IStudioEntityRegistry registry) { registry.Strategies.Added += s => StrategyInfosCollectionChanged(); registry.Strategies.Removed += s => StrategyInfosCollectionChanged(); registry.Strategies.Cleared += StrategyInfosCollectionChanged; StrategyInfosCollectionChanged(); }
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)); }
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); }
public StudioSecurityProvider() { _registry = ConfigManager.GetService <IStudioEntityRegistry>(); }
public StudioSecurityProvider() { _registry = ConfigManager.GetService<IStudioEntityRegistry>(); }
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); }