Asp.net 如何使用bloomberg DLWS获取未来安全链

Asp.net 如何使用bloomberg DLWS获取未来安全链,asp.net,bloomberg,Asp.net,Bloomberg,我们正在使用彭博DLWS-Persecurity。我正试图找到一种方法来获取给定证券的期货链。我试图在dlws文档中查找,但找不到它。DLWS是否支持此功能?或者我应该使用API吗?最好通过帮助询问DL支持团队该字段在他们的字段字典中是否可用。根据您想对数据做什么以及在何处使用数据,API可能是检索数据的更好方法。只需在此处发布,以便帮助他人。我联系了BL团队,我们可以拿到期货链。需要通过通配符(宏)搜索仪器: 对getdata的调用将从所有交易所获取ibm的所有合同。我碰巧正在处理这个问题。请

我们正在使用彭博DLWS-Persecurity。我正试图找到一种方法来获取给定证券的期货链。我试图在dlws文档中查找,但找不到它。DLWS是否支持此功能?或者我应该使用API吗?

最好通过帮助询问DL支持团队该字段在他们的字段字典中是否可用。根据您想对数据做什么以及在何处使用数据,API可能是检索数据的更好方法。

只需在此处发布,以便帮助他人。我联系了BL团队,我们可以拿到期货链。需要通过通配符(宏)搜索仪器:


对getdata的调用将从所有交易所获取ibm的所有合同。

我碰巧正在处理这个问题。请原谅代码有点粗糙,但确实有效。我只是希望正确地处理结果,但是如果您将下面的日志语句更改为console.writeline或类似的内容,您将看到链。希望它能帮助别人

 Service refDataService = session.GetService("//blp/refdata");

        Request request = refDataService.CreateRequest("ReferenceDataRequest");
        Element securitieslElement = request.GetElement("securities");
        //securities.AppendValue("QEAA Comdty");
        securitieslElement.AppendValue("COA COMDTY");



        request.Append("fields", "FUT_CHAIN");

        Element overrides = request.GetElement("overrides");
        Element override1 = overrides.AppendElement();
        override1.SetElement("fieldId", "CHAIN_DATE");
        override1.SetElement("value", DateTime.Now.ToString("yyyyMMdd"));
        Element override2 = overrides.AppendElement();
        override2.SetElement("fieldId", "INCLUDE_EXPIRED_CONTRACTS");
        override2.SetElement("value", 'N');

        System.Console.WriteLine("Sending Request: " + request);
        session.SendRequest(request, null);

        while (true)
        {
            Event eventObj = session.NextEvent();
            if (eventObj.Type == Event.EventType.RESPONSE)
            {
                Log.Info("EventObj is type response - break.");
                break;
            }

            foreach (Message msg in eventObj)
            {
                try
                {
                    Log.Debug($"Processing message : {msg.AsElement}");

                    if (msg.HasElement(RESPONSE_ERROR))
                    {
                        WriteErrorInfo("REQUEST FAILED: ", msg.GetElement(RESPONSE_ERROR));
                        continue;
                    }

                    Element securities = msg.GetElement("securityData");
                    int numSecurities = securities.NumValues;
                    Log.Info("Processing " + numSecurities + " securities:");
                    for (int i = 0; i < numSecurities; ++i)
                    {
                        Element security = securities.GetValueAsElement(i);
                        string ticker = security.GetElementAsString(SECURITY);
                        Log.Info($"Ticker: {ticker}");

                        if (security.HasElement("securityError"))
                        {
                            WriteErrorInfo("\tSECURITY FAILED: ", security.GetElement(SECURITY_ERROR));
                            continue;
                        }

                        Log.Info("Processing fields");
                        Element fields = security.GetElement("fieldData");


                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
            }
Service refDataService=session.GetService(“//blp/refdata”);
Request-Request=refDataService.CreateRequest(“ReferenceDataRequest”);
元素securitieslement=request.GetElement(“证券”);
//证券。附加价值(“QEAA Comdty”);
证券交易附加价值(“COA COMDTY”);
请求。追加(“字段”、“未来链”);
元素覆盖=request.GetElement(“覆盖”);
Element override1=overrides.AppendElement();
覆盖1.SetElement(“字段ID”、“链_日期”);
重写1.SetElement(“value”,DateTime.Now.ToString(“yyyyMMdd”);
Element override2=overrides.AppendElement();
覆盖2.SetElement(“字段ID”,“包括过期的合同”);
重写2.SetElement(“value”,N');
System.Console.WriteLine(“发送请求:+请求”);
session.SendRequest(请求,null);
while(true)
{
Event eventObj=session.NextEvent();
if(eventObj.Type==Event.EventType.RESPONSE)
{
Info(“EventObj是类型response-break.”);
打破
}
foreach(eventObj中的消息msg)
{
尝试
{
Log.Debug($“正在处理消息:{msg.AsElement}”);
if(msg.HasElement(响应_错误))
{
WriteErrorInfo(“请求失败:”,msg.GetElement(响应_错误));
继续;
}
Element securities=msg.GetElement(“securityData”);
int numSecurities=securities.numvalue;
Log.Info(“处理”+numSecurities+“证券”);
对于(int i=0;i
我还应该说我从这篇文章中得到了以下信息:
 Service refDataService = session.GetService("//blp/refdata");

        Request request = refDataService.CreateRequest("ReferenceDataRequest");
        Element securitieslElement = request.GetElement("securities");
        //securities.AppendValue("QEAA Comdty");
        securitieslElement.AppendValue("COA COMDTY");



        request.Append("fields", "FUT_CHAIN");

        Element overrides = request.GetElement("overrides");
        Element override1 = overrides.AppendElement();
        override1.SetElement("fieldId", "CHAIN_DATE");
        override1.SetElement("value", DateTime.Now.ToString("yyyyMMdd"));
        Element override2 = overrides.AppendElement();
        override2.SetElement("fieldId", "INCLUDE_EXPIRED_CONTRACTS");
        override2.SetElement("value", 'N');

        System.Console.WriteLine("Sending Request: " + request);
        session.SendRequest(request, null);

        while (true)
        {
            Event eventObj = session.NextEvent();
            if (eventObj.Type == Event.EventType.RESPONSE)
            {
                Log.Info("EventObj is type response - break.");
                break;
            }

            foreach (Message msg in eventObj)
            {
                try
                {
                    Log.Debug($"Processing message : {msg.AsElement}");

                    if (msg.HasElement(RESPONSE_ERROR))
                    {
                        WriteErrorInfo("REQUEST FAILED: ", msg.GetElement(RESPONSE_ERROR));
                        continue;
                    }

                    Element securities = msg.GetElement("securityData");
                    int numSecurities = securities.NumValues;
                    Log.Info("Processing " + numSecurities + " securities:");
                    for (int i = 0; i < numSecurities; ++i)
                    {
                        Element security = securities.GetValueAsElement(i);
                        string ticker = security.GetElementAsString(SECURITY);
                        Log.Info($"Ticker: {ticker}");

                        if (security.HasElement("securityError"))
                        {
                            WriteErrorInfo("\tSECURITY FAILED: ", security.GetElement(SECURITY_ERROR));
                            continue;
                        }

                        Log.Info("Processing fields");
                        Element fields = security.GetElement("fieldData");


                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
            }