public MarketValueCalulator(ILogger logger, IMarketDataClient marketDataClient, ICashApiClient cashApi, ILotApiClient lotsApi) { this.logger = logger; this.marketDataClient = marketDataClient; this.cashApi = cashApi; this.lotsApi = lotsApi; }
public static async IAsyncEnumerable <Trade> GetAllTradesAsync(this IMarketDataClient client, string productId, int?after = null, [EnumeratorCancellation] CancellationToken cancellationToken = default) { while (!cancellationToken.IsCancellationRequested) { var trades = await client.GetTradesAsync(productId, after, cancellationToken); foreach (var trade in trades) { yield return(trade); } after = trades.After; } }
public TradabilityCheckerTests(ShrimpyApiFixture apiFixture, ITestOutputHelper output) : base(apiFixture, output) { _marketDataClient = ServiceProvider.GetRequiredService <IMarketDataClient>(); }
static void Main(string[] args) { using (Reference <ILogger> loggerRef = Reference <ILogger> .Create(new ConsoleLogger("TestMds: "))) { loggerRef.Target.LogInfo("{0} Started.", DateTime.Now); try { const MDSProviderId provider = MDSProviderId.Bloomberg; var settings = new NamedValueSet(); const int port = 9123; settings.Set(MdsPropName.Port, port); settings.Set(MdsPropName.EnabledProviders, new[] { MDSProviderId.GlobalIB.ToString(), provider.ToString() }); using (Reference <ICoreClient> clientRef = Reference <ICoreClient> .Create(new CoreClientFactory(loggerRef).SetEnv(BuildConst.BuildEnv).Create())) using (var mds = new MarketDataServer()) { mds.LoggerRef = loggerRef; mds.Client = clientRef; mds.OtherSettings = settings; mds.Start(); loggerRef.Target.LogDebug("Waiting..."); Thread.Sleep(15000); loggerRef.Target.LogDebug("Continuing..."); List <ICoreItem> marketItems; { marketItems = clientRef.Target.LoadItems <Market>(Expr.StartsWith(Expr.SysPropItemName, "Orion.V5r3.Configuration.")); } if (marketItems.Count == 0) { throw new ApplicationException("No curve definitions found!"); } using (IMarketDataClient mdc = MarketDataFactory.Create(loggerRef, null, "localhost:" + port.ToString(CultureInfo.InvariantCulture))) { foreach (ICoreItem marketItem in marketItems) { loggerRef.Target.LogDebug("Curve: {0}", marketItem.Name); var market = (Market)marketItem.Data; //PricingStructure ps = market.Items[0]; PricingStructureValuation psv = market.Items1[0]; QuotedAssetSet curveDefinition; if (psv is YieldCurveValuation valuation) { curveDefinition = valuation.inputs; } else { if (psv is FxCurveValuation curveValuation) { curveDefinition = new QuotedAssetSet { instrumentSet = curveValuation.spotRate.instrumentSet, assetQuote = curveValuation.spotRate.assetQuote } } ; else { throw new NotSupportedException("Unsupported PricingStructureValuation type: " + psv.GetType().Name); } } // call MDS MDSResult <QuotedAssetSet> mdsResponse = mdc.GetMarketQuotes( provider, null, Guid.NewGuid(), false, null, // caspar-specific parameters curveDefinition); if (mdsResponse.Error != null) { throw mdsResponse.Error; } foreach (BasicAssetValuation result in mdsResponse.Result.assetQuote) { string instrId = result.objectReference.href; foreach (BasicQuotation quote in result.quote) { string fieldId = quote.GetStandardFieldName(); loggerRef.Target.LogDebug("{0}/{1} ({2}/{3}) = [{4}]", instrId, fieldId, quote.measureType.Value, quote.quoteUnits.Value, quote.value); } } } } // using MDC mds.Stop(); }// using MDS } catch (Exception e) { loggerRef.Target.Log(e); } loggerRef.Target.LogInfo("{0} Completed.", DateTime.Now); loggerRef.Target.LogInfo("Press ENTER to exit."); Console.ReadLine(); } }
static void Main(string[] args) { Reference <ILogger> loggerRef = Reference <ILogger> .Create(new ConsoleLogger("TestWebMdc: ")); loggerRef.Target.LogInfo("Running..."); try { // get some market quotes from for a Highlander FX curve // and get a Highlander volatility matrix const string curveName = "Orion.V5r3.Configuration.PricingStructures.QR_LIVE.FxCurve.AUD-USD"; QuotedAssetSet quotedAssetSet; using (ICoreClient client = new CoreClientFactory(loggerRef).SetEnv(BuildConst.BuildEnv).Create()) { ICoreItem marketItem = client.LoadItem <Market>(curveName); if (marketItem == null) { throw new ApplicationException("Market '" + curveName + "' not found!"); } var market = (Market)marketItem.Data; //PricingStructure ps = market.Items[0]; PricingStructureValuation psv = market.Items1[0]; var valuation = psv as YieldCurveValuation; if (valuation != null) { quotedAssetSet = valuation.inputs; } else { var curveValuation = psv as FxCurveValuation; if (curveValuation != null) { quotedAssetSet = new QuotedAssetSet { instrumentSet = curveValuation.spotRate.instrumentSet, assetQuote = curveValuation.spotRate.assetQuote } } ; else { throw new NotSupportedException("Unsupported PricingStructureValuation type: " + psv.GetType().Name); } } } //Copied from the working version const int port = 9123; // create MDS client using (IMarketDataClient mdc = MarketDataFactory.Create(loggerRef, null, "localhost:" + port.ToString(CultureInfo.InvariantCulture)))//This was null in the 3rd parameter. { { const MDSProviderId providerId = MDSProviderId.Bloomberg; loggerRef.Target.LogInfo("----- {0} Market Quotes -----", providerId); QuotedAssetSet quotes = mdc.GetMarketQuotes( providerId, null, Guid.NewGuid(), true, null, quotedAssetSet).Result; LogResults(loggerRef.Target, quotes); } { const MDSProviderId providerId = MDSProviderId.GlobalIB; loggerRef.Target.LogInfo("----- {0} Volatility Matrix -----", providerId); var matrixProps = new NamedValueSet(); matrixProps.Set("Function", "MarketData"); matrixProps.Set("Market", "EOD"); matrixProps.Set("CurveName", "AUD-Swap"); matrixProps.Set("PricingStructureType", "RateATMVolatilityMatrix"); QuotedAssetSet matrix = mdc.GetPricingStructure( providerId, null, Guid.NewGuid(), true, null, matrixProps).Result; LogResults(loggerRef.Target, matrix); } } } catch (Exception e) { loggerRef.Target.Log(e); } loggerRef.Target.LogInfo("Completed."); loggerRef.Target.LogInfo("Press ENTER to exit."); Console.ReadLine(); }
public MarketDataClientTests(FireblocksApiFixture apiFixture, ITestOutputHelper output) : base(apiFixture, output) { _marketDataClient = ServiceProvider.GetRequiredService <IMarketDataClient>(); }
public TradabilityChecker(IMarketDataClient marketDataClient) { _marketDataClient = marketDataClient; }