Как «нарезать» или получить определенное значение из подписки в BLPAPI от Python? - PullRequest
0 голосов
/ 02 мая 2020

Я начал работать над BLPAPI для Python от BBG. И я получил это на работу. Теперь я получаю вывод рыночных данных, но я не знаю, как правильно с ними обращаться (черт возьми, я даже не знаю, что это за данные). Код:

def main():
    options = parseCmdLine()

    # Fill SessionOptions
    sessionOptions = blpapi.SessionOptions()
    sessionOptions.setServerHost(options.host)
    sessionOptions.setServerPort(options.port)

    print("Connecting to %s:%d" % (options.host, options.port))

    # Create a Session
    session = blpapi.Session(sessionOptions)

    # Start a Session
    if not session.start():
        print("Failed to start session.")
        return

    if not session.openService("//blp/mktdata"):
        print("Failed to open //blp/mktdata")
        return

    security1 = "IBM US Equity"
    #security2 = "/cusip/912828GM6@BGN"

    subscriptions = blpapi.SubscriptionList()
    subscriptions.add(security1,
                      "LAST_PRICE,BID,ASK",
                      "",
                      blpapi.CorrelationId(security1))
    session.subscribe(subscriptions)

    try:
        # Process received events
        eventCount = 0
        while(True):
            # We provide timeout to give the chance to Ctrl+C handling:
            event = session.nextEvent(100)
            for msg in event:
                if event.eventType() == blpapi.Event.SUBSCRIPTION_STATUS or \
                        event.eventType() == blpapi.Event.SUBSCRIPTION_DATA:

                    print(msg)

            if event.eventType() == blpapi.Event.SUBSCRIPTION_DATA:
                eventCount += 1
                if eventCount >= options.maxEvents:
                    break

Вывод:

IBM US Equity 
02MAY2020_11:59:47.298 1424:22272 WARN blpapi_selfdescvalueelementimpl.cpp:846 SelfDescValueElementImpl Invalid dateortime wire value: 20121301 
MarketDataEvents = {
    MKTDATA_EVENT_TYPE = SUMMARY
    MKTDATA_EVENT_SUBTYPE = INITPAINT
    BID = 121.820000
    ASK = 121.830000
    BEST_BID = 121.820000
    BEST_ASK = 121.830000
    BID_ALL_SESSION = 121.750000
    ASK_ALL_SESSION = 121.960000
    BID_SIZE_ALL_SESSIONS_RT = 4
    ASK_SIZE_ALL_SESSIONS_RT = 

Итак, мой вопрос, как я могу получить, например: BEST_BID при каждом обновлении события, поэтому я получаю переменную с номером 121.820000 в качестве числа .

1 Ответ

0 голосов
/ 02 мая 2020

Я нашел это. https://bloomberg.github.io/blpapi-docs/python/3.13/_autosummary/blpapi.Element.html#

print (msg.getElement ("BEST_BID"))

И, вероятно, необходимо проверить, существует ли элемент с помощью msg.hasElement ().

...