public void AddChangeStopFullInstrumentConfig() { Initialize(); _testEvent.Algorithms[0].InstrumentConfigInfo = _mmRest.CreateInstrument(_testEvent.Algorithms[0].InstrumentConfigInfo); _testEvent.Algorithms[0].SetAlgoId(_testEvent.Algorithms[0].InstrumentConfigInfo.AlgoId); _testEvent.Algorithms[0].PricerConfigInfo = _mmRest.SavePricer(_testEvent.Algorithms[0].PricerConfigInfo); _testEvent.Algorithms[0].HedgerConfigInfo = _mmRest.SaveHedger(_testEvent.Algorithms[0].HedgerConfigInfo); _testEvent.Algorithms[0].RiskLimitConfigInfo = _mmRest.SaveRiskLimitsConfig(_testEvent.Algorithms[0].RiskLimitConfigInfo); Thread.Sleep(1000); // Check full config bool testResult = _testEvent.Algorithms[0].Equals(_mmRest.GetInstrument(_testEvent.Algorithms[0].AlgoId)); _mmRest.StartInstrument(_testEvent.Algorithms[0].AlgoId); _testEvent.Algorithms[0].InstrumentConfigInfo.Running = true; _mmRest.StartPricer(_testEvent.Algorithms[0].AlgoId); _testEvent.Algorithms[0].PricerConfigInfo.Running = true; _mmRest.StartHedger(_testEvent.Algorithms[0].AlgoId); _testEvent.Algorithms[0].HedgerConfigInfo.Running = true; Thread.Sleep(1000); // Check start testResult = _testEvent.Algorithms[0].Equals(_mmRest.GetInstrument(_testEvent.Algorithms[0].AlgoId)) && testResult; // Change pricer PricerConfigDto newPricerConfig = AlgorithmInfo.CreateConfig <PricerConfigDto>("pricer3.json", _testEvent.Algorithms[0].AlgoId); _testEvent.Algorithms[0].PricerConfigInfo = _mmRest.SavePricer(newPricerConfig); // Change hedger HedgerConfigDto newHedgerConfig = AlgorithmInfo.CreateConfig <HedgerConfigDto>("hedger2.json", _testEvent.Algorithms[0].AlgoId); _testEvent.Algorithms[0].HedgerConfigInfo = _mmRest.SaveHedger(newHedgerConfig); // Change riskLimits RiskLimitsConfigDto newRiskLimitsConfig = AlgorithmInfo.CreateConfig <RiskLimitsConfigDto>("riskLimit3.json", _testEvent.Algorithms[0].AlgoId); _testEvent.Algorithms[0].RiskLimitConfigInfo = _mmRest.SaveRiskLimitsConfig(newRiskLimitsConfig); Thread.Sleep(1000); // Check after change testResult = _testEvent.Algorithms[0].Equals(_mmRest.GetInstrument(_testEvent.Algorithms[0].AlgoId)) && testResult; _mmRest.StopHedger(_testEvent.Algorithms[0].AlgoId); _testEvent.Algorithms[0].InstrumentConfigInfo.Running = false; _mmRest.StopPricer(_testEvent.Algorithms[0].AlgoId); _testEvent.Algorithms[0].PricerConfigInfo.Running = false; _mmRest.StopInstrument(_testEvent.Algorithms[0].AlgoId); _testEvent.Algorithms[0].HedgerConfigInfo.Running = false; Thread.Sleep(1000); // Check stop testResult = _testEvent.Algorithms[0].Equals(_mmRest.GetInstrument(_testEvent.Algorithms[0].AlgoId)) && testResult; _mmRest.DeleteAlgorithm(_testEvent.Algorithms[0].AlgoId); Thread.Sleep(1000); // Check delete and test result Assert.AreEqual(true, _mmRest.GetInstrument(_testEvent.Algorithms[0].AlgoId) == null, "Deleted algorithm doesn't equal to null"); Assert.AreEqual(true, testResult, TestFail); }
public bool EqualRiskLimit(RiskLimitsConfigDto riskLimitConfig, bool printMessage) { bool isEqual = RiskLimitConfigInfo.AlgoId == riskLimitConfig.AlgoId && RiskLimitConfigInfo.AlgoKey == riskLimitConfig.AlgoKey && RiskLimitConfigInfo.MinBuyQuoteActiveTime == riskLimitConfig.MinBuyQuoteActiveTime && RiskLimitConfigInfo.MinSellQuoteActiveTime == riskLimitConfig.MinSellQuoteActiveTime && Util.CompareDouble(RiskLimitConfigInfo.MaxLongExposure, riskLimitConfig.MaxLongExposure) && Util.CompareDouble(RiskLimitConfigInfo.MaxShortExposure, riskLimitConfig.MaxShortExposure); if (!isEqual && printMessage) { Console.WriteLine("Risk Limits don't match with added."); } return(isEqual); }
public void CompareSourceAgainstTargetBook() { Initialize(); // 1 _testEvent.Algorithms[0].InstrumentConfigInfo = _mmRest.CreateInstrument(_testEvent.Algorithms[0].InstrumentConfigInfo); _testEvent.Algorithms[0].SetAlgoId(_testEvent.Algorithms[0].InstrumentConfigInfo.AlgoId); _testEvent.Algorithms[0].PricerConfigInfo = _mmRest.SavePricer(_testEvent.Algorithms[0].PricerConfigInfo); _testEvent.Algorithms[0].HedgerConfigInfo = _mmRest.SaveHedger(_testEvent.Algorithms[0].HedgerConfigInfo); _testEvent.Algorithms[0].RiskLimitConfigInfo = _mmRest.SaveRiskLimitsConfig(_testEvent.Algorithms[0].RiskLimitConfigInfo); _mmRest.StartInstrument(_testEvent.Algorithms[0].AlgoId); _mmRest.StartPricer(_testEvent.Algorithms[0].AlgoId); // 2 _testEvent.Algorithms[1].InstrumentConfigInfo = _mmRest.CreateInstrument(_testEvent.Algorithms[1].InstrumentConfigInfo); _testEvent.Algorithms[1].SetAlgoId(_testEvent.Algorithms[1].InstrumentConfigInfo.AlgoId); _testEvent.Algorithms[1].PricerConfigInfo = _mmRest.SavePricer(_testEvent.Algorithms[1].PricerConfigInfo); _testEvent.Algorithms[1].HedgerConfigInfo = _mmRest.SaveHedger(_testEvent.Algorithms[1].HedgerConfigInfo); _testEvent.Algorithms[1].RiskLimitConfigInfo = _mmRest.SaveRiskLimitsConfig(_testEvent.Algorithms[1].RiskLimitConfigInfo); _mmRest.StartInstrument(_testEvent.Algorithms[1].AlgoId); _mmRest.StartPricer(_testEvent.Algorithms[1].AlgoId); Thread.Sleep(1000); var sourceBookListener = _wsFactory.CreateSourceMarketDataSubscription(); var targetBookListener = _wsFactory.CreateTargetMarketDataSubscription(); targetBookListener.Subscribe(_testEvent.Algorithms[0].AlgoId, _testEvent.Algorithms[0].OnTargetMessage); _testEvent.StartTestTime = DateTime.Now.AddSeconds(-2); _testEvent.Algorithms[1].SourceMessageHandler += _testEvent.CompareSourceAgainstTargetBook; sourceBookListener.Subscribe(_testEvent.Algorithms[1].AlgoId, _testEvent.Algorithms[1].OnSourceMessage); WaitTestEvents(4); _testEvent.StartTestTime = DateTime.Now.AddSeconds(-1); // Change pricer PricerConfigDto newPricerConfig = AlgorithmInfo.CreateConfig <PricerConfigDto>("pricer3.json", _testEvent.Algorithms[0].AlgoId); _testEvent.Algorithms[0].PricerConfigInfo = _mmRest.SavePricer(newPricerConfig); // Change riskLimits RiskLimitsConfigDto newRiskLimitsConfig = AlgorithmInfo.CreateConfig <RiskLimitsConfigDto>("riskLimit3.json", _testEvent.Algorithms[0].AlgoId); _testEvent.Algorithms[0].RiskLimitConfigInfo = _mmRest.SaveRiskLimitsConfig(newRiskLimitsConfig); Debug.WriteLine("Pricer and limits are changed"); WaitTestEvents(7); targetBookListener.Unsubscribe(_testEvent.Algorithms[0].AlgoId, _testEvent.Algorithms[0].OnTargetMessage); sourceBookListener.Unsubscribe(_testEvent.Algorithms[1].AlgoId, _testEvent.Algorithms[1].OnSourceMessage); _testEvent.Algorithms[1].SourceMessageHandler -= _testEvent.CompareSourceAgainstTargetBook; Thread.Sleep(500); _wsFactory.Close(); _mmRest.StopPricer(_testEvent.Algorithms[0].AlgoId); _mmRest.StopInstrument(_testEvent.Algorithms[0].AlgoId); _mmRest.StopPricer(_testEvent.Algorithms[1].AlgoId); _mmRest.StopInstrument(_testEvent.Algorithms[1].AlgoId); Thread.Sleep(500); _mmRest.DeleteAlgorithm(_testEvent.Algorithms[0].AlgoId); _mmRest.DeleteAlgorithm(_testEvent.Algorithms[1].AlgoId); Thread.Sleep(1000); Assert.AreEqual(true, _mmRest.GetInstrument(_testEvent.Algorithms[0].AlgoId) == null, "Deleted algorithm doesn't equal to null"); Assert.AreEqual(true, _mmRest.GetInstrument(_testEvent.Algorithms[1].AlgoId) == null, "Deleted algorithm doesn't equal to null"); Assert.AreEqual(true, _testEvent.TestResult, TestFail); }
public RiskLimitsConfigDto SaveRiskLimitsConfig(RiskLimitsConfigDto riskLimitsConfigDto) { return(_restService.Post <RiskLimitsConfigDto, RiskLimitsConfigDto>( "/api/v0/config/riskLimits/save", riskLimitsConfigDto)); }