# 订单流交易系统 ## 概述 订单流交易策略系统,支持实盘交易和回测。 ## 模式切换 通过 `config.py` 中的 `SYSTEM_CONFIG["mode"]` 切换: ```python SYSTEM_CONFIG = { "mode": "live", # "live" | "backtest" } ``` ## 实盘/模拟模式 (mode="live") 运行 SimNow 模拟交易或实盘交易: ```bash python run.py ``` ### Tick 数据录制 实盘运行时可录制 tick 数据供回测使用: ```python SYSTEM_CONFIG = { "record_tick": True, # 开启录制 "tick_record_interval": 1, # 每N个tick录一个 } ``` 录制的数据保存在 `traderdata/{symbol}_tick.csv`。 ## 回测模式 (mode="backtest") ### 配置 ```python SYSTEM_CONFIG = { "mode": "backtest", "backtest_mode": "ofdata", # "ofdata" | "tick" "backtest_results_dir": "backtest_results", "initial_equity": 100000.0, "contract_multiplier": { "jm2609": 60, # 焦煤:吨/手 "au2608": 1000, # 黄金:克/手 } } ``` ### 回测模式 1: ofdata.json 回放 读取已有的 `ofdata.json` 历史订单流数据进行回测。 数据源:`traderdata/{symbol}_ofdata.json` ```python "backtest_mode": "ofdata" ``` ### 回测模式 2: 原始 tick 回放 读取原始 tick CSV 文件,完整重放 tick → K线 → 订单流流程。 数据源:`traderdata/{symbol}_tick.csv` ```python "backtest_mode": "tick" ``` ### 运行回测 ```bash python run.py ``` ### 输出文件 回测结果保存在 `backtest_results/` 目录: | 文件 | 说明 | |------|------| | `{symbol}_equity.csv` | 权益曲线 | | `{symbol}_trades.csv` | 交易记录 | | `{symbol}_metrics.json` | 性能指标 | ### 性能指标 ```json { "total_return": 12500.0, "total_return_pct": 12.5, "max_drawdown": -3200.0, "max_drawdown_pct": -3.2, "win_rate": 0.62, "total_trades": 50, "winning_trades": 31, "losing_trades": 19, "avg_win": 850.0, "avg_loss": -420.0, "profit_factor": 2.1, "final_equity": 112500.0 } ``` ## 文件结构 ``` 4.orderflow/ ├── run.py # 实盘/模拟交易主程序 ├── config.py # 配置文件 ├── backtest.py # 回测模块 ├── traderdata/ # 实盘数据 │ ├── jm2609_ofdata.json │ └── jm2609_tick.csv # 录制生成 ├── backtest_results/ # 回测输出 │ ├── jm2609_equity.csv │ ├── jm2609_trades.csv │ └── jm2609_metrics.json └── readme.md ``` ## tick CSV 格式 (Mode 2 回测数据) |字段 | 类型 | 说明 | |------|------|------| | InstrumentID | string | 合约代码 | | ActionDay | string | YYYYMMDD | | UpdateTime | string | HH:MM:SS | | UpdateMillisec | int | 毫秒 | | LastPrice | float | 最新价 | | Volume | int | 累计成交量 | | BidPrice1 | float | 买一价 | | BidVolume1 | int | 买一量 | | AskPrice1 | float | 卖一价 | | AskVolume1 | int | 卖一量 | | UpperLimitPrice | float | 涨停价 | | LowerLimitPrice | float | 跌停价 | | TradingDay | string | YYYYMMDD | | Turnover | float | 累计成交额 | | OpenInterest | int | 持仓量 | ## 历史修改记录 ### 2026-06-05: ofdata.json 保存时机改善 **问题**:`ofdata.json` 中价格数据相对于实时 tick 有延迟 **修改**:在 `tickdata` 方法中,新 K 线开始时立即保存 `ofdata.json`,移除 `cal_sig` 中的重复保存 ### 2026-06-05: 回测模块 **新增功能**: - 支持 `mode` 切换实盘/回测 - Mode 1: ofdata.json 回放 - Mode 2: 原始 tick CSV 回放 - Tick 数据录制功能