public RampingRuleBreach( TimeSpan window, ITradePosition trades, FinancialInstrument security, string ruleParameterId, string systemOperationId, string correlationId, IFactorValue factorValue, IRampingStrategySummaryPanel summaryPanel, IRampingRuleEquitiesParameters parameters, string description, string caseTitle, DateTime universeDateTime) { this.Window = window; this.Trades = trades; this.Security = security; this.RuleParameterId = ruleParameterId ?? string.Empty; this.SystemOperationId = systemOperationId ?? string.Empty; this.CorrelationId = correlationId ?? string.Empty; this.FactorValue = factorValue; this.SummaryPanel = summaryPanel; this.RuleParameters = parameters; this.Description = description ?? string.Empty; this.CaseTitle = caseTitle ?? string.Empty; this.UniverseDateTime = universeDateTime; }
/// <summary> /// The decorate with filters. /// </summary> /// <param name="operationContext"> /// The operation context. /// </param> /// <param name="parameter"> /// The parameter. /// </param> /// <param name="rampingRule"> /// The ramping rule. /// </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, IRampingRuleEquitiesParameters parameter, IUniverseRule rampingRule, 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( rampingRule, parameter.Accounts, parameter.Traders, parameter.Markets, parameter.Funds, parameter.Strategies, parameter.Sectors, parameter.Industries, parameter.Regions, parameter.Countries, parameter.MarketCapFilter, ruleRunMode, "Ramping Equity", universeDataRequestsSubscriber, processOperationRunRuleContext); var decoratedFilter = filteredUniverse; if (parameter.HasVenueVolumeFilters()) { decoratedFilter = this.decoratorFilterFactory.Build( parameter.Windows, filteredUniverse, parameter.VenueVolumeFilter, processOperationRunRuleContext, universeDataRequestsSubscriber, this.DataSourceForWindow(parameter.Windows), ruleRunMode); } decoratedFilter.Subscribe(rampingRule); return(decoratedFilter); } return(rampingRule); }
public IRampingRule Build( IRampingRuleEquitiesParameters equitiesParameters, ISystemProcessOperationRunRuleContext ruleCtx, IUniverseAlertStream alertStream, RuleRunMode runMode, IUniverseDataRequestsSubscriber dataRequestSubscriber) { return(new RampingRule( equitiesParameters, alertStream, ruleCtx, this._equityFactory, this._fixedIncomeFactory, this._orderFilterService, runMode, this._rampingAnalyser, this._tradingHoursService, dataRequestSubscriber, this._logger, this._tradingHistoryLogger)); }
/// <summary> /// The subscribe parameter to universe. /// </summary> /// <param name="execution"> /// The execution. /// </param> /// <param name="operationContext"> /// The operation context. /// </param> /// <param name="alertStream"> /// The alert stream. /// </param> /// <param name="parameter"> /// The parameter. /// </param> /// <param name="dataRequestSubscriber"> /// The data request subscriber. /// </param> /// <returns> /// The <see cref="IUniverseRule"/>. /// </returns> private IUniverseRule SubscribeParameterToUniverse( ScheduledExecution execution, ISystemProcessOperationContext operationContext, IUniverseAlertStream alertStream, IRampingRuleEquitiesParameters parameter, IUniverseDataRequestsSubscriber dataRequestSubscriber) { var ruleCtx = operationContext.CreateAndStartRuleRunContext( Rules.Ramping.GetDescription(), EquityRuleRampingFactory.Version, parameter.Id, (int)Rules.Ramping, execution.IsBackTest, execution.TimeSeriesInitiation.DateTime, execution.TimeSeriesTermination.DateTime, execution.CorrelationId, execution.IsForceRerun); var runMode = execution.IsForceRerun ? RuleRunMode.ForceRun : RuleRunMode.ValidationRun; var rampingRule = this.equityRuleRampingFactory.Build( parameter, ruleCtx, alertStream, runMode, dataRequestSubscriber); var rampingRuleOrgFactors = this.brokerServiceFactory.Build( rampingRule, parameter.Factors, parameter.AggregateNonFactorableIntoOwnCategory); var rampingRuleFiltered = this.DecorateWithFilters( operationContext, parameter, rampingRuleOrgFactors, dataRequestSubscriber, ruleCtx, runMode); return(rampingRuleFiltered); }
/// <summary> /// Initializes a new instance of the <see cref="RampingRule"/> class. /// </summary> /// <param name="rampingParameters"> /// The ramping parameters. /// </param> /// <param name="alertStream"> /// The alert stream. /// </param> /// <param name="ruleContext"> /// The rule context. /// </param> /// <param name="equityFactory"> /// The factory. /// </param> /// <param name="fixedIncomeFactory"> /// The factory. /// </param> /// <param name="orderFilter"> /// The order filter. /// </param> /// <param name="runMode"> /// The run mode. /// </param> /// <param name="rampingAnalyzer"> /// The ramping analyzer. /// </param> /// <param name="tradingHoursService"> /// The trading hours service. /// </param> /// <param name="dataRequestSubscriber"> /// The data request subscriber. /// </param> /// <param name="logger"> /// The logger. /// </param> /// <param name="tradingStackLogger"> /// The trading stack logger. /// </param> public RampingRule( IRampingRuleEquitiesParameters rampingParameters, IUniverseAlertStream alertStream, ISystemProcessOperationRunRuleContext ruleContext, IUniverseEquityMarketCacheFactory equityFactory, IUniverseFixedIncomeMarketCacheFactory fixedIncomeFactory, IUniverseOrderFilter orderFilter, RuleRunMode runMode, IRampingAnalyser rampingAnalyzer, IMarketTradingHoursService tradingHoursService, IUniverseDataRequestsSubscriber dataRequestSubscriber, ILogger logger, ILogger <TradingHistoryStack> tradingStackLogger) : base( rampingParameters?.Windows?.BackwardWindowSize ?? TimeSpan.FromDays(7), TimeSpan.FromDays(30), rampingParameters?.Windows?.FutureWindowSize ?? TimeSpan.Zero, Domain.Surveillance.Scheduling.Rules.Ramping, EquityRuleRampingFactory.Version, "Ramping Rule", ruleContext, equityFactory, fixedIncomeFactory, runMode, logger, tradingStackLogger) { this.rampingParameters = rampingParameters ?? throw new ArgumentNullException(nameof(rampingParameters)); this.alertStream = alertStream ?? throw new ArgumentNullException(nameof(alertStream)); this.ruleContext = ruleContext ?? throw new ArgumentNullException(nameof(ruleContext)); this.orderFilter = orderFilter ?? throw new ArgumentNullException(nameof(orderFilter)); this.rampingAnalyzer = rampingAnalyzer ?? throw new ArgumentNullException(nameof(rampingAnalyzer)); this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); this.tradingHoursService = tradingHoursService ?? throw new ArgumentNullException(nameof(tradingHoursService)); this.dataRequestSubscriber = dataRequestSubscriber ?? throw new ArgumentNullException(nameof(dataRequestSubscriber)); }