问题描述
客户想要找到自己昨天重启的交易,如何定位到具体是哪一个交易ID吗?
解决方案
在ptrade量化交易平台中,策略重启是常见操作。针对重启后获取历史日志和定位交易ID的需求,可以通过以下方法解决:
一、 如何获取重启前的交易日志?
- 客户端界面查看:通常ptrade客户端的“运行日志”或“历史日志”面板会保留历史运行记录,您可以根据日期筛选查看重启前的日志。
- 自定义日志持久化:为了防止日志丢失,建议在策略中将重要日志写入到研究目录下。可以使用
get_research_path()获取路径,并结合Python标准logging模块将日志输出到本地文件。
二、 如何定位昨天重启的交易ID?
要精准定位昨天的具体交易ID(如 order_id 或 trading_id),可以通过以下API接口获取历史对账数据:
1. 使用 get_trades_file() 获取对账文件(推荐回测/交易环境)
该接口可导出包含详细交易ID的CSV文件。表头包含:order_id(订单编号)、trading_id(成交编号)等。
def after_trading_end(context, data):
# 获取对账数据,存放到notebook下的指定目录
user_data_path = get_trades_file('user_data/data')
log.info('对账文件已保存至: %s' % user_data_path)
2. 使用 get_deliver() 获取历史交割单(仅限交易环境)
该接口可查询上一个交易日(包含)之前的交割单信息,返回的字典中包含 business_id(成交编号)和 order_id(委托订单号)。
def before_trading_start(context, data):
# 查询昨天的交割单信息(假设昨天是20231010)
deliver_info = get_deliver('20231010', '20231010')
log.info('历史交割单信息: %s' % deliver_info)
通过上述导出的CSV文件或交割单信息,您可以根据标的代码、成交时间、成交数量等维度,轻松比对并定位到昨天具体的交易ID。