private CancelledOrderRule BuildRule(CancelledOrderRuleEquitiesParameters parameters = null) { if (parameters == null) { parameters = new CancelledOrderRuleEquitiesParameters( "id", TimeSpan.FromMinutes(30), 0.5m, null, 10, 10, null, false, true); } var orderRule = new CancelledOrderRule( parameters, this._ruleCtx, this._alertStream, this._orderFilter, this.BuildEquityFactory(), this.BuildFixedIncomeFactory(), RuleRunMode.ValidationRun, this._logger, this._tradingHistoryLogger); return(orderRule); }
public void OnNext_SendsExpectedMessage_ForTradeCountRuleBreach_WithNoMax() { var cancelledOrdersByTradeSize = new List <Order> { this.OrderFactory(OrderStatus.Cancelled), this.OrderFactory(OrderStatus.Cancelled), this.OrderFactory(OrderStatus.Cancelled), this.OrderFactory(OrderStatus.Cancelled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled) }; var parameters = new CancelledOrderRuleEquitiesParameters( "id", TimeSpan.FromMinutes(30), null, 0.3m, 3, null, null, false, true); var orderRule = new CancelledOrderRule( parameters, this._ruleCtx, this._alertStream, this._orderFilter, this.BuildEquityFactory(), this.BuildFixedIncomeFactory(), RuleRunMode.ValidationRun, this._logger, this._tradingHistoryLogger); var universeEvents = cancelledOrdersByTradeSize.Select(x => new UniverseEvent(UniverseStateEvent.Order, DateTime.UtcNow, x)); foreach (var order in universeEvents) { orderRule.OnNext(order); } A.CallTo(() => this._alertStream.Add(A <IUniverseAlertEvent> .Ignored)) .MustHaveHappenedANumberOfTimesMatching(x => x == 11); }
public void OnNext_DoesNotSendsMessage_ForNoTradeCountRuleBreach() { var trade = this.OrderFactory(OrderStatus.Cancelled); trade.OrderFilledVolume = trade.OrderFilledVolume * 100; var cancelledOrdersByTradeSize = new List <Order> { trade, this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled), this.OrderFactory(OrderStatus.Filled) }; var parameters = new CancelledOrderRuleEquitiesParameters( "id", TimeSpan.FromMinutes(30), null, 0.70m, 3, 10, null, false, true); var orderRule = new CancelledOrderRule( parameters, this._ruleCtx, this._alertStream, this._orderFilter, this.BuildEquityFactory(), this.BuildFixedIncomeFactory(), RuleRunMode.ValidationRun, this._logger, this._tradingHistoryLogger); var universeEvents = cancelledOrdersByTradeSize.Select(x => new UniverseEvent(UniverseStateEvent.Order, DateTime.UtcNow, x)); foreach (var order in universeEvents) { orderRule.OnNext(order); } A.CallTo(() => this._alertStream.Add(A <IUniverseAlertEvent> .Ignored)).MustNotHaveHappened(); }
public void Tuner_AdjustsCancelledOrderField_AsExpected() { var tuner = new RuleParameterTuner(this._logger); var ruleParameters = new CancelledOrderRuleEquitiesParameters( "id", TimeSpan.FromHours(1), 0.3m, 0.2m, 2, 4, new ClientOrganisationalFactors[0], true, true); var result = tuner.ParametersFramework(ruleParameters); Assert.That(result, Is.Not.Null); Assert.That(result.Count, Is.EqualTo(27)); }
public void GivenIHaveTheCancelledOrderRuleParameterValues(Table cancelledOrderParameters) { if (cancelledOrderParameters.RowCount != 1) { this._scenarioContext.Pending(); return; } var parameters = cancelledOrderParameters.CreateInstance <CancelledOrderApiParameters>(); this._parameters = new CancelledOrderRuleEquitiesParameters( "0", new TimeSpan(parameters.WindowHours, 0, 0), parameters.CancelledOrderPercentagePositionThreshold, parameters.CancelledOrderCountPercentageThreshold, parameters.MinimumNumberOfTradesToApplyRuleTo, parameters.MaximumNumberOfTradesToApplyRuleTo, new[] { ClientOrganisationalFactors.None }, true, true); }