🚀 AI 一键生成 ptrade 策略代码
立即体验
👉 AI 生成代码 👈

ptrade 接口 get_individual_transaction 最多能获取多少条逐笔成交数据?

ptrade | 发布时间: 2026/6/4
以下内容由 EasyQuant 生成。

问题描述

get_individual_transaction最多能获取多少条数据?

使用get_individual_transaction获取逐笔成交数据时,设置data_count=500返回的数据很少,为什么?

解决方案

根据 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))

注意事项:

  1. 逐笔数据需要开通 Level2 行情权限才能获取。
  2. 建议将 is_dict 设置为 True,返回字典类型数据的速度比 DataFrame/Panel 有大幅提升,特别是在处理大量数据时。