问题描述
使用get_individual_entrust获取逐笔委托数据时,设置data_count=500返回的数据很少,为什么?
解决方案
在 Ptrade 量化交易平台中,使用 get_individual_entrust 接口获取逐笔委托数据时,关于数据条数有明确的限制。
1. get_individual_entrust 最多能获取多少条数据?
根据 Ptrade API 文档规定,get_individual_entrust 接口的 data_count(数据条数)参数最大限制为 200 条。如果不传入该参数,默认返回 50 条数据。
2. 为什么设置 data_count=500 返回的数据很少?
如果您在调用时设置了 data_count=500,但发现返回的数据很少(甚至没有),通常是由以下几个原因造成的:
- 超过了接口最大限制:如上所述,该接口单次最大只能返回 200 条数据。即使您设置了 500,底层系统也会进行截断,最多只返回 200 条。
- 未开通 Level2 行情:这是最常见的原因。逐笔委托和逐笔成交数据属于高级行情,必须开通 Level2 行情才能获取到推送数据。如果您的账户未开通 L2 行情,接口将无法返回完整的逐笔数据,甚至返回
None。 - 标的本身交易不活跃:如果您查询的股票在当前时间段内本身就没有多少委托单(例如冷门股或刚开盘时),那么即使限制是 200 条,实际返回的条数也会少于这个数字。
3. 正确的使用建议
为了高效且正确地获取逐笔委托数据,建议采用以下方式:
- 遵守参数限制:将
data_count设置在 1 到 200 之间。 - 确认行情权限:联系您的券商确认当前交易环境是否已经成功开通了 Level2 行情权限。
- 使用字典格式加速:建议将
is_dict参数设置为True,返回字典类型的数据速度比返回 DataFrame/Panel 类型有大幅提升。
示例代码:
def initialize(context):
g.security = "000001.SZ"
set_universe(g.security)
def handle_data(context, data):
# 正确获取逐笔委托数据,设置最大条数 200,并使用字典格式加速
entrust_data = get_individual_entrust([g.security], data_count=200, is_dict=True)
if entrust_data is not None:
log.info("成功获取逐笔委托数据: %s" % entrust_data)
else:
log.warning("未获取到数据,请检查是否开通 Level2 行情。")