模擬實盤:配置與運行

本章帶您從「已有回測策略」到「第一次穩定啓動模擬實盤」:該配哪些項、如何確認、啓動後該看什麼。

親愛的用戶,若您手裏已經有一個能回測的 Operator(交易員容器),本章就是進入 live 的最短路徑。我們先把必要配置講清楚,再談可選的「策略快照」「啓動門禁」等進階項。

0. 适用场景

  • 您已有可運行的 Operator,準備從回測進入模擬實盤

  • 您希望先跑通最小路徑,再逐步補充風控、門禁與運維細節

1. 核心概念(本章术语)

啓動 live 前,請確認三者關係。在 qteasy 裏,Operator 負責「算什麼信號」,live 賬戶負責「記錢記倉」,本地數據源負責「給價給歷史」——三者缺一,Trader 無法穩定運行。下表說明各自在 live 子系統中的位置及您要準備的內容。

各列含義角色爲組件名;作用爲在 live 鏈路中的職責;您需要準備什麼爲啓動前檢查項。

如何使用:逐項打勾;若某一列準備不足,先補數據或賬戶再 qt.run(op)

角色

作用

您需要準備什麼

Operator

持有策略與信號邏輯

與回測時同一個 op 對象

live 賬戶

記錄現金、持倉、訂單

live_trade_account_idlive_trade_account_name

本地數據源

提供歷史與實時行情

表數據覆蓋策略頻率(如分鐘策略需分鐘表)

LiveTradeConfig(live 配置快照):qteasy 在啓動 Trader 前,會把分散在 qt.configure(...) 裏的 live 相關項校驗並凍結成一份不可變快照——像起飛前簽字的檢查單,避免運行中被意外改配置。您可在 Shell 裏用 liveconfig 查看摘要。

2. 最小配置集

以下爲常見必配項(不設或設錯時,往往在啓動階段就會報錯)。這些鍵通過 qt.configure(...) 寫入全局配置,啓動時併入 LiveTradeConfig 快照;它們決定「是不是 live、交易什麼資產、用哪個賬戶、價從哪來、單交給誰撮合」。

各列含義配置鍵QT_CONFIG 中的名稱;含義爲該鍵控制的 behavior;不設會怎樣爲常見後果(便於判斷當前報錯是否與此鍵有關)。

如何使用:首次 live 請全部顯式設置;啓動失敗時對照「不設會怎樣」列排查。示例見 §5 模板 A/B。

配置鍵

含義

不設會怎樣

mode=0

進入 live / 模擬實盤

仍走回測或其他模式

asset_type

資產類型,如 E 股票、FD 場內基金

交易規則與數據表可能對不上

live_trade_account_idlive_trade_account_name

使用哪個模擬賬戶

無法綁定賬本

live_trade_broker_type

券商類型,初學用 simulator

無成交通道

live_price_acquire_channel

實時價渠道,如 eastmoney

無法獲取 live 價

live_price_acquire_freq

拉價頻率,如 15MIN

與策略步頻不協調時可能缺數據

以下鍵非啓動硬性門檻,但強烈建議確認——它們影響最小成交單位、日誌落盤與磁盤佔用。與上表同屬 qt.configure 範圍,可在同一腳本里一併寫入。

如何使用:若成交數量「對不齊整手」或日誌找不到文件,回頭查本表對應行。

配置鍵

含義

不設會怎樣

trade_batch_size / sell_batch_size

買賣最小單位

使用默認值

cash_decimal_places / amount_decimal_places

現金/數量小數位

使用默認值

sys_log_file_path / trade_log_file_path

系統/交易日誌目錄

使用包內默認路徑

trade_log_keep_days

日誌保留天數(含 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

live_trade_account_id, live_trade_account_name, live_trade_ui_type

賬戶與 CLI / TUI 選擇

行情與 refill

live_price_acquire_channel, live_price_acquire_freq, live_trade_data_refill_channel, live_trade_*_refill_tables

實時價與定時補數據

交易規則

trade_batch_size, sell_batch_size, stock_delivery_period, cash_delivery_period, pt_buy_threshold, pt_sell_threshold

與回測語義對齊

Broker

live_trade_broker_type, live_trade_broker_params

默認 simulator;擴展見 :doc:4-broker-adapter-and-integration

策略快照(5-A)

live_trade_split_strategy_prepare, live_trade_prepare_lead_seconds, live_trade_strategy_snapshot_max_age_seconds

策略運行前預拉數據;詳見 :doc:6-trader-snapshot-gate

啓動門禁(5-B)

live_trade_startup_gate_modeoff / warn / block

開盤前安全檢查;CLI gate

日誌

sys_log_file_path, trade_log_file_path, trade_log_keep_days

*.risk.log 輪換;見 :doc:5-artifacts-and-troubleshooting

完整字段以 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. 启动流程(分步说明)

  1. 寫好配置:按 §2 完成 qt.configure(...),確認賬戶 ID/名稱。

  2. (可選)覈對快照:運行 §3 的 Python 片段,或啓動後進 Shell 執行 liveconfig --detail

  3. 啓動qt.run(op);命令行示例常用 --ui cli 進入 Trader Shell

  4. 觀察:看狀態、訂單、日誌是否按預期寫入(§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。

命令

典型用途

liveconfig

當前 live 配置摘要

artifacts

四鍵產物路徑(日誌在哪)

gate

手動跑一次啓動門禁(調試)

broker status

模擬券商是否「已連接」

reconcile

對賬快照 JSON

run --task diagnose_pending_orders

在途單診斷(需 DEBUG 模式)

命令全集見 :doc:8-cli-trader-capability-matrix

7.1 Dashboard 與 interactive 模式

Trader Shell 啓動後默認進入 dashboard 模式:單行狀態區滾動顯示下一任務倒計時、監視列表實時價與系統消息,無需輸入命令即可觀察運行節奏。需要手動下單、查配置或執行運維命令時,按 Ctrl+C 打開模式選單,或在 interactive(命令)模式下輸入 dashboard 返回 dashboard。

模式

行爲

dashboard

自動刷新狀態行與監視價;Trader 主循環在後臺繼續運行

interactive(命令)

傳統 Cmd 提示符,可輸入 buyconfigartifacts 等命令

Ctrl+C 模式選單(dashboard 或命令模式下均可用)

  • 5 秒內按 1 → 進入命令模式;2 → 回到 dashboard;3 → 退出並停止 Trader

  • 無需按 Enter,數字鍵立即生效

  • 5 秒內無輸入 → 自動恢復中斷前的模式

  • 選單等待期間再次按 Ctrl+C → 立即退出(與選 3 等效)

若主循環發生未預期異常,Shell 會提示按 1 回到 dashboard 或 3 退出;5 秒無輸入時默認回到 dashboard,Trader 繼續運行。

8. 运行前检查清单

  • 賬戶 ID/名稱可用,且與策略資產池匹配

  • asset_typeasset_pool 一致(股票/基金不要混用規則)

  • live_trade_broker_typesimulator(或您已實現的類型)

  • live 價頻率 不低於 策略運行步頻(分鐘策略需足夠密的 live 價)

  • 日誌路徑合法、磁盤可寫

  • trade_log_keep_days 符合您的留存預期(含 risk 日誌)

9. 常见启动失败与处理

啓動階段報錯時,現象往往集中在配置、賬戶、數據、路徑、頻率或啓動門禁幾類。下表按您看到的現象索引,避免在日誌裏盲目搜索。

各列含義現象爲啓動或首屏時的表現;可能原因爲常見根因(非窮盡);建議爲下一步操作。

如何使用:先匹配「現象」列;若仍無法解決,用 §7 命令導出 liveconfigartifacts 路徑,對照 :doc:5-artifacts-and-troubleshooting 決策樹。

現象

可能原因

建議

配置校驗失敗

某 live 鍵非法或互斥

按報錯字段修正後重啓

賬戶不可用

ID/名稱錯誤或未初始化

檢查賬戶創建參數

數據不可用

渠道/頻率/本地表缺失

檢查 refill 與 stock_1min 等表

路徑錯誤

日誌目錄不可寫

檢查 sys_log_file_path

頻率不協調

live 價比策略步頻更稀

提高 live_price_acquire_freq 或降策略頻

gate block

啓動門禁 block 且檢查未過

gate 輸出與 trace 中 failures

10. 相关跳转

  • 風控與訂單::doc:3-risk-and-order-lifecycle

  • 產物與排錯::doc:5-artifacts-and-troubleshooting

  • Broker 适配::doc:4-broker-adapter-and-integration

  • 快照/門禁::doc:6-trader-snapshot-gate

  • 冒煙清單::doc:7-manual-smoke-live-grid-roadmap

  • CLI 对照::doc:8-cli-trader-capability-matrix

  • 完整演練:tutorials/8-live-trade-risk-and-broker-walkthrough.md

11. 最小验收标准

  • 可在 E 或 FD 路徑下穩定啓動

  • liveconfig / artifacts 輸出符合預期

  • 能觀察到至少一條:訂單提交、風控拒絕或櫃檯受理

  • 若風控拒絕:能在 risk_log 找到記錄;若櫃檯拒單:訂單爲 rejected 且 broker 號爲空

  • 日誌目錄中能找到對應運行產物