3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在使用 ptrade 量化平台调用 get_individual_transaction 接口获取逐笔成交数据时,如果返回空数据(如 None 或空字典/DataFrame),通常是由以下几个原因导致的。请按照以下步骤进行排查:
根据 ptrade API 文档的明确说明:逐笔委托、逐笔成交数据需开通 Level2 行情才能获取到数据,否则无数据返回。
stocks 参数显式传入股票代码,接口默认会获取当前股票池中的代码列表。initialize 中没有使用 set_universe 设置股票池,或者传入的 stocks 列表为空/代码格式错误(如缺少 .SS 或 .SZ 后缀),也会导致获取不到数据。is_dict 参数设置为 True。返回 dict 类型数据的速度比返回 DataFrame 或 Panel 类型数据有大幅提升,且能有效避免因股票数量过多(>200只)导致的返回 None 的问题。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 提升获取速度并防止数据丢失
transaction = get_individual_transaction([g.security], is_dict=True)
if transaction is not None and g.security in transaction:
log.info("成功获取逐笔成交数据:%s" % transaction[g.security][:2]) # 打印前两条
else:
log.warning("未获取到逐笔成交数据,请检查 Level2 权限或标的状态。")
g.flag = True
总结:遇到 get_individual_transaction 返回空数据,第一步永远是向券商确认 Level2 行情权限是否开通。确认权限无误后,再检查代码逻辑、时间段以及是否使用了 is_dict=True 来优化性能。