Python Bloomberg API请求未返回结果

时间:2018-10-12 20:49:46

标签: python-3.x blpapi

我正在尝试安装Bloomberg API。我已按照所有说明进行操作,并且可以运行代码而不会产生任何错误。但是,它不会产生任何有用的输出,这使我认为安装出现了问题。我已经尝试了四天,并且用键盘敲打我的头!希望有人遇到了这个问题并可以帮助我。

我正在使用“ IntradayTickExample”,可在此处使用:

https://github.com/msitt/blpapi-python/blob/master/examples/IntradayTickExample.py

输出看起来像这样:

IntradayTickExample
Connecting to localhost:8194

12OCT2018_16:37:35.207 7780:22292 WARN blpapi_platformcontroller.cpp:347 
blpapi.session.platformcontroller.{1} Connectivity restored.
Sending Request: IntradayTickRequest = {
    security = "IBM US Equity"
    eventTypes[] = {
        TRADE
    }
    startDateTime = 2008-08-11T15:30:00.000
    endDateTime = 2008-08-11T15:35:00.000
}

Processing Response
IntradayTickResponse = {
    tickData = {
        eidData[] = {
        }
        tickData[] = {
        }
    }
}

TIME                            TYPE    VALUE           SIZE    CC
----                            ----    -----           ----    --


------------------
(program exited with code: 0)

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

Bloomberg将您可以下载的报价历史记录的数量限制为最近10天内。运行与链接到的对象相似的示例将返回数据,前提是该数据处于正确的范围内(自2018年10月24日起运行)。

import blpapi
HOST = "localhost"
PORT = 8194

def main():
    sessionOptions = blpapi.SessionOptions()
    sessionOptions.setServerHost(HOST)
    sessionOptions.setServerPort(PORT)

    session = blpapi.Session(sessionOptions)

    if not session.start():
        print("Failed to start session.")
        return

    session.openService("//blp/refdata")
    refDataService = session.getService("//blp/refdata")

    request1 = refDataService.createRequest("IntradayTickRequest")
    request1.set("security", "IBM US Equity")
    request1.getElement("eventTypes").appendValue("TRADE")
    request1.set("startDateTime", "2008-08-11T15:30:00.000")
    request1.set("endDateTime", "2008-08-11T15:35:00.000")

    request2 = refDataService.createRequest("IntradayTickRequest")
    request2.set("security", "IBM US Equity")
    request2.getElement("eventTypes").appendValue("TRADE")
    request2.set("startDateTime", "2018-10-23T15:30:00.000")
    request2.set("endDateTime", "2018-10-23T15:30:01.000")

    session.sendRequest(request1)
    session.sendRequest(request2)

    while True:
        ev = session.nextEvent(500)
        if ev.eventType() == blpapi.Event.TIMEOUT:
            break
        for msg in ev:
            print(msg)

运行此操作,您可以看到在第二个示例中获得了数据,因为日期范围已正确设置。

main()
SessionConnectionUp = {
    server = "localhost:8194"
}

SessionStarted = {
    initialEndpoints[] = {
        initialEndpoints = {
            address = "localhost:8194"
        }
    }
}

ServiceOpened = {
    serviceName = "//blp/refdata"
}

IntradayTickResponse = {
    tickData = {
        eidData[] = {
        }
        tickData[] = {
        }
    }
}

IntradayTickResponse = {
    tickData = {
        eidData[] = {
        }
        tickData[] = {
            tickData = {
                time = 2018-10-23T15:30:00.000+00:00
                type = TRADE
                value = 129.510000
                size = 100
            }
            tickData = {
                time = 2018-10-23T15:30:00.000+00:00
                type = TRADE
                value = 129.510000
                size = 300
            }
            tickData = {
                time = 2018-10-23T15:30:00.000+00:00
                type = TRADE
                value = 129.525000
                size = 100
            }
            tickData = {
                time = 2018-10-23T15:30:01.000+00:00
                type = TRADE
                value = 129.510000
                size = 100
            }
            tickData = {
                time = 2018-10-23T15:30:01.000+00:00
                type = TRADE
                value = 129.510000
                size = 100
            }
            tickData = {
                time = 2018-10-23T15:30:01.000+00:00
                type = TRADE
                value = 129.510000
                size = 200
            }
        }
    }
}