2

我正在尝试从 Excel 加载项迁移到 Bloomberg C# Desktop API。对于像 BDP("AB IB Equity","best_analyst_rating") 这样的简单调用,我可以使用以下方法解决问题:

    private void sendRefDataRequest(Session session)
    {            
        Service refDataService = session.GetService("//blp/refdata");
        Request request = refDataService.CreateRequest("ReferenceDataRequest");

        // Add securities to request
        Element securities = request.GetElement("securities");
        securities.AppendValue("AB IB Equity");
        Element fields = request.GetElement("fields");
        fields.AppendValue("best_analyst_rating");
        System.Console.WriteLine("Sending Request: " + request);
        session.SendRequest(request, null);
    }

但是对于涉及 BDP 的其他选项的更复杂的调用,例如 BDP("AB IB Equity","bs_tot_asset","EQY_Consolidated","Y","EQY_FUND_Relative_Period","-0FY") 我不知道如何将其转换为 C#来电。感谢您对此的任何帮助。

4

2 回答 2

6

您需要设置覆盖。对于任何给定的字段,您都可以在 Bloomberg 终端中使用 FLDS 找到这些字段。

Element overrides = request.GetElement("overrides");

然后遍历必要的覆盖,将 fieldId 设置为 FLDS 的助记符,并将值设置为您的特定请求:

Element override = overrides.AppendElement();
override.SetElement("fieldId","EQY_CONSOLIDATED");
override.SetElement("value","Y");
于 2011-08-17T23:06:15.133 回答
1

我为此创建了一个扩展方法:

public static void AddOverride(this Bloomberglp.Blpapi.Request request, string fieldId, string fieldValue)
{
    var override = request["overrides"].AppendElement();
    override.SetElement("fieldId",fieldId);
    override.SetElement("value", fieldValue);
}
于 2013-07-06T14:05:54.353 回答