Я начал работать над 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 в качестве числа .