Wie Speichere ich Daten aus dem Bloomberg-API in ein Pandas dataframe?

Ich habe vor kurzem angefangen mit Python so konnte ich die Interaktion mit den Bloomberg API, und ich habe einige Probleme beim speichern der Daten in ein Pandas dataframe (oder eine Platte). Ich kann die Ausgabe in der Eingabeaufforderung einfach gut, so dass ist nicht ein Problem.

Eine sehr ähnliche Frage wurde hier gestellt:
Pandas-wrapper für die Bloomberg api?

Den referenzierten code in der akzeptierten Antwort für diese Frage ist für die alte API, jedoch, und es funktioniert nicht für das neue, offene API. Anscheinend ist der user, der die Frage stellt, war in der Lage, leicht zu ändern, der code für die Arbeit mit der neuen API, aber ich bin gewohnt, meine hand gehalten in R, und dies ist mein erstes Unterfangen mit Python.

Könnte einige wohlwollende user zeigen mir, wie man diese Daten in Pandas? Es gibt ein Beispiel in der Python-API (verfügbar hier: http://www.openbloomberg.com/open-api/) genannt SimpleHistoryExample.py ich arbeite mit dem habe ich unten aufgeführt. Ich glaube, dass werde ich ändern müssen, vor allem um die " while(True)' Schleife, die gegen das Ende der 'main ()' - Funktion, aber alles, was ich bisher ausprobiert habe hat hatte Probleme.

Vielen Dank im Voraus, und ich hoffe, dass dies helfen kann, um jemand mit Pandas für die Finanzen.

# SimpleHistoryExample.py

import blpapi
from optparse import OptionParser


def parseCmdLine():
    parser = OptionParser(description="Retrieve reference data.")
    parser.add_option("-a",
                      "--ip",
                      dest="host",
                      help="server name or IP (default: %default)",
                      metavar="ipAddress",
                      default="localhost")
    parser.add_option("-p",
                      dest="port",
                      type="int",
                      help="server port (default: %default)",
                      metavar="tcpPort",
                      default=8194)

    (options, args) = parser.parse_args()

    return options


def main():
    options = parseCmdLine()

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

    print "Connecting to %s:%s" % (options.host, options.port)
    # Create a Session
    session = blpapi.Session(sessionOptions)

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

    try:
        # Open service to get historical data from
        if not session.openService("//blp/refdata"):
            print "Failed to open //blp/refdata"
            return

        # Obtain previously opened service
        refDataService = session.getService("//blp/refdata")

        # Create and fill the request for the historical data
        request = refDataService.createRequest("HistoricalDataRequest")
        request.getElement("securities").appendValue("IBM US Equity")
        request.getElement("securities").appendValue("MSFT US Equity")
        request.getElement("fields").appendValue("PX_LAST")
        request.getElement("fields").appendValue("OPEN")
        request.set("periodicityAdjustment", "ACTUAL")
        request.set("periodicitySelection", "DAILY")
        request.set("startDate", "20061227")
        request.set("endDate", "20061231")
        request.set("maxDataPoints", 100)

        print "Sending Request:", request
        # Send the request
        session.sendRequest(request)

        # Process received events
        while(True):
            # We provide timeout to give the chance for Ctrl+C handling:
            ev = session.nextEvent(500)
            for msg in ev:
                print msg

            if ev.eventType() == blpapi.Event.RESPONSE:
                # Response completly received, so we could exit
                break
    finally:
        # Stop the session
        session.stop()

if __name__ == "__main__":
    print "SimpleHistoryExample"
    try:
        main()
    except KeyboardInterrupt:
        print "Ctrl+C pressed. Stopping..."

InformationsquelleAutor der Frage Danny | 2013-10-15

Schreibe einen Kommentar