public RatesObj(RatesObj ratesObj, Decimal newValue) { Created = DateTime.Now; Publisher = ratesObj.Publisher; InstrumentId = ratesObj.InstrumentId; Instrument = ratesObj.Instrument; Currency = ratesObj.Currency; Term = ratesObj.Term; Rate1 = ratesObj.Rate1 + newValue; Rate1Measure = ratesObj.Rate1Measure; Rate1Quotes = ratesObj.Rate1Quotes; if (ratesObj.Rate2 != null) { Rate2 = ratesObj.Rate2; Rate2Measure = ratesObj.Rate2Measure; Rate2Quotes = ratesObj.Rate2Quotes; } }
private void ProcessItem(Market market) { if (market?.Items1?[0] is YieldCurveValuation psv && psv.inputs != null) { int index = 0; foreach (var asset in psv.inputs.instrumentSet.Items) { var item = new RatesObj(asset, psv.inputs.assetQuote[index]); _qasBaseView.Add(new RatesObj(item, 0.0m)); _qasDefView.UpdateData(new ViewChangeNotification <RatesObj> { OldData = item, NewData = item }); index++; } } }
private void OnTimedEvent(object source, EventArgs e) { var newValue = _rand.Next(-100, 101); //1. Update the rates with a random adjustment // var value = Convert.ToDecimal(newValue) / 100000.0m; var rateChangeList = new List <RatesObj>(); foreach (var asset in _qasBaseView) { var item = new RatesObj(asset, value); rateChangeList.Add(item); _qasDefView.UpdateData(new ViewChangeNotification <RatesObj> { OldData = item, NewData = item }); } _loggerRef.Target.LogDebug("Update market data shifted by: {0} %", value * 100.0m); //2. Publish the QuotedAssetSet to the cache. // var qasProperties = _curveProperties.Clone(); var curveName = qasProperties.GetValue <String>(CurveProp.CurveName); var curveType = qasProperties.GetValue <String>(CurveProp.PricingStructureType); var market = qasProperties.GetValue <String>(CurveProp.Market);//Use Market for real time. var nameSpace = qasProperties.GetValue <String>(EnvironmentProp.NameSpace); var itemName = FunctionProp.QuotedAssetSet + "." + market + "." + curveType + "." + curveName; qasProperties.Set(EnvironmentProp.DataGroup, nameSpace + "." + FunctionProp.QuotedAssetSet); qasProperties.Set(EnvironmentProp.Function, FunctionProp.QuotedAssetSet.ToString()); qasProperties.Set(CurveProp.BuildDateTime, DateTime.Now); qasProperties.Set(CurveProp.UniqueIdentifier, itemName); var assetIdentifiers = new List <String>(); foreach (var asset in rateChangeList) { assetIdentifiers.AddRange(asset.GetAssetIds()); } var values = new List <Decimal>(); foreach (var asset in rateChangeList) { values.AddRange(asset.GetValues()); } var measureTypes = new List <String>(); foreach (var asset in rateChangeList) { measureTypes.AddRange(asset.GetMeasureTypes()); } var priceQuoteUnits = new List <String>(); foreach (var asset in rateChangeList) { priceQuoteUnits.AddRange(asset.GetPriceQuoteUnits()); } var liveQAS = AssetHelper.Parse(assetIdentifiers.ToArray(), values.ToArray(), measureTypes.ToArray(), priceQuoteUnits.ToArray()); //TODO Populate the market data set. _cache.SaveObject(liveQAS, nameSpace + "." + itemName, qasProperties, false, TimeSpan.FromDays(7)); _loggerRef.Target.LogDebug("Publish new market data at:{0}", DateTime.Now); }