3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
根据 ptrade API 文档的规定,使用 get_individual_transaction 接口获取逐笔成交数据时,最多只能获取 200 条数据。
data_count=500 返回的数据很少?在接口参数说明中,data_count(数据条数)的默认值为 50,最大限制为 200。当您在代码中设置 data_count=500 时,由于超过了底层接口允许的最大上限,系统通常会进行强制截断,或者按照默认/最大允许值返回,甚至可能导致底层查询异常,从而出现返回数据很少或不符合预期的情况。
如果您需要获取超过 200 条的逐笔成交数据,不能单次将 data_count 设置得很大,而应该利用分页机制。结合 start_pos(起始位置)和 search_direction(搜索方向)参数,通过循环多次请求来拼接数据。
参数说明:
data_count: 每次请求的数据条数,建议设置为最大值 200。start_pos: 起始位置,默认为 0。每次请求后,将其增加已获取的条数。search_direction: 搜索方向,1 为向前(从最新到最旧),2 为向后(从旧到新)。示例代码:
def handle_data(context, data):
# 假设我们要获取 000001.SZ 的最近 400 条逐笔成交数据
security = '000001.SZ'
all_transactions = []
# 第一次请求,获取最新的 200 条
trans_part1 = get_individual_transaction([security], data_count=200, start_pos=0, is_dict=True)
if trans_part1 and security in trans_part1:
all_transactions.extend(trans_part1[security])
# 第二次请求,从第 200 条开始,再获取 200 条
trans_part2 = get_individual_transaction([security], data_count=200, start_pos=200, is_dict=True)
if trans_part2 and security in trans_part2:
all_transactions.extend(trans_part2[security])
log.info("共获取到逐笔成交数据条数:%s" % len(all_transactions))
注意事项:
is_dict 设置为 True,返回字典类型数据的速度比 DataFrame/Panel 有大幅提升,特别是在处理大量数据时。