模拟实盘:配置与运行
本章带您从「已有回测策略」到「第一次稳定启动模拟实盘」:该配哪些项、如何确认、启动后该看什么。
亲爱的用户,若您手里已经有一个能回测的 Operator(交易员容器),本章就是进入 live 的最短路径。我们先把必要配置讲清楚,再谈可选的「策略快照」「启动门禁」等进阶项。
0. 适用场景
您已有可运行的 Operator,准备从回测进入模拟实盘
您希望先跑通最小路径,再逐步补充风控、门禁与运维细节
1. 核心概念(本章术语)
启动 live 前,请确认三者关系。在 qteasy 里,Operator 负责「算什么信号」,live 账户负责「记钱记仓」,本地数据源负责「给价给历史」——三者缺一,Trader 无法稳定运行。下表说明各自在 live 子系统中的位置及您要准备的内容。
各列含义:角色为组件名;作用为在 live 链路中的职责;您需要准备什么为启动前检查项。
如何使用:逐项打勾;若某一列准备不足,先补数据或账户再 qt.run(op)。
角色 |
作用 |
您需要准备什么 |
|---|---|---|
Operator |
持有策略与信号逻辑 |
与回测时同一个 |
live 账户 |
记录现金、持仓、订单 |
|
本地数据源 |
提供历史与实时行情 |
表数据覆盖策略频率(如分钟策略需分钟表) |
LiveTradeConfig(live 配置快照):qteasy 在启动 Trader 前,会把分散在 qt.configure(...) 里的 live 相关项校验并冻结成一份不可变快照——像起飞前签字的检查单,避免运行中被意外改配置。您可在 Shell 里用 liveconfig 查看摘要。
2. 最小配置集
以下为常见必配项(不设或设错时,往往在启动阶段就会报错)。这些键通过 qt.configure(...) 写入全局配置,启动时并入 LiveTradeConfig 快照;它们决定「是不是 live、交易什么资产、用哪个账户、价从哪来、单交给谁撮合」。
各列含义:配置键为 QT_CONFIG 中的名称;含义为该键控制的 behavior;不设会怎样为常见后果(便于判断当前报错是否与此键有关)。
如何使用:首次 live 请全部显式设置;启动失败时对照「不设会怎样」列排查。示例见 §5 模板 A/B。
配置键 |
含义 |
不设会怎样 |
|---|---|---|
|
进入 live / 模拟实盘 |
仍走回测或其他模式 |
|
资产类型,如 |
交易规则与数据表可能对不上 |
|
使用哪个模拟账户 |
无法绑定账本 |
|
券商类型,初学用 |
无成交通道 |
|
实时价渠道,如 |
无法获取 live 价 |
|
拉价频率,如 |
与策略步频不协调时可能缺数据 |
以下键非启动硬性门槛,但强烈建议确认——它们影响最小成交单位、日志落盘与磁盘占用。与上表同属 qt.configure 范围,可在同一脚本里一并写入。
如何使用:若成交数量「对不齐整手」或日志找不到文件,回头查本表对应行。
配置键 |
含义 |
不设会怎样 |
|---|---|---|
|
买卖最小单位 |
使用默认值 |
|
现金/数量小数位 |
使用默认值 |
|
系统/交易日志目录 |
使用包内默认路径 |
|
日志保留天数(含 risk 日志) |
默认 3 天自动清理 |
3. 查看配置快照
Python(脚本里自检):
from qteasy.live_config import build_live_trade_config
import qteasy as qt
cfg = build_live_trade_config(qt.QT_CONFIG)
print(cfg.to_summary_dict())
CLI(Trader Shell):命令 liveconfig(别名 live-config)
默认:稳定字段子集
加
--detail:额外含启动门禁、策略快照等键
说明:Shell 内的 liveconfig 是根据当前 Trader 重新汇总的摘要,不是启动那一刻对象的内存引用——但对您核对「现在生效的配置」足够用。
4. 配置键分组(主要 live 键)
live 相关配置键数量较多。为便于查阅,我们按功能分组归纳(非 API 全量列表;完整字段以 LiveTradeConfig 为准)。在 qteasy 中,这些键在启动前被校验并冻结——您改 qt.configure 后需重启 live 进程才能完全生效。
各列含义:分组为 live 子系统内的职责域;代表键列出该组最常改动的键(同组可能还有未列出的键);说明为该组在运行中的作用。
如何使用:按您当前任务选分组——例如排日志问题看「日志」行并跳转 :doc:5-artifacts-and-troubleshooting;开分钟策略先看「行情与 refill」与策略步频是否匹配。
示例:子日频策略常改「行情与 refill」组的 live_price_acquire_freq,并视需要开启「策略快照(5-A)」组中的 live_trade_split_strategy_prepare。
分组 |
代表键 |
说明 |
|---|---|---|
账户与 UI |
|
账户与 CLI / TUI 选择 |
行情与 refill |
|
实时价与定时补数据 |
交易规则 |
|
与回测语义对齐 |
Broker |
|
默认 |
策略快照(5-A) |
|
策略运行前预拉数据;详见 :doc: |
启动门禁(5-B) |
|
开盘前安全检查;CLI |
日志 |
|
含 |
完整字段以 LiveTradeConfig 为准;各键合法取值见配置校验逻辑。
5. 推荐配置模板
模板 A:股票(E + 模拟券商)
以下代码在 qt.run(op) 之前执行,告诉 qteasy:用股票规则、东方财富 15 分钟价、模拟柜台成交。
import qteasy as qt
qt.configure(
mode=0,
asset_type='E',
live_trade_broker_type='simulator',
live_price_acquire_channel='eastmoney',
live_price_acquire_freq='15MIN',
trade_log_keep_days=3,
)
模板 B:场内基金 / ETF(FD + 模拟券商)
与模板 A 相同,仅 asset_type='FD',适用于 ETF 等示例路径。
import qteasy as qt
qt.configure(
mode=0,
asset_type='FD',
live_trade_broker_type='simulator',
live_price_acquire_channel='eastmoney',
live_price_acquire_freq='15MIN',
trade_log_keep_days=3,
)
模板 C:策略快照 + 启动门禁(冒烟 / 进阶)
与 :doc:7-manual-smoke-live-grid-roadmap 一致;建议在熟悉模板 A/B 后再开。
qt.configure(
live_trade_split_strategy_prepare=True,
live_trade_prepare_lead_seconds=60,
live_trade_strategy_snapshot_max_age_seconds=300.0,
live_trade_startup_gate_mode='warn', # 先 warn 观察,稳定后可试 block
)
6. 启动流程(分步说明)
写好配置:按 §2 完成
qt.configure(...),确认账户 ID/名称。(可选)核对快照:运行 §3 的 Python 片段,或启动后进 Shell 执行
liveconfig --detail。启动:
qt.run(op);命令行示例常用--ui cli进入 Trader Shell。观察:看状态、订单、日志是否按预期写入(§7)。
启动前快速打印几项关键配置:
import qteasy as qt
for key in ('mode', 'asset_type', 'live_trade_broker_type',
'live_price_acquire_channel', 'live_trade_startup_gate_mode'):
print(key, qt.get_config(key)[key])
7. 启动后建议先看什么(CLI)
进入 Trader Shell 后,下列命令帮助您确认「配置是否生效、日志在哪、券商是否可受理、门禁是否通过」。它们对应 :doc:8-cli-trader-capability-matrix 中的运维子集——不是 Shell 全部命令。
各列含义:命令为在提示符下输入的名称(含别名见矩阵章);典型用途为该命令最常解决的疑问。
如何使用:启动后按表从上到下快速扫一遍;若某步异常,带着命令输出转 :doc:5-artifacts-and-troubleshooting。
示例:不确定日志路径 → 输入 artifacts → 打开返回的 sys_log 路径查看启动 trace。
命令 |
典型用途 |
|---|---|
|
当前 live 配置摘要 |
|
四键产物路径(日志在哪) |
|
手动跑一次启动门禁(调试) |
|
模拟券商是否「已连接」 |
|
对账快照 JSON |
|
在途单诊断(需 DEBUG 模式) |
命令全集见 :doc:8-cli-trader-capability-matrix。
7.1 Dashboard 与 interactive 模式
Trader Shell 启动后默认进入 dashboard 模式:单行状态区滚动显示下一任务倒计时、监视列表实时价与系统消息,无需输入命令即可观察运行节奏。需要手动下单、查配置或执行运维命令时,按 Ctrl+C 打开模式选单,或在 interactive(命令)模式下输入 dashboard 返回 dashboard。
模式 |
行为 |
|---|---|
dashboard |
自动刷新状态行与监视价;Trader 主循环在后台继续运行 |
interactive(命令) |
传统 |
Ctrl+C 模式选单(dashboard 或命令模式下均可用)
在 5 秒内按 1 → 进入命令模式;2 → 回到 dashboard;3 → 退出并停止 Trader
无需按 Enter,数字键立即生效
5 秒内无输入 → 自动恢复中断前的模式
选单等待期间再次按 Ctrl+C → 立即退出(与选 3 等效)
若主循环发生未预期异常,Shell 会提示按 1 回到 dashboard 或 3 退出;5 秒无输入时默认回到 dashboard,Trader 继续运行。
8. 运行前检查清单
账户 ID/名称可用,且与策略资产池匹配
asset_type与asset_pool一致(股票/基金不要混用规则)live_trade_broker_type为simulator(或您已实现的类型)live 价频率 不低于 策略运行步频(分钟策略需足够密的 live 价)
日志路径合法、磁盘可写
trade_log_keep_days符合您的留存预期(含 risk 日志)
9. 常见启动失败与处理
启动阶段报错时,现象往往集中在配置、账户、数据、路径、频率或启动门禁几类。下表按您看到的现象索引,避免在日志里盲目搜索。
各列含义:现象为启动或首屏时的表现;可能原因为常见根因(非穷尽);建议为下一步操作。
如何使用:先匹配「现象」列;若仍无法解决,用 §7 命令导出 liveconfig 与 artifacts 路径,对照 :doc:5-artifacts-and-troubleshooting 决策树。
现象 |
可能原因 |
建议 |
|---|---|---|
配置校验失败 |
某 live 键非法或互斥 |
按报错字段修正后重启 |
账户不可用 |
ID/名称错误或未初始化 |
检查账户创建参数 |
数据不可用 |
渠道/频率/本地表缺失 |
检查 refill 与 |
路径错误 |
日志目录不可写 |
检查 |
频率不协调 |
live 价比策略步频更稀 |
提高 |
gate block |
启动门禁 |
看 |
10. 相关跳转
风控与订单::doc:
3-risk-and-order-lifecycle产物与排错::doc:
5-artifacts-and-troubleshootingBroker 适配::doc:
4-broker-adapter-and-integration快照/门禁::doc:
6-trader-snapshot-gate冒烟清单::doc:
7-manual-smoke-live-grid-roadmapCLI 对照::doc:
8-cli-trader-capability-matrix
11. 最小验收标准
可在 E 或 FD 路径下稳定启动
liveconfig/artifacts输出符合预期能观察到至少一条:订单提交、风控拒绝或柜台受理
若风控拒绝:能在
risk_log找到记录;若柜台拒单:订单为rejected且 broker 号为空日志目录中能找到对应运行产物