Esempio n. 1
0
        /// <summary>
        /// The decorate with filters.
        /// </summary>
        /// <param name="operationContext">
        /// The operation context.
        /// </param>
        /// <param name="parameters">
        /// The parameters.
        /// </param>
        /// <param name="washTrade">
        /// The wash trade.
        /// </param>
        /// <param name="universeDataRequestsSubscriber">
        /// The universe data requests subscriber.
        /// </param>
        /// <param name="processOperationRunRuleContext">
        /// The process operation run rule context.
        /// </param>
        /// <param name="ruleRunMode">
        /// The rule run mode.
        /// </param>
        /// <returns>
        /// The <see cref="IUniverseRule"/>.
        /// </returns>
        private IUniverseRule DecorateWithFilters(
            ISystemProcessOperationContext operationContext,
            IWashTradeRuleFixedIncomeParameters parameters,
            IUniverseRule washTrade,
            IUniverseDataRequestsSubscriber universeDataRequestsSubscriber,
            ISystemProcessOperationRunRuleContext processOperationRunRuleContext,
            RuleRunMode ruleRunMode)
        {
            if (parameters.HasInternalFilters())
            {
                this.logger.LogInformation($"parameters had filters. Inserting filtered universe in {operationContext.Id} OpCtx");

                var filteredUniverse = this.universeFilterFactory.Build(
                    washTrade,
                    parameters.Accounts,
                    parameters.Traders,
                    parameters.Markets,
                    parameters.Funds,
                    parameters.Strategies,
                    null,
                    null,
                    null,
                    null,
                    null,
                    ruleRunMode,
                    "Wash Trade Fixed Income",
                    universeDataRequestsSubscriber,
                    processOperationRunRuleContext);
                filteredUniverse.Subscribe(washTrade);

                return(filteredUniverse);
            }

            return(washTrade);
        }
Esempio n. 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UniverseFilterService"/> class.
 /// </summary>
 /// <param name="universeUnsubscriberFactory">
 /// The universe un subscriber factory.
 /// </param>
 /// <param name="highMarketCapFilter">
 /// The high market cap filter.
 /// </param>
 /// <param name="accounts">
 /// The accounts.
 /// </param>
 /// <param name="traders">
 /// The traders.
 /// </param>
 /// <param name="markets">
 /// The markets.
 /// </param>
 /// <param name="funds">
 /// The funds.
 /// </param>
 /// <param name="strategies">
 /// The strategies.
 /// </param>
 /// <param name="sectors">
 /// The sectors.
 /// </param>
 /// <param name="industries">
 /// The industries.
 /// </param>
 /// <param name="regions">
 /// The regions.
 /// </param>
 /// <param name="countries">
 /// The countries.
 /// </param>
 /// <param name="logger">
 /// The logger.
 /// </param>
 public UniverseFilterService(
     IUnsubscriberFactory <IUniverseEvent> universeUnsubscriberFactory,
     IHighMarketCapFilter highMarketCapFilter,
     IUniverseRule filteredRule,
     RuleFilter accounts,
     RuleFilter traders,
     RuleFilter markets,
     RuleFilter funds,
     RuleFilter strategies,
     RuleFilter sectors,
     RuleFilter industries,
     RuleFilter regions,
     RuleFilter countries,
     ILogger <UniverseFilterService> logger)
 {
     this.universeUnsubscriberFactory =
         universeUnsubscriberFactory ?? throw new ArgumentNullException(nameof(universeUnsubscriberFactory));
     this.highMarketCapFilter =
         highMarketCapFilter ?? throw new ArgumentNullException(nameof(highMarketCapFilter));
     this.filteredRule      = filteredRule;
     this.accounts          = accounts;
     this.traders           = traders;
     this.markets           = markets;
     this.funds             = funds;
     this.strategies        = strategies;
     this.sectors           = sectors;
     this.industries        = industries;
     this.regions           = regions;
     this.countries         = countries;
     this.universeObservers = new ConcurrentDictionary <IObserver <IUniverseEvent>, IObserver <IUniverseEvent> >();
     this.logger            = logger ?? throw new ArgumentNullException(nameof(logger));
 }
 public void Setup()
 {
     this._unsubscriber        = A.Fake <IUnsubscriberFactory <IUniverseEvent> >();
     this._filteredRule        = A.Fake <IUniverseRule>();
     this._highMarketCapFilter = A.Fake <IHighMarketCapFilter>();
     this._observer            = A.Fake <IUniverseCloneableRule>();
     this._logger = A.Fake <ILogger <UniverseFilterService> >();
 }
Esempio n. 4
0
        /// <summary>
        /// The decorate with filter.
        /// </summary>
        /// <param name="operationContext">
        /// The operation context.
        /// </param>
        /// <param name="parameter">
        /// The parameter.
        /// </param>
        /// <param name="layering">
        /// The layering.
        /// </param>
        /// <param name="universeDataRequestsSubscriber">
        /// The universe data requests subscriber.
        /// </param>
        /// <param name="processOperationRunRuleContext">
        /// The process operation run rule context.
        /// </param>
        /// <param name="ruleRunMode">
        /// The rule run mode.
        /// </param>
        /// <returns>
        /// The <see cref="IUniverseRule"/>.
        /// </returns>
        private IUniverseRule DecorateWithFilter(
            ISystemProcessOperationContext operationContext,
            ILayeringRuleEquitiesParameters parameter,
            IUniverseRule layering,
            IUniverseDataRequestsSubscriber universeDataRequestsSubscriber,
            ISystemProcessOperationRunRuleContext processOperationRunRuleContext,
            RuleRunMode ruleRunMode)
        {
            if (parameter.HasInternalFilters() ||
                parameter.HasReferenceDataFilters() ||
                parameter.HasMarketCapFilters() ||
                parameter.HasVenueVolumeFilters())
            {
                this.logger.LogInformation($"parameters had filters. Inserting filtered universe in {operationContext.Id} OpCtx");

                var filteredUniverse = this.universeFilterFactory.Build(
                    layering,
                    parameter.Accounts,
                    parameter.Traders,
                    parameter.Markets,
                    parameter.Funds,
                    parameter.Strategies,
                    parameter.Sectors,
                    parameter.Industries,
                    parameter.Regions,
                    parameter.Countries,
                    parameter.MarketCapFilter,
                    ruleRunMode,
                    "Layering Equity",
                    universeDataRequestsSubscriber,
                    processOperationRunRuleContext);

                var decoratedFilters = filteredUniverse;

                if (parameter.HasVenueVolumeFilters())
                {
                    decoratedFilters = this.decoratorFilterFactory.Build(
                        parameter.Windows,
                        filteredUniverse,
                        parameter.VenueVolumeFilter,
                        processOperationRunRuleContext,
                        universeDataRequestsSubscriber,
                        this.LayeringDataSource(parameter),
                        ruleRunMode);
                }

                decoratedFilters.Subscribe(layering);

                return(decoratedFilters);
            }

            return(layering);
        }
Esempio n. 5
0
        public IUniverseFilterService Build(
            IUniverseRule filteredRule,
            RuleFilter accounts,
            RuleFilter traders,
            RuleFilter markets,
            RuleFilter funds,
            RuleFilter strategies,
            RuleFilter sectors,
            RuleFilter industries,
            RuleFilter regions,
            RuleFilter countries,
            DecimalRangeRuleFilter marketCap,
            RuleRunMode ruleRunMode,
            string ruleName,
            IUniverseDataRequestsSubscriber universeDataRequestsSubscriber,
            ISystemProcessOperationRunRuleContext operationRunRuleContext)
        {
            var highMarketCapFilter = this._highMarketCapFilterFactory.Build(
                ruleRunMode,
                marketCap,
                ruleName,
                universeDataRequestsSubscriber,
                operationRunRuleContext);

            return(new UniverseFilterService(
                       this._unsubscriberFactory,
                       highMarketCapFilter,
                       filteredRule,
                       accounts,
                       traders,
                       markets,
                       funds,
                       strategies,
                       sectors,
                       industries,
                       regions,
                       countries,
                       this._loggerFactory.CreateLogger <UniverseFilterService>()));
        }