2012-08-28 39 views
0

我試圖從Bloomberg Java API中獲取特定的數據字段。我從開發者指南,我可以在某些領域與拉看到:使用Java獲取特定日期的Bloomberg字段

Request request = refDataSvc.createRequest("ReferenceDataRequest"); 
request.getElement("securities").appendValue("AAPL US Equity"); 
request.getElement("securities").appendValue("IBM US Equity"); 

request.getElement("fields").appendValue("PX_LAST"); // Last Price 
request.getElement("fields").appendValue("DS002"); // Description 
request.getElement("fields").appendValue("VWAP_VOLUME"); 
session.sendRequest(request, new CorrelationID(1)); 

我怎樣才能讓這樣同時獲得一些字段的在特定日期範圍內的電話嗎?例如,我想獲得:上次交易價格,最後交易量,2012年8月27日的開盤價以及上午9點至11點的8月26日的VWAP交易量。

回答

1

你需要創建一個「HistoricalDataRequest」要求:

Request request = refDataSvc.createRequest("HistoricalDataRequest"); 

然後,您可以指定開始日期和結束日期:

DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyyMMdd"); 
request.set("startDate", startDate.toString(fmt)); 
request.set("endDate", endDate.toString(fmt)); 

在你的情況下,開始日期和結束日期將是27- 8月爲第一次請求,8月26日爲第二次請求。但是,我不知道如何覆蓋字段(VWAP_START_TIMEVWAP_END_TIME),以便將歷史請求中的VWAP限制爲9-11AM,對於參考數據,您可以像下面的代碼一樣使用代碼 - 它可能適用於歷史請求也是如此:

Element overridesElt = request.getElement("overrides"); 
Element override = overridesElt.appendElement(); 
override.setElement("fieldId", "VWAP_START_TIME"); 
override.setElement("value", "09:00:00"); 

override = overridesElt.appendElement(); 
override.setElement("fieldId", "VWAP_END_TIME"); 
override.setElement("value", "11:00:00"); 
+0

那麼沒有辦法在相同的請求元素中獲得第27個和第10個和第11個VWAP之間的開盤價格?對於每個數據項目,我需要拍攝一個新的請求元素? – Marianna

+0

您每天需要一個請求或範圍內請求(26-27),然後使用相關數據。我不確定你可以在多個字段中使用過載 - 所以我會保持簡單並且對第27組的第一組數據有一個請求,並且對於第26組有一個請求使用overriden參數。無論如何,如果你使用相同的會話,它應該相當快。你總是可以問BB幫助看看有沒有更好的方法。 – assylias

相關問題