Files
Quant_Code/1.交易策略/4.orderflow/readme.md
T

161 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 订单流交易系统
## 概述
订单流交易策略系统,支持实盘交易和回测。
## 模式切换
通过 `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 数据录制功能