策略 API 與共用引擎:從回測到實盤。
FLOX 來自 FLOX Foundation,是一套以 C++20 為核心的模組化交易系統框架,2026 年 5 月釋出 v0.6.1。README 首行標示的核心設計是 polyglot strategy bindings:以 Python、Node.js、Codon、嵌入式 JavaScript 或 C API 撰寫策略,底層統一跑在同一份 C++ 引擎上,行為一致。
多數量化工具需要兩份程式碼:研究階段用 Python 寫 backtest 腳本,上線時再以 C++ 或 Rust 重寫正式版。FLOX 去掉這個重寫步驟。它的設計目標是同一份策略程式碼,從回測直接走到實盤,中間沒有 rewrite step。策略繼承 Strategy / IStrategy,實作 on_trade()、start()、stop() 等生命週期方法;成交與報價事件透過 Disruptor 風格的 ring buffer 無鎖派送,busy-spin consumer 負責低延遲消費。
框架不只給你一個空殼。串流指標庫(EMA、RSI、SMA…)、訂單簿、回測引擎、資料 I/O 都內建。交易所這端有四個原生 connector:Bybit V5、Bitget V2、Hyperliquid、Polymarket。再加上一個專門讓 AI coding agent 理解 FLOX 的 MCP 伺服器 flox-mcp。整套採 MIT 授權,floxlabs.dev 提供商用支援。
指標
策略
回測
連接器
實盤
「The same strategy code transitions directly from backtest to live without a rewrite step.」 同一份策略程式碼,從回測直接走到實盤,不需要重寫那一步。
安裝方式:依語言選 PyPI、npm 或原始碼建置。
FLOX 把安裝拆成兩條路。只要寫策略、跑指標、做回測,直接從 PyPI 或 npm 裝預編譯套件,完全不用碰 C++ 工具鏈。要連接交易所、編譯 connector,或自己改引擎,才需要從原始碼用 CMake 建。
# Python — 指標、策略、回測的主力
pip install flox-py
# Node.js — 同一套 API,改用 JavaScript / TypeScript
npm install @flox-foundation/flox
# AI 開發夥伴 — 讓 Claude Code / Cursor / Cline 看懂 FLOX
pip install flox-mcp從原始碼建置:連接器與引擎
需要 Python 3.10+、Node 18+、C++20 編譯器(GCC 13+ 或 Clang 16+)、CMake 3.22+,作業系統限 Linux 或 macOS。FLOX 以一組 CMake feature flag 控制編譯範圍,預設幾乎全部關閉,按需開啟。
git clone https://github.com/FLOX-Foundation/flox.git
cd flox
# 研究 / Python-only:Python 綁定 + 回測引擎
cmake -B build -DFLOX_BUILD_PYTHON=ON -DFLOX_ENABLE_BACKTEST=ON
# 正式交易服務:加上連接器,並指定要編的交易所
cmake -B build -DFLOX_BUILD_PYTHON=ON \
cmake -B build -DFLOX_BUILD_CONNECTORS=ON \
cmake -B build -DFLOX_CONNECTORS="bybit;bitget" \
cmake -B build -DFLOX_ENABLE_BACKTEST=ONFLOX 模組清單:策略、指標、回測、連接器。
FLOX 把一條完整交易管線拆成可組合的模組,依職責分為四組:策略與語言綁定、市場數據與指標、回測、交易所連接器。研究階段通常只用前三組,上線才接 connector。每張卡片對應一個具體模組。
綁定 · 01
flox.Strategy
統一策略 API
繼承 Strategy / IStrategy,實作 on_trade、start、stop。同一份策略在五種語言綁定上行為一致。
綁定 · 02
pip install flox-py
Python 綁定
pybind11 打包的 flox_py。研究、回測、快速原型的主力,API 與底層 C++ 一一對應。
綁定 · 03
@flox-foundation/flox
Node.js 綁定
與 Python 完全相同的 API,改用 JavaScript / TypeScript。給 Node 服務或前端團隊直接接。
綁定 · 04
libflox_capi.so
C API 整合層
編出共享庫後,任何能呼叫 C 的語言都接得上 FLOX。Codon 與嵌入式 QuickJS 也走這條路。
數據 · 05
flox.EMA / RSI / SMA
串流指標庫
EMA、RSI、SMA 等串流指標,update() 餵一個價格回一個值,暖機期間回 None。
數據 · 06
OrderBook
即時訂單簿
內建訂單簿結構,吃 WebSocket 增量更新,維護即時買賣盤深度。
數據 · 07
TradeEvent
無鎖事件派送
Disruptor 風格 ring buffer + busy-spin consumer,低延遲把成交與報價事件送進策略。
數據 · 08
Data I/O
資料讀寫
內建資料 I/O,讀歷史 tape、寫 replay log。LZ4 壓縮預設開啟,落地檔案更小。
回測 · 09
flox.BacktestRunner
回測引擎
給 fee_rate、initial_capital,run_csv() 吃歷史成交,回傳報酬率、Sharpe、最大回撤。
連接器 · 10
Bybit connector
Bybit V5
WebSocket 行情 + REST 下單執行器。原生連接器,與引擎一起編進 flox::connectors。
連接器 · 11
Bitget connector
Bitget V2
WebSocket 行情 + classic account REST 執行器,串接 Bitget V2 帳戶體系。
連接器 · 12
Hyperliquid connector
Hyperliquid
WebSocket + REST。下單透過包官方 SDK 的 Python daemon(hl_signerd.py)簽章。
連接器 · 13
Polymarket connector
Polymarket
WebSocket + Rust FFI 執行器。需 proxy 錢包與 USDC 資金,憑證放環境變數。
五種綁定,怎麼選
| 語言綁定 | 安裝方式 | 適合場景 |
|---|---|---|
| Python | pip install flox-py | 研究、回測、快速原型 |
| Node.js | npm install @flox-foundation/flox | Node 服務、TypeScript 團隊 |
| Codon | 原始碼建置 | 要 Python 語法,但接近原生速度 |
| JavaScript | C++ 內嵌(QuickJS) | 把策略邏輯熱載入引擎 |
| C API | libflox_capi.so | 接上任何其他語言的整合點 |
flox-mcp:把 FLOX 介面直接提供給 AI agent。
FLOX README 所稱的「AI-friendly developer tools」,指的是 flox-mcp,一個跑在本機的 Model Context Protocol 伺服器。它將 FLOX 的 C-API 簽章、錯誤碼目錄、指標庫直接提供給 Cursor、Claude Code、Cline 等 AI agent,使其取得真實介面而非依訓練資料推測。flox-mcp 由 IDE 以子行程啟動,走 stdio 溝通,全程本機執行,不對外連線。以下說明八個配置要點。
一行 init,接上你的 IDE
pip install flox-mcp 之後跑 flox-mcp init,它會生成 .mcp.json。加 --global 寫到 ~/.config/claude/.mcp.json;先用 --print 看合併結果、再決定要不要寫入。
來源 · mcp/README.md
14 個工具,先記查詢三件套
flox-mcp 共開 14 個工具。查資料常用 list_indicators、list_capi_functions、docs_search,分別列出指標簽章、搜尋 C-API 介面、全文搜文件。AI agent 可直接取得函式名稱,無需推測。
來源 · mcp/README.md
寫策略前先 scaffold,寫完先 validate
scaffold_strategy 生成 Python / Node 的起手式模板(bar / trade / hybrid 三種變體);validate_strategy 對 Python 策略做 AST 靜態分析,檢查 hook 有沒有接對。讓 AI 生出的策略先過這關。
來源 · mcp/README.md
lookup_error_code 把錯誤碼變人話
跑出 E_SYM_001 這類錯誤碼時,lookup_error_code 會對應到 Markdown 文件說明。配合 explain_event 解釋事件結構欄位,debug 不用翻原始碼。
來源 · mcp/README.md
compute_indicator / run_backtest 當場跑
compute_indicator 對 float 陣列跑指標(輸入上限 1 MiB);run_backtest 在資源受限的子行程裡跑策略對 CSV 資料集。AI agent 能當場驗證數字,不只生成程式碼。
來源 · mcp/README.md
版本對齊,agent 看到的就是你裝的
flox-mcp、flox-py、@flox-foundation/flox 版本號同步發佈。wheel 內含 C-API snapshot、錯誤文件、binding manifest、SQLite FTS5 文件索引等唯讀快照,確保 agent 讀到的介面與實際安裝版本一致。
來源 · mcp/README.md
suggest_indicator:用英文描述換指標
不確定該用哪個指標時,suggest_indicator 把英文描述對應到排序後的指標建議;lookup_symbol 則把符號名在 C-API、Python、Node、Codon 之間互譯。
來源 · mcp/README.md
要接實盤,另外起 paper engine
flox-mcp 預設只給唯讀查詢與計算。要解鎖 tier-5/6 的實盤功能,得另外起 paper engine:flox engine sim --strategy s.py --tape ./tape,再用 flox-mcp init --engine-url URL --token T 把控制伺服器接上。
來源 · mcp/README.md
雙均線交叉策略:從 pip install 到回測輸出。
以下是一段示範流程:你想做一個 BTCUSDT 的雙均線交叉策略。先讓 Claude Code 透過 flox-mcp 生出骨架,再用 flox-py 寫策略、跑回測。指令與程式碼取自 FLOX 官方文件與 mcp/README.md;回測數字為示意值。
$ You › 幫我用 FLOX 做一個 BTCUSDT 的雙均線交叉策略,Python。
claude: Claude ›
claude: 我用 flox-mcp 的 scaffold_strategy 生了一個 trade 變體的骨架。
claude: 策略繼承 flox.Strategy,在 on_trade hook 裡比對快慢均線:
claude: registry = flox.SymbolRegistry()
claude: btc = registry.add_symbol("binance", "BTCUSDT", tick_size=0.01)
claude: class SMACross(flox.Strategy):
claude: def __init__(self, symbols):
claude: super().__init__(symbols)
claude: self.fast = flox.SMA(10)
claude: self.slow = flox.SMA(30)
claude: def on_trade(self, ctx, trade):
claude: f = self.fast.update(trade.price)
claude: s = self.slow.update(trade.price)
claude: if f is None or s is None:
claude: return
claude: if f > s and ctx.is_flat():
claude: self.market_buy(0.01)
claude: elif f < s and ctx.is_long():
claude: self.close_position()
$ You › 看起來對。先驗證,再回測。
ok: AST parse ✓ · on_trade hook 已接 · 無語法問題
$ You › pip install flox-py,然後跑回測。
claude: bt = flox.BacktestRunner(
claude: registry, fee_rate=0.0004, initial_capital=10_000)
claude: bt.set_strategy(SMACross([btc]))
claude: stats = bt.run_csv("btcusdt_trades.csv")
claude: Claude ›
claude: 回測跑完了(以下為示意輸出):
ok: return_pct +12.4
ok: sharpe 1.83
ok: max_drawdown_pct -8.10
hl: 同一份 sma_cross.py,接上 Bybit connector 就能走實盤,
hl: on_trade 那段邏輯一個字都不用改。
同一份 sma_cross.py,回測完成後接上 connector 即可進入實盤。FLOX 的設計去掉了中間的重寫步驟。
這段流程的關鍵
flox-mcp 的作用是讓 AI agent 取得真實的 FLOX 介面,而非生成程式碼。scaffold_strategy 提供官方模板,validate_strategy 執行真實 AST 分析,run_backtest 在受限子行程裡執行。agent 使用的是確認過的 API,不依賴訓練資料推測。
sma_cross.py 從回測到實盤不需修改,原因是 BacktestRunner 與 Runner 共用同一份策略 API。回測時 run_csv 餵入歷史成交(CSV 欄位為 timestamp,price,qty,is_buy),實盤時 connector 餵入 WebSocket 事件。策略的 on_trade 邏輯保持不變。
使用前需確認的八項限制與邊界。
FLOX 整合路徑:語言擴充、熱載入與連接器選擇。
FLOX 的整合點設計開放。C API 是官方文件明指「adding support for any other language」的擴充入口,凡能呼叫 C 的語言均可接上 FLOX 引擎。
進階玩法地圖
**1. 用 Codon 寫接近原生速度的策略。**Codon 綁定讓你用接近 Python 的語法寫策略,卻編譯成原生碼。研究階段的 Python 程式碼能更平滑地過渡到高效能版本。
**2. 把策略熱載進引擎。**QuickJS 綁定把 JavaScript 策略執行階段內嵌進 C++ 引擎,適合需要動態載入、不重啟服務就換策略的場景。
**3. 只編你要的連接器。**用 -DFLOX_CONNECTORS="bybit;bitget" 挑選要編哪些交易所,不用每次把四個全編。連接器以 flox::connectors 靜態庫的形式跟引擎一起建。
**4. 接上你自己的語言。**編出 libflox_capi.so 後,Rust、Go、C# 都接得上。C API 就是 FLOX 給「任何其他語言」預留的擴充點。
**5. 把 flox-mcp 接進團隊 AI 工作流。**用 flox-mcp init --global 讓整台機器的 Claude Code / Cursor / Cline 都連上同一份 FLOX 介面快照,團隊成員的 AI agent 看到的 API 就一致。
最該讀的三份延伸閱讀
① FLOX-Foundation/flox:主 repo 與 README,polyglot 綁定總覽與快速上手。 ② mcp/ 目錄:flox-mcp 的完整工具清單、設定旗標與安全須知。 ③ connectors/ 目錄:四個原生交易所連接器的建置與設定細節。
「The C API is the integration point for adding support for any other language.」 C API 就是接上任何其他語言的整合點。