Вопрос или проблема
Я пишу код для получения праздников торгового календаря из Bloomberg API через Python. Вот часть кода, которую я рассматриваю:
for exchangeCode in listExchangeCodes:
dictExchangeCodes[exchangeCode] = []
request = refDataService.createRequest("ReferenceDataRequest")
request.append("securities", "AAPL US Equity")
request.append("fields", "CALENDAR_HOLIDAYS")
overrides = request.getElement("overrides")
# print(overrides)
override2 = overrides.appendElement()
override2.setElement("fieldId", "CALENDAR_START_DATE")
override2.setElement("value", startDate)
# print(override2)
override3 = overrides.appendElement()
override3.setElement("fieldId", "CALENDAR_END_DATE")
override3.setElement("value", endDate)
# print(override3)
override4 = overrides.appendElement()
override4.setElement("fieldId", "SETTLEMENT_CALENDAR_CODE")
override4.setElement("value", exchangeCode)
# print(override4)
print(request)
session.sendRequest(request)
В основном этот код извлекает все праздники расчетного календаря для каждой биржи в списке для акций AAPL. Однако я хотел бы получить праздники торгового календаря, но должно быть что-то другое, что можно подставить вместо “SETTLEMENT_CALENDAR_CODE”, связанное с торговлей. Также “CALENDAR_NON_SETTLEMENT_DATES” не работает. Я действительно не могу найти ничего в интернете или в документации BLPAPI.
Ответ или решение
Для получения праздничных дней торгового календаря через Bloomberg API на Python вам потребуется внести определенные изменения в ваш код. Давайте разберем этот процесс подробно.
1. Понимание API и необходимых полей
Вы уже используете метод REFERENCE_DATA
, запросив CALENDAR_HOLIDAYS
для обслуживания AAPL (Apple Inc.) и указывая коды соответствующих обменов. Однако, чтобы извлечь праздничные дни торгового календаря, вам нужно убедиться, что Вы используете правильные идентификаторы поля и код календаря.
2. Идентификация торгового календаря
Вместо использования идентификатора SETTLEMENT_CALENDAR_CODE
, вам нужно найти или использовать TRADING_CALENDAR_CODE
. Чтобы это сделать, вы можете сначала составить список всех доступных календарей, используя другой метод Bloomberg API, такой как CalendarRequest
, который позволит вам получить все торговые календари и их коды.
3. Изменение кода
Вот как можно изменить ваш код, чтобы получать праздничные дни торгового календаря:
for exchangeCode in listExchangeCodes:
dictExchangeCodes[exchangeCode] = []
request = refDataService.createRequest("ReferenceDataRequest")
request.append("securities", "AAPL US Equity")
request.append("fields", "CALENDAR_HOLIDAYS")
overrides = request.getElement("overrides")
override2 = overrides.appendElement()
override2.setElement("fieldId", "CALENDAR_START_DATE")
override2.setElement("value", startDate)
override3 = overrides.appendElement()
override3.setElement("fieldId", "CALENDAR_END_DATE")
override3.setElement("value", endDate)
# Изменение здесь: используйте торговый календарь
override4 = overrides.appendElement()
override4.setElement("fieldId", "TRADING_CALENDAR_CODE") # Измените на 'TRADING_CALENDAR_CODE'
override4.setElement("value", exchangeCode)
print(request)
session.sendRequest(request)
4. Проверка доступных календарей
Если вы не уверены в кодах торговых календарей, вы можете выполнить следующий код для получения списка доступных календарей перед выполнением основного запроса:
calendarRequest = refDataService.createRequest("CalendarRequest")
# Отправьте запрос и обработайте входящие данные (это может занять время)
session.sendRequest(calendarRequest)
5. Документация и поддержка
Если вы не можете найти нужные коды или поля, актуальные с вашим API, я рекомендую проверить документацию с помощью Bloomberg Terminal. Используйте команду API
или обратитесь к своему администратору Bloomberg для получения доступа к полной документации API.
Вы также можете обратиться в службу поддержки Bloomberg, если у вас возникнут дополнительные вопросы или затруднения с получением данных.
Заключение
Следуйте вышеуказанным шагам, и вы сможете успешно получать праздничные дни торгового календаря через Bloomberg API. Удачи в вашем проекте, и помните, что корректная настройка запросов и правильное понимание используемых полей имеют решающее значение для успешной работы с API.