get_sort_msg获取的数据数量有上限吗?
使用get_sort_msg设置data_count=500但只返回了100条数据,为什么?
问题描述
解决方案
get_sort_msg 获取的数据数量有上限吗?
是的,get_sort_msg 接口获取的数据数量是有上限的。根据 ptrade API 文档,data_count 参数的默认值为 100,最大值为 10000。
为什么设置 data_count=500 但只返回了 100 条数据?
如果您在调用 get_sort_msg 时设置了 data_count=500,但最终只返回了 100 条数据,通常有以下几种可能的原因:
- 板块或行业本身的成分股数量不足:
get_sort_msg是用于获取特定板块或行业(如XBHS.DY地域、XBHS.GN概念等)内的排名信息。如果您查询的板块本身只包含 100 只(或更少)的成分股,那么即使您将data_count设置为 500,接口也只能返回实际存在的成分股数量。您可以通过检查返回数据中的member_count(成员个数)字段来确认该板块的实际总数。 - 参数传递错误:请确保在调用接口时,
data_count参数被正确传递。例如:get_sort_msg(sort_type_grp='XBHS.GN', sort_field_name='px_change_rate', sort_type=1, data_count=500)。
接口参数回顾
get_sort_msg(sort_type_grp=None, sort_field_name=None, sort_type=1, data_count=100)
- sort_type_grp: 板块或行业的代码(如
XBHS.DY地域、XBHS.GN概念、XBHS.ZJHHY证监会行业等)。 - sort_field_name: 需要排序的字段(如
px_change_rate涨跌幅、last_px最新价等)。 - sort_type: 排序方式,
0为升序,1为降序(默认)。 - data_count: 数据条数,默认为 100,最大为 10000。
示例代码
以下代码展示了如何正确设置 data_count 并检查板块的实际成员数量:
def initialize(context):
g.security = '000001.SZ'
set_universe(g.security)
def handle_data(context, data):
# 获取概念板块的涨跌幅降序排名,尝试获取 500 条
sort_data = get_sort_msg(sort_type_grp='XBHS.GN', sort_field_name='px_change_rate', sort_type=1, data_count=500)
if sort_data:
# 打印实际返回的数据条数
log.info("实际返回的数据条数: %s" % len(sort_data))
# 打印第一条数据中的 member_count,查看该板块实际包含多少成员
first_item = sort_data[0]
log.info("该板块实际成员总数: %s" % first_item.get('member_count'))
总结:data_count 的上限是 10000,但实际返回的条数受限于您查询的板块/行业内实际包含的标的数量。