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

ptrade 平台 get_individual_entrust 获取逐笔委托数据为空怎么办?

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

问题描述

get_individual_entrust返回空数据是什么原因?

使用get_individual_entrust获取逐笔委托数据时,返回的数据为空,是代码有问题吗?

解决方案

在 ptrade 量化交易平台中,使用 get_individual_entrust 接口获取逐笔委托数据时返回空数据,通常不是代码本身的问题,而是由于行情权限的限制。

核心原因:未开通 Level2 行情

根据 ptrade API 文档的明确说明:
逐笔委托、逐笔成交数据需开通 Level2 行情才能获取到数据,否则无数据返回。

如果您使用的是普通的 Level1 行情,调用该接口将无法获取到任何数据,系统会返回 None 或空的数据结构。

解决方法

  1. 确认行情权限:请联系您的券商客户经理,确认您的交易账户是否已经开通了 Level2 行情权限。
  2. 开通权限:如果未开通,请按照券商的指引开通 Level2 行情服务。
  3. 检查代码逻辑:在确认拥有 Level2 行情权限后,请确保您的代码逻辑正确,特别是在处理返回数据时,要做好空值(None)的判断,以增强策略的健壮性。

get_individual_entrust 接口使用注意事项

  • 适用场景:该函数仅在交易模块可用。
  • 市场支持:沪深市场都有逐笔委托数据。
  • 性能优化:当策略入参 is_dict=True 时,返回的数据类型为 dict,返回 dict 类型数据的速度比返回 DataFramePanel 类型数据有大幅提升。建议在处理大量数据时使用字典格式。

正确的代码示例

以下是一个包含空值保护和使用字典格式获取逐笔委托数据的示例:

def initialize(context):
    g.security = "000001.SZ"
    set_universe(g.security)

def before_trading_start(context, data):
    g.flag = False

def handle_data(context, data):
    if not g.flag:
        # 推荐:使用 is_dict=True 返回字典类型数据,速度更快
        entrust_dict = get_individual_entrust([g.security], is_dict=True)
        
        # 增加空值判断,防止因无 Level2 行情导致策略报错
        if entrust_dict is not None and g.security in entrust_dict:
            log.info("成功获取逐笔委托数据:%s" % entrust_dict[g.security])
        else:
            log.warning("未获取到逐笔委托数据,请检查是否开通 Level2 行情。")
            
        g.flag = True

总结:遇到 get_individual_entrust 返回空数据时,首要排查步骤是确认是否具备 Level2 行情权限。在编写策略时,务必加入对返回值为 None 的异常处理逻辑。