public MarketValueCalulator(ILogger logger,
                             IMarketDataClient marketDataClient,
                             ICashApiClient cashApi,
                             ILotApiClient lotsApi)
 {
     this.logger           = logger;
     this.marketDataClient = marketDataClient;
     this.cashApi          = cashApi;
     this.lotsApi          = lotsApi;
 }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
 public TradabilityCheckerTests(ShrimpyApiFixture apiFixture, ITestOutputHelper output) : base(apiFixture, output)
 {
     _marketDataClient = ServiceProvider.GetRequiredService <IMarketDataClient>();
 }
Ejemplo n.º 4
0
        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();
            }
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
 public MarketDataClientTests(FireblocksApiFixture apiFixture, ITestOutputHelper output) : base(apiFixture, output)
 {
     _marketDataClient = ServiceProvider.GetRequiredService <IMarketDataClient>();
 }
Ejemplo n.º 7
0
 public TradabilityChecker(IMarketDataClient marketDataClient)
 {
     _marketDataClient = marketDataClient;
 }