期魔方平台不支持断点调试,所有调试和结果查看都通过
put_log日志输出完成。本文介绍调试方法和三类日志文件的查询方式。
策略调试方法
期魔方平台不支持断点调试,仅能通过 put_log 输出中间结果进行调试。当查看指标结果或其他输出结果也只能通过日志打印输出。
# 在策略代码中任意位置输出日志
put_log(f"当前持仓: {get_position()}", level="USER_LOG")
put_log(f"快线MA: {fast_ma}, 慢线MA: {slow_ma}", level="USER_LOG")
put_log(f"错误信息: {err}", level="ERROR")
level支持INFO(信息日志)、USER_LOG(用户日志)和ERROR(错误日志),可在策略日志面板中筛选查看。
日志查询
日志路径:
C:\Users\windows登录用户账号\AppData\Local\qmfquant\logs\ctp_server
该目录下有 3 类日志文件:
一、账号+期货公司名称.log
该日志记录了该账号在期魔方平台的订单记录。包括账号、时间、期货品种、开平仓方向、价格、手数、订单状态,以及订单 id。其中手动开平仓的订单,订单 id 为空。
示例
账号xxxxxx(11:15:00): 已报 zn2512 空 开仓 21125.0 1手 OrderStatus:0 unique_id:183531324453563727162120768004318848126_1
账号xxxxxx(11:21:36): 已报 zn2512 多 平仓 24310.0 1手 OrderStatus:0 unique_id:
账号xxxxxx(11:23:04): 已报 zn2512 空 开仓 21125.0 1手 OrderStatus:0 unique_id:183531324453563727162120768004318848126_1
账号xxxxxx(13:38:57): 已报 zn2512 多 平仓 24310.0 1手 OrderStatus:0 unique_id:
账号xxxxxx(21:30:15): 已撤单 T2512 空 开仓 789.16 1手,撤单原因:26:已撤单报单被拒绝CFFEX:当前状态禁止此项操作 OrderStatus:5 unique_id:
账号xxxxxx(22:05:02): 已撤单 au2512 空 开仓 919.04 4手,撤单原因:已撤单 OrderStatus:5 unique_id:
| 字段 | 含义 |
|---|---|
| 账号 | 交易账号 |
| 时间 | 报单时间 |
| 品种 | 合约代码(如 zn2512) |
| 方向 | 多 / 空 |
| 开平 | 开仓 / 平仓 |
| 价格 | 委托价格 |
| 手数 | 委托手数 |
| OrderStatus | 订单状态:0=已报,5=已撤单 |
| unique_id | 订单唯一 ID,手动开平仓为空 |
二、onorder_log_账号.log
该日志记录委托单状态变化,包括合约 ID、订单状态、开仓方向、开平状态,以及订单号。
示例
InstrumentID:FG601 OrderStatus:0 Direction:0 CombOffsetFlag:0 LimitPrice:1322.0 InsertTime:18:12:40 OrderRef:2 OrderSysID: 3601
| 字段 | 含义 |
|---|---|
| InstrumentID | 合约代码(如 FG601) |
| OrderStatus | 订单状态:0=已报 |
| Direction | 方向:0=买,1=卖 |
| CombOffsetFlag | 开平标志 |
| LimitPrice | 委托价格 |
| InsertTime | 报单时间 |
| OrderRef | 本地订单编号 |
| OrderSysID | 交易所订单编号 |
三、ontrade_账号.log
该日志记录成交单情况。
示例
账号xxxxxx(10:30:01): 成交 pb2511 空 开仓 17085.0 1手 trade_datetime:20250924 10:30:01 OrderSysID: 153777 unique_id:14411773030940154695238362999871833642_1
账号xxxxxx(10:41:59): 成交 MA601 空 平仓 2356.0 1手 trade_datetime:20250924 10:41:59 OrderSysID: 162189 unique_id:
| 字段 | 含义 |
|---|---|
| 账号 | 交易账号 |
| 时间 | 成交时间 |
| 品种 | 合约代码 |
| 方向 | 多 / 空 |
| 开平 | 开仓 / 平仓 |
| 价格 | 成交价格 |
| 手数 | 成交手数 |
| trade_datetime | 成交日期时间 |
| OrderSysID | 交易所订单编号 |
| unique_id | 订单唯一 ID,手动开平仓为空 |
关键要点
- put_log 是唯一调试手段:平台不支持断点调试,所有中间变量、指标结果、运行状态都需通过
put_log打印查看 - 三类日志互补:账号日志记录报单全貌,onorder 记录委托状态流转,ontrade 记录最终成交——排查问题时需交叉对照
- unique_id 区分来源:有
unique_id的订单来自策略自动下单,unique_id为空的订单来自手动开平仓 - 日志路径:位于
AppData\Local\qmfquant\logs\ctp_server,按账号和期货公司分文件 - OrderStatus 常见值:0=已报(正常),5=已撤单;撤单原因会附带在日志行末尾
相关阅读
- [核心API 辅助功能]
- [案例:网格策略]
- [风控模型 - 固定止盈止损]
- [风控模型 - 移动止盈止损]

评论
登录后参与讨论,与站内账号体系共用。