Manual v0.2 實盤前 Preflight
這頁只做讀取與檢查,不送 Binance 訂單,也不修改策略。它用來判斷目前 dev-only execution 功能離「可以接實盤」還缺哪些關卡。
FAIL=1, WARN=4
30m->5m / TP 0.035
C:\桌面\TRAd_forward_runtime\results\manual_v0_2\forward_paper_test\paper_state.sqlite
切 live 前建議為 0
需先轉 dry-run
需人工檢查
保留舊紀錄,不送單
fake/testnet 前需處理
fake/testnet lifecycle
Demo/Testnet 回寫次數
paper=無 / testnet=無
需人工處理或重試
2026-09-05 02:58 +08:00
2026-09-05 02:58 +08:00
data_update/update_end
strategy_update/update_end
USDT
檢查清單
| 分類 | 檢查項目 | 狀態 | 白話說明 | 依據 |
|---|---|---|---|---|
| 設定檔 | dry-run execution 設定存在 | 通過 | 缺少 execution 設定時,無法確認風控與 dry-run audit 輸出。 | C:\桌面\TRad_forward_runtime\configs\execution_dry_run_template.json |
| 設定檔 | 策略 frozen config 存在 | 通過 | 實盤前必須明確知道目前策略版本、TP/SL、部位大小與 forward 起點。 | configs\manual_strategy_v0_2_frozen_candidate.json |
| 風控設定 | 執行模式必須停在 dry-run/demo | 通過 | 目前只允許做下單前演練;正式 live 開關不應在這個階段打開。 | mode=dry_run, allow_live_trading=False |
| 風控設定 | 允許標的必須剛好等於策略標的 | 通過 | 避免 execution 白名單多出策略外幣種,也避免漏掉策略正在追蹤的幣種。 | strategy=BTCUSDT, VIRTUALUSDT, NEARUSDT, ONDOUSDT, allowed=BTCUSDT, VIRTUALUSDT, NEARUSDT, ONDOUSDT |
| 風控設定 | 只允許 MARKET 市價單 | 通過 | 目前策略規格是碰價後市價進出,尚未開放其他委託型態。 | MARKET |
| 風控設定 | 單筆名目上限需覆蓋策略單筆名目 | 通過 | 風控上限不能小於策略每筆預計名目,否則 dry-run 會一直被擋。 | strategy_notional=4000, max_order=4000 |
| 風控設定 | 單標的名目上限需等於一筆策略名目 | 通過 | 目前策略是同標的最多一筆;單標的上限等於一筆名目,才能防止同幣種疊倉。 | strategy_notional=4000, max_symbol=4000 |
| 風控設定 | 總名目上限需至少覆蓋一筆交易 | 通過 | 總持倉上限至少要容納一筆策略交易;更嚴格的同時持倉數由 max_total / strategy_notional 觀察。 | strategy_notional=4000, max_total=16000 |
| 風控設定 | 單日帳戶停手機制 | 注意 | 這不是目前策略規則;目前未啟用單日總虧損上限。若之後要接 live,再由使用者明確決定是否加入帳戶層停手機制。 | max_daily_loss=未啟用 |
| 風控設定 | 同標的只允許一筆持倉 | 通過 | 這要和目前策略的同標的持倉限制一致。 | one_position_per_symbol=True |
| 風控設定 | 交易所有未完成委託時必須擋單 | 通過 | 避免程式重啟、網路 timeout 或手動掛單時重複送單。 | block_open_exchange_orders=True |
| 風控設定 | 交易所持倉對帳必須啟用或保持 testnet-only | 注意 | live 前要強制比對 SQLite 與交易所持倉;demo 階段可先觀察,但不能直接沿用到 live。 | mode=dry_run, require_exchange_position_match=False |
| 風控設定 | 緊急停止檔案不存在 | 通過 | 檔案存在時,dry-run 風控會拒絕新單。 | execution_stop.flag |
| SQLite 狀態 | paper_state.sqlite 存在 | 通過 | 可以讀取 paper/runtime 狀態。 | C:\桌面\TRAd_forward_runtime\results\manual_v0_2\forward_paper_test\paper_state.sqlite |
| SQLite 狀態 | 核心資料表存在 | 通過 | run_once、WebSocket paper 與 dashboard 需要這些表才能對帳。 | runs/watermarks/signals/trades/positions/fills |
| SQLite 狀態 | execution_orders 表存在 | 通過 | dry-run pipeline 執行後會寫入這張表;尚未執行 dry-run 時可能還沒有。 | execution_orders |
| SQLite 狀態 | 最近 run_once 成功 | 通過 | 最近一輪若剛好仍在 running,以上一輪已完成 success 作為可觀察狀態;若已結束但不是 success,才是阻擋項。 | latest=success, update_end=2026-09-05 02:58 +08:00 |
| SQLite 狀態 | 策略水位存在 | 通過 | 策略層至少要跑過一次,才能知道目前掃描到哪一根 K。 | 2026-09-05 02:56 +08:00 |
| SQLite 狀態 | 資料水位存在 | 通過 | 資料層至少要跑過一次,才能知道市場資料補到哪一根 1m K。 | 2026-09-05 02:58 +08:00 |
| SQLite 狀態 | 資料/策略水位差距可接受 | 通過 | split runtime 下資料水位每分鐘前進,策略水位約每 5 分鐘前進;差距太大代表策略掃描可能落後。 | data=2026-09-05 02:58 +08:00, strategy=2026-09-05 02:56 +08:00, lag_minutes=2.0 |
| SQLite 狀態 | 沒有 ledger / replay conflicts | 未通過 | conflict 代表重掃或狀態同步出現不一致,需要先查完。 | 1 |
| SQLite 狀態 | 切換實盤前不應有 paper 未平倉 | 通過 | 若目前已有 observable paper position,建議等它出場或手動決定如何承接。 | 0 |
| Dry-run 對帳 | 沒有尚未轉單的 observable fills | 通過 | WebSocket paper 已看到成交但 dry-run 還沒轉成預備訂單,需先跑 dry-run pipeline。 | 0 |
| Dry-run 對帳 | 沒有被風控擋下的 dry-run 訂單 | 通過 | 被擋下代表實盤前安全層仍有問題或需要人工接受。 | 0 |
| Dry-run 對帳 | 待 fake exchange 演練訂單 | 通過 | RISK_APPROVED / SUBMITTED / PARTIALLY_FILLED 代表這些單仍在開發演練流程中,未來接 testnet 前要能解釋清楚。 | 0 |
| Dry-run 對帳 | 沒有可重試交易所錯誤 | 通過 | FAILED_RETRYABLE 代表 fake/testnet 送單流程有可重試錯誤,應先處理或人工確認。 | 0 |
| Testnet 演練 | testnet 回報可寫入 lifecycle | 通過 | testnet submit / status 回報必須能追加到 execution_order_events,並更新 execution_orders 的生命週期。 | testnet_events=60, touched_orders=20 |
| Testnet 對帳 | Paper 與 Testnet 持倉一致 | 通過 | 測試盤鏡像若和正式 paper 持倉不同,代表下單演練不能視為乾淨;已知舊差異只保留稽核,不延遲補單。 | paper=無;testnet=無 |
| API 權限 | 提供 API 權限快照 | 注意 | 目前沒有實際檢查 Binance key 權限。dry-run 可以先跳過;live 前必須確認不能提領、正式環境需 IP 限制。 | 未提供 --permission-snapshot |
| Windows 排程 | 排程狀態檢查 | 注意 | 本次略過 Windows 排程查詢;若要接實盤前,仍需確認正式排程狀態。 | skip_scheduler=true |
最近 dry-run 預備訂單
這裡只列 SQLite 裡已經產生的預備訂單。若沒有資料,不代表策略沒有訊號,而是目前沒有 observable fill 被轉成 dry-run order。
| 建立時間 | 動作 | 狀態 | 生命週期 | 幣種 | 訂單方向 | 數量 | 名目 USDT | 預期成交價 | 只減倉 | 交易所 order id | 交易所狀態 | 已成交數量 | 平均成交價 | 最近錯誤 | 風控原因 | 對帳原因 | client order id |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-04T14:49:42.278490+00:00 | exit | ACCEPTED_DRY_RUN | FILLED | ONDOUSDT | SELL | 10,909 | 4,000 | 0.3483 | 是 | 358041999 | FILLED | 10909.0 | 0.35010000 | [] | [] | TRADDRY5855350db1bbd46dea4c597b | |
| 2026-09-04T12:30:40.736710+00:00 | exit | ACCEPTED_DRY_RUN | FILLED | VIRTUALUSDT | BUY | 5,797.6 | 4,000 | 0.6657 | 是 | 234236358 | FILLED | 5797.6 | 0.67100000 | [] | [] | TRADDRY15c44769f713f2384d12476b | |
| 2026-09-04T09:18:25.431221+00:00 | entry | ACCEPTED_DRY_RUN | FILLED | VIRTUALUSDT | SELL | 5,797.6 | 4,000 | 0.6899 | 否 | 234186626 | FILLED | 5797.6 | 0.68480000 | [] | [] | TRADDRY94cc70cf81c3f419e70942fd | |
| 2026-09-03T19:55:07.377006+00:00 | entry | ACCEPTED_DRY_RUN | FILLED | ONDOUSDT | BUY | 10,909 | 4,000 | 0.3666 | 否 | 357736569 | FILLED | 10909.0 | 0.36860000 | [] | [] | TRADDRY2c2b157547763da4316843f1 | |
| 2026-09-03T14:34:22.953228+00:00 | exit | ACCEPTED_DRY_RUN | FILLED | BTCUSDT | SELL | 0.0518 | 4,000 | 79,777.6214 | 是 | 28568668770 | FILLED | 0.0518 | 79698.000000 | [] | [] | TRADDRY3e8129b90198a7c31ac886d4 | |
| 2026-09-03T12:57:27.668102+00:00 | exit | ACCEPTED_DRY_RUN | FILLED | VIRTUALUSDT | SELL | 5,956.2 | 4,000 | 0.695 | 是 | 233871169 | FILLED | 5956.2 | 0.69400000 | [] | [] | TRADDRYfcd71df29b017eb9d2cb30ce | |
| 2026-09-02T22:47:56.641637+00:00 | exit | ACCEPTED_DRY_RUN | FILLED | ONDOUSDT | SELL | 11,586 | 4,000 | 0.3436 | 是 | 357386068 | FILLED | 11586.0 | 0.34260000 | [] | [] | TRADDRYf598d44a6675a3a3c21c3372 | |
| 2026-09-02T10:31:16.533612+00:00 | entry | ACCEPTED_DRY_RUN | FILLED | VIRTUALUSDT | BUY | 5,956.2 | 4,000 | 0.6716 | 否 | 233416996 | FILLED | 5956.2 | 0.67570000 | [] | [] | TRADDRY7eb0e4cde8a5e1471db9a151 | |
| 2026-09-02T10:31:16.529110+00:00 | exit | ACCEPTED_DRY_RUN | FILLED | VIRTUALUSDT | SELL | 5,773.9 | 4,000 | 0.658 | 是 | 233416592 | FILLED | 5773.9 | 0.67500000 | [] | [] | TRADDRY4aecaa07b1b5b25ec4aec787 | |
| 2026-09-02T08:40:57.909465+00:00 | entry | ACCEPTED_DRY_RUN | FILLED | BTCUSDT | BUY | 0.0518 | 4,000 | 77,087.308 | 否 | 28567053416 | FILLED | 0.0518 | 77213.856564 | [] | [] | TRADDRY56b77a8d6f3919eba3a4bf84 | |
| 2026-09-01T12:49:24.422993+00:00 | entry | ACCEPTED_DRY_RUN | FILLED | VIRTUALUSDT | BUY | 5,773.9 | 4,000 | 0.6928 | 否 | 233069500 | FILLED | 5773.9 | 0.68960000 | [] | [] | TRADDRY8a9e82b33bf95e1382d009ee | |
| 2026-09-01T05:46:19.727817+00:00 | exit | ACCEPTED_DRY_RUN | FILLED | VIRTUALUSDT | SELL | 5,784.7 | 4,000 | 0.7156 | 是 | 232970638 | FILLED | 5784.7 | 0.71329789 | [] | [] | TRADDRYc3cb6f287429839608891753 | |
| 2026-09-01T02:48:51.545474+00:00 | entry | ACCEPTED_DRY_RUN | FILLED | VIRTUALUSDT | BUY | 5,784.7 | 4,000 | 0.6915 | 否 | 232926499 | FILLED | 5784.7 | 0.69590000 | [] | [] | TRADDRY4fcd8caaba594158ccf4361d | |
| 2026-09-01T00:05:18.184248+00:00 | exit | ACCEPTED_DRY_RUN | FILLED | NEARUSDT | SELL | 2,142 | 4,000 | 1.9328 | 是 | 622592080 | FILLED | 2142 | 1.9320 | [] | [] | TRADDRY57eccca2fe58ba9bf7785141 | |
| 2026-08-31T22:48:50.878526+00:00 | entry | ACCEPTED_DRY_RUN | FILLED | ONDOUSDT | BUY | 11,586 | 4,000 | 0.3452 | 否 | 356607168 | FILLED | 11586.0 | 0.34520000 | [] | [] | TRADDRY760adb8f41a64ccb8f59a0a3 | |
| 2026-08-31T08:57:56.211220+00:00 | entry | VOID_AUDIT | BLOCKED | BTCUSDT | SELL | 0.0509 | 4,000 | 78,437.8554 | 否 | ["daily_loss_limit_reached"] | [] | TRADDRYc31802b4115907230243f581 | |||||
| 2026-08-30T23:47:55.676319+00:00 | exit | ACCEPTED_DRY_RUN | FILLED | ONDOUSDT | SELL | 11,228 | 4,000 | 0.3384 | 是 | 356394068 | FILLED | 11228.0 | 0.34320000 | [] | [] | TRADDRYf18e9ae7c214bc4932e7c8f6 | |
| 2026-08-30T23:39:22.480633+00:00 | exit | ACCEPTED_DRY_RUN | FILLED | VIRTUALUSDT | SELL | 5,746.5 | 4,000 | 0.6611 | 是 | 232359130 | FILLED | 5746.5 | 0.66150000 | [] | [] | TRADDRY849a41bc3396fa8b66ba4da2 | |
| 2026-08-30T20:43:22.684369+00:00 | entry | ACCEPTED_DRY_RUN | FILLED | VIRTUALUSDT | BUY | 5,746.5 | 4,000 | 0.6961 | 否 | 232269399 | FILLED | 5746.5 | 0.69720000 | [] | [] | TRADDRY99f394cf135d7cc273c6c1f2 | |
| 2026-08-30T20:32:55.347038+00:00 | entry | ACCEPTED_DRY_RUN | FILLED | ONDOUSDT | BUY | 11,228 | 4,000 | 0.3562 | 否 | 355973601 | FILLED | 11228.0 | 0.35590000 | [] | [] | TRADDRYc5842731bb861d4cf5af2a45 | |
| 2026-08-30T10:06:05.187568+00:00 | entry | ACCEPTED_DRY_RUN | FILLED | NEARUSDT | BUY | 2,142 | 4,000 | 1.8672 | 否 | 621598512 | FILLED | 2142 | 1.8710 | [] | [] | TRADDRY54f21f58526f73bd64d6dfd1 |
最近 run_once
用來確認本機 paper runtime 最近是否有正常跑。dev-only 功能不會自動接進這個排程。
| 開始 | 結束 | profile | phase | 處理到 | 狀態 | 錯誤 |
|---|---|---|---|---|---|---|
| 2026-09-05 02:59 +08:00 | 2026-09-05 02:59 +08:00 | split | data | 2026-09-05 02:58 +08:00 | success | |
| 2026-09-05 02:57 +08:00 | 2026-09-05 02:58 +08:00 | split | strategy | 2026-09-05 02:56 +08:00 | success | |
| 2026-09-05 02:56 +08:00 | 2026-09-05 02:56 +08:00 | split | data | 2026-09-05 02:55 +08:00 | success | |
| 2026-09-05 02:55 +08:00 | 2026-09-05 02:55 +08:00 | split | data | 2026-09-05 02:54 +08:00 | success | |
| 2026-09-05 02:54 +08:00 | 2026-09-05 02:54 +08:00 | split | data | 2026-09-05 02:53 +08:00 | success | |
| 2026-09-05 02:52 +08:00 | 2026-09-05 02:53 +08:00 | split | strategy | 2026-09-05 02:51 +08:00 | success | |
| 2026-09-05 02:51 +08:00 | 2026-09-05 02:51 +08:00 | split | data | 2026-09-05 02:50 +08:00 | success | |
| 2026-09-05 02:50 +08:00 | 2026-09-05 02:50 +08:00 | split | data | 2026-09-05 02:49 +08:00 | success | |
| 2026-09-05 02:49 +08:00 | 2026-09-05 02:49 +08:00 | split | data | 2026-09-05 02:48 +08:00 | success | |
| 2026-09-05 02:47 +08:00 | 2026-09-05 02:48 +08:00 | split | strategy | 2026-09-05 02:46 +08:00 | success | |
| 2026-09-05 02:46 +08:00 | 2026-09-05 02:46 +08:00 | split | data | 2026-09-05 02:45 +08:00 | success | |
| 2026-09-05 02:45 +08:00 | 2026-09-05 02:45 +08:00 | split | data | 2026-09-05 02:44 +08:00 | success | |
| 2026-09-05 02:44 +08:00 | 2026-09-05 02:44 +08:00 | split | data | 2026-09-05 02:43 +08:00 | success | |
| 2026-09-05 02:42 +08:00 | 2026-09-05 02:43 +08:00 | split | strategy | 2026-09-05 02:41 +08:00 | success | |
| 2026-09-05 02:41 +08:00 | 2026-09-05 02:41 +08:00 | split | data | 2026-09-05 02:40 +08:00 | success | |
| 2026-09-05 02:40 +08:00 | 2026-09-05 02:40 +08:00 | split | data | 2026-09-05 02:39 +08:00 | success | |
| 2026-09-05 02:39 +08:00 | 2026-09-05 02:39 +08:00 | split | data | 2026-09-05 02:38 +08:00 | success | |
| 2026-09-05 02:37 +08:00 | 2026-09-05 02:38 +08:00 | split | strategy | 2026-09-05 02:36 +08:00 | success | |
| 2026-09-05 02:36 +08:00 | 2026-09-05 02:36 +08:00 | split | data | 2026-09-05 02:35 +08:00 | success | |
| 2026-09-05 02:35 +08:00 | 2026-09-05 02:35 +08:00 | split | data | 2026-09-05 02:34 +08:00 | success |
本次輸入
config=C:\桌面\TRad_forward_runtime\configs\execution_dry_run_template.json
strategy_config=configs\manual_strategy_v0_2_frozen_candidate.json
state_db=C:\桌面\TRAd_forward_runtime\results\manual_v0_2\forward_paper_test\paper_state.sqlite
exchange_snapshot=results\manual_v0_2\execution_dry_run\exchange_snapshot_latest.json
output=C:\桌面\TRad_forward_runtime\reports\manual_strategy_v0_2_execution_preflight_dashboard.html