3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在自动化量化交易与策略回测/实盘运营中,盘后复盘是验证交易逻辑、核对账户资金与持仓变动的重要环节。ptrade 量化交易平台提供了 get_deliver(获取历史交割单)与 get_fundjour(获取历史资金流水)两大关键 API,帮助开发者实现自动化的盘后账单提取与复盘分析。
before_trading_start 和盘后函数 after_trading_end 中调用。get_deliver - 获取历史交割单信息get_deliver(start_date, end_date)
start_date (str): 开始日期,格式必须为 'YYYYMMDD'(如 '20230101')。end_date (str): 结束日期,格式必须为 'YYYYMMDD'(如 '20230131')。返回包含字典的列表 list[dict],每个字典代表一条柜台返回的交割单记录。常用解析字段包括:
stock_code: 证券代码stock_name: 证券名称business_name: 业务名称(如“证券买入”、“证券卖出”)business_amount: 成交数量business_price: 成交价格business_balance: 成交金额occur_balance: 发生金额(含手续费等结算资金)post_balance: 变动后资金余额get_fundjour - 获取历史资金流水信息get_fundjour(start_date, end_date)
start_date (str): 开始日期,格式必须为 'YYYYMMDD'。end_date (str): 结束日期,格式必须为 'YYYYMMDD'。返回包含字典的列表 list[dict],每个字典代表一条资金流水记录。常用解析字段包括:
business_date: 业务日期business_name: 业务名称(如“证券买入”、“资金存取”等)occur_balance: 发生金额post_balance: 变动后可用资金余额remark: 柜台备注信息以下示例展示了如何在 after_trading_end 盘后阶段调用这两个接口,提取最近一个交易日的账单信息并输出日志:
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
pass
def after_trading_end(context, data):
# 1. 获取上一交易日日期(格式为 YYYYMMDD)
last_trade_day = get_trading_day(-1).strftime('%Y%m%d')
log.info("开始提取上一交易日 (%s) 的复盘数据..." % last_trade_day)
# 2. 获取历史交割单
deliver_list = get_deliver(last_trade_day, last_trade_day)
if deliver_list:
log.info("--- 历史交割单明细 (共 %d 条) ---" % len(deliver_list))
for item in deliver_list:
code = item.get('stock_code', 'N/A')
name = item.get('stock_name', 'N/A')
action = item.get('business_name', 'N/A')
amount = item.get('business_amount', 0)
price = item.get('business_price', 0.0)
balance = item.get('business_balance', 0.0)
log.info("[%s] %s(%s) | 操作: %s | 数量: %s | 价格: %.2f | 金额: %.2f" %
(last_trade_day, name, code, action, amount, price, balance))
else:
log.info("上一交易日无交割单数据记录")
# 3. 获取历史资金流水
fund_list = get_fundjour(last_trade_day, last_trade_day)
if fund_list:
log.info("--- 历史资金流水明细 (共 %d 条) ---" % len(fund_list))
for fund in fund_list:
b_name = fund.get('business_name', 'N/A')
occur = fund.get('occur_balance', 0.0)
post = fund.get('post_balance', 0.0)
remark = fund.get('remark', '')
log.info("[%s] 业务: %s | 发生金额: %.2f | 剩余金额: %.2f | 备注: %s" %
(last_trade_day, b_name, occur, post, remark))
else:
log.info("上一交易日无资金流水数据记录")
log.info 打印,确认具体 Key 之后再进行定向字段解析。