首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pdblp.BCon.bdh使用。插入数组作为“列表”参数

pdblp.BCon.bdh使用。插入数组作为“列表”参数
EN

Stack Overflow用户
提问于 2018-12-18 21:16:09
回答 2查看 473关注 0票数 0

con.bdh的用法是con.bdh('SPY US Equity', ['PX_LAST', 'VOLUME'], '20150629', '20150630', longdata=True)

我想要获得PX_LASTVOLUME的证券列表,我有一个数组(带有代码的字符串)。当我试图用数组"arrtickers“或list(arrtickers)替换间谍美国股票时,我会得到以下错误:

代码语言:javascript
复制
 ...eidData[] = {
    }
    sequenceNumber = 0
    securityError = {
        source = "3920::bbdbh4"
        code = 15
        category = "BAD_SEC"
        message = "Security key is too longInvalid Security [nid:3920] "
        subcategory = "INVALID_SECURITY"
    }
    fieldExceptions[] = {
    }
    fieldData[] = {
}}}

我是否使用了正确的语法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-20 15:44:13

如果不发布reproducible example,这只是猜测,但正如代码段中的错误消息所暗示的那样,这很可能是因为您在查询无效的安全性。数组语法应该可以工作。例如,下面的工作很好

代码语言:javascript
复制
In [1]: import pdblp
   ...: con = pdblp.BCon().start()
   ...: con.bdh(['SPY US Equity', 'IBM US Equity'], ['PX_LAST', 'VOLUME'],
                '20150629', '20150630', longdata=True)
Out[1]
        date         ticker    field         value
0 2015-06-29  SPY US Equity  PX_LAST  2.054200e+02
1 2015-06-29  SPY US Equity   VOLUME  2.026213e+08
2 2015-06-30  SPY US Equity  PX_LAST  2.058500e+02
3 2015-06-30  SPY US Equity   VOLUME  1.829251e+08
4 2015-06-29  IBM US Equity  PX_LAST  1.629700e+02
5 2015-06-29  IBM US Equity   VOLUME  3.314684e+06
6 2015-06-30  IBM US Equity  PX_LAST  1.626600e+02
7 2015-06-30  IBM US Equity   VOLUME  3.597288e+06

而这并不是

代码语言:javascript
复制
In [2]: con.bdh(['SPY US Equity', 'NOT_A_SECURITY Equity'], ['PX_LAST', 'VOLUME'],
                '20150629', '20150630', longdata=True)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-f23344f8a6b3> in <module>()
----> 1 con.bdh(['SPY US Equity', 'NOT_A_SECURITY Equity'], ['PX_LAST', 'VOLUME'], '20150629', '20150630', longdata=True)

~/Projects/pdblp/pdblp/pdblp.py in bdh(self, tickers, flds, start_date, end_date, elms, ovrds, longdata)
    268 
    269         data = self._bdh_list(tickers, flds, start_date, end_date,
--> 270                               elms, ovrds)
    271 
    272         df = pd.DataFrame(data, columns=["date", "ticker", "field", "value"])

~/Projects/pdblp/pdblp/pdblp.py in _bdh_list(self, tickers, flds, start_date, end_date, elms, ovrds)
    305                                    .numValues() > 0)
    306             if has_security_error or has_field_exception:
--> 307                 raise ValueError(msg)
    308             ticker = (msg.getElement('securityData')
    309                       .getElement('security').getValue())

ValueError: HistoricalDataResponse = {
    securityData = {
        security = "NOT_A_SECURITY Equity"
        eidData[] = {
        }
        sequenceNumber = 1
        securityError = {
            source = "139::bbdbh3"
            code = 15
            category = "BAD_SEC"
            message = "Unknown/Invalid securityInvalid Security [nid:139] "
            subcategory = "INVALID_SECURITY"
        }
        fieldExceptions[] = {
        }
        fieldData[] = {
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2018-12-20 21:22:09

谢谢@mgilbert。最后,我创建了一个列表,并将所有的代码添加到该列表中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53841183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档