您好我正在使用bloomberg API(用於學習的目的,而不是太相關的問題 - 只是作爲上下文)。該過程的刪除(殺死)函數內部的一個python對象
部分是創建作爲查詢時做出響應的服務器發送「請求」。
每個查詢都保持「活動狀態」,直到對象被殺死。我正在使用一個函數來調用每個請求的數據,因爲這是我非常頻繁使用的代碼,每次調用請求的形狀都會發生相當大的變化。
def calldata(req): # doesnt currently work. Dont know why
session.sendRequest(req)
while True:
ev = session.nextEvent()
tmp = []
if ev.eventType() == blpapi.Event.RESPONSE or blpapi.Event.PARTIAL_RESPONSE:
for msg in ev:
if msg.hasElement('securityData'):
data = msg.getElement('securityData')
tmp.append(data)
break
del req
return(tmp)
其中REQ例如可以
# Data for clean multiple data ::= cleanref
r = svc.createRequest('ReferenceDataRequest')
r.append('securities','MSFT US Equity')
r.append('fields','bid')
cleanref = calldata(r)
# Dirty reference for multiple data - both bad security and bad field
# ::= errorref
req = svc.createRequest("ReferenceDataRequest")
req.append('securities','Rhubarb Curncy')
req.append('fields','PX_LAST')
req.append('securities','SGD Curncy')
req.append('fields','desc')
errorref= calldata(req)
# Historical data request ::= histdata
request = svc.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", "MONTHLY")
request.set("startDate", "20060101")
request.set("endDate", "20061231")
request.set("maxDataPoints", 100)
histdata = calldata(request)
# erroneous historical data request ::= histerr
requ = svc.createRequest("HistoricalDataRequest")
requ.getElement("securities").appendValue("IBM US Equity")
requ.getElement("securities").appendValue("MSFT US Equity")
requ.getElement("fields").appendValue("PX_LAST")
requ.getElement("fields").appendValue("Desc")
requ.set("periodicityAdjustment", "ACTUAL")
requ.set("periodicitySelection", "MONTHLY")
requ.set("startDate", "20060101")
requ.set("endDate", "20061231")
requ.set("maxDataPoints", 100)
histerr = calldata(requ)
所以我需要殺死對方在功能上的要求,以便能夠重新使用它,我不能弄明白。我懷疑這可能是與locals()
有關,但任何幫助將感激地收到。
謝謝@RomanPekar。這看起來像我必須採用的方法。 –