@@ -100,62 +100,6 @@ flowchart LR
100100 style L fill:#1e3a2f,stroke:#0ecb81,color:#fff
101101```
102102
103- ### 数据管线
104-
105- | 阶段 | 组件 | 职责 |
106- | ------| ------| ------|
107- | ** 1. 行情生成** | ` mockWorker.ts ` / ` useBinanceMarket ` | Mock: Random Walk 模拟 · Binance: WebSocket 实时数据 |
108- | ** 2. 数据源抽象** | ` useMarketData ` | 统一 Mock/Binance 接口,管理历史 K 线请求 |
109- | ** 3. 统一入口** | ` useWasmEngine ` | Wasm 单例初始化、Tick 分发、` on_tick_full ` 合并调用 |
110- | ** 4. 市场引擎** | ` MarketEngine ` (Rust) | 多周期 K 线聚合 (1s→1D)、SMA/EMA/BOLL/MACD/RSI |
111- | ** 5. 交易引擎** | ` TradingEngine ` (Rust) | 仓位管理、盈亏计算、限价单撮合、风控强平 |
112- | ** 6. 操作封装** | ` useTradingActions ` | 开仓/平仓/挂单/撤单/追加保证金/预估强平 API |
113- | ** 7. 渲染** | React + TradingView | 60FPS K 线图、深度图、交易 UI |
114-
115- ---
116-
117- ## 🛠️ 技术栈
118-
119- ### 核心引擎 (Rust/Wasm)
120-
121- | Crate | 版本 | 用途 |
122- | -------| ------| ------|
123- | ` wasm-bindgen ` | 0.2 | JS ↔ Rust FFI 桥接 |
124- | ` serde ` | 1.0 | 序列化框架 |
125- | ` serde-wasm-bindgen ` | 0.6 | 高效 Wasm 序列化 |
126- | ` js-sys ` | 0.3 | JavaScript API 绑定 |
127- | ` web-sys ` | 0.3 | Web API 绑定 (console) |
128- | ` console_error_panic_hook ` | 0.1 | 调试友好的 Panic 信息 |
129- | ` criterion ` | 0.5 | 性能基准测试 (dev) |
130-
131- ### 前端技术栈
132-
133- | 包名 | 版本 | 用途 |
134- | ------| ------| ------|
135- | ** React** | 18.3 | UI 组件框架 |
136- | ** TypeScript** | 5.6 | 类型安全开发 |
137- | ** Vite** | 5.4 | 新一代构建工具 |
138- | ** Tailwind CSS** | 4.0 | 原子化 CSS 框架 (Design Token 体系) |
139- | ** Lightweight Charts** | 5.1 | TradingView 专业 K 线图表 |
140- | ** Zustand** | 4.5 | 轻量级状态管理 (UI 状态/数据源切换) |
141- | ** ahooks** | 3.9 | React Hooks 工具库 (防抖/倒计时等) |
142- | ** Lucide React** | 0.562 | 现代图标库 |
143- | ** @react-spring/web ** | 10.0 | 物理动画引擎 |
144- | ** @use-gesture/react ** | 10.3 | 手势交互 (拖拽/滑动) |
145- | ** vite-plugin-wasm** | 3.3 | Wasm 集成插件 |
146-
147- ### 构建优化
148-
149- ``` toml
150- # Cargo.toml - Release Profile
151- [profile .release ]
152- opt-level = " s" # 平衡体积与运行速度
153- lto = true # 链接时优化
154- codegen-units = 1 # 单代码单元,更好的优化
155- strip = true # 移除调试符号
156- panic = " abort" # 无 unwind 代码
157- ```
158-
159103---
160104
161105## 🚀 快速开始
@@ -183,94 +127,13 @@ cd core && wasm-pack build --target web --out-dir pkg && cd ..
183127npm run dev
184128```
185129
186- ### 可用脚本
187-
188- | 命令 | 描述 |
189- | ------| ------|
190- | ` npm run dev ` | 构建 Wasm + 启动 Vite 开发服务器 (3000 端口) |
191- | ` npm run build ` | 生产构建 (Wasm + Vite) |
192- | ` npm run build:wasm ` | 仅构建 Rust → WebAssembly |
193- | ` npm run preview ` | 本地预览生产构建 |
194- | ` npm run lint ` | 运行 ESLint 检查 |
195- | ` npm run test:rust ` | 运行 Rust 单元测试 |
196- | ` npm run bench ` | 运行 Rust 性能基准测试 |
197-
198- ---
199-
200130## 📁 项目结构
201131
202- ```
203- RustQuantLab/
204- ├── core/ # 🦀 Rust/Wasm 核心引擎
205- │ ├── src/
206- │ │ ├── lib.rs # Wasm 导出 API + 模块声明
207- │ │ ├── models.rs # 核心数据模型 (OrderBook/Candle/AnalysisResult)
208- │ │ ├── engine/ # 引擎模块
209- │ │ │ ├── market_engine/ # MarketEngine (K线聚合/指标计算/订单簿)
210- │ │ │ ├── trading/ # 交易逻辑 (开仓/平仓/限价单撮合/风控)
211- │ │ │ ├── data/ # K线聚合器、Tick 数据管理
212- │ │ │ └── types.rs # 引擎事件类型 (EngineEvent/TradingState)
213- │ │ ├── trading/ # 交易领域模型
214- │ │ │ ├── position.rs # 仓位结构与生命周期
215- │ │ │ ├── orders.rs # 限价单/挂单管理
216- │ │ │ ├── balance.rs # 账户余额与保证金
217- │ │ │ └── manager.rs # 仓位管理器 (开仓/平仓/加仓)
218- │ │ ├── indicators/ # 技术指标 (纯函数, 无状态)
219- │ │ │ ├── ma.rs # SMA / EMA
220- │ │ │ ├── boll.rs # 布林带
221- │ │ │ ├── macd.rs # MACD
222- │ │ │ └── rsi.rs # RSI
223- │ │ └── risk/ # 风控与强平
224- │ │ ├── liquidation.rs # 强平价格计算
225- │ │ ├── margin.rs # 保证金率计算
226- │ │ └── types.rs # 风险等级 (Safe/Warning/Danger/Critical)
227- │ ├── benches/ # Criterion 性能基准测试
228- │ └── Cargo.toml
229- ├── src/ # ⚛️ React 前端
230- │ ├── components/
231- │ │ ├── Dashboard/
232- │ │ │ ├── Chart/ # 图表区域
233- │ │ │ │ ├── LightweightChart/ # TradingView 多窗格图表系统
234- │ │ │ │ ├── ChartToolbar.tsx # 时间周期/指标/数据源切换
235- │ │ │ │ └── DepthChart.tsx # 市场深度图
236- │ │ │ ├── Trade/ # 交易区域
237- │ │ │ │ ├── TradePanel.tsx # 交易表单 (市价/限价/杠杆)
238- │ │ │ │ ├── PositionCard.tsx # 仓位卡片 (盈亏/风控/挂单)
239- │ │ │ │ └── LeverageSlider.tsx # 杠杆滑条 (1-125x)
240- │ │ │ ├── OrderBook.tsx # 订单簿 (买卖各20档)
241- │ │ │ └── StatsPanel.tsx # 24h 市场统计
242- │ │ ├── Layout/ # 布局组件
243- │ │ │ ├── Header.tsx # 顶部导航 (数据源切换/FPS/内存)
244- │ │ │ ├── ErrorScreen.tsx # 错误页面
245- │ │ │ └── LoadingScreen.tsx # 加载骨架屏
246- │ │ └── Toast/ # Toast 通知系统
247- │ ├── hooks/
248- │ │ ├── useWasmEngine.ts # 🎯 统一 Wasm 引擎入口
249- │ │ ├── useMarketData.ts # 数据源抽象层 (Mock/Binance 切换)
250- │ │ ├── useBinanceMarket.ts # Binance WebSocket 实时数据
251- │ │ ├── useMockMarket.ts # Mock 模拟数据
252- │ │ ├── useMarketStats.ts # 24h 市场统计 (涨跌幅/成交量/倒计时)
253- │ │ ├── useCandleData.ts # K线数据适配
254- │ │ ├── useFpsMonitor.ts # FPS 性能监控
255- │ │ ├── tradingEngine/ # 交易操作封装
256- │ │ │ ├── useTradingActions.ts # 开仓/平仓/挂单/撤单/追加保证金
257- │ │ │ └── wasmSingleton.ts # Wasm 引擎单例 + 内存监控
258- │ │ ├── tradingState/ # 交易状态处理
259- │ │ │ ├── eventHandler.ts # 引擎事件 → Toast 通知
260- │ │ │ └── types.ts # 交易 Wasm 接口类型
261- │ │ ├── candle/ # K线工具
262- │ │ └── ui/ # UI 状态
263- │ │ ├── useUiStore.ts # Zustand UI 状态管理
264- │ │ └── useBottomSheet.ts # 移动端底部弹层
265- │ ├── workers/
266- │ │ └── mockWorker.ts # Web Worker: Random Walk 行情模拟
267- │ └── App.tsx # 应用根组件 (Composition Root)
268- ├── docs/ # 📚 文档
269- │ ├── ROADMAP.md # 项目路线图
270- │ └── design/ # 设计文档
271- ├── .github/workflows/ # GitHub Actions (自动部署)
272- └── package.json
273- ```
132+ | 目录 | 说明 |
133+ | ------| ------|
134+ | ` core/ ` | 🦀 Rust/Wasm 核心引擎 (K线聚合、技术指标、交易撮合、风控强平) |
135+ | ` src/ ` | ⚛️ React 前端 (图表、交易面板、订单簿、状态管理) |
136+ | ` docs/ ` | 📚 设计文档与路线图 |
274137
275138---
276139
0 commit comments