2016-08-26 2 views
0

У меня есть код Java, который использует blpapi для запроса определенных полей определенных ценных бумаг. Теперь мой код отлично работает. Тем не менее, я думал о случае, который не обрабатывается моим текущим кодом.Что такое ответ bloomberg, когда одно из нескольких полей не найдено?

Скажем, например, я запрашиваю «CUR_MKT_CAP», «PX_LAST» и «EQY_SH_OUT» для определенной безопасности. Что, если Bloomberg не имеет значения для «PX_LAST»? Что Блумберг даст мне тогда? (a) Дает ли он мне поле Элемент где PX_LAST = 0? (b) Будет ли он дать мне поле Элемент где PX_LAST = NULL? (c) Не включит ли PX_LAST ответ, который я получу? Таким образом, ответ будет выглядеть так?

HistoricalDataResponse (choice) = { 
    securityData = { 
     security = XXXXX Equity 
     sequenceNumber = 0 
     fieldData[] = { 
      fieldData = { 
       date = YYYY-MM-DD 
       CUR_MKT_CAP = XX.XXXX 
       EQY_SH_OUT = XX.XXXX 
      } 
     } 
    } } 

В принципе, я просто хочу знать, как я должен обращаться, если одна из областей, мне нужно не дается Bloomberg.

ответ

1

Вы правы, если поле не возвращает данных, оно будет опущено из элемента fieldData. Если ни одно из полей не возвращает данные, то fieldData будет пустым:

ReferenceDataResponse = { 
    securityData[] = { 
     securityData = { 
      security = "MSFT US Equity" 
      eidData[] = { 
      } 
      fieldExceptions[] = { 
      } 
      sequenceNumber = 0 
      fieldData = { 
      } 
     } 
    } 
} 

Вы можете легко проверить это, например, с помощью MSFT US Equity/YAS_BOND_YLD.

+0

Я протестировал его, используя приведенный вами пример. Это дало мне ответы, которые я только что опубликовал, поскольку ответ был слишком длинным, как комментарий. =) Тем не менее, есть ли в любом случае, где я могу проверить, если бы из трех полей, которые я запросил, только 2 поля были предоставлены Bloomberg в качестве ответа? – Krish

+0

@Krish В вашем ответе вы, похоже, использовали YAS_BOND_YLD в качестве безопасности (отсюда и ошибка) - я предложил запросить поля *** *** YAS_BOND_YLD для *** безопасности *** MSFT US Equity. Вы увидите, что элемент 'fieldData []' будет существовать, но будет пустым. Если вы добавите больше полей, элемент fieldData [] будет выглядеть как 'fieldData = {date = 2016-08-29; PX_LAST = 58,1; PX_VOLUME = 1.6417207E7} ', и поле (и) без данных будет проигнорировано. – assylias

+0

О, я вижу. Я собираюсь попробовать это и опубликовать результат здесь. Спасибо, @assylias – Krish

0

Я протестировал его, используя ответ @ assylias. Это дало мне следующие результаты.

MSFT US Equity

HistoricalDataResponse (choice) = { 
    securityData = { 
     security = MSFT US Equity 
     sequenceNumber = 0 
    } 
} 

YAS_BOND_YLD

HistoricalDataResponse (choice) = { 
    securityData = { 
     security = YAS_BOND_YLD 
     sequenceNumber = 0 
     securityError = { 
      source = 500::bbdbh5 
      code = 15 
      category = BAD_SEC 
      message = Unknown/Invalid securityInvalid Security [nid:500] 
      subcategory = INVALID_SECURITY 
     } 
    } 
} 
0

Согласно @assylias комментарий, я использовал YAS_BOND_YLD как поле. И blpapi вернул следующее в ответ.

Мой вход запроса: ответ

Ticker: XXX XX Equity Start/End Date: 20160818 Fields: CUR_MKT_CAP YAS_BOND_YLD PX_LAST EQY_SH_OUT 

BLPAPI является,

HistoricalDataResponse (choice) = { 
    securityData = { 
     security = XXX XX Equity 
     sequenceNumber = 0 
     fieldData[] = { 
      fieldData = { 
       date = 2016-08-18 
       CUR_MKT_CAP = 117.7144 
       PX_LAST = 1.06 
       EQY_SH_OUT = 111.051 
      } 
     } 
    } 
} 

Примечание: Я изменил тикер на XXX XX неспроста. = D

Смежные вопросы