{"allowContribute":false,"item":{"artifactHtml":"\u003cdiv class=\"doc\" style=\"font-family:'Noto Sans TC','PingFang TC','Microsoft JhengHei',sans-serif;color:#1a1a1a;line-height:1.75;max-width:920px;margin:0 auto;padding:24px\"\u003e\n\u003cstyle\u003e\n.doc h1{font-size:22px;font-weight:800;margin:0 0 6px;color:#0f172a;letter-spacing:-0.02em;line-height:1.4}\n.doc h2{font-size:18px;font-weight:700;margin:28px 0 12px;color:#0f172a;border-left:4px solid #2563eb;padding-left:10px}\n.doc h3{font-size:15px;font-weight:700;margin:18px 0 8px;color:#1e293b}\n.doc .sub{color:#64748b;font-size:13px;margin-bottom:16px}\n.doc .badge{display:inline-block;font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;margin-right:6px;vertical-align:middle}\n.doc .b-green{background:#dcfce7;color:#166534} .doc .b-blue{background:#dbeafe;color:#1e40af} .doc .b-amber{background:#fef3c7;color:#92400e} .doc .b-slate{background:#f1f5f9;color:#334155;border:1px solid #e2e8f0}\n.doc table{width:100%;border-collapse:collapse;font-size:13px;margin:10px 0 14px} .doc th{background:#f8fafc;text-align:left;padding:8px 10px;border:1px solid #e2e8f0;color:#334155;white-space:nowrap} .doc td{padding:8px 10px;border:1px solid #e2e8f0;vertical-align:top}\n.doc code{font-family:ui-monospace,Menlo,Consolas,monospace;background:#f1f5f9;padding:1px 5px;border-radius:4px;font-size:12px}\n.doc pre{background:#0f172a;color:#e2e8f0;padding:14px;border-radius:10px;overflow:auto;font-size:11px;line-height:1.55;margin:10px 0;white-space:pre-wrap;word-break:break-all}\n.doc .callout{border-radius:10px;padding:12px 14px;margin:12px 0;font-size:13px} .doc .c-blue{background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a} .doc .c-amber{background:#fffbeb;border:1px solid #fde68a;color:#92400e} .doc .c-green{background:#f0fdf4;border:1px solid #bbf7d0;color:#14532d}\n.doc .toc{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:14px 16px} .doc .toc a{color:#2563eb;text-decoration:none} .doc .k{color:#64748b;font-size:12px} .doc ul{margin:6px 0 6px 18px} .doc hr{border:none;border-top:1px solid #e2e8f0;margin:18px 0}\n.doc .grid{display:grid;grid-template-columns:1fr 1fr;gap:12px} @media(max-width:700px){.doc .grid{grid-template-columns:1fr}}\n.doc details{border:1px solid #e2e8f0;border-radius:10px;padding:10px 12px;margin:10px 0;background:#fff} .doc summary{cursor:pointer;font-weight:700;color:#1e293b}\n.doc .filelink{display:inline-block;background:#0f172a;color:#fff !important;padding:6px 12px;border-radius:8px;text-decoration:none;font-size:13px;margin:6px 6px 6px 0}\n\u003c/style\u003e\n\u003cheader\u003e\u003ch1\u003eWO-ENGINE-CODE-FULL-001 — CubeLV 交易引擎完整原始碼與執行依賴交付 — 2026-09-01\u003c/h1\u003e\u003cdiv class=\"sub\"\u003e依 WO 九節順序完整交付｜僅交付盤點、不修改／不重構／不新增｜憑證值以 [REDACTED] 脫敏，保留欄位名／endpoint／邏輯\u003c/div\u003e\u003cdiv\u003e\u003cspan class=\"badge b-blue\"\u003e正式版 v1.7.14-BeShadow\u003c/span\u003e\u003cspan class=\"badge b-green\"\u003e2026-09-01 13:27 +0800 · 8c65196\u003c/span\u003e\u003cspan class=\"badge b-slate\"\u003e77ab6b6232d54f04b4f3f6c4\u003c/span\u003e\u003cspan class=\"badge b-amber\"\u003e2176 行\u003c/span\u003e\u003c/div\u003e\u003c/header\u003e\n\u003cdiv class=\"toc\" style=\"margin-top:16px\"\u003e\u003cstrong\u003e交付導覽（依 WO 第九節）\u003c/strong\u003e\u003col style=\"margin:8px 0 0 18px;font-size:13px;line-height:1.9\"\u003e\n\u003cli\u003e\u003ca href=\"#s1\"\u003e1. 目前正式交易引擎版本\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s2\"\u003e2. 完整 backend/src/index.ts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s3\"\u003e3. 所有直接依賴檔案\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s4\"\u003e4. 專案目錄結構\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s5\"\u003e5. package / build / Docker 資訊\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s6\"\u003e6. 環境變數名稱（憑證遮罩）\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s7\"\u003e7. 外部 API 與資料介面\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s8\"\u003e8. 目前實際交易邏輯\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s9\"\u003e9. CubeLV 專屬依賴清單\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s10\"\u003e10. 可獨立移植部分清單\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s11\"\u003e11. 仍無法從現有程式碼確認的部分\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\u003c/div\u003e\n\u003cdiv class=\"callout c-blue\"\u003e\u003cstrong\u003e檔案下載（完整原始碼）：\u003c/strong\u003e\u003cbr\u003e\n\u003ca class=\"filelink\" href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f0dfde8a59873c2ad5.ts\" target=\"_blank\"\u003e⬇ backend/src/index.ts 完整 2176 行（TS）\u003c/a\u003e\n\u003ca class=\"filelink\" href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f707a7bdc3b43fa827.md\" target=\"_blank\"\u003e⬇ README + 最小移植清單（MD）\u003c/a\u003e\n\u003cdiv class=\"k\"\u003e路徑 \u003ccode\u003eplugins/77ab6b6232d54f04b4f3f6c4/backend/src/index.ts\u003c/code\u003e｜憑證無硬編碼，皆由 Item 欄位 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 讀取，值已脫敏為 [REDACTED]\u003c/div\u003e\u003c/div\u003e\n\u003ch2 id=\"s1\"\u003e1. 目前正式交易引擎版本\u003c/h2\u003e\n\u003cdiv class=\"grid\"\u003e\u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff\"\u003e\u003cstrong\u003e正式運行\u003c/strong\u003e\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emanifest.json version: 1.7.14-BeShadow\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ecommit \u003ccode\u003e8c65196\u003c/code\u003e — 2026-09-01 13:27 +0800 —「修正版本字串 1.7.14-BeShadow」\u003c/li\u003e\n\u003cli\u003e分支：主線 \u003ccode\u003eorigin/installations/77ab6b6232d54f04b4f3f6c4\u003c/code\u003e 快照 \u003ccode\u003e2517d52\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e/api/version\u003c/code\u003e 回 \u003ccode\u003e1.7.14-BeShadow + 30min Asia/Taipei + Setup 0-100 thr55\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e排程：\u003ccode\u003eengine-30min\u003c/code\u003e LOOP \u003ccode\u003e1800000ms\u003c/code\u003e Asia/Taipei\u003c/li\u003e\n\u003c/ul\u003e\u003c/div\u003e\u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff\"\u003e\u003cstrong\u003e是否正式／多版\u003c/strong\u003e\u003cul\u003e\n\u003cli\u003e是 — 本檔即線上執行檔（\u003ccode\u003ebackend/dist/index.js 2345 行\u003c/code\u003e 由此編譯）\u003c/li\u003e\n\u003cli\u003e全 Vault 僅此一套交易引擎，無多套並行\u003c/li\u003e\n\u003cli\u003e最近里程：1.7.13 動態軟鎖影子、1.7.12 窄止損縱深、1.7.11 推播、1.7.8 gated auto-cancel、1.7.7 同輪虛擬持倉\u003c/li\u003e\n\u003c/ul\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e檢查\u003c/th\u003e\u003cth\u003e結果\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e最後更新時間\u003c/td\u003e\u003ctd\u003e2026-09-01 13:27 +0800（git commit）／鏡像同步 2026-09-01 22:56\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e是否被 index.ts 引用以外的檔案\u003c/td\u003e\u003ctd\u003e是 — 見第 3 節（schema/store/plugin/view/manifest/tsconfig）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e實際被使用\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebackend/src/index.ts → dist/index.js\u003c/code\u003e 為唯一執行體，其餘為宣告/型別/視圖\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003ch2 id=\"s2\"\u003e2. 完整 backend/src/index.ts（已同步上傳為檔案）\u003c/h2\u003e\n\u003cdiv class=\"callout c-amber\"\u003e\u003cstrong\u003e說明：\u003c/strong\u003e完整 2176 行已上傳為檔案（上方下載鍵可直接取得 .ts），憑證處理：檔內無任何 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 真值硬編碼，皆以 [REDACTED] 脫敏說明 — 實際值僅存於 Item DB 欄位，程式碼中保留欄位名 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 與 \u003ccode\u003eX-BX-APIKEY\u003c/code\u003e / \u003ccode\u003eHMAC-SHA256(qs, secretKey)\u003c/code\u003e 呼叫邏輯。下方為檔案直達連結，版面內不再重複內嵌 126KB 原始碼以確保載入效能。\u003c/div\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e檔案\u003c/th\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e行數\u003c/th\u003e\u003cth\u003e下載\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eindex.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplugins/77ab6b6232d54f04b4f3f6c4/backend/src/index.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e2176\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f0dfde8a59873c2ad5.ts\" target=\"_blank\"\u003e下載 .ts\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003cdiv class=\"k\"\u003eBingX Base \u003ccode\u003ehttps://open-api.bingx.com\u003c/code\u003e｜簽章 \u003ccode\u003ebuildQuery(sorted) → sign(HMAC-SHA256, secretKey)\u003c/code\u003e｜Header \u003ccode\u003eX-BX-APIKEY: [REDACTED]\u003c/code\u003e｜槓桿/下單/追蹤/保本/撤單/持倉/掛單全在同一檔內，無分散服務。\u003c/div\u003e\n\u003ch2 id=\"s3\"\u003e3. 所有直接依賴檔案\u003c/h2\u003e\n\u003cp class=\"k\"\u003e若 index.ts 依賴其他 .ts/.js/.json，本節全部列出。共 7 檔（含視圖 2 檔，非交易必要但為插件完整性一併交付）。\u003c/p\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e檔案\u003c/th\u003e\u003cth\u003e原路徑\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003epackage.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/package.json\u003c/td\u003e\u003ctd\u003e78 bytes — 唯一依賴 @cubelv/service-sdk\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003emanifest.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/manifest.json\u003c/td\u003e\u003ctd\u003e17 endpoints + 1 LOOP schedule\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etsconfig.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/tsconfig.json\u003c/td\u003e\u003ctd\u003e編譯設定（noEmit, 內建 crypto）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etradeEngineSchema.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/schemas/tradeEngineSchema.ts\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG 14 欄位定義\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etradeEngineConfigStore.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/stores/tradeEngineConfigStore.ts\u003c/td\u003e\u003ctd\u003eConfig 單例存取\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eTradeEnginePlugin.tsx\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/TradeEnginePlugin.tsx\u003c/td\u003e\u003ctd\u003e插件註冊（root/section/virtualFolder）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eTradeEngineView.tsx\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/TradeEngineView.tsx\u003c/td\u003e\u003ctd\u003e視圖（帳戶/持倉/掛單/手動 run/風控重置/obs）\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003cdiv class=\"callout c-green\"\u003e\u003cstrong\u003e依賴判定：\u003c/strong\u003e交易核心僅依賴前 5 檔；後 2 檔為視圖層，無之仍可獨立跑交易（見第 10 節）。全部檔案已與 index.ts 一併上傳至檔案庫，README 內附逐檔說明。\u003c/div\u003e\n\u003ch2 id=\"s4\"\u003e4. 專案目錄結構\u003c/h2\u003e\n\u003cpre\u003eplugins/77ab6b6232d54f04b4f3f6c4/\n├─ .git/ / .gitignore\n├─ cubelv-sdk.host.d.ts           # SDK 型別（宿主注入，編譯期）\n├─ tsconfig.json                  # 頂層（frontend 用）\n├─ backend/\n│  ├─ package.json               # 78 bytes — 唯一依賴 @cubelv/service-sdk\n│  ├─ manifest.json              # 17 endpoints + 1 LOOP schedule\n│  ├─ tsconfig.json              # backend 編譯設定（noEmit, 內建 crypto）\n│  ├─ cubelv-sdk.host.d.ts       # 後端 SDK 型別\n│  ├─ src/index.ts               # ★ 2176 行 — 全部交易邏輯（本 WO 核心）\n│  └─ dist/index.js              # 2345 行 — 編譯產物（runtime 實際載入）\n└─ frontend/\n   ├─ TradeEnginePlugin.tsx      # 插件註冊（root/section/virtualFolder）\n   ├─ TradeEngineView.tsx        # 視圖（帳戶/持倉/掛單/手動 run/風控重置/obs）\n   ├─ bundle.js                  # 打包產物（前端）\n   ├─ schemas/tradeEngineSchema.ts\n   └─ stores/tradeEngineConfigStore.ts\u003c/pre\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003cth\u003e獨立移植是否需要\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/src/index.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eBingX 簽章/下單/風控/排程 runEngine/交易計畫解析\u003c/td\u003e\u003ctd\u003e必須\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/dist/index.js\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e編譯產物\u003c/td\u003e\u003ctd\u003e由 src 編譯產生\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/manifest.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eendpoint + schedule 宣告\u003c/td\u003e\u003ctd\u003e需（轉為 Express + cron）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003efrontend/schemas+stores\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eConfig 型別與存取\u003c/td\u003e\u003ctd\u003e需（轉為 DB model）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003efrontend/*View/Plugin\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eUI\u003c/td\u003e\u003ctd\u003e可選\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003ch2 id=\"s5\"\u003e5. package / build / Docker 資訊\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際狀態\u003c/th\u003e\u003cth\u003e獨立移植做法\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003epackage.json\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e{\"name\":\"trade-engine-backend\",\"version\":\"1.0.0\",\"private\":true}\u003c/code\u003e 無 dependencies 欄（宿主注入 SDK）\u003c/td\u003e\u003ctd\u003e補 \u003ccode\u003edependencies: {\"@cubelv/service-sdk\":\"*\"} + typescript/@types/node\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003epackage-lock.json / pnpm-lock / yarn.lock\u003c/td\u003e\u003ctd\u003e無（Vault 未提交 lock）\u003c/td\u003e\u003ctd\u003e\u003ccode\u003enpm install\u003c/code\u003e 後產生\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003etsconfig\u003c/td\u003e\u003ctd\u003enoEmit, skipLibCheck, paths 指向 host SDK\u003c/td\u003e\u003ctd\u003e改為一般 \u003ccode\u003eoutDir: dist, module: commonjs, target: es2022\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eDockerfile / docker-compose.yml\u003c/td\u003e\u003ctd\u003e無（由 CubeLV 宿主代管，不在插件內）\u003c/td\u003e\u003ctd\u003e自備 \u003ccode\u003eFROM node:20-alpine / npm ci / node dist/index.js\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e建置腳本\u003c/td\u003e\u003ctd\u003e無獨立腳本，由宿主按 manifest 觸發 \u003ccode\u003estart()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003etsc \u0026amp;\u0026amp; node dist/index.js\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e啟動腳本\u003c/td\u003e\u003ctd\u003e無，由 \u003ccode\u003eonSchedule('engine-30min', LOOP 1800000ms Asia/Taipei)\u003c/code\u003e 驅動\u003c/td\u003e\u003ctd\u003e改為 \u003ccode\u003enode-cron / setInterval 30min\u003c/code\u003e + Express 监听 \u003ccode\u003e/api/engine/*\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cdiv class=\"callout c-blue\"\u003e\u003cstrong\u003e最少可移植集：\u003c/strong\u003e \u003ccode\u003ebackend/src/index.ts + manifest.json + tradeEngineSchema.ts\u003c/code\u003e 三檔即可重建；其餘為視圖/建置輔助。\u003c/div\u003e\n\u003ch2 id=\"s6\"\u003e6. 環境變數名稱（憑證遮罩）\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e變數/欄位\u003c/th\u003e\u003cth\u003e來源\u003c/th\u003e\u003cth\u003e預設\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003cth\u003e憑證\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eapiKey\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG Item（新）\u003cbr\u003e兼容 BINGX_PANEL_SECTION_CONFIG（舊）\u003c/td\u003e\u003ctd\u003e''\u003c/td\u003e\u003ctd\u003eBingX \u003ccode\u003eX-BX-APIKEY\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e[REDACTED]\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003esecretKey\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e同上\u003c/td\u003e\u003ctd\u003e''\u003c/td\u003e\u003ctd\u003eHMAC \u003ccode\u003esign(qs, secretKey)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e[REDACTED]\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003econfidenceThreshold\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG\u003c/td\u003e\u003ctd\u003e55\u003c/td\u003e\u003ctd\u003eSetup 0-100 門檻（≤15 自動遷 55）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eminSlPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.8\u003c/td\u003e\u003ctd\u003e最小 SL 距離 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003emaxFeeRiskPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e50\u003c/td\u003e\u003ctd\u003e手續費/風險上限 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003emarginCapPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e60\u003c/td\u003e\u003ctd\u003e保證金上限 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etrailingHardPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e非 gated 硬底 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etrailingHardPctSmall\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003egated 達 1R 後 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedTrailingEnabled\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003efalse\u003c/td\u003e\u003ctd\u003egated 總開關\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedTrailingSymbols\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e[] (=ALL)\u003c/td\u003e\u003ctd\u003egated 清單（空=全量）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedThresholdR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e達 R 才掛 trailing\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eminRR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e1.5\u003c/td\u003e\u003ctd\u003e最小 RR\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003esoftLockPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e20\u003c/td\u003e\u003ctd\u003e軟鎖回撤 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebeTriggerR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.5\u003c/td\u003e\u003ctd\u003e保本觸發 R\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003esoftLockMinPeakR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.3\u003c/td\u003e\u003ctd\u003e軟鎖最小峰值 R\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003esymbols\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e[]\u003c/td\u003e\u003ctd\u003e限定幣種（空=全掃）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eenabled\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003etrue\u003c/td\u003e\u003ctd\u003e總開關\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cdiv class=\"k\"\u003e讀取函式：\u003ccode\u003egetEngineConfig()\u003c/code\u003e / \u003ccode\u003egetBingxConfig()\u003c/code\u003e — 先讀引擎自身 Item，退回舊掛單面板；寫入 \u003ccode\u003ePOST /api/engine/config\u003c/code\u003e 部分更新。\u003c/div\u003e\n\u003ch2 id=\"s7\"\u003e7. 外部 API 與資料介面\u003c/h2\u003e\n\u003ch3\u003e7.1 資料輸入\u003c/h3\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e資料\u003c/th\u003e\u003cth\u003e進入點\u003c/th\u003e\u003cth\u003e函式\u003c/th\u003e\u003cth\u003e格式\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e交易計畫（唯一訊號源）\u003c/td\u003e\u003ctd\u003eNOTE Item — name 含「交易計畫」或「純數據掛單表」\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetLatestPlanSignals() → parseTradingPlanHtml(html)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eHTML \u0026lt;table\u0026gt;：th 含 幣種+錨+止損+成交額 且無 判定欄；td 含 symbol/side/anchor/stopLoss/takeProfit/score → Signal{symbol, LONG/SHORT, confidence(0-100), entryPrice(錨), stopLoss, takeProfit, fvgAnchor}\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e市場現價\u003c/td\u003e\u003ctd\u003eBingX 公開 \u003ccode\u003eGET /openApi/swap/v2/quote/ticker?symbol=SYM-USDT\u003c/code\u003e 兜底 \u003ccode\u003e/quote/klines?interval=1m\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetMarkPrice(symbol)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e免簽名；取 lastPrice/markPrice 或 klines close；HYPE 必須帶 \u003ccode\u003e-\u003c/code\u003e 否則 109400\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e情緒/鏈上/總經\u003c/td\u003e\u003ctd\u003e不由引擎直連；由探員 Agents 寫入 NOTE，再由掛單策略師彙整進交易計畫 NOTE\u003c/td\u003e\u003ctd\u003e—（引擎僅讀交易計畫 NOTE）\u003c/td\u003e\u003ctd\u003e引擎對上游無硬耦合\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch3\u003e7.2 交易執行（BingX）\u003c/h3\u003e\n\u003cp class=\"k\"\u003eBase \u003ccode\u003ehttps://open-api.bingx.com\u003c/code\u003e｜簽章 \u003ccode\u003ebuildQuery(sorted) → sign(HMAC-SHA256, secretKey=[REDACTED]) → ?signature=\u003c/code\u003e｜Header \u003ccode\u003eX-BX-APIKEY: [REDACTED]\u003c/code\u003e\u003c/p\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e動作\u003c/th\u003e\u003cth\u003eEndpoint\u003c/th\u003e\u003cth\u003e函式\u003c/th\u003e\u003cth\u003e關鍵欄位\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e調槓桿\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/leverage\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing()\u003c/code\u003e 前置\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, leverage(3/5/7), side(LONG/SHORT)\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e下單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, side(BUY/SELL), positionSide, type(MARKET/LIMIT), quantity, price(LIMIT時), timestamp\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e掛追蹤\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=TRAILING_STOP_MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceTrailingHard()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, side, positionSide, quantity, priceRate(3%/5%), workingType=MARK_PRICE\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e掛保本 STOP\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=STOP_MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxPlaceBeStop()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003estopPrice = avgPrice ± avgPrice*feeRate*2\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e撤單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eDELETE /openApi/swap/v2/trade/order\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxCancelOrder(symbol, orderId)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e冪等：order not exist 視為成功\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e平倉\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxClosePosition()\u003c/code\u003e + \u003ccode\u003ePOST /api/engine/close-position\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, positionSide(LONG/SHORT必填), quantity(全倉), expectQty 二次確認(偏差\u0026gt;1%拒)\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e查餘額\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/user/balance\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetBalanceInfo()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e回 \u003ccode\u003e{equity, usedMargin → marginPct, raw}\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e查持倉\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/user/positions\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetPositions()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e{symbol, positionSide, positionAmt, avgPrice, unrealizedProfit}\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e查掛單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/trade/openOrders\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003efetchOpenOrders()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e含 \u003ccode\u003eorderId 19位字串化\u003c/code\u003e 防精度丟失\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e查歷史\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/trade/allOrders\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /api/engine/order-history?symbol=\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e需 symbol\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch3\u003e7.3 資料輸出\u003c/h3\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e輸出\u003c/th\u003e\u003cth\u003e寫到哪裡\u003c/th\u003e\u003cth\u003eItemType\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e每輪執行紀錄\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_LOG\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003elogRun(session, results)\u003c/code\u003e — name=session + Taipei時間，保留 50-60 筆\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e防重開\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_DUP\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eisDuplicated/markDuplicated\u003c/code\u003e — 5min 內同 SYMBOL:SIDE 擋重下\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e風控狀態\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_RISK_STATE\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003epeak, beDone, bePrice, gated, gatedThresholdR, stopPrice\u003c/code\u003e；平倉後 sweep 刪除\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e觀察統計\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_SOFT_LOCK_OBS / NARROW_SL_OBS / BE_SHADOW / SHADOW_NOTIFY\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e影子統計（不改交易），達 20/30 筆推播\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eGoogle 試算表\u003c/td\u003e\u003ctd\u003e否 — 引擎不直連\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003ctd\u003e僅探員層使用，引擎只讀 NOTE\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003en8n\u003c/td\u003e\u003ctd\u003e否 — 不參與主流程\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003ctd\u003e獨立周邊插件\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch2 id=\"s8\"\u003e8. 目前實際交易邏輯\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e邏輯\u003c/th\u003e\u003cth\u003e程式實際做法（以程式碼為準）\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eSetup 門檻\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eeffectiveThreshold(cfg)\u003c/code\u003e — 舊 ≤15 遷 55；現 \u003ccode\u003eDEFAULTS.confidenceThreshold=55\u003c/code\u003e，\u003ccode\u003echeckHardRules\u003c/code\u003e 攔 \u003ccode\u003econfidence \u0026lt; thr\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e進場條件\u003c/td\u003e\u003ctd\u003e需 \u003ccode\u003esignal=LONG/SHORT\u003c/code\u003e 且 \u003ccode\u003eentryPrice+stopLoss\u003c/code\u003e 齊全且 SL 方向正確且 SL≥0.8% 且 RR≥1.5（無 TP 則放行）且 保證金\u0026lt;60% 且 非同向持倉 且 非 5min 重複\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eMARKET/LIMIT/BLOCK\u003c/td\u003e\u003ctd\u003e\u003ccode\u003edriftForPlacement(markPrice)\u003c/code\u003e — ≤1.5%(HYPE2%)→MARKET；1.5-3%(HYPE2-4%)→LIMIT；\u0026gt;3%(HYPE\u0026gt;4%)→BLOCK\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e保證金限制\u003c/td\u003e\u003ctd\u003e\u003ccode\u003emarginPct ≥ marginCapPct(60%)\u003c/code\u003e 直接 BLOCK\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eSL\u003c/td\u003e\u003ctd\u003e由交易計畫 NOTE 來；無則用 \u003ccode\u003eanchor*0.992(LONG) / *1.008(SHORT)\u003c/code\u003e 兜底；硬檢 \u003ccode\u003e\u0026lt;0.8% BLOCK\u003c/code\u003e + 第二層 \u003ccode\u003eassertMinSlOrBlock / logNarrowSlObs\u003c/code\u003e + 動態影子\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eTP\u003c/td\u003e\u003ctd\u003e由 NOTE 來；無則不做 RR 攔截，改由追蹤/軟鎖/BE 接管\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eRR\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eRR = |TP-entry| / |entry-SL|\u003c/code\u003e，容差 \u003ccode\u003e1e-9\u003c/code\u003e，\u003ccode\u003eRR \u0026lt; minRR(1.5) BLOCK\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e軟鎖\u003c/td\u003e\u003ctd\u003e\u003ccode\u003epeak≥filterThr(0.3R)\u003c/code\u003e 且 \u003ccode\u003e(peak-unreal)/peak ≥ softLockPct(20%)\u003c/code\u003e → 市價全平 + 影子動態 35/25/20% 對照（依 peakR 分段，僅觀察）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eBE\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eunreal ≥ beTriggerR(0.5R)\u003c/code\u003e 且 \u003ccode\u003eavgPrice\u0026gt;0\u003c/code\u003e → 掛 \u003ccode\u003eSTOP_MARKET @ avgPrice±avgPrice*feeRate*2\u003c/code\u003e；有 STOP 則標 beDone；誤標自動自癒；另有達 1R 撤 BE 影子（僅觀察）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e追蹤停利\u003c/td\u003e\u003ctd\u003e非 gated → 直掛 \u003ccode\u003eTRAILING 3%\u003c/code\u003e；gated → 見下\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eGated 追蹤\u003c/td\u003e\u003ctd\u003e總開關 \u003ccode\u003egatedTrailingEnabled\u003c/code\u003e；空清單=全量；達 \u003ccode\u003egatedThresholdR(1R)\u003c/code\u003e 前掛 STOP -1R，達後撤 STOP 換 5% trailing；冪等撤單；價格無效自動降級 TRAILING\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e保護單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceTrailingHard / bingxPlaceBeStop\u003c/code\u003e + \u003ccode\u003ePOST /api/engine/place-hard-stop\u003c/code\u003e 手動補掛\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e孤兒單清理\u003c/td\u003e\u003ctd\u003e無倉的 STOP/TRAILING 全撤；重複 TRAILING 去重（同 SYMBOL:SIDE 留最新 orderId）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e重複下單防護\u003c/td\u003e\u003ctd\u003e三層：同向持倉互斥 + 5min DUP 去重 + 同輪虛擬持倉（已 FIRED 寫入 positions 快照）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e漂移判斷\u003c/td\u003e\u003ctd\u003e錨 vs 現價 pct 決定 MARKET/LIMIT/BLOCK（HYPE 寬限）；LIMIT 另有 同錨去重(±0.15%同價留 qty 最接近) + 漂移\u0026gt;blockThr 自動撤 + 錨消失/Setup\u0026lt;thr 重評撤\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e錯誤處理/重試\u003c/td\u003e\u003ctd\u003e單筆失敗不中斷全輪；STOP 無效/窄止損自動降級 TRAILING；leverage 失敗忽略續下單；balance/positions 失敗回 null/空陣列；每步 try/catch + console\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e交易紀錄\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eExecResult{symbol, FIRED/BLOCKED/SKIP/ERROR, detail, signal, orderId, sizing}\u003c/code\u003e 寫 \u003ccode\u003eTRADE_ENGINE_LOG\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cdiv class=\"callout c-amber\"\u003e\u003cstrong\u003e補充：\u003c/strong\u003e槓桿 \u003ccode\u003eSetup≥85→7x / ≥70→5x / else 3x\u003c/code\u003e；Sizing \u003ccode\u003e1R=equity*1%, qty=1R/|entry-SL|\u003c/code\u003e；費/風險 \u003ccode\u003efee=notional*0.1% , fee/R \u0026gt;50% BLOCK\u003c/code\u003e；排序高分優先不限 Top3。\u003c/div\u003e\n\u003ch2 id=\"s9\"\u003e9. CubeLV 專屬依賴清單\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003eCubeLV 專屬\u003c/th\u003e\u003cth\u003e實際依賴點\u003c/th\u003e\u003cth\u003e移植需替換\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e@cubelv/service-sdk — createService/getItemsByType/upsertItem/sendPush/onSchedule/start\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e全檔頂部 import + 所有 Item 讀寫 + 排程 + 推播\u003c/td\u003e\u003ctd\u003e替為 Express + 任意 DB + node-cron + FCM/Webhook\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003eVault Item DB（NOTE / TRADE_ENGINE_* 8 類）\u003c/td\u003e\u003ctd\u003eConfig/LOG/DUP/RISK_STATE/OBS 全落 Item\u003c/td\u003e\u003ctd\u003e替為 Postgres/SQLite/Mongo + 對應 CRUD\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003ePlugin/ Manifest 宿主\u003c/td\u003e\u003ctd\u003e\u003ccode\u003emanifest.json\u003c/code\u003e 宣告端點與 schedule\u003c/td\u003e\u003ctd\u003e替為一般 Node 服務啟動\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003e交易計畫 NOTE SSOT\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetLatestPlanSignals → parseTradingPlanHtml\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e替為 REST/DB/檔案，只要吐同欄位 HTML/JSON\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003eAgent 探員體系\u003c/td\u003e\u003ctd\u003e8 因子資料由 Vault Agents 排程產 NOTE\u003c/td\u003e\u003ctd\u003e替為任意 cron + API 抓取\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e6\u003c/td\u003e\u003ctd\u003e前端 SDK（@cubelv/sdk）\u003c/td\u003e\u003ctd\u003eTradeEnginePlugin/View/Schema\u003c/td\u003e\u003ctd\u003e可不移植，另做管理頁\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch2 id=\"s10\"\u003e10. 可獨立移植部分清單\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003e可移植核心\u003c/th\u003e\u003cth\u003e所在\u003c/th\u003e\u003cth\u003e是否需 CubeLV\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003eSetup 門檻邏輯\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eeffectiveThreshold + checkHardRules\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003e5 硬檢（Setup/保證金/SL/RR/費）\u003c/td\u003e\u003ctd\u003e\u003ccode\u003echeckHardRules\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e風控 BE / 軟鎖 / 追蹤 / Gated / 硬底自癒\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erunRiskManagement\u003c/code\u003e 全段\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003eSizing / 槓桿分級 / 漂移判定\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ecalcSizing / driftForPlacement / marketThr/blockThr\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003e下單 / 撤單 / 持倉 / 訂單同步 / 去重 / 孤兒清理\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing / bingxCancelOrder / getPositions / fetchOpenOrders / evaluatePendingLimits\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（僅需換交易所 client）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e6\u003c/td\u003e\u003ctd\u003e交易計畫解析\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eparseTradingPlanHtml\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（可改吃 JSON）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e7\u003c/td\u003e\u003ctd\u003eBingX API 簽章與 endpoints\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebuildQuery/sign + BINGX_API_BASE\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（換交易所改此層）\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cdiv class=\"callout c-green\"\u003e\u003cstrong\u003e結論：\u003c/strong\u003e除第 9 節 6 項 CubeLV 殼之外，全部交易/風控/下單邏輯皆可原樣移植；最小集僅需 \u003ccode\u003eindex.ts + manifest.json + schema\u003c/code\u003e 三檔 + 一個 DB + BingX（或替換）即可獨立跑。\u003c/div\u003e\n\u003ch2 id=\"s11\"\u003e11. 仍無法從現有程式碼確認的部分\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e8 因子權重與評分公式\u003c/td\u003e\u003ctd\u003e不在引擎內；在掛單策略師與探員 prompts / Sheets 中，需另參 WO SETUP-FACTOR-AUDIT-001 稽核報告\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003eBingX 真實費率與滑價\u003c/td\u003e\u003ctd\u003e程式僅用 \u003ccode\u003efeeRate=0.0005 per side\u003c/code\u003e 估算，實際以交易所帳單為準\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e宿主層限流/重試/代理\u003c/td\u003e\u003ctd\u003e程式僅對 openOrders/orderId 做大整數字串化與 5min 去重；網路層重試與住宅代理細節由宿主 fetch 實現，未在插件內\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003e舊版廢棄碼行為\u003c/td\u003e\u003ctd\u003e如 \u003ccode\u003eBINGX_PANEL_SECTION_CONFIG\u003c/code\u003e 雙讀、精簡 HTML 容錯、≤15→55 遷移等為相容保留，現行不觸發但仍在檔內\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003eDocker/宿主部署參數\u003c/td\u003e\u003ctd\u003e插件內無 Dockerfile/compose/lock，實際部署由 CubeLV 平台代管，無法從程式碼反推容器規格\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003cdiv class=\"k\" style=\"font-size:12px;line-height:1.8\"\u003e\n\u003cstrong\u003e結案確認 — WO-ENGINE-CODE-FULL-001\u003c/strong\u003e\u003cbr\u003e\n• 1–11 已依序交付：正式版 1.7.14-BeShadow / 完整 index.ts 2176 行（檔案可下載） / 7 依賴檔全文 / 目錄樹 / package/build/Docker / 環境變數（apiKey/secretKey 以 [REDACTED] 脫敏） / 外部 API 與資料介面 / 實際交易邏輯 16 項 / CubeLV 專屬 6 項 / 可移植 7 項 / 未確認 5 項。\u003cbr\u003e\n• 本 WO 僅交付盤點，不修改／不重構／不新增；檔案下載與本筆記互為補充。\u003cbr\u003e\n• 關聯：WO SETUP-FACTOR-AUDIT-001（8 因子稽核）、WO ENGINE-CODE-RETRIEVAL-001（第一版盤點）。\u003cbr\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n","content":"\u003cdiv class=\"doc\" style=\"font-family:'Noto Sans TC','PingFang TC','Microsoft JhengHei',sans-serif;color:#1a1a1a;line-height:1.75;max-width:920px;margin:0 auto;padding:24px\"\u003e   \u003cdiv class=\"toc\" style=\"margin-top:16px\"\u003e\u003cstrong\u003e交付導覽（依 WO 第九節）\u003c/strong\u003e\u003col style=\"margin:8px 0 0 18px;font-size:13px;line-height:1.9\"\u003e \u003cli\u003e\u003ca href=\"#s1\"\u003e1. 目前正式交易引擎版本\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s2\"\u003e2. 完整 backend/src/index.ts\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s3\"\u003e3. 所有直接依賴檔案\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s4\"\u003e4. 專案目錄結構\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s5\"\u003e5. package / build / Docker 資訊\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s6\"\u003e6. 環境變數名稱（憑證遮罩）\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s7\"\u003e7. 外部 API 與資料介面\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s8\"\u003e8. 目前實際交易邏輯\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s9\"\u003e9. CubeLV 專屬依賴清單\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s10\"\u003e10. 可獨立移植部分清單\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s11\"\u003e11. 仍無法從現有程式碼確認的部分\u003c/a\u003e\u003c/li\u003e \u003c/ol\u003e\u003c/div\u003e \u003cdiv class=\"callout c-blue\"\u003e\u003cstrong\u003e檔案下載（完整原始碼）：\u003c/strong\u003e\u003cbr\u003e \u003ca class=\"filelink\" href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f0dfde8a59873c2ad5.ts\" target=\"_blank\"\u003e⬇ backend/src/index.ts 完整 2176 行（TS）\u003c/a\u003e \u003ca class=\"filelink\" href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f707a7bdc3b43fa827.md\" target=\"_blank\"\u003e⬇ README + 最小移植清單（MD）\u003c/a\u003e \u003cdiv class=\"k\"\u003e路徑 \u003ccode\u003eplugins/77ab6b6232d54f04b4f3f6c4/backend/src/index.ts\u003c/code\u003e｜憑證無硬編碼，皆由 Item 欄位 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 讀取，值已脫敏為 [REDACTED]\u003c/div\u003e\u003c/div\u003e \u003ch2 id=\"s1\"\u003e1. 目前正式交易引擎版本\u003c/h2\u003e \u003cdiv class=\"grid\"\u003e\u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff\"\u003e\u003cstrong\u003e正式運行\u003c/strong\u003e\u003cul\u003e \u003cli\u003e\u003ccode\u003emanifest.json version: 1.7.14-BeShadow\u003c/code\u003e\u003c/li\u003e \u003cli\u003ecommit \u003ccode\u003e8c65196\u003c/code\u003e — 2026-09-01 13:27 +0800 —「修正版本字串 1.7.14-BeShadow」\u003c/li\u003e \u003cli\u003e分支：主線 \u003ccode\u003eorigin/installations/77ab6b6232d54f04b4f3f6c4\u003c/code\u003e 快照 \u003ccode\u003e2517d52\u003c/code\u003e\u003c/li\u003e \u003cli\u003e\u003ccode\u003e/api/version\u003c/code\u003e 回 \u003ccode\u003e1.7.14-BeShadow + 30min Asia/Taipei + Setup 0-100 thr55\u003c/code\u003e\u003c/li\u003e \u003cli\u003e排程：\u003ccode\u003eengine-30min\u003c/code\u003e LOOP \u003ccode\u003e1800000ms\u003c/code\u003e Asia/Taipei\u003c/li\u003e \u003c/ul\u003e\u003c/div\u003e\u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff\"\u003e\u003cstrong\u003e是否正式／多版\u003c/strong\u003e\u003cul\u003e \u003cli\u003e是 — 本檔即線上執行檔（\u003ccode\u003ebackend/dist/index.js 2345 行\u003c/code\u003e 由此編譯）\u003c/li\u003e \u003cli\u003e全 Vault 僅此一套交易引擎，無多套並行\u003c/li\u003e \u003cli\u003e最近里程：1.7.13 動態軟鎖影子、1.7.12 窄止損縱深、1.7.11 推播、1.7.8 gated auto-cancel、1.7.7 同輪虛擬持倉\u003c/li\u003e \u003c/ul\u003e\u003c/div\u003e\u003c/div\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e檢查\u003c/th\u003e\u003cth\u003e結果\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e最後更新時間\u003c/td\u003e\u003ctd\u003e2026-09-01 13:27 +0800（git commit）／鏡像同步 2026-09-01 22:56\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e是否被 index.ts 引用以外的檔案\u003c/td\u003e\u003ctd\u003e是 — 見第 3 節（schema/store/plugin/view/manifest/tsconfig）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e實際被使用\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebackend/src/index.ts → dist/index.js\u003c/code\u003e 為唯一執行體，其餘為宣告/型別/視圖\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e \u003ch2 id=\"s2\"\u003e2. 完整 backend/src/index.ts（已同步上傳為檔案）\u003c/h2\u003e \u003cdiv class=\"callout c-amber\"\u003e\u003cstrong\u003e說明：\u003c/strong\u003e完整 2176 行已上傳為檔案（上方下載鍵可直接取得 .ts），憑證處理：檔內無任何 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 真值硬編碼，皆以 [REDACTED] 脫敏說明 — 實際值僅存於 Item DB 欄位，程式碼中保留欄位名 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 與 \u003ccode\u003eX-BX-APIKEY\u003c/code\u003e / \u003ccode\u003eHMAC-SHA256(qs, secretKey)\u003c/code\u003e 呼叫邏輯。下方為檔案直達連結，版面內不再重複內嵌 126KB 原始碼以確保載入效能。\u003c/div\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e檔案\u003c/th\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e行數\u003c/th\u003e\u003cth\u003e下載\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eindex.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplugins/77ab6b6232d54f04b4f3f6c4/backend/src/index.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e2176\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f0dfde8a59873c2ad5.ts\" target=\"_blank\"\u003e下載 .ts\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"k\"\u003eBingX Base \u003ccode\u003ehttps://open-api.bingx.com\u003c/code\u003e｜簽章 \u003ccode\u003ebuildQuery(sorted) → sign(HMAC-SHA256, secretKey)\u003c/code\u003e｜Header \u003ccode\u003eX-BX-APIKEY: [REDACTED]\u003c/code\u003e｜槓桿/下單/追蹤/保本/撤單/持倉/掛單全在同一檔內，無分散服務。\u003c/div\u003e \u003ch2 id=\"s3\"\u003e3. 所有直接依賴檔案\u003c/h2\u003e \u003cp class=\"k\"\u003e若 index.ts 依賴其他 .ts/.js/.json，本節全部列出。共 7 檔（含視圖 2 檔，非交易必要但為插件完整性一併交付）。\u003c/p\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e檔案\u003c/th\u003e\u003cth\u003e原路徑\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003epackage.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/package.json\u003c/td\u003e\u003ctd\u003e78 bytes — 唯一依賴 @cubelv/service-sdk\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003emanifest.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/manifest.json\u003c/td\u003e\u003ctd\u003e17 endpoints + 1 LOOP schedule\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etsconfig.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/tsconfig.json\u003c/td\u003e\u003ctd\u003e編譯設定（noEmit, 內建 crypto）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etradeEngineSchema.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/schemas/tradeEngineSchema.ts\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG 14 欄位定義\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etradeEngineConfigStore.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/stores/tradeEngineConfigStore.ts\u003c/td\u003e\u003ctd\u003eConfig 單例存取\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eTradeEnginePlugin.tsx\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/TradeEnginePlugin.tsx\u003c/td\u003e\u003ctd\u003e插件註冊（root/section/virtualFolder）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eTradeEngineView.tsx\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/TradeEngineView.tsx\u003c/td\u003e\u003ctd\u003e視圖（帳戶/持倉/掛單/手動 run/風控重置/obs）\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"callout c-green\"\u003e\u003cstrong\u003e依賴判定：\u003c/strong\u003e交易核心僅依賴前 5 檔；後 2 檔為視圖層，無之仍可獨立跑交易（見第 10 節）。全部檔案已與 index.ts 一併上傳至檔案庫，README 內附逐檔說明。\u003c/div\u003e \u003ch2 id=\"s4\"\u003e4. 專案目錄結構\u003c/h2\u003e \u003cpre\u003eplugins/77ab6b6232d54f04b4f3f6c4/\n├─ .git/ / .gitignore\n├─ cubelv-sdk.host.d.ts           # SDK 型別（宿主注入，編譯期）\n├─ tsconfig.json                  # 頂層（frontend 用）\n├─ backend/\n│  ├─ package.json               # 78 bytes — 唯一依賴 @cubelv/service-sdk\n│  ├─ manifest.json              # 17 endpoints + 1 LOOP schedule\n│  ├─ tsconfig.json              # backend 編譯設定（noEmit, 內建 crypto）\n│  ├─ cubelv-sdk.host.d.ts       # 後端 SDK 型別\n│  ├─ src/index.ts               # ★ 2176 行 — 全部交易邏輯（本 WO 核心）\n│  └─ dist/index.js              # 2345 行 — 編譯產物（runtime 實際載入）\n└─ frontend/\n   ├─ TradeEnginePlugin.tsx      # 插件註冊（root/section/virtualFolder）\n   ├─ TradeEngineView.tsx        # 視圖（帳戶/持倉/掛單/手動 run/風控重置/obs）\n   ├─ bundle.js                  # 打包產物（前端）\n   ├─ schemas/tradeEngineSchema.ts\n   └─ stores/tradeEngineConfigStore.ts\u003c/pre\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003cth\u003e獨立移植是否需要\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/src/index.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eBingX 簽章/下單/風控/排程 runEngine/交易計畫解析\u003c/td\u003e\u003ctd\u003e必須\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/dist/index.js\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e編譯產物\u003c/td\u003e\u003ctd\u003e由 src 編譯產生\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/manifest.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eendpoint + schedule 宣告\u003c/td\u003e\u003ctd\u003e需（轉為 Express + cron）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003efrontend/schemas+stores\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eConfig 型別與存取\u003c/td\u003e\u003ctd\u003e需（轉為 DB model）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003efrontend/*View/Plugin\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eUI\u003c/td\u003e\u003ctd\u003e可選\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e \u003ch2 id=\"s5\"\u003e5. package / build / Docker 資訊\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際狀態\u003c/th\u003e\u003cth\u003e獨立移植做法\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003epackage.json\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e{\"name\":\"trade-engine-backend\",\"version\":\"1.0.0\",\"private\":true}\u003c/code\u003e 無 dependencies 欄（宿主注入 SDK）\u003c/td\u003e\u003ctd\u003e補 \u003ccode\u003edependencies: {\"@cubelv/service-sdk\":\"*\"} + typescript/@types/node\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003epackage-lock.json / pnpm-lock / yarn.lock\u003c/td\u003e\u003ctd\u003e無（Vault 未提交 lock）\u003c/td\u003e\u003ctd\u003e\u003ccode\u003enpm install\u003c/code\u003e 後產生\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003etsconfig\u003c/td\u003e\u003ctd\u003enoEmit, skipLibCheck, paths 指向 host SDK\u003c/td\u003e\u003ctd\u003e改為一般 \u003ccode\u003eoutDir: dist, module: commonjs, target: es2022\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eDockerfile / docker-compose.yml\u003c/td\u003e\u003ctd\u003e無（由 CubeLV 宿主代管，不在插件內）\u003c/td\u003e\u003ctd\u003e自備 \u003ccode\u003eFROM node:20-alpine / npm ci / node dist/index.js\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e建置腳本\u003c/td\u003e\u003ctd\u003e無獨立腳本，由宿主按 manifest 觸發 \u003ccode\u003estart()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003etsc \u0026amp;\u0026amp; node dist/index.js\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e啟動腳本\u003c/td\u003e\u003ctd\u003e無，由 \u003ccode\u003eonSchedule('engine-30min', LOOP 1800000ms Asia/Taipei)\u003c/code\u003e 驅動\u003c/td\u003e\u003ctd\u003e改為 \u003ccode\u003enode-cron / setInterval 30min\u003c/code\u003e + Express 监听 \u003ccode\u003e/api/engine/*\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"callout c-blue\"\u003e\u003cstrong\u003e最少可移植集：\u003c/strong\u003e \u003ccode\u003ebackend/src/index.ts + manifest.json + tradeEngineSchema.ts\u003c/code\u003e 三檔即可重建；其餘為視圖/建置輔助。\u003c/div\u003e \u003ch2 id=\"s6\"\u003e6. 環境變數名稱（憑證遮罩）\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e變數/欄位\u003c/th\u003e\u003cth\u003e來源\u003c/th\u003e\u003cth\u003e預設\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003cth\u003e憑證\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003eapiKey\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG Item（新）\u003cbr\u003e兼容 BINGX_PANEL_SECTION_CONFIG（舊）\u003c/td\u003e\u003ctd\u003e''\u003c/td\u003e\u003ctd\u003eBingX \u003ccode\u003eX-BX-APIKEY\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e[REDACTED]\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003esecretKey\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e同上\u003c/td\u003e\u003ctd\u003e''\u003c/td\u003e\u003ctd\u003eHMAC \u003ccode\u003esign(qs, secretKey)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e[REDACTED]\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003econfidenceThreshold\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG\u003c/td\u003e\u003ctd\u003e55\u003c/td\u003e\u003ctd\u003eSetup 0-100 門檻（≤15 自動遷 55）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003eminSlPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.8\u003c/td\u003e\u003ctd\u003e最小 SL 距離 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003emaxFeeRiskPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e50\u003c/td\u003e\u003ctd\u003e手續費/風險上限 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003emarginCapPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e60\u003c/td\u003e\u003ctd\u003e保證金上限 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003etrailingHardPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e非 gated 硬底 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003etrailingHardPctSmall\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003egated 達 1R 後 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedTrailingEnabled\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003efalse\u003c/td\u003e\u003ctd\u003egated 總開關\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedTrailingSymbols\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e[] (=ALL)\u003c/td\u003e\u003ctd\u003egated 清單（空=全量）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedThresholdR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e達 R 才掛 trailing\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003eminRR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e1.5\u003c/td\u003e\u003ctd\u003e最小 RR\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003esoftLockPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e20\u003c/td\u003e\u003ctd\u003e軟鎖回撤 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebeTriggerR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.5\u003c/td\u003e\u003ctd\u003e保本觸發 R\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003esoftLockMinPeakR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.3\u003c/td\u003e\u003ctd\u003e軟鎖最小峰值 R\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003esymbols\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e[]\u003c/td\u003e\u003ctd\u003e限定幣種（空=全掃）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003eenabled\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003etrue\u003c/td\u003e\u003ctd\u003e總開關\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"k\"\u003e讀取函式：\u003ccode\u003egetEngineConfig()\u003c/code\u003e / \u003ccode\u003egetBingxConfig()\u003c/code\u003e — 先讀引擎自身 Item，退回舊掛單面板；寫入 \u003ccode\u003ePOST /api/engine/config\u003c/code\u003e 部分更新。\u003c/div\u003e \u003ch2 id=\"s7\"\u003e7. 外部 API 與資料介面\u003c/h2\u003e \u003ch3\u003e7.1 資料輸入\u003c/h3\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e資料\u003c/th\u003e\u003cth\u003e進入點\u003c/th\u003e\u003cth\u003e函式\u003c/th\u003e\u003cth\u003e格式\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e交易計畫（唯一訊號源）\u003c/td\u003e\u003ctd\u003eNOTE Item — name 含「交易計畫」或「純數據掛單表」\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetLatestPlanSignals() → parseTradingPlanHtml(html)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eHTML \u0026lt;table\u0026gt;：th 含 幣種+錨+止損+成交額 且無 判定欄；td 含 symbol/side/anchor/stopLoss/takeProfit/score → Signal{symbol, LONG/SHORT, confidence(0-100), entryPrice(錨), stopLoss, takeProfit, fvgAnchor}\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e市場現價\u003c/td\u003e\u003ctd\u003eBingX 公開 \u003ccode\u003eGET /openApi/swap/v2/quote/ticker?symbol=SYM-USDT\u003c/code\u003e 兜底 \u003ccode\u003e/quote/klines?interval=1m\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetMarkPrice(symbol)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e免簽名；取 lastPrice/markPrice 或 klines close；HYPE 必須帶 \u003ccode\u003e-\u003c/code\u003e 否則 109400\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e情緒/鏈上/總經\u003c/td\u003e\u003ctd\u003e不由引擎直連；由探員 Agents 寫入 NOTE，再由掛單策略師彙整進交易計畫 NOTE\u003c/td\u003e\u003ctd\u003e—（引擎僅讀交易計畫 NOTE）\u003c/td\u003e\u003ctd\u003e引擎對上游無硬耦合\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003ch3\u003e7.2 交易執行（BingX）\u003c/h3\u003e \u003cp class=\"k\"\u003eBase \u003ccode\u003ehttps://open-api.bingx.com\u003c/code\u003e｜簽章 \u003ccode\u003ebuildQuery(sorted) → sign(HMAC-SHA256, secretKey=[REDACTED]) → ?signature=\u003c/code\u003e｜Header \u003ccode\u003eX-BX-APIKEY: [REDACTED]\u003c/code\u003e\u003c/p\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e動作\u003c/th\u003e\u003cth\u003eEndpoint\u003c/th\u003e\u003cth\u003e函式\u003c/th\u003e\u003cth\u003e關鍵欄位\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e調槓桿\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/leverage\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing()\u003c/code\u003e 前置\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, leverage(3/5/7), side(LONG/SHORT)\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e下單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, side(BUY/SELL), positionSide, type(MARKET/LIMIT), quantity, price(LIMIT時), timestamp\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e掛追蹤\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=TRAILING_STOP_MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceTrailingHard()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, side, positionSide, quantity, priceRate(3%/5%), workingType=MARK_PRICE\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e掛保本 STOP\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=STOP_MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxPlaceBeStop()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003estopPrice = avgPrice ± avgPrice*feeRate*2\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e撤單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eDELETE /openApi/swap/v2/trade/order\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxCancelOrder(symbol, orderId)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e冪等：order not exist 視為成功\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e平倉\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxClosePosition()\u003c/code\u003e + \u003ccode\u003ePOST /api/engine/close-position\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, positionSide(LONG/SHORT必填), quantity(全倉), expectQty 二次確認(偏差\u0026gt;1%拒)\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e查餘額\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/user/balance\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetBalanceInfo()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e回 \u003ccode\u003e{equity, usedMargin → marginPct, raw}\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e查持倉\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/user/positions\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetPositions()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e{symbol, positionSide, positionAmt, avgPrice, unrealizedProfit}\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e查掛單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/trade/openOrders\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003efetchOpenOrders()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e含 \u003ccode\u003eorderId 19位字串化\u003c/code\u003e 防精度丟失\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e查歷史\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/trade/allOrders\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /api/engine/order-history?symbol=\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e需 symbol\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003ch3\u003e7.3 資料輸出\u003c/h3\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e輸出\u003c/th\u003e\u003cth\u003e寫到哪裡\u003c/th\u003e\u003cth\u003eItemType\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e每輪執行紀錄\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_LOG\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003elogRun(session, results)\u003c/code\u003e — name=session + Taipei時間，保留 50-60 筆\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e防重開\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_DUP\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eisDuplicated/markDuplicated\u003c/code\u003e — 5min 內同 SYMBOL:SIDE 擋重下\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e風控狀態\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_RISK_STATE\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003epeak, beDone, bePrice, gated, gatedThresholdR, stopPrice\u003c/code\u003e；平倉後 sweep 刪除\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e觀察統計\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_SOFT_LOCK_OBS / NARROW_SL_OBS / BE_SHADOW / SHADOW_NOTIFY\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e影子統計（不改交易），達 20/30 筆推播\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eGoogle 試算表\u003c/td\u003e\u003ctd\u003e否 — 引擎不直連\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003ctd\u003e僅探員層使用，引擎只讀 NOTE\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003en8n\u003c/td\u003e\u003ctd\u003e否 — 不參與主流程\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003ctd\u003e獨立周邊插件\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003ch2 id=\"s8\"\u003e8. 目前實際交易邏輯\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e邏輯\u003c/th\u003e\u003cth\u003e程式實際做法（以程式碼為準）\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eSetup 門檻\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eeffectiveThreshold(cfg)\u003c/code\u003e — 舊 ≤15 遷 55；現 \u003ccode\u003eDEFAULTS.confidenceThreshold=55\u003c/code\u003e，\u003ccode\u003echeckHardRules\u003c/code\u003e 攔 \u003ccode\u003econfidence \u0026lt; thr\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e進場條件\u003c/td\u003e\u003ctd\u003e需 \u003ccode\u003esignal=LONG/SHORT\u003c/code\u003e 且 \u003ccode\u003eentryPrice+stopLoss\u003c/code\u003e 齊全且 SL 方向正確且 SL≥0.8% 且 RR≥1.5（無 TP 則放行）且 保證金\u0026lt;60% 且 非同向持倉 且 非 5min 重複\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eMARKET/LIMIT/BLOCK\u003c/td\u003e\u003ctd\u003e\u003ccode\u003edriftForPlacement(markPrice)\u003c/code\u003e — ≤1.5%(HYPE2%)→MARKET；1.5-3%(HYPE2-4%)→LIMIT；\u0026gt;3%(HYPE\u0026gt;4%)→BLOCK\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e保證金限制\u003c/td\u003e\u003ctd\u003e\u003ccode\u003emarginPct ≥ marginCapPct(60%)\u003c/code\u003e 直接 BLOCK\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eSL\u003c/td\u003e\u003ctd\u003e由交易計畫 NOTE 來；無則用 \u003ccode\u003eanchor*0.992(LONG) / *1.008(SHORT)\u003c/code\u003e 兜底；硬檢 \u003ccode\u003e\u0026lt;0.8% BLOCK\u003c/code\u003e + 第二層 \u003ccode\u003eassertMinSlOrBlock / logNarrowSlObs\u003c/code\u003e + 動態影子\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eTP\u003c/td\u003e\u003ctd\u003e由 NOTE 來；無則不做 RR 攔截，改由追蹤/軟鎖/BE 接管\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eRR\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eRR = |TP-entry| / |entry-SL|\u003c/code\u003e，容差 \u003ccode\u003e1e-9\u003c/code\u003e，\u003ccode\u003eRR \u0026lt; minRR(1.5) BLOCK\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e軟鎖\u003c/td\u003e\u003ctd\u003e\u003ccode\u003epeak≥filterThr(0.3R)\u003c/code\u003e 且 \u003ccode\u003e(peak-unreal)/peak ≥ softLockPct(20%)\u003c/code\u003e → 市價全平 + 影子動態 35/25/20% 對照（依 peakR 分段，僅觀察）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eBE\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eunreal ≥ beTriggerR(0.5R)\u003c/code\u003e 且 \u003ccode\u003eavgPrice\u0026gt;0\u003c/code\u003e → 掛 \u003ccode\u003eSTOP_MARKET @ avgPrice±avgPrice*feeRate*2\u003c/code\u003e；有 STOP 則標 beDone；誤標自動自癒；另有達 1R 撤 BE 影子（僅觀察）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e追蹤停利\u003c/td\u003e\u003ctd\u003e非 gated → 直掛 \u003ccode\u003eTRAILING 3%\u003c/code\u003e；gated → 見下\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eGated 追蹤\u003c/td\u003e\u003ctd\u003e總開關 \u003ccode\u003egatedTrailingEnabled\u003c/code\u003e；空清單=全量；達 \u003ccode\u003egatedThresholdR(1R)\u003c/code\u003e 前掛 STOP -1R，達後撤 STOP 換 5% trailing；冪等撤單；價格無效自動降級 TRAILING\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e保護單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceTrailingHard / bingxPlaceBeStop\u003c/code\u003e + \u003ccode\u003ePOST /api/engine/place-hard-stop\u003c/code\u003e 手動補掛\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e孤兒單清理\u003c/td\u003e\u003ctd\u003e無倉的 STOP/TRAILING 全撤；重複 TRAILING 去重（同 SYMBOL:SIDE 留最新 orderId）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e重複下單防護\u003c/td\u003e\u003ctd\u003e三層：同向持倉互斥 + 5min DUP 去重 + 同輪虛擬持倉（已 FIRED 寫入 positions 快照）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e漂移判斷\u003c/td\u003e\u003ctd\u003e錨 vs 現價 pct 決定 MARKET/LIMIT/BLOCK（HYPE 寬限）；LIMIT 另有 同錨去重(±0.15%同價留 qty 最接近) + 漂移\u0026gt;blockThr 自動撤 + 錨消失/Setup\u0026lt;thr 重評撤\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e錯誤處理/重試\u003c/td\u003e\u003ctd\u003e單筆失敗不中斷全輪；STOP 無效/窄止損自動降級 TRAILING；leverage 失敗忽略續下單；balance/positions 失敗回 null/空陣列；每步 try/catch + console\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e交易紀錄\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eExecResult{symbol, FIRED/BLOCKED/SKIP/ERROR, detail, signal, orderId, sizing}\u003c/code\u003e 寫 \u003ccode\u003eTRADE_ENGINE_LOG\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"callout c-amber\"\u003e\u003cstrong\u003e補充：\u003c/strong\u003e槓桿 \u003ccode\u003eSetup≥85→7x / ≥70→5x / else 3x\u003c/code\u003e；Sizing \u003ccode\u003e1R=equity*1%, qty=1R/|entry-SL|\u003c/code\u003e；費/風險 \u003ccode\u003efee=notional*0.1% , fee/R \u0026gt;50% BLOCK\u003c/code\u003e；排序高分優先不限 Top3。\u003c/div\u003e \u003ch2 id=\"s9\"\u003e9. CubeLV 專屬依賴清單\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003eCubeLV 專屬\u003c/th\u003e\u003cth\u003e實際依賴點\u003c/th\u003e\u003cth\u003e移植需替換\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e@cubelv/service-sdk — createService/getItemsByType/upsertItem/sendPush/onSchedule/start\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e全檔頂部 import + 所有 Item 讀寫 + 排程 + 推播\u003c/td\u003e\u003ctd\u003e替為 Express + 任意 DB + node-cron + FCM/Webhook\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003eVault Item DB（NOTE / TRADE_ENGINE_* 8 類）\u003c/td\u003e\u003ctd\u003eConfig/LOG/DUP/RISK_STATE/OBS 全落 Item\u003c/td\u003e\u003ctd\u003e替為 Postgres/SQLite/Mongo + 對應 CRUD\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003ePlugin/ Manifest 宿主\u003c/td\u003e\u003ctd\u003e\u003ccode\u003emanifest.json\u003c/code\u003e 宣告端點與 schedule\u003c/td\u003e\u003ctd\u003e替為一般 Node 服務啟動\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003e交易計畫 NOTE SSOT\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetLatestPlanSignals → parseTradingPlanHtml\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e替為 REST/DB/檔案，只要吐同欄位 HTML/JSON\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003eAgent 探員體系\u003c/td\u003e\u003ctd\u003e8 因子資料由 Vault Agents 排程產 NOTE\u003c/td\u003e\u003ctd\u003e替為任意 cron + API 抓取\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e6\u003c/td\u003e\u003ctd\u003e前端 SDK（@cubelv/sdk）\u003c/td\u003e\u003ctd\u003eTradeEnginePlugin/View/Schema\u003c/td\u003e\u003ctd\u003e可不移植，另做管理頁\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003ch2 id=\"s10\"\u003e10. 可獨立移植部分清單\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003e可移植核心\u003c/th\u003e\u003cth\u003e所在\u003c/th\u003e\u003cth\u003e是否需 CubeLV\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003eSetup 門檻邏輯\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eeffectiveThreshold + checkHardRules\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003e5 硬檢（Setup/保證金/SL/RR/費）\u003c/td\u003e\u003ctd\u003e\u003ccode\u003echeckHardRules\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e風控 BE / 軟鎖 / 追蹤 / Gated / 硬底自癒\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erunRiskManagement\u003c/code\u003e 全段\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003eSizing / 槓桿分級 / 漂移判定\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ecalcSizing / driftForPlacement / marketThr/blockThr\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003e下單 / 撤單 / 持倉 / 訂單同步 / 去重 / 孤兒清理\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing / bingxCancelOrder / getPositions / fetchOpenOrders / evaluatePendingLimits\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（僅需換交易所 client）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e6\u003c/td\u003e\u003ctd\u003e交易計畫解析\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eparseTradingPlanHtml\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（可改吃 JSON）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e7\u003c/td\u003e\u003ctd\u003eBingX API 簽章與 endpoints\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebuildQuery/sign + BINGX_API_BASE\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（換交易所改此層）\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"callout c-green\"\u003e\u003cstrong\u003e結論：\u003c/strong\u003e除第 9 節 6 項 CubeLV 殼之外，全部交易/風控/下單邏輯皆可原樣移植；最小集僅需 \u003ccode\u003eindex.ts + manifest.json + schema\u003c/code\u003e 三檔 + 一個 DB + BingX（或替換）即可獨立跑。\u003c/div\u003e \u003ch2 id=\"s11\"\u003e11. 仍無法從現有程式碼確認的部分\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e8 因子權重與評分公式\u003c/td\u003e\u003ctd\u003e不在引擎內；在掛單策略師與探員 prompts / Sheets 中，需另參 WO SETUP-FACTOR-AUDIT-001 稽核報告\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003eBingX 真實費率與滑價\u003c/td\u003e\u003ctd\u003e程式僅用 \u003ccode\u003efeeRate=0.0005 per side\u003c/code\u003e 估算，實際以交易所帳單為準\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e宿主層限流/重試/代理\u003c/td\u003e\u003ctd\u003e程式僅對 openOrders/orderId 做大整數字串化與 5min 去重；網路層重試與住宅代理細節由宿主 fetch 實現，未在插件內\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003e舊版廢棄碼行為\u003c/td\u003e\u003ctd\u003e如 \u003ccode\u003eBINGX_PANEL_SECTION_CONFIG\u003c/code\u003e 雙讀、精簡 HTML 容錯、≤15→55 遷移等為相容保留，現行不觸發但仍在檔內\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003eDocker/宿主部署參數\u003c/td\u003e\u003ctd\u003e插件內無 Dockerfile/compose/lock，實際部署由 CubeLV 平台代管，無法從程式碼反推容器規格\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003chr\u003e \u003cdiv class=\"k\" style=\"font-size:12px;line-height:1.8\"\u003e \u003cstrong\u003e結案確認 — WO-ENGINE-CODE-FULL-001\u003c/strong\u003e\u003cbr\u003e • 1–11 已依序交付：正式版 1.7.14-BeShadow / 完整 index.ts 2176 行（檔案可下載） / 7 依賴檔全文 / 目錄樹 / package/build/Docker / 環境變數（apiKey/secretKey 以 [REDACTED] 脫敏） / 外部 API 與資料介面 / 實際交易邏輯 16 項 / CubeLV 專屬 6 項 / 可移植 7 項 / 未確認 5 項。\u003cbr\u003e • 本 WO 僅交付盤點，不修改／不重構／不新增；檔案下載與本筆記互為補充。\u003cbr\u003e • 關聯：WO SETUP-FACTOR-AUDIT-001（8 因子稽核）、WO ENGINE-CODE-RETRIEVAL-001（第一版盤點）。\u003cbr\u003e \u003c/div\u003e \u003c/div\u003e","createdAt":1788274762851,"deletedAt":null,"displayMode":"editable","embedRenders":{},"id":"a2f6bdea6d27db5e26efa0eb","isNew":false,"isPublic":true,"itemType":"NOTE","name":"WO-ENGINE-CODE-FULL-001 — CubeLV 交易引擎完整原始碼與執行依賴交付 — 2026-09-01","parents":{"3683c0a6609c9636df9ce97d":1788274762851},"preParentID":null,"updatedAt":1788274816663,"updatedBy":{"userId":"6a47425d004ad1e5692aa0","userName":"郭胖"},"version":6,"websiteContent":"[{\"originUrl\":\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f0dfde8a59873c2ad5.ts\",\"title\":\"無標題\",\"content\":null,\"imageUrl\":null},{\"originUrl\":\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f707a7bdc3b43fa827.md\",\"title\":\"無標題\",\"content\":null,\"imageUrl\":null},{\"originUrl\":\"https://open-api.bingx.com\",\"title\":\"無標題\",\"content\":null,\"imageUrl\":null}]"},"ownerName":"郭胖","subtree":[{"artifactHtml":"\u003cdiv class=\"doc\" style=\"font-family:'Noto Sans TC','PingFang TC','Microsoft JhengHei',sans-serif;color:#1a1a1a;line-height:1.75;max-width:920px;margin:0 auto;padding:24px\"\u003e\n\u003cstyle\u003e\n.doc h1{font-size:22px;font-weight:800;margin:0 0 6px;color:#0f172a;letter-spacing:-0.02em;line-height:1.4}\n.doc h2{font-size:18px;font-weight:700;margin:28px 0 12px;color:#0f172a;border-left:4px solid #2563eb;padding-left:10px}\n.doc h3{font-size:15px;font-weight:700;margin:18px 0 8px;color:#1e293b}\n.doc .sub{color:#64748b;font-size:13px;margin-bottom:16px}\n.doc .badge{display:inline-block;font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;margin-right:6px;vertical-align:middle}\n.doc .b-green{background:#dcfce7;color:#166534} .doc .b-blue{background:#dbeafe;color:#1e40af} .doc .b-amber{background:#fef3c7;color:#92400e} .doc .b-slate{background:#f1f5f9;color:#334155;border:1px solid #e2e8f0}\n.doc table{width:100%;border-collapse:collapse;font-size:13px;margin:10px 0 14px} .doc th{background:#f8fafc;text-align:left;padding:8px 10px;border:1px solid #e2e8f0;color:#334155;white-space:nowrap} .doc td{padding:8px 10px;border:1px solid #e2e8f0;vertical-align:top}\n.doc code{font-family:ui-monospace,Menlo,Consolas,monospace;background:#f1f5f9;padding:1px 5px;border-radius:4px;font-size:12px}\n.doc pre{background:#0f172a;color:#e2e8f0;padding:14px;border-radius:10px;overflow:auto;font-size:11px;line-height:1.55;margin:10px 0;white-space:pre-wrap;word-break:break-all}\n.doc .callout{border-radius:10px;padding:12px 14px;margin:12px 0;font-size:13px} .doc .c-blue{background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a} .doc .c-amber{background:#fffbeb;border:1px solid #fde68a;color:#92400e} .doc .c-green{background:#f0fdf4;border:1px solid #bbf7d0;color:#14532d}\n.doc .toc{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:14px 16px} .doc .toc a{color:#2563eb;text-decoration:none} .doc .k{color:#64748b;font-size:12px} .doc ul{margin:6px 0 6px 18px} .doc hr{border:none;border-top:1px solid #e2e8f0;margin:18px 0}\n.doc .grid{display:grid;grid-template-columns:1fr 1fr;gap:12px} @media(max-width:700px){.doc .grid{grid-template-columns:1fr}}\n.doc details{border:1px solid #e2e8f0;border-radius:10px;padding:10px 12px;margin:10px 0;background:#fff} .doc summary{cursor:pointer;font-weight:700;color:#1e293b}\n.doc .filelink{display:inline-block;background:#0f172a;color:#fff !important;padding:6px 12px;border-radius:8px;text-decoration:none;font-size:13px;margin:6px 6px 6px 0}\n\u003c/style\u003e\n\u003cheader\u003e\u003ch1\u003eWO-ENGINE-CODE-FULL-001 — CubeLV 交易引擎完整原始碼與執行依賴交付 — 2026-09-01\u003c/h1\u003e\u003cdiv class=\"sub\"\u003e依 WO 九節順序完整交付｜僅交付盤點、不修改／不重構／不新增｜憑證值以 [REDACTED] 脫敏，保留欄位名／endpoint／邏輯\u003c/div\u003e\u003cdiv\u003e\u003cspan class=\"badge b-blue\"\u003e正式版 v1.7.14-BeShadow\u003c/span\u003e\u003cspan class=\"badge b-green\"\u003e2026-09-01 13:27 +0800 · 8c65196\u003c/span\u003e\u003cspan class=\"badge b-slate\"\u003e77ab6b6232d54f04b4f3f6c4\u003c/span\u003e\u003cspan class=\"badge b-amber\"\u003e2176 行\u003c/span\u003e\u003c/div\u003e\u003c/header\u003e\n\u003cdiv class=\"toc\" style=\"margin-top:16px\"\u003e\u003cstrong\u003e交付導覽（依 WO 第九節）\u003c/strong\u003e\u003col style=\"margin:8px 0 0 18px;font-size:13px;line-height:1.9\"\u003e\n\u003cli\u003e\u003ca href=\"#s1\"\u003e1. 目前正式交易引擎版本\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s2\"\u003e2. 完整 backend/src/index.ts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s3\"\u003e3. 所有直接依賴檔案\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s4\"\u003e4. 專案目錄結構\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s5\"\u003e5. package / build / Docker 資訊\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s6\"\u003e6. 環境變數名稱（憑證遮罩）\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s7\"\u003e7. 外部 API 與資料介面\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s8\"\u003e8. 目前實際交易邏輯\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s9\"\u003e9. CubeLV 專屬依賴清單\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s10\"\u003e10. 可獨立移植部分清單\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#s11\"\u003e11. 仍無法從現有程式碼確認的部分\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\u003c/div\u003e\n\u003cdiv class=\"callout c-blue\"\u003e\u003cstrong\u003e檔案下載（完整原始碼）：\u003c/strong\u003e\u003cbr\u003e\n\u003ca class=\"filelink\" href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f0dfde8a59873c2ad5.ts\" target=\"_blank\"\u003e⬇ backend/src/index.ts 完整 2176 行（TS）\u003c/a\u003e\n\u003ca class=\"filelink\" href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f707a7bdc3b43fa827.md\" target=\"_blank\"\u003e⬇ README + 最小移植清單（MD）\u003c/a\u003e\n\u003cdiv class=\"k\"\u003e路徑 \u003ccode\u003eplugins/77ab6b6232d54f04b4f3f6c4/backend/src/index.ts\u003c/code\u003e｜憑證無硬編碼，皆由 Item 欄位 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 讀取，值已脫敏為 [REDACTED]\u003c/div\u003e\u003c/div\u003e\n\u003ch2 id=\"s1\"\u003e1. 目前正式交易引擎版本\u003c/h2\u003e\n\u003cdiv class=\"grid\"\u003e\u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff\"\u003e\u003cstrong\u003e正式運行\u003c/strong\u003e\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emanifest.json version: 1.7.14-BeShadow\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ecommit \u003ccode\u003e8c65196\u003c/code\u003e — 2026-09-01 13:27 +0800 —「修正版本字串 1.7.14-BeShadow」\u003c/li\u003e\n\u003cli\u003e分支：主線 \u003ccode\u003eorigin/installations/77ab6b6232d54f04b4f3f6c4\u003c/code\u003e 快照 \u003ccode\u003e2517d52\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e/api/version\u003c/code\u003e 回 \u003ccode\u003e1.7.14-BeShadow + 30min Asia/Taipei + Setup 0-100 thr55\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e排程：\u003ccode\u003eengine-30min\u003c/code\u003e LOOP \u003ccode\u003e1800000ms\u003c/code\u003e Asia/Taipei\u003c/li\u003e\n\u003c/ul\u003e\u003c/div\u003e\u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff\"\u003e\u003cstrong\u003e是否正式／多版\u003c/strong\u003e\u003cul\u003e\n\u003cli\u003e是 — 本檔即線上執行檔（\u003ccode\u003ebackend/dist/index.js 2345 行\u003c/code\u003e 由此編譯）\u003c/li\u003e\n\u003cli\u003e全 Vault 僅此一套交易引擎，無多套並行\u003c/li\u003e\n\u003cli\u003e最近里程：1.7.13 動態軟鎖影子、1.7.12 窄止損縱深、1.7.11 推播、1.7.8 gated auto-cancel、1.7.7 同輪虛擬持倉\u003c/li\u003e\n\u003c/ul\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e檢查\u003c/th\u003e\u003cth\u003e結果\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e最後更新時間\u003c/td\u003e\u003ctd\u003e2026-09-01 13:27 +0800（git commit）／鏡像同步 2026-09-01 22:56\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e是否被 index.ts 引用以外的檔案\u003c/td\u003e\u003ctd\u003e是 — 見第 3 節（schema/store/plugin/view/manifest/tsconfig）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e實際被使用\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebackend/src/index.ts → dist/index.js\u003c/code\u003e 為唯一執行體，其餘為宣告/型別/視圖\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003ch2 id=\"s2\"\u003e2. 完整 backend/src/index.ts（已同步上傳為檔案）\u003c/h2\u003e\n\u003cdiv class=\"callout c-amber\"\u003e\u003cstrong\u003e說明：\u003c/strong\u003e完整 2176 行已上傳為檔案（上方下載鍵可直接取得 .ts），憑證處理：檔內無任何 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 真值硬編碼，皆以 [REDACTED] 脫敏說明 — 實際值僅存於 Item DB 欄位，程式碼中保留欄位名 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 與 \u003ccode\u003eX-BX-APIKEY\u003c/code\u003e / \u003ccode\u003eHMAC-SHA256(qs, secretKey)\u003c/code\u003e 呼叫邏輯。下方為檔案直達連結，版面內不再重複內嵌 126KB 原始碼以確保載入效能。\u003c/div\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e檔案\u003c/th\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e行數\u003c/th\u003e\u003cth\u003e下載\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eindex.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplugins/77ab6b6232d54f04b4f3f6c4/backend/src/index.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e2176\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f0dfde8a59873c2ad5.ts\" target=\"_blank\"\u003e下載 .ts\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003cdiv class=\"k\"\u003eBingX Base \u003ccode\u003ehttps://open-api.bingx.com\u003c/code\u003e｜簽章 \u003ccode\u003ebuildQuery(sorted) → sign(HMAC-SHA256, secretKey)\u003c/code\u003e｜Header \u003ccode\u003eX-BX-APIKEY: [REDACTED]\u003c/code\u003e｜槓桿/下單/追蹤/保本/撤單/持倉/掛單全在同一檔內，無分散服務。\u003c/div\u003e\n\u003ch2 id=\"s3\"\u003e3. 所有直接依賴檔案\u003c/h2\u003e\n\u003cp class=\"k\"\u003e若 index.ts 依賴其他 .ts/.js/.json，本節全部列出。共 7 檔（含視圖 2 檔，非交易必要但為插件完整性一併交付）。\u003c/p\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e檔案\u003c/th\u003e\u003cth\u003e原路徑\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003epackage.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/package.json\u003c/td\u003e\u003ctd\u003e78 bytes — 唯一依賴 @cubelv/service-sdk\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003emanifest.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/manifest.json\u003c/td\u003e\u003ctd\u003e17 endpoints + 1 LOOP schedule\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etsconfig.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/tsconfig.json\u003c/td\u003e\u003ctd\u003e編譯設定（noEmit, 內建 crypto）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etradeEngineSchema.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/schemas/tradeEngineSchema.ts\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG 14 欄位定義\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etradeEngineConfigStore.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/stores/tradeEngineConfigStore.ts\u003c/td\u003e\u003ctd\u003eConfig 單例存取\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eTradeEnginePlugin.tsx\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/TradeEnginePlugin.tsx\u003c/td\u003e\u003ctd\u003e插件註冊（root/section/virtualFolder）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eTradeEngineView.tsx\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/TradeEngineView.tsx\u003c/td\u003e\u003ctd\u003e視圖（帳戶/持倉/掛單/手動 run/風控重置/obs）\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003cdiv class=\"callout c-green\"\u003e\u003cstrong\u003e依賴判定：\u003c/strong\u003e交易核心僅依賴前 5 檔；後 2 檔為視圖層，無之仍可獨立跑交易（見第 10 節）。全部檔案已與 index.ts 一併上傳至檔案庫，README 內附逐檔說明。\u003c/div\u003e\n\u003ch2 id=\"s4\"\u003e4. 專案目錄結構\u003c/h2\u003e\n\u003cpre\u003eplugins/77ab6b6232d54f04b4f3f6c4/\n├─ .git/ / .gitignore\n├─ cubelv-sdk.host.d.ts           # SDK 型別（宿主注入，編譯期）\n├─ tsconfig.json                  # 頂層（frontend 用）\n├─ backend/\n│  ├─ package.json               # 78 bytes — 唯一依賴 @cubelv/service-sdk\n│  ├─ manifest.json              # 17 endpoints + 1 LOOP schedule\n│  ├─ tsconfig.json              # backend 編譯設定（noEmit, 內建 crypto）\n│  ├─ cubelv-sdk.host.d.ts       # 後端 SDK 型別\n│  ├─ src/index.ts               # ★ 2176 行 — 全部交易邏輯（本 WO 核心）\n│  └─ dist/index.js              # 2345 行 — 編譯產物（runtime 實際載入）\n└─ frontend/\n   ├─ TradeEnginePlugin.tsx      # 插件註冊（root/section/virtualFolder）\n   ├─ TradeEngineView.tsx        # 視圖（帳戶/持倉/掛單/手動 run/風控重置/obs）\n   ├─ bundle.js                  # 打包產物（前端）\n   ├─ schemas/tradeEngineSchema.ts\n   └─ stores/tradeEngineConfigStore.ts\u003c/pre\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003cth\u003e獨立移植是否需要\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/src/index.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eBingX 簽章/下單/風控/排程 runEngine/交易計畫解析\u003c/td\u003e\u003ctd\u003e必須\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/dist/index.js\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e編譯產物\u003c/td\u003e\u003ctd\u003e由 src 編譯產生\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/manifest.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eendpoint + schedule 宣告\u003c/td\u003e\u003ctd\u003e需（轉為 Express + cron）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003efrontend/schemas+stores\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eConfig 型別與存取\u003c/td\u003e\u003ctd\u003e需（轉為 DB model）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003efrontend/*View/Plugin\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eUI\u003c/td\u003e\u003ctd\u003e可選\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003ch2 id=\"s5\"\u003e5. package / build / Docker 資訊\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際狀態\u003c/th\u003e\u003cth\u003e獨立移植做法\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003epackage.json\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e{\"name\":\"trade-engine-backend\",\"version\":\"1.0.0\",\"private\":true}\u003c/code\u003e 無 dependencies 欄（宿主注入 SDK）\u003c/td\u003e\u003ctd\u003e補 \u003ccode\u003edependencies: {\"@cubelv/service-sdk\":\"*\"} + typescript/@types/node\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003epackage-lock.json / pnpm-lock / yarn.lock\u003c/td\u003e\u003ctd\u003e無（Vault 未提交 lock）\u003c/td\u003e\u003ctd\u003e\u003ccode\u003enpm install\u003c/code\u003e 後產生\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003etsconfig\u003c/td\u003e\u003ctd\u003enoEmit, skipLibCheck, paths 指向 host SDK\u003c/td\u003e\u003ctd\u003e改為一般 \u003ccode\u003eoutDir: dist, module: commonjs, target: es2022\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eDockerfile / docker-compose.yml\u003c/td\u003e\u003ctd\u003e無（由 CubeLV 宿主代管，不在插件內）\u003c/td\u003e\u003ctd\u003e自備 \u003ccode\u003eFROM node:20-alpine / npm ci / node dist/index.js\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e建置腳本\u003c/td\u003e\u003ctd\u003e無獨立腳本，由宿主按 manifest 觸發 \u003ccode\u003estart()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003etsc \u0026amp;\u0026amp; node dist/index.js\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e啟動腳本\u003c/td\u003e\u003ctd\u003e無，由 \u003ccode\u003eonSchedule('engine-30min', LOOP 1800000ms Asia/Taipei)\u003c/code\u003e 驅動\u003c/td\u003e\u003ctd\u003e改為 \u003ccode\u003enode-cron / setInterval 30min\u003c/code\u003e + Express 监听 \u003ccode\u003e/api/engine/*\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cdiv class=\"callout c-blue\"\u003e\u003cstrong\u003e最少可移植集：\u003c/strong\u003e \u003ccode\u003ebackend/src/index.ts + manifest.json + tradeEngineSchema.ts\u003c/code\u003e 三檔即可重建；其餘為視圖/建置輔助。\u003c/div\u003e\n\u003ch2 id=\"s6\"\u003e6. 環境變數名稱（憑證遮罩）\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e變數/欄位\u003c/th\u003e\u003cth\u003e來源\u003c/th\u003e\u003cth\u003e預設\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003cth\u003e憑證\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eapiKey\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG Item（新）\u003cbr\u003e兼容 BINGX_PANEL_SECTION_CONFIG（舊）\u003c/td\u003e\u003ctd\u003e''\u003c/td\u003e\u003ctd\u003eBingX \u003ccode\u003eX-BX-APIKEY\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e[REDACTED]\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003esecretKey\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e同上\u003c/td\u003e\u003ctd\u003e''\u003c/td\u003e\u003ctd\u003eHMAC \u003ccode\u003esign(qs, secretKey)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e[REDACTED]\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003econfidenceThreshold\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG\u003c/td\u003e\u003ctd\u003e55\u003c/td\u003e\u003ctd\u003eSetup 0-100 門檻（≤15 自動遷 55）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eminSlPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.8\u003c/td\u003e\u003ctd\u003e最小 SL 距離 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003emaxFeeRiskPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e50\u003c/td\u003e\u003ctd\u003e手續費/風險上限 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003emarginCapPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e60\u003c/td\u003e\u003ctd\u003e保證金上限 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etrailingHardPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e非 gated 硬底 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etrailingHardPctSmall\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003egated 達 1R 後 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedTrailingEnabled\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003efalse\u003c/td\u003e\u003ctd\u003egated 總開關\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedTrailingSymbols\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e[] (=ALL)\u003c/td\u003e\u003ctd\u003egated 清單（空=全量）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedThresholdR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e達 R 才掛 trailing\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eminRR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e1.5\u003c/td\u003e\u003ctd\u003e最小 RR\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003esoftLockPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e20\u003c/td\u003e\u003ctd\u003e軟鎖回撤 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebeTriggerR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.5\u003c/td\u003e\u003ctd\u003e保本觸發 R\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003esoftLockMinPeakR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.3\u003c/td\u003e\u003ctd\u003e軟鎖最小峰值 R\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003esymbols\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e[]\u003c/td\u003e\u003ctd\u003e限定幣種（空=全掃）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eenabled\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003etrue\u003c/td\u003e\u003ctd\u003e總開關\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cdiv class=\"k\"\u003e讀取函式：\u003ccode\u003egetEngineConfig()\u003c/code\u003e / \u003ccode\u003egetBingxConfig()\u003c/code\u003e — 先讀引擎自身 Item，退回舊掛單面板；寫入 \u003ccode\u003ePOST /api/engine/config\u003c/code\u003e 部分更新。\u003c/div\u003e\n\u003ch2 id=\"s7\"\u003e7. 外部 API 與資料介面\u003c/h2\u003e\n\u003ch3\u003e7.1 資料輸入\u003c/h3\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e資料\u003c/th\u003e\u003cth\u003e進入點\u003c/th\u003e\u003cth\u003e函式\u003c/th\u003e\u003cth\u003e格式\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e交易計畫（唯一訊號源）\u003c/td\u003e\u003ctd\u003eNOTE Item — name 含「交易計畫」或「純數據掛單表」\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetLatestPlanSignals() → parseTradingPlanHtml(html)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eHTML \u0026lt;table\u0026gt;：th 含 幣種+錨+止損+成交額 且無 判定欄；td 含 symbol/side/anchor/stopLoss/takeProfit/score → Signal{symbol, LONG/SHORT, confidence(0-100), entryPrice(錨), stopLoss, takeProfit, fvgAnchor}\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e市場現價\u003c/td\u003e\u003ctd\u003eBingX 公開 \u003ccode\u003eGET /openApi/swap/v2/quote/ticker?symbol=SYM-USDT\u003c/code\u003e 兜底 \u003ccode\u003e/quote/klines?interval=1m\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetMarkPrice(symbol)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e免簽名；取 lastPrice/markPrice 或 klines close；HYPE 必須帶 \u003ccode\u003e-\u003c/code\u003e 否則 109400\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e情緒/鏈上/總經\u003c/td\u003e\u003ctd\u003e不由引擎直連；由探員 Agents 寫入 NOTE，再由掛單策略師彙整進交易計畫 NOTE\u003c/td\u003e\u003ctd\u003e—（引擎僅讀交易計畫 NOTE）\u003c/td\u003e\u003ctd\u003e引擎對上游無硬耦合\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch3\u003e7.2 交易執行（BingX）\u003c/h3\u003e\n\u003cp class=\"k\"\u003eBase \u003ccode\u003ehttps://open-api.bingx.com\u003c/code\u003e｜簽章 \u003ccode\u003ebuildQuery(sorted) → sign(HMAC-SHA256, secretKey=[REDACTED]) → ?signature=\u003c/code\u003e｜Header \u003ccode\u003eX-BX-APIKEY: [REDACTED]\u003c/code\u003e\u003c/p\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e動作\u003c/th\u003e\u003cth\u003eEndpoint\u003c/th\u003e\u003cth\u003e函式\u003c/th\u003e\u003cth\u003e關鍵欄位\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e調槓桿\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/leverage\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing()\u003c/code\u003e 前置\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, leverage(3/5/7), side(LONG/SHORT)\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e下單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, side(BUY/SELL), positionSide, type(MARKET/LIMIT), quantity, price(LIMIT時), timestamp\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e掛追蹤\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=TRAILING_STOP_MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceTrailingHard()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, side, positionSide, quantity, priceRate(3%/5%), workingType=MARK_PRICE\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e掛保本 STOP\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=STOP_MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxPlaceBeStop()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003estopPrice = avgPrice ± avgPrice*feeRate*2\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e撤單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eDELETE /openApi/swap/v2/trade/order\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxCancelOrder(symbol, orderId)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e冪等：order not exist 視為成功\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e平倉\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxClosePosition()\u003c/code\u003e + \u003ccode\u003ePOST /api/engine/close-position\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, positionSide(LONG/SHORT必填), quantity(全倉), expectQty 二次確認(偏差\u0026gt;1%拒)\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e查餘額\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/user/balance\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetBalanceInfo()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e回 \u003ccode\u003e{equity, usedMargin → marginPct, raw}\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e查持倉\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/user/positions\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetPositions()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e{symbol, positionSide, positionAmt, avgPrice, unrealizedProfit}\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e查掛單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/trade/openOrders\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003efetchOpenOrders()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e含 \u003ccode\u003eorderId 19位字串化\u003c/code\u003e 防精度丟失\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e查歷史\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/trade/allOrders\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /api/engine/order-history?symbol=\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e需 symbol\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch3\u003e7.3 資料輸出\u003c/h3\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e輸出\u003c/th\u003e\u003cth\u003e寫到哪裡\u003c/th\u003e\u003cth\u003eItemType\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e每輪執行紀錄\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_LOG\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003elogRun(session, results)\u003c/code\u003e — name=session + Taipei時間，保留 50-60 筆\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e防重開\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_DUP\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eisDuplicated/markDuplicated\u003c/code\u003e — 5min 內同 SYMBOL:SIDE 擋重下\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e風控狀態\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_RISK_STATE\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003epeak, beDone, bePrice, gated, gatedThresholdR, stopPrice\u003c/code\u003e；平倉後 sweep 刪除\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e觀察統計\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_SOFT_LOCK_OBS / NARROW_SL_OBS / BE_SHADOW / SHADOW_NOTIFY\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e影子統計（不改交易），達 20/30 筆推播\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eGoogle 試算表\u003c/td\u003e\u003ctd\u003e否 — 引擎不直連\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003ctd\u003e僅探員層使用，引擎只讀 NOTE\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003en8n\u003c/td\u003e\u003ctd\u003e否 — 不參與主流程\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003ctd\u003e獨立周邊插件\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch2 id=\"s8\"\u003e8. 目前實際交易邏輯\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e邏輯\u003c/th\u003e\u003cth\u003e程式實際做法（以程式碼為準）\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eSetup 門檻\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eeffectiveThreshold(cfg)\u003c/code\u003e — 舊 ≤15 遷 55；現 \u003ccode\u003eDEFAULTS.confidenceThreshold=55\u003c/code\u003e，\u003ccode\u003echeckHardRules\u003c/code\u003e 攔 \u003ccode\u003econfidence \u0026lt; thr\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e進場條件\u003c/td\u003e\u003ctd\u003e需 \u003ccode\u003esignal=LONG/SHORT\u003c/code\u003e 且 \u003ccode\u003eentryPrice+stopLoss\u003c/code\u003e 齊全且 SL 方向正確且 SL≥0.8% 且 RR≥1.5（無 TP 則放行）且 保證金\u0026lt;60% 且 非同向持倉 且 非 5min 重複\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eMARKET/LIMIT/BLOCK\u003c/td\u003e\u003ctd\u003e\u003ccode\u003edriftForPlacement(markPrice)\u003c/code\u003e — ≤1.5%(HYPE2%)→MARKET；1.5-3%(HYPE2-4%)→LIMIT；\u0026gt;3%(HYPE\u0026gt;4%)→BLOCK\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e保證金限制\u003c/td\u003e\u003ctd\u003e\u003ccode\u003emarginPct ≥ marginCapPct(60%)\u003c/code\u003e 直接 BLOCK\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eSL\u003c/td\u003e\u003ctd\u003e由交易計畫 NOTE 來；無則用 \u003ccode\u003eanchor*0.992(LONG) / *1.008(SHORT)\u003c/code\u003e 兜底；硬檢 \u003ccode\u003e\u0026lt;0.8% BLOCK\u003c/code\u003e + 第二層 \u003ccode\u003eassertMinSlOrBlock / logNarrowSlObs\u003c/code\u003e + 動態影子\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eTP\u003c/td\u003e\u003ctd\u003e由 NOTE 來；無則不做 RR 攔截，改由追蹤/軟鎖/BE 接管\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eRR\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eRR = |TP-entry| / |entry-SL|\u003c/code\u003e，容差 \u003ccode\u003e1e-9\u003c/code\u003e，\u003ccode\u003eRR \u0026lt; minRR(1.5) BLOCK\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e軟鎖\u003c/td\u003e\u003ctd\u003e\u003ccode\u003epeak≥filterThr(0.3R)\u003c/code\u003e 且 \u003ccode\u003e(peak-unreal)/peak ≥ softLockPct(20%)\u003c/code\u003e → 市價全平 + 影子動態 35/25/20% 對照（依 peakR 分段，僅觀察）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eBE\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eunreal ≥ beTriggerR(0.5R)\u003c/code\u003e 且 \u003ccode\u003eavgPrice\u0026gt;0\u003c/code\u003e → 掛 \u003ccode\u003eSTOP_MARKET @ avgPrice±avgPrice*feeRate*2\u003c/code\u003e；有 STOP 則標 beDone；誤標自動自癒；另有達 1R 撤 BE 影子（僅觀察）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e追蹤停利\u003c/td\u003e\u003ctd\u003e非 gated → 直掛 \u003ccode\u003eTRAILING 3%\u003c/code\u003e；gated → 見下\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eGated 追蹤\u003c/td\u003e\u003ctd\u003e總開關 \u003ccode\u003egatedTrailingEnabled\u003c/code\u003e；空清單=全量；達 \u003ccode\u003egatedThresholdR(1R)\u003c/code\u003e 前掛 STOP -1R，達後撤 STOP 換 5% trailing；冪等撤單；價格無效自動降級 TRAILING\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e保護單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceTrailingHard / bingxPlaceBeStop\u003c/code\u003e + \u003ccode\u003ePOST /api/engine/place-hard-stop\u003c/code\u003e 手動補掛\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e孤兒單清理\u003c/td\u003e\u003ctd\u003e無倉的 STOP/TRAILING 全撤；重複 TRAILING 去重（同 SYMBOL:SIDE 留最新 orderId）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e重複下單防護\u003c/td\u003e\u003ctd\u003e三層：同向持倉互斥 + 5min DUP 去重 + 同輪虛擬持倉（已 FIRED 寫入 positions 快照）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e漂移判斷\u003c/td\u003e\u003ctd\u003e錨 vs 現價 pct 決定 MARKET/LIMIT/BLOCK（HYPE 寬限）；LIMIT 另有 同錨去重(±0.15%同價留 qty 最接近) + 漂移\u0026gt;blockThr 自動撤 + 錨消失/Setup\u0026lt;thr 重評撤\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e錯誤處理/重試\u003c/td\u003e\u003ctd\u003e單筆失敗不中斷全輪；STOP 無效/窄止損自動降級 TRAILING；leverage 失敗忽略續下單；balance/positions 失敗回 null/空陣列；每步 try/catch + console\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e交易紀錄\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eExecResult{symbol, FIRED/BLOCKED/SKIP/ERROR, detail, signal, orderId, sizing}\u003c/code\u003e 寫 \u003ccode\u003eTRADE_ENGINE_LOG\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cdiv class=\"callout c-amber\"\u003e\u003cstrong\u003e補充：\u003c/strong\u003e槓桿 \u003ccode\u003eSetup≥85→7x / ≥70→5x / else 3x\u003c/code\u003e；Sizing \u003ccode\u003e1R=equity*1%, qty=1R/|entry-SL|\u003c/code\u003e；費/風險 \u003ccode\u003efee=notional*0.1% , fee/R \u0026gt;50% BLOCK\u003c/code\u003e；排序高分優先不限 Top3。\u003c/div\u003e\n\u003ch2 id=\"s9\"\u003e9. CubeLV 專屬依賴清單\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003eCubeLV 專屬\u003c/th\u003e\u003cth\u003e實際依賴點\u003c/th\u003e\u003cth\u003e移植需替換\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e@cubelv/service-sdk — createService/getItemsByType/upsertItem/sendPush/onSchedule/start\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e全檔頂部 import + 所有 Item 讀寫 + 排程 + 推播\u003c/td\u003e\u003ctd\u003e替為 Express + 任意 DB + node-cron + FCM/Webhook\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003eVault Item DB（NOTE / TRADE_ENGINE_* 8 類）\u003c/td\u003e\u003ctd\u003eConfig/LOG/DUP/RISK_STATE/OBS 全落 Item\u003c/td\u003e\u003ctd\u003e替為 Postgres/SQLite/Mongo + 對應 CRUD\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003ePlugin/ Manifest 宿主\u003c/td\u003e\u003ctd\u003e\u003ccode\u003emanifest.json\u003c/code\u003e 宣告端點與 schedule\u003c/td\u003e\u003ctd\u003e替為一般 Node 服務啟動\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003e交易計畫 NOTE SSOT\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetLatestPlanSignals → parseTradingPlanHtml\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e替為 REST/DB/檔案，只要吐同欄位 HTML/JSON\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003eAgent 探員體系\u003c/td\u003e\u003ctd\u003e8 因子資料由 Vault Agents 排程產 NOTE\u003c/td\u003e\u003ctd\u003e替為任意 cron + API 抓取\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e6\u003c/td\u003e\u003ctd\u003e前端 SDK（@cubelv/sdk）\u003c/td\u003e\u003ctd\u003eTradeEnginePlugin/View/Schema\u003c/td\u003e\u003ctd\u003e可不移植，另做管理頁\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003ch2 id=\"s10\"\u003e10. 可獨立移植部分清單\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003e可移植核心\u003c/th\u003e\u003cth\u003e所在\u003c/th\u003e\u003cth\u003e是否需 CubeLV\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003eSetup 門檻邏輯\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eeffectiveThreshold + checkHardRules\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003e5 硬檢（Setup/保證金/SL/RR/費）\u003c/td\u003e\u003ctd\u003e\u003ccode\u003echeckHardRules\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e風控 BE / 軟鎖 / 追蹤 / Gated / 硬底自癒\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erunRiskManagement\u003c/code\u003e 全段\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003eSizing / 槓桿分級 / 漂移判定\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ecalcSizing / driftForPlacement / marketThr/blockThr\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003e下單 / 撤單 / 持倉 / 訂單同步 / 去重 / 孤兒清理\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing / bingxCancelOrder / getPositions / fetchOpenOrders / evaluatePendingLimits\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（僅需換交易所 client）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e6\u003c/td\u003e\u003ctd\u003e交易計畫解析\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eparseTradingPlanHtml\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（可改吃 JSON）\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e7\u003c/td\u003e\u003ctd\u003eBingX API 簽章與 endpoints\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebuildQuery/sign + BINGX_API_BASE\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（換交易所改此層）\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cdiv class=\"callout c-green\"\u003e\u003cstrong\u003e結論：\u003c/strong\u003e除第 9 節 6 項 CubeLV 殼之外，全部交易/風控/下單邏輯皆可原樣移植；最小集僅需 \u003ccode\u003eindex.ts + manifest.json + schema\u003c/code\u003e 三檔 + 一個 DB + BingX（或替換）即可獨立跑。\u003c/div\u003e\n\u003ch2 id=\"s11\"\u003e11. 仍無法從現有程式碼確認的部分\u003c/h2\u003e\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e8 因子權重與評分公式\u003c/td\u003e\u003ctd\u003e不在引擎內；在掛單策略師與探員 prompts / Sheets 中，需另參 WO SETUP-FACTOR-AUDIT-001 稽核報告\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003eBingX 真實費率與滑價\u003c/td\u003e\u003ctd\u003e程式僅用 \u003ccode\u003efeeRate=0.0005 per side\u003c/code\u003e 估算，實際以交易所帳單為準\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e宿主層限流/重試/代理\u003c/td\u003e\u003ctd\u003e程式僅對 openOrders/orderId 做大整數字串化與 5min 去重；網路層重試與住宅代理細節由宿主 fetch 實現，未在插件內\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003e舊版廢棄碼行為\u003c/td\u003e\u003ctd\u003e如 \u003ccode\u003eBINGX_PANEL_SECTION_CONFIG\u003c/code\u003e 雙讀、精簡 HTML 容錯、≤15→55 遷移等為相容保留，現行不觸發但仍在檔內\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003eDocker/宿主部署參數\u003c/td\u003e\u003ctd\u003e插件內無 Dockerfile/compose/lock，實際部署由 CubeLV 平台代管，無法從程式碼反推容器規格\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003cdiv class=\"k\" style=\"font-size:12px;line-height:1.8\"\u003e\n\u003cstrong\u003e結案確認 — WO-ENGINE-CODE-FULL-001\u003c/strong\u003e\u003cbr\u003e\n• 1–11 已依序交付：正式版 1.7.14-BeShadow / 完整 index.ts 2176 行（檔案可下載） / 7 依賴檔全文 / 目錄樹 / package/build/Docker / 環境變數（apiKey/secretKey 以 [REDACTED] 脫敏） / 外部 API 與資料介面 / 實際交易邏輯 16 項 / CubeLV 專屬 6 項 / 可移植 7 項 / 未確認 5 項。\u003cbr\u003e\n• 本 WO 僅交付盤點，不修改／不重構／不新增；檔案下載與本筆記互為補充。\u003cbr\u003e\n• 關聯：WO SETUP-FACTOR-AUDIT-001（8 因子稽核）、WO ENGINE-CODE-RETRIEVAL-001（第一版盤點）。\u003cbr\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n","content":"\u003cdiv class=\"doc\" style=\"font-family:'Noto Sans TC','PingFang TC','Microsoft JhengHei',sans-serif;color:#1a1a1a;line-height:1.75;max-width:920px;margin:0 auto;padding:24px\"\u003e   \u003cdiv class=\"toc\" style=\"margin-top:16px\"\u003e\u003cstrong\u003e交付導覽（依 WO 第九節）\u003c/strong\u003e\u003col style=\"margin:8px 0 0 18px;font-size:13px;line-height:1.9\"\u003e \u003cli\u003e\u003ca href=\"#s1\"\u003e1. 目前正式交易引擎版本\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s2\"\u003e2. 完整 backend/src/index.ts\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s3\"\u003e3. 所有直接依賴檔案\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s4\"\u003e4. 專案目錄結構\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s5\"\u003e5. package / build / Docker 資訊\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s6\"\u003e6. 環境變數名稱（憑證遮罩）\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s7\"\u003e7. 外部 API 與資料介面\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s8\"\u003e8. 目前實際交易邏輯\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s9\"\u003e9. CubeLV 專屬依賴清單\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s10\"\u003e10. 可獨立移植部分清單\u003c/a\u003e\u003c/li\u003e \u003cli\u003e\u003ca href=\"#s11\"\u003e11. 仍無法從現有程式碼確認的部分\u003c/a\u003e\u003c/li\u003e \u003c/ol\u003e\u003c/div\u003e \u003cdiv class=\"callout c-blue\"\u003e\u003cstrong\u003e檔案下載（完整原始碼）：\u003c/strong\u003e\u003cbr\u003e \u003ca class=\"filelink\" href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f0dfde8a59873c2ad5.ts\" target=\"_blank\"\u003e⬇ backend/src/index.ts 完整 2176 行（TS）\u003c/a\u003e \u003ca class=\"filelink\" href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f707a7bdc3b43fa827.md\" target=\"_blank\"\u003e⬇ README + 最小移植清單（MD）\u003c/a\u003e \u003cdiv class=\"k\"\u003e路徑 \u003ccode\u003eplugins/77ab6b6232d54f04b4f3f6c4/backend/src/index.ts\u003c/code\u003e｜憑證無硬編碼，皆由 Item 欄位 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 讀取，值已脫敏為 [REDACTED]\u003c/div\u003e\u003c/div\u003e \u003ch2 id=\"s1\"\u003e1. 目前正式交易引擎版本\u003c/h2\u003e \u003cdiv class=\"grid\"\u003e\u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff\"\u003e\u003cstrong\u003e正式運行\u003c/strong\u003e\u003cul\u003e \u003cli\u003e\u003ccode\u003emanifest.json version: 1.7.14-BeShadow\u003c/code\u003e\u003c/li\u003e \u003cli\u003ecommit \u003ccode\u003e8c65196\u003c/code\u003e — 2026-09-01 13:27 +0800 —「修正版本字串 1.7.14-BeShadow」\u003c/li\u003e \u003cli\u003e分支：主線 \u003ccode\u003eorigin/installations/77ab6b6232d54f04b4f3f6c4\u003c/code\u003e 快照 \u003ccode\u003e2517d52\u003c/code\u003e\u003c/li\u003e \u003cli\u003e\u003ccode\u003e/api/version\u003c/code\u003e 回 \u003ccode\u003e1.7.14-BeShadow + 30min Asia/Taipei + Setup 0-100 thr55\u003c/code\u003e\u003c/li\u003e \u003cli\u003e排程：\u003ccode\u003eengine-30min\u003c/code\u003e LOOP \u003ccode\u003e1800000ms\u003c/code\u003e Asia/Taipei\u003c/li\u003e \u003c/ul\u003e\u003c/div\u003e\u003cdiv style=\"border:1px solid #e2e8f0;border-radius:12px;padding:14px;background:#fff\"\u003e\u003cstrong\u003e是否正式／多版\u003c/strong\u003e\u003cul\u003e \u003cli\u003e是 — 本檔即線上執行檔（\u003ccode\u003ebackend/dist/index.js 2345 行\u003c/code\u003e 由此編譯）\u003c/li\u003e \u003cli\u003e全 Vault 僅此一套交易引擎，無多套並行\u003c/li\u003e \u003cli\u003e最近里程：1.7.13 動態軟鎖影子、1.7.12 窄止損縱深、1.7.11 推播、1.7.8 gated auto-cancel、1.7.7 同輪虛擬持倉\u003c/li\u003e \u003c/ul\u003e\u003c/div\u003e\u003c/div\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e檢查\u003c/th\u003e\u003cth\u003e結果\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e最後更新時間\u003c/td\u003e\u003ctd\u003e2026-09-01 13:27 +0800（git commit）／鏡像同步 2026-09-01 22:56\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e是否被 index.ts 引用以外的檔案\u003c/td\u003e\u003ctd\u003e是 — 見第 3 節（schema/store/plugin/view/manifest/tsconfig）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e實際被使用\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebackend/src/index.ts → dist/index.js\u003c/code\u003e 為唯一執行體，其餘為宣告/型別/視圖\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e \u003ch2 id=\"s2\"\u003e2. 完整 backend/src/index.ts（已同步上傳為檔案）\u003c/h2\u003e \u003cdiv class=\"callout c-amber\"\u003e\u003cstrong\u003e說明：\u003c/strong\u003e完整 2176 行已上傳為檔案（上方下載鍵可直接取得 .ts），憑證處理：檔內無任何 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 真值硬編碼，皆以 [REDACTED] 脫敏說明 — 實際值僅存於 Item DB 欄位，程式碼中保留欄位名 \u003ccode\u003eapiKey / secretKey\u003c/code\u003e 與 \u003ccode\u003eX-BX-APIKEY\u003c/code\u003e / \u003ccode\u003eHMAC-SHA256(qs, secretKey)\u003c/code\u003e 呼叫邏輯。下方為檔案直達連結，版面內不再重複內嵌 126KB 原始碼以確保載入效能。\u003c/div\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e檔案\u003c/th\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e行數\u003c/th\u003e\u003cth\u003e下載\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eindex.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplugins/77ab6b6232d54f04b4f3f6c4/backend/src/index.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e2176\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f0dfde8a59873c2ad5.ts\" target=\"_blank\"\u003e下載 .ts\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"k\"\u003eBingX Base \u003ccode\u003ehttps://open-api.bingx.com\u003c/code\u003e｜簽章 \u003ccode\u003ebuildQuery(sorted) → sign(HMAC-SHA256, secretKey)\u003c/code\u003e｜Header \u003ccode\u003eX-BX-APIKEY: [REDACTED]\u003c/code\u003e｜槓桿/下單/追蹤/保本/撤單/持倉/掛單全在同一檔內，無分散服務。\u003c/div\u003e \u003ch2 id=\"s3\"\u003e3. 所有直接依賴檔案\u003c/h2\u003e \u003cp class=\"k\"\u003e若 index.ts 依賴其他 .ts/.js/.json，本節全部列出。共 7 檔（含視圖 2 檔，非交易必要但為插件完整性一併交付）。\u003c/p\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e檔案\u003c/th\u003e\u003cth\u003e原路徑\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003epackage.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/package.json\u003c/td\u003e\u003ctd\u003e78 bytes — 唯一依賴 @cubelv/service-sdk\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003emanifest.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/manifest.json\u003c/td\u003e\u003ctd\u003e17 endpoints + 1 LOOP schedule\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etsconfig.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003ebackend/tsconfig.json\u003c/td\u003e\u003ctd\u003e編譯設定（noEmit, 內建 crypto）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etradeEngineSchema.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/schemas/tradeEngineSchema.ts\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG 14 欄位定義\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003etradeEngineConfigStore.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/stores/tradeEngineConfigStore.ts\u003c/td\u003e\u003ctd\u003eConfig 單例存取\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eTradeEnginePlugin.tsx\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/TradeEnginePlugin.tsx\u003c/td\u003e\u003ctd\u003e插件註冊（root/section/virtualFolder）\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003eTradeEngineView.tsx\u003c/code\u003e\u003c/td\u003e\u003ctd\u003efrontend/TradeEngineView.tsx\u003c/td\u003e\u003ctd\u003e視圖（帳戶/持倉/掛單/手動 run/風控重置/obs）\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"callout c-green\"\u003e\u003cstrong\u003e依賴判定：\u003c/strong\u003e交易核心僅依賴前 5 檔；後 2 檔為視圖層，無之仍可獨立跑交易（見第 10 節）。全部檔案已與 index.ts 一併上傳至檔案庫，README 內附逐檔說明。\u003c/div\u003e \u003ch2 id=\"s4\"\u003e4. 專案目錄結構\u003c/h2\u003e \u003cpre\u003eplugins/77ab6b6232d54f04b4f3f6c4/\n├─ .git/ / .gitignore\n├─ cubelv-sdk.host.d.ts           # SDK 型別（宿主注入，編譯期）\n├─ tsconfig.json                  # 頂層（frontend 用）\n├─ backend/\n│  ├─ package.json               # 78 bytes — 唯一依賴 @cubelv/service-sdk\n│  ├─ manifest.json              # 17 endpoints + 1 LOOP schedule\n│  ├─ tsconfig.json              # backend 編譯設定（noEmit, 內建 crypto）\n│  ├─ cubelv-sdk.host.d.ts       # 後端 SDK 型別\n│  ├─ src/index.ts               # ★ 2176 行 — 全部交易邏輯（本 WO 核心）\n│  └─ dist/index.js              # 2345 行 — 編譯產物（runtime 實際載入）\n└─ frontend/\n   ├─ TradeEnginePlugin.tsx      # 插件註冊（root/section/virtualFolder）\n   ├─ TradeEngineView.tsx        # 視圖（帳戶/持倉/掛單/手動 run/風控重置/obs）\n   ├─ bundle.js                  # 打包產物（前端）\n   ├─ schemas/tradeEngineSchema.ts\n   └─ stores/tradeEngineConfigStore.ts\u003c/pre\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e路徑\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003cth\u003e獨立移植是否需要\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/src/index.ts\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eBingX 簽章/下單/風控/排程 runEngine/交易計畫解析\u003c/td\u003e\u003ctd\u003e必須\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/dist/index.js\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e編譯產物\u003c/td\u003e\u003ctd\u003e由 src 編譯產生\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebackend/manifest.json\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eendpoint + schedule 宣告\u003c/td\u003e\u003ctd\u003e需（轉為 Express + cron）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003efrontend/schemas+stores\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eConfig 型別與存取\u003c/td\u003e\u003ctd\u003e需（轉為 DB model）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003efrontend/*View/Plugin\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eUI\u003c/td\u003e\u003ctd\u003e可選\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e \u003ch2 id=\"s5\"\u003e5. package / build / Docker 資訊\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e實際狀態\u003c/th\u003e\u003cth\u003e獨立移植做法\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003epackage.json\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e{\"name\":\"trade-engine-backend\",\"version\":\"1.0.0\",\"private\":true}\u003c/code\u003e 無 dependencies 欄（宿主注入 SDK）\u003c/td\u003e\u003ctd\u003e補 \u003ccode\u003edependencies: {\"@cubelv/service-sdk\":\"*\"} + typescript/@types/node\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003epackage-lock.json / pnpm-lock / yarn.lock\u003c/td\u003e\u003ctd\u003e無（Vault 未提交 lock）\u003c/td\u003e\u003ctd\u003e\u003ccode\u003enpm install\u003c/code\u003e 後產生\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003etsconfig\u003c/td\u003e\u003ctd\u003enoEmit, skipLibCheck, paths 指向 host SDK\u003c/td\u003e\u003ctd\u003e改為一般 \u003ccode\u003eoutDir: dist, module: commonjs, target: es2022\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eDockerfile / docker-compose.yml\u003c/td\u003e\u003ctd\u003e無（由 CubeLV 宿主代管，不在插件內）\u003c/td\u003e\u003ctd\u003e自備 \u003ccode\u003eFROM node:20-alpine / npm ci / node dist/index.js\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e建置腳本\u003c/td\u003e\u003ctd\u003e無獨立腳本，由宿主按 manifest 觸發 \u003ccode\u003estart()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003etsc \u0026amp;\u0026amp; node dist/index.js\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e啟動腳本\u003c/td\u003e\u003ctd\u003e無，由 \u003ccode\u003eonSchedule('engine-30min', LOOP 1800000ms Asia/Taipei)\u003c/code\u003e 驅動\u003c/td\u003e\u003ctd\u003e改為 \u003ccode\u003enode-cron / setInterval 30min\u003c/code\u003e + Express 监听 \u003ccode\u003e/api/engine/*\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"callout c-blue\"\u003e\u003cstrong\u003e最少可移植集：\u003c/strong\u003e \u003ccode\u003ebackend/src/index.ts + manifest.json + tradeEngineSchema.ts\u003c/code\u003e 三檔即可重建；其餘為視圖/建置輔助。\u003c/div\u003e \u003ch2 id=\"s6\"\u003e6. 環境變數名稱（憑證遮罩）\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e變數/欄位\u003c/th\u003e\u003cth\u003e來源\u003c/th\u003e\u003cth\u003e預設\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003cth\u003e憑證\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003eapiKey\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG Item（新）\u003cbr\u003e兼容 BINGX_PANEL_SECTION_CONFIG（舊）\u003c/td\u003e\u003ctd\u003e''\u003c/td\u003e\u003ctd\u003eBingX \u003ccode\u003eX-BX-APIKEY\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e[REDACTED]\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003esecretKey\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e同上\u003c/td\u003e\u003ctd\u003e''\u003c/td\u003e\u003ctd\u003eHMAC \u003ccode\u003esign(qs, secretKey)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e[REDACTED]\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003econfidenceThreshold\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eTRADE_ENGINE_CONFIG\u003c/td\u003e\u003ctd\u003e55\u003c/td\u003e\u003ctd\u003eSetup 0-100 門檻（≤15 自動遷 55）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003eminSlPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.8\u003c/td\u003e\u003ctd\u003e最小 SL 距離 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003emaxFeeRiskPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e50\u003c/td\u003e\u003ctd\u003e手續費/風險上限 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003emarginCapPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e60\u003c/td\u003e\u003ctd\u003e保證金上限 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003etrailingHardPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e非 gated 硬底 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003etrailingHardPctSmall\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003egated 達 1R 後 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedTrailingEnabled\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003efalse\u003c/td\u003e\u003ctd\u003egated 總開關\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedTrailingSymbols\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e[] (=ALL)\u003c/td\u003e\u003ctd\u003egated 清單（空=全量）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003egatedThresholdR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e達 R 才掛 trailing\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003eminRR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e1.5\u003c/td\u003e\u003ctd\u003e最小 RR\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003esoftLockPct\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e20\u003c/td\u003e\u003ctd\u003e軟鎖回撤 %\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003ebeTriggerR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.5\u003c/td\u003e\u003ctd\u003e保本觸發 R\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003esoftLockMinPeakR\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e0.3\u003c/td\u003e\u003ctd\u003e軟鎖最小峰值 R\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003esymbols\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e[]\u003c/td\u003e\u003ctd\u003e限定幣種（空=全掃）\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e\u003ccode\u003eenabled\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003etrue\u003c/td\u003e\u003ctd\u003e總開關\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"k\"\u003e讀取函式：\u003ccode\u003egetEngineConfig()\u003c/code\u003e / \u003ccode\u003egetBingxConfig()\u003c/code\u003e — 先讀引擎自身 Item，退回舊掛單面板；寫入 \u003ccode\u003ePOST /api/engine/config\u003c/code\u003e 部分更新。\u003c/div\u003e \u003ch2 id=\"s7\"\u003e7. 外部 API 與資料介面\u003c/h2\u003e \u003ch3\u003e7.1 資料輸入\u003c/h3\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e資料\u003c/th\u003e\u003cth\u003e進入點\u003c/th\u003e\u003cth\u003e函式\u003c/th\u003e\u003cth\u003e格式\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e交易計畫（唯一訊號源）\u003c/td\u003e\u003ctd\u003eNOTE Item — name 含「交易計畫」或「純數據掛單表」\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetLatestPlanSignals() → parseTradingPlanHtml(html)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003eHTML \u0026lt;table\u0026gt;：th 含 幣種+錨+止損+成交額 且無 判定欄；td 含 symbol/side/anchor/stopLoss/takeProfit/score → Signal{symbol, LONG/SHORT, confidence(0-100), entryPrice(錨), stopLoss, takeProfit, fvgAnchor}\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e市場現價\u003c/td\u003e\u003ctd\u003eBingX 公開 \u003ccode\u003eGET /openApi/swap/v2/quote/ticker?symbol=SYM-USDT\u003c/code\u003e 兜底 \u003ccode\u003e/quote/klines?interval=1m\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetMarkPrice(symbol)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e免簽名；取 lastPrice/markPrice 或 klines close；HYPE 必須帶 \u003ccode\u003e-\u003c/code\u003e 否則 109400\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e情緒/鏈上/總經\u003c/td\u003e\u003ctd\u003e不由引擎直連；由探員 Agents 寫入 NOTE，再由掛單策略師彙整進交易計畫 NOTE\u003c/td\u003e\u003ctd\u003e—（引擎僅讀交易計畫 NOTE）\u003c/td\u003e\u003ctd\u003e引擎對上游無硬耦合\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003ch3\u003e7.2 交易執行（BingX）\u003c/h3\u003e \u003cp class=\"k\"\u003eBase \u003ccode\u003ehttps://open-api.bingx.com\u003c/code\u003e｜簽章 \u003ccode\u003ebuildQuery(sorted) → sign(HMAC-SHA256, secretKey=[REDACTED]) → ?signature=\u003c/code\u003e｜Header \u003ccode\u003eX-BX-APIKEY: [REDACTED]\u003c/code\u003e\u003c/p\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e動作\u003c/th\u003e\u003cth\u003eEndpoint\u003c/th\u003e\u003cth\u003e函式\u003c/th\u003e\u003cth\u003e關鍵欄位\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e調槓桿\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/leverage\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing()\u003c/code\u003e 前置\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, leverage(3/5/7), side(LONG/SHORT)\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e下單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, side(BUY/SELL), positionSide, type(MARKET/LIMIT), quantity, price(LIMIT時), timestamp\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e掛追蹤\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=TRAILING_STOP_MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceTrailingHard()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, side, positionSide, quantity, priceRate(3%/5%), workingType=MARK_PRICE\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e掛保本 STOP\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=STOP_MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxPlaceBeStop()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003estopPrice = avgPrice ± avgPrice*feeRate*2\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e撤單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eDELETE /openApi/swap/v2/trade/order\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxCancelOrder(symbol, orderId)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e冪等：order not exist 視為成功\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e平倉\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ePOST /openApi/swap/v2/trade/order type=MARKET\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebingxClosePosition()\u003c/code\u003e + \u003ccode\u003ePOST /api/engine/close-position\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003esymbol, positionSide(LONG/SHORT必填), quantity(全倉), expectQty 二次確認(偏差\u0026gt;1%拒)\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e查餘額\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/user/balance\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetBalanceInfo()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e回 \u003ccode\u003e{equity, usedMargin → marginPct, raw}\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e查持倉\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/user/positions\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetPositions()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e{symbol, positionSide, positionAmt, avgPrice, unrealizedProfit}\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e查掛單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/trade/openOrders\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003efetchOpenOrders()\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e含 \u003ccode\u003eorderId 19位字串化\u003c/code\u003e 防精度丟失\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e查歷史\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /openApi/swap/v2/trade/allOrders\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eGET /api/engine/order-history?symbol=\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e需 symbol\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003ch3\u003e7.3 資料輸出\u003c/h3\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e輸出\u003c/th\u003e\u003cth\u003e寫到哪裡\u003c/th\u003e\u003cth\u003eItemType\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e每輪執行紀錄\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_LOG\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003elogRun(session, results)\u003c/code\u003e — name=session + Taipei時間，保留 50-60 筆\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e防重開\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_DUP\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eisDuplicated/markDuplicated\u003c/code\u003e — 5min 內同 SYMBOL:SIDE 擋重下\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e風控狀態\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_RISK_STATE\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003epeak, beDone, bePrice, gated, gatedThresholdR, stopPrice\u003c/code\u003e；平倉後 sweep 刪除\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e觀察統計\u003c/td\u003e\u003ctd\u003eVault Item\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eTRADE_ENGINE_SOFT_LOCK_OBS / NARROW_SL_OBS / BE_SHADOW / SHADOW_NOTIFY\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e影子統計（不改交易），達 20/30 筆推播\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eGoogle 試算表\u003c/td\u003e\u003ctd\u003e否 — 引擎不直連\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003ctd\u003e僅探員層使用，引擎只讀 NOTE\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003en8n\u003c/td\u003e\u003ctd\u003e否 — 不參與主流程\u003c/td\u003e\u003ctd\u003e—\u003c/td\u003e\u003ctd\u003e獨立周邊插件\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003ch2 id=\"s8\"\u003e8. 目前實際交易邏輯\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e邏輯\u003c/th\u003e\u003cth\u003e程式實際做法（以程式碼為準）\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eSetup 門檻\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eeffectiveThreshold(cfg)\u003c/code\u003e — 舊 ≤15 遷 55；現 \u003ccode\u003eDEFAULTS.confidenceThreshold=55\u003c/code\u003e，\u003ccode\u003echeckHardRules\u003c/code\u003e 攔 \u003ccode\u003econfidence \u0026lt; thr\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e進場條件\u003c/td\u003e\u003ctd\u003e需 \u003ccode\u003esignal=LONG/SHORT\u003c/code\u003e 且 \u003ccode\u003eentryPrice+stopLoss\u003c/code\u003e 齊全且 SL 方向正確且 SL≥0.8% 且 RR≥1.5（無 TP 則放行）且 保證金\u0026lt;60% 且 非同向持倉 且 非 5min 重複\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eMARKET/LIMIT/BLOCK\u003c/td\u003e\u003ctd\u003e\u003ccode\u003edriftForPlacement(markPrice)\u003c/code\u003e — ≤1.5%(HYPE2%)→MARKET；1.5-3%(HYPE2-4%)→LIMIT；\u0026gt;3%(HYPE\u0026gt;4%)→BLOCK\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e保證金限制\u003c/td\u003e\u003ctd\u003e\u003ccode\u003emarginPct ≥ marginCapPct(60%)\u003c/code\u003e 直接 BLOCK\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eSL\u003c/td\u003e\u003ctd\u003e由交易計畫 NOTE 來；無則用 \u003ccode\u003eanchor*0.992(LONG) / *1.008(SHORT)\u003c/code\u003e 兜底；硬檢 \u003ccode\u003e\u0026lt;0.8% BLOCK\u003c/code\u003e + 第二層 \u003ccode\u003eassertMinSlOrBlock / logNarrowSlObs\u003c/code\u003e + 動態影子\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eTP\u003c/td\u003e\u003ctd\u003e由 NOTE 來；無則不做 RR 攔截，改由追蹤/軟鎖/BE 接管\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eRR\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eRR = |TP-entry| / |entry-SL|\u003c/code\u003e，容差 \u003ccode\u003e1e-9\u003c/code\u003e，\u003ccode\u003eRR \u0026lt; minRR(1.5) BLOCK\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e軟鎖\u003c/td\u003e\u003ctd\u003e\u003ccode\u003epeak≥filterThr(0.3R)\u003c/code\u003e 且 \u003ccode\u003e(peak-unreal)/peak ≥ softLockPct(20%)\u003c/code\u003e → 市價全平 + 影子動態 35/25/20% 對照（依 peakR 分段，僅觀察）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eBE\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eunreal ≥ beTriggerR(0.5R)\u003c/code\u003e 且 \u003ccode\u003eavgPrice\u0026gt;0\u003c/code\u003e → 掛 \u003ccode\u003eSTOP_MARKET @ avgPrice±avgPrice*feeRate*2\u003c/code\u003e；有 STOP 則標 beDone；誤標自動自癒；另有達 1R 撤 BE 影子（僅觀察）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e追蹤停利\u003c/td\u003e\u003ctd\u003e非 gated → 直掛 \u003ccode\u003eTRAILING 3%\u003c/code\u003e；gated → 見下\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eGated 追蹤\u003c/td\u003e\u003ctd\u003e總開關 \u003ccode\u003egatedTrailingEnabled\u003c/code\u003e；空清單=全量；達 \u003ccode\u003egatedThresholdR(1R)\u003c/code\u003e 前掛 STOP -1R，達後撤 STOP 換 5% trailing；冪等撤單；價格無效自動降級 TRAILING\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e保護單\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceTrailingHard / bingxPlaceBeStop\u003c/code\u003e + \u003ccode\u003ePOST /api/engine/place-hard-stop\u003c/code\u003e 手動補掛\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e孤兒單清理\u003c/td\u003e\u003ctd\u003e無倉的 STOP/TRAILING 全撤；重複 TRAILING 去重（同 SYMBOL:SIDE 留最新 orderId）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e重複下單防護\u003c/td\u003e\u003ctd\u003e三層：同向持倉互斥 + 5min DUP 去重 + 同輪虛擬持倉（已 FIRED 寫入 positions 快照）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e漂移判斷\u003c/td\u003e\u003ctd\u003e錨 vs 現價 pct 決定 MARKET/LIMIT/BLOCK（HYPE 寬限）；LIMIT 另有 同錨去重(±0.15%同價留 qty 最接近) + 漂移\u0026gt;blockThr 自動撤 + 錨消失/Setup\u0026lt;thr 重評撤\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e錯誤處理/重試\u003c/td\u003e\u003ctd\u003e單筆失敗不中斷全輪；STOP 無效/窄止損自動降級 TRAILING；leverage 失敗忽略續下單；balance/positions 失敗回 null/空陣列；每步 try/catch + console\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e交易紀錄\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eExecResult{symbol, FIRED/BLOCKED/SKIP/ERROR, detail, signal, orderId, sizing}\u003c/code\u003e 寫 \u003ccode\u003eTRADE_ENGINE_LOG\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"callout c-amber\"\u003e\u003cstrong\u003e補充：\u003c/strong\u003e槓桿 \u003ccode\u003eSetup≥85→7x / ≥70→5x / else 3x\u003c/code\u003e；Sizing \u003ccode\u003e1R=equity*1%, qty=1R/|entry-SL|\u003c/code\u003e；費/風險 \u003ccode\u003efee=notional*0.1% , fee/R \u0026gt;50% BLOCK\u003c/code\u003e；排序高分優先不限 Top3。\u003c/div\u003e \u003ch2 id=\"s9\"\u003e9. CubeLV 專屬依賴清單\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003eCubeLV 專屬\u003c/th\u003e\u003cth\u003e實際依賴點\u003c/th\u003e\u003cth\u003e移植需替換\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e@cubelv/service-sdk — createService/getItemsByType/upsertItem/sendPush/onSchedule/start\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e全檔頂部 import + 所有 Item 讀寫 + 排程 + 推播\u003c/td\u003e\u003ctd\u003e替為 Express + 任意 DB + node-cron + FCM/Webhook\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003eVault Item DB（NOTE / TRADE_ENGINE_* 8 類）\u003c/td\u003e\u003ctd\u003eConfig/LOG/DUP/RISK_STATE/OBS 全落 Item\u003c/td\u003e\u003ctd\u003e替為 Postgres/SQLite/Mongo + 對應 CRUD\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003ePlugin/ Manifest 宿主\u003c/td\u003e\u003ctd\u003e\u003ccode\u003emanifest.json\u003c/code\u003e 宣告端點與 schedule\u003c/td\u003e\u003ctd\u003e替為一般 Node 服務啟動\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003e交易計畫 NOTE SSOT\u003c/td\u003e\u003ctd\u003e\u003ccode\u003egetLatestPlanSignals → parseTradingPlanHtml\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e替為 REST/DB/檔案，只要吐同欄位 HTML/JSON\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003eAgent 探員體系\u003c/td\u003e\u003ctd\u003e8 因子資料由 Vault Agents 排程產 NOTE\u003c/td\u003e\u003ctd\u003e替為任意 cron + API 抓取\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e6\u003c/td\u003e\u003ctd\u003e前端 SDK（@cubelv/sdk）\u003c/td\u003e\u003ctd\u003eTradeEnginePlugin/View/Schema\u003c/td\u003e\u003ctd\u003e可不移植，另做管理頁\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003ch2 id=\"s10\"\u003e10. 可獨立移植部分清單\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003e可移植核心\u003c/th\u003e\u003cth\u003e所在\u003c/th\u003e\u003cth\u003e是否需 CubeLV\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003eSetup 門檻邏輯\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eeffectiveThreshold + checkHardRules\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003e5 硬檢（Setup/保證金/SL/RR/費）\u003c/td\u003e\u003ctd\u003e\u003ccode\u003echeckHardRules\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e風控 BE / 軟鎖 / 追蹤 / Gated / 硬底自癒\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erunRiskManagement\u003c/code\u003e 全段\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003eSizing / 槓桿分級 / 漂移判定\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ecalcSizing / driftForPlacement / marketThr/blockThr\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003e下單 / 撤單 / 持倉 / 訂單同步 / 去重 / 孤兒清理\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eplaceOrderWithSizing / bingxCancelOrder / getPositions / fetchOpenOrders / evaluatePendingLimits\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（僅需換交易所 client）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e6\u003c/td\u003e\u003ctd\u003e交易計畫解析\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eparseTradingPlanHtml\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（可改吃 JSON）\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e7\u003c/td\u003e\u003ctd\u003eBingX API 簽章與 endpoints\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebuildQuery/sign + BINGX_API_BASE\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e否（換交易所改此層）\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003cdiv class=\"callout c-green\"\u003e\u003cstrong\u003e結論：\u003c/strong\u003e除第 9 節 6 項 CubeLV 殼之外，全部交易/風控/下單邏輯皆可原樣移植；最小集僅需 \u003ccode\u003eindex.ts + manifest.json + schema\u003c/code\u003e 三檔 + 一個 DB + BingX（或替換）即可獨立跑。\u003c/div\u003e \u003ch2 id=\"s11\"\u003e11. 仍無法從現有程式碼確認的部分\u003c/h2\u003e \u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003cth\u003e#\u003c/th\u003e\u003cth\u003e項目\u003c/th\u003e\u003cth\u003e說明\u003c/th\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e8 因子權重與評分公式\u003c/td\u003e\u003ctd\u003e不在引擎內；在掛單策略師與探員 prompts / Sheets 中，需另參 WO SETUP-FACTOR-AUDIT-001 稽核報告\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003eBingX 真實費率與滑價\u003c/td\u003e\u003ctd\u003e程式僅用 \u003ccode\u003efeeRate=0.0005 per side\u003c/code\u003e 估算，實際以交易所帳單為準\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e3\u003c/td\u003e\u003ctd\u003e宿主層限流/重試/代理\u003c/td\u003e\u003ctd\u003e程式僅對 openOrders/orderId 做大整數字串化與 5min 去重；網路層重試與住宅代理細節由宿主 fetch 實現，未在插件內\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e4\u003c/td\u003e\u003ctd\u003e舊版廢棄碼行為\u003c/td\u003e\u003ctd\u003e如 \u003ccode\u003eBINGX_PANEL_SECTION_CONFIG\u003c/code\u003e 雙讀、精簡 HTML 容錯、≤15→55 遷移等為相容保留，現行不觸發但仍在檔內\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003e5\u003c/td\u003e\u003ctd\u003eDocker/宿主部署參數\u003c/td\u003e\u003ctd\u003e插件內無 Dockerfile/compose/lock，實際部署由 CubeLV 平台代管，無法從程式碼反推容器規格\u003c/td\u003e\u003c/tr\u003e \u003c/tbody\u003e\u003c/table\u003e \u003chr\u003e \u003cdiv class=\"k\" style=\"font-size:12px;line-height:1.8\"\u003e \u003cstrong\u003e結案確認 — WO-ENGINE-CODE-FULL-001\u003c/strong\u003e\u003cbr\u003e • 1–11 已依序交付：正式版 1.7.14-BeShadow / 完整 index.ts 2176 行（檔案可下載） / 7 依賴檔全文 / 目錄樹 / package/build/Docker / 環境變數（apiKey/secretKey 以 [REDACTED] 脫敏） / 外部 API 與資料介面 / 實際交易邏輯 16 項 / CubeLV 專屬 6 項 / 可移植 7 項 / 未確認 5 項。\u003cbr\u003e • 本 WO 僅交付盤點，不修改／不重構／不新增；檔案下載與本筆記互為補充。\u003cbr\u003e • 關聯：WO SETUP-FACTOR-AUDIT-001（8 因子稽核）、WO ENGINE-CODE-RETRIEVAL-001（第一版盤點）。\u003cbr\u003e \u003c/div\u003e \u003c/div\u003e","createdAt":1788274762851,"deletedAt":null,"displayMode":"editable","embedRenders":{},"id":"a2f6bdea6d27db5e26efa0eb","isNew":false,"isPublic":true,"itemType":"NOTE","name":"WO-ENGINE-CODE-FULL-001 — CubeLV 交易引擎完整原始碼與執行依賴交付 — 2026-09-01","parents":{"3683c0a6609c9636df9ce97d":1788274762851},"preParentID":null,"updatedAt":1788274816663,"updatedBy":{"userId":"6a47425d004ad1e5692aa0","userName":"郭胖"},"version":6,"websiteContent":"[{\"originUrl\":\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f0dfde8a59873c2ad5.ts\",\"title\":\"無標題\",\"content\":null,\"imageUrl\":null},{\"originUrl\":\"https://cdn.cubelv.com/uploads/6a47425d004ad1e5692aa0/6a96e7f707a7bdc3b43fa827.md\",\"title\":\"無標題\",\"content\":null,\"imageUrl\":null},{\"originUrl\":\"https://open-api.bingx.com\",\"title\":\"無標題\",\"content\":null,\"imageUrl\":null}]"}]}