Python /彭博资讯:单日多历史交易响应

时间:2019-12-16 13:58:58

标签: python bloomberg jbloomberg

我正在获取“历史日”响应,并试图对其进行更改,以便我可以给它一个任意大小的list(),它只会带回一天的时间。它将以字典的形式返回它,其值为数字。

我的问题是,该命令不返回任何内容,并且似乎没有创建来自Blloomberg的多个请求。下面的代码和回复:

# SimpleHistoryExample.py

# Include the install blpapi
from __future__ import print_function
from __future__ import absolute_import

import blpapi
import os
import re
import pandas as pd
import datetime
from optparse import OptionParser
from pandas.tseries.offsets import BMonthEnd


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 query_BloombergTicker(ticker_Name, ticker_Query, ticker_Start, ticker_End):
    if type(ticker_Name) != type(list()):
        print('Tickers must be as a list')
        return

    options = parseCmdLine()
    query = dict()

    # 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')
        for ticker in ticker_Name:
            request.getElement("securities").appendValue(ticker)
        request.getElement("fields").appendValue(ticker_Query)
        request.set("periodicityAdjustment", "ACTUAL")
        request.set("periodicitySelection", "DAILY")
        request.set("startDate", ticker_Start)
        request.set("endDate", ticker_End)
        request.set("maxDataPoints", 1000)

        # 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 str(msg.messageType()) == 'HistoricalDataResponse':
                    for ticker in ticker_Name:
                        query[ticker] = msg.getElement('securityData').getElement('fieldData').getValue().getElement(ticker).getValue()

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

        return query


def main():
    prevMonthEnd = '20191211'
    TICKERS = ["EURUSD Curncy"]
    EURUSD = query_BloombergTicker(TICKERS, "PX_LAST", prevMonthEnd, prevMonthEnd)
    print('THis is ')
    print(EURUSD)
    TICKERS = ["GBPUSD Curncy", "EURGBP Curncy", "EURSEK Curncy"]
    multi = query_BloombergTicker(TICKERS, "PX_LAST", prevMonthEnd, prevMonthEnd)
    print('This is ')
    print(multi)


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

回复是:

Starting Calculation Agent
SessionConnectionUp = {
    server = "localhost:8888"
    encryptionStatus = "Clear"
}

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

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

HistoricalDataResponse = {
    securityData = {
        security = "EURUSD Curncy"
        eidData[] = {
        }
        sequenceNumber = 0
        fieldExceptions[] = {
        }
        fieldData[] = {
            fieldData = {
                date = 2019-12-11
                PX_LAST = 1.113000
            }
        }
    }
}

THis is 
{}
SessionConnectionUp = {
    server = "localhost:8888"
    encryptionStatus = "Clear"
}

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

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

HistoricalDataResponse = {
    securityData = {
        security = "GBPUSD Curncy"
        eidData[] = {
        }
        sequenceNumber = 0
        fieldExceptions[] = {
        }
        fieldData[] = {
            fieldData = {
                date = 2019-12-11
                PX_LAST = 1.319600
            }
        }
    }
}

This is 
{}

Process finished with exit code 0

0 个答案:

没有答案