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

ptrade 如何获取历史交割单与资金流水?(附 Python 代码示例)

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: ptrade 盘后账单分析:提取历史交割单与资金流水数据

Question: ptrade 如何通过 get_deliver 和 get_fundjour 获取历史交割单与资金流水?

解决方案

ptrade 盘后账单分析:提取历史交割单与资金流水

在 ptrade 量化交易平台中,进行盘后对账和账单分析是策略复盘与资金管理的重要环节。ptrade 提供了 get_deliverget_fundjour 两个核心接口,用于获取账户的历史交割单和资金流水数据。


1. 使用限制与注意事项

在使用这两个接口前,请注意以下规则:

  1. 运行模块限制:仅在实盘/模拟交易模块有效,研究和回测模块不可用。
  2. 运行阶段限制:仅支持在 before_trading_start(盘前)和 after_trading_end(盘后)阶段调用。
  3. 查询范围限制:仅支持查询上一个交易日(含)之前的历史数据,无法查询当日实时交割或流水。
  4. 账户类型限制:仅支持查询普通股票账户(非融资融券账户)。
  5. 参数格式:日期参数 start_dateend_date 格式必须为 'YYYYmmdd'(如 '20230101')。

2. 接口详解

2.1 获取历史交割单:get_deliver

get_deliver(start_date, end_date) 用于获取指定日期范围内的历史交割单数据。

  • 主要返回字段stock_code(股票代码)、stock_name(股票名称)、entrust_bs(买卖方向,1买2卖)、business_amount(成交数量)、business_price(成交价格)、occur_balance(发生金额)、clear_balance(结算金额)等字典信息列表。

示例代码:

def before_trading_start(context, data):
    # 获取 2023年1月1日 至 2023年1月10日 的历史交割单
    deliver_list = get_deliver('20230101', '20230110')
    log.info("历史交割单数据:%s" % deliver_list)

2.2 获取历史资金流水:get_fundjour

get_fundjour(start_date, end_date) 用于获取指定日期范围内的历史资金流水记录。

  • 主要返回字段init_date(发生日期)、business_name(业务名称,如证券买入/卖出)、occur_balance(发生变动资金)、post_balance(变动后剩余资金)、remark(备注)等字典信息列表。

示例代码:

def after_trading_end(context, data):
    # 获取 2023年1月1日 至 2023年1月10日 的资金流水
    fund_list = get_fundjour('20230101', '20230110')
    log.info("历史资金流水数据:%s" % fund_list)

3. 完整盘后账单分析策略示例

以下示例展示了如何在每天盘后自动提取上一交易日至今的交割单和资金流水并打印日志:

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    pass

def after_trading_end(context, data):
    # 获取前一交易日与当前日期(YYYYMMDD 格式)
    pre_date = str(get_trading_day(-1)).replace("-", "")
    current_date = context.blotter.current_dt.strftime("%Y%m%d")
    
    # 获取历史交割单
    delivers = get_deliver(pre_date, current_date)
    log.info("--- 历史交割单 --- %s" % delivers)
    
    # 获取历史资金流水
    fund_jours = get_fundjour(pre_date, current_date)
    log.info("--- 历史资金流水 --- %s" % fund_jours)