public EquityRuleRampingFactory( IRampingAnalyser rampingAnalyser, IUniverseEquityOrderFilterService orderFilterService, IUniverseEquityMarketCacheFactory equityFactory, IUniverseFixedIncomeMarketCacheFactory fixedIncomeFactory, IMarketTradingHoursService tradingHoursService, ILogger <IRampingRule> logger, ILogger <TradingHistoryStack> tradingHistoryLogger) { this._rampingAnalyser = rampingAnalyser ?? throw new ArgumentNullException(nameof(rampingAnalyser)); this._orderFilterService = orderFilterService ?? throw new ArgumentNullException(nameof(orderFilterService)); this._equityFactory = equityFactory ?? throw new ArgumentNullException(nameof(equityFactory)); this._fixedIncomeFactory = fixedIncomeFactory ?? throw new ArgumentNullException(nameof(fixedIncomeFactory)); this._logger = logger ?? throw new ArgumentNullException(nameof(logger)); this._tradingHistoryLogger = tradingHistoryLogger ?? throw new ArgumentNullException(nameof(tradingHistoryLogger)); this._tradingHoursService = tradingHoursService ?? throw new ArgumentNullException(nameof(tradingHoursService)); }
/// <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)); }
public RampingSteps(ScenarioContext scenarioContext, UniverseSelectionState universeSelectionState) { this._scenarioContext = scenarioContext ?? throw new ArgumentNullException(nameof(scenarioContext)); this._universeSelectionState = universeSelectionState ?? throw new ArgumentNullException(nameof(universeSelectionState)); this._ruleCtx = A.Fake <ISystemProcessOperationRunRuleContext>(); this._dataRequestSubscriber = A.Fake <IUniverseDataRequestsSubscriber>(); this._alertStream = A.Fake <IUniverseAlertStream>(); var repository = A.Fake <IMarketOpenCloseApiCachingDecorator>(); A.CallTo(() => repository.GetAsync()).Returns( new[] { new ExchangeDto { Code = "XLON", MarketOpenTime = TimeSpan.FromHours(8), MarketCloseTime = TimeSpan.FromHours(16), IsOpenOnMonday = true, IsOpenOnTuesday = true, IsOpenOnWednesday = true, IsOpenOnThursday = true, IsOpenOnFriday = true, IsOpenOnSaturday = true, IsOpenOnSunday = true }, new ExchangeDto { Code = "NASDAQ", MarketOpenTime = TimeSpan.FromHours(15), MarketCloseTime = TimeSpan.FromHours(23), IsOpenOnMonday = true, IsOpenOnTuesday = true, IsOpenOnWednesday = true, IsOpenOnThursday = true, IsOpenOnFriday = true, IsOpenOnSaturday = true, IsOpenOnSunday = true } }); this._tradingHoursService = new MarketTradingHoursService( repository, new NullLogger <MarketTradingHoursService>()); this._rampingAnalyser = new RampingAnalyser( new TimeSeriesTrendClassifier(new NullLogger <TimeSeriesTrendClassifier>()), new OrderPriceImpactClassifier()); this._equityOrderFilterService = A.Fake <IUniverseEquityOrderFilterService>(); var equityMarketCacheFactory = new UniverseEquityMarketCacheFactory( new StubRuleRunDataRequestRepository(), new StubRuleRunDataRequestRepository(), new NullLogger <UniverseEquityMarketCacheFactory>()); var fixedIncomeMarketCacheFactory = new UniverseFixedIncomeMarketCacheFactory( new StubRuleRunDataRequestRepository(), new StubRuleRunDataRequestRepository(), new NullLogger <UniverseFixedIncomeMarketCacheFactory>()); this._equityRuleRampingFactory = new EquityRuleRampingFactory( this._rampingAnalyser, this._equityOrderFilterService, equityMarketCacheFactory, fixedIncomeMarketCacheFactory, this._tradingHoursService, new NullLogger <RampingRule>(), new NullLogger <TradingHistoryStack>()); }