20250509:第一次修改LLM订单流策略
This commit is contained in:
@@ -0,0 +1,468 @@
|
||||
# AI智能订单流交易策略图文解析
|
||||
|
||||
## 一、系统整体架构
|
||||
|
||||
AI智能订单流交易策略是一套融合高频数据分析与人工智能决策的自动化期货交易系统。该系统通过分析市场微观结构特征,结合大模型AI的综合分析能力,实现从市场监控到交易执行的全流程智能化。
|
||||
|
||||
该交易系统基于python的CTP接口开发,采用多进程架构,实现了行情数据处理、订单流分析、AI决策和交易执行的全流程自动化。系统架构主要包括:
|
||||
|
||||
```
|
||||
主程序
|
||||
├── 行情进程 (run_tick_engine)
|
||||
│ └── Tick数据处理
|
||||
└── 交易进程 (run_trader)
|
||||
├── MyTrader类
|
||||
│ ├── 交易逻辑处理
|
||||
│ ├── 止损止盈管理
|
||||
│ └── 日内平仓控制
|
||||
└── AI分析线程 (background_model_call)
|
||||
```
|
||||
|
||||
### 系统架构图
|
||||
|
||||
```
|
||||
┌───────────────────────┐
|
||||
│ 主程序入口 │
|
||||
└───────────┬───────────┘
|
||||
│
|
||||
┌──────┴──────┐
|
||||
▼ ▼
|
||||
┌─────────┐ ┌─────────┐
|
||||
│行情进程 │ │交易进程 │
|
||||
└────┬────┘ └────┬────┘
|
||||
│ │
|
||||
▼ ▼
|
||||
┌─────────┐ ┌─────────────┐
|
||||
│Tick处理 │ │ MyTrader类 │
|
||||
└────┬────┘ └──────┬──────┘
|
||||
│ │
|
||||
▼ ▼
|
||||
┌─────────┐ ┌───────────┐ ┌───────────┐
|
||||
│K线构建 │ │交易信号处理│ ←── │ AI分析线程│
|
||||
└────┬────┘ └──────┬────┘ └───────────┘
|
||||
│ │
|
||||
▼ ▼
|
||||
┌─────────┐ ┌───────────┐
|
||||
│订单流分析│ │风险管理系统│
|
||||
└─────────┘ └───────────┘
|
||||
```
|
||||
|
||||
系统采用多进程架构设计,主要分为两个核心进程:
|
||||
|
||||
1. **行情进程**:负责接收和处理实时市场数据
|
||||
- Tick数据处理
|
||||
- K线构建
|
||||
- 订单流分析
|
||||
|
||||
2. **交易进程**:负责交易决策与执行
|
||||
- AI模型分析(异步线程)
|
||||
- 交易信号处理
|
||||
- 风险管理系统
|
||||
- 订单执行
|
||||
|
||||
这种架构设计有效分离了数据处理和交易执行,确保系统稳定性和响应速度。
|
||||
|
||||
## 二、核心数据流程
|
||||
|
||||
### 数据流向图
|
||||
|
||||
```
|
||||
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
|
||||
│ CTP接口 │ → │ Tick数据 │ → │ K线数据 │ → │订单流分析 │
|
||||
└───────────┘ └───────────┘ └───────────┘ └─────┬─────┘
|
||||
│
|
||||
┌───────────┐ ┌───────────┐ ┌───────────┐ │
|
||||
│订单执行系统│ ← │交易信号生成│ ← │ AI决策分析│ ← ────┘
|
||||
└───────────┘ └───────────┘ └───────────┘
|
||||
```
|
||||
|
||||
系统数据处理的完整流程如下:
|
||||
|
||||
1. **Tick数据接收**:从CTP接口获取实时行情数据
|
||||
2. **K线构建**:将Tick数据聚合成分钟级K线
|
||||
3. **订单流分析**:计算Delta值和堆积指标
|
||||
4. **AI模型分析**:利用大模型分析市场状态
|
||||
5. **交易信号生成**:生成包含方向、置信度和风控参数的信号
|
||||
6. **订单执行**:根据信号执行交易策略
|
||||
|
||||
## 三、订单流分析详解
|
||||
|
||||
订单流分析是该系统的核心特色,它通过分析每一笔成交背后的买卖意图,揭示常规技术分析无法察觉的市场微观结构。
|
||||
|
||||
### 订单流原理图
|
||||
|
||||
```
|
||||
价格
|
||||
▲
|
||||
│ ┌────┐
|
||||
│ │ │
|
||||
│ ┌───┘ └───┐
|
||||
│ │ │
|
||||
│ │ └───┐
|
||||
│ │ │
|
||||
│ │ │
|
||||
└───┴─────────────────┴────────► 时间
|
||||
↑ ↑ ↑ ↑
|
||||
│ │ │ │
|
||||
+5 -3 +8 -2 ← Delta值
|
||||
│ │ │ │
|
||||
└─────┴─────┴─────┘
|
||||
│
|
||||
Delta累计 = +8
|
||||
```
|
||||
|
||||
订单流分析的核心概念:
|
||||
|
||||
#### 1. Delta值计算
|
||||
|
||||
Delta值表示主动买入成交量与主动卖出成交量的差值:
|
||||
|
||||
- **主动买入**:成交价 ≥ 卖一价时的成交
|
||||
- **主动卖出**:成交价 ≤ 买一价时的成交
|
||||
- **Delta = 主动买入量 - 主动卖出量**
|
||||
|
||||
系统中这部分实现的关键代码:
|
||||
|
||||
```python
|
||||
# 判断交易是主动买入还是主动卖出
|
||||
if LastPrice >= Ap: # 高于卖一价成交,视为主动买入
|
||||
askDict[str(LastPrice)] += Volume
|
||||
if LastPrice <= Bp: # 低于买一价成交,视为主动卖出
|
||||
bidDict[str(LastPrice)] += Volume
|
||||
|
||||
# 计算Delta值
|
||||
delta = (sum(askDictResult.values()) - sum(bidDictResult.values()))
|
||||
```
|
||||
|
||||
#### 2. 堆积指标(DJ)
|
||||
|
||||
堆积指标用于识别主力资金的集中买卖行为,通过分析买卖盘异常大单的堆积现象,发现大资金的布局意图:
|
||||
|
||||
- **多头堆积**:某价位的卖单量远大于邻近价位的买单量
|
||||
- **空头堆积**:某价位的买单量远大于邻近价位的卖单量
|
||||
|
||||
堆积形成的市场意义:
|
||||
- 多头堆积形成后,价格往往出现上涨
|
||||
- 空头堆积形成后,价格往往出现下跌
|
||||
|
||||
这种微观结构变化,往往领先于价格变动,为交易提供了先机。
|
||||
|
||||
### 订单流指标解读
|
||||
|
||||
| 指标名称 | 计算方法 | 市场含义 | 交易信号 |
|
||||
|---------|---------|---------|---------|
|
||||
| Delta值 | 主动买入量-主动卖出量 | 单根K线买卖力量对比 | 正值=买方强势,负值=卖方强势 |
|
||||
| Delta累计 | Delta值的累计曲线 | 资金流向趋势 | 向上倾斜=做多信号,向下倾斜=做空信号 |
|
||||
| 堆积指标(DJ) | 基于买卖盘大单异常计算 | 大资金买卖意图 | 正值=多头堆积,负值=空头堆积 |
|
||||
| 买卖比值 | 主动买入量/主动卖出量 | 短期市场情绪 | >1.5买方强势,<0.7卖方强势 |
|
||||
|
||||
## 四、AI决策系统工作流程
|
||||
|
||||
系统采用DeepSeek大模型作为核心分析引擎,实现类似专业交易员的市场分析和决策能力。
|
||||
|
||||
### AI决策流程图
|
||||
|
||||
```
|
||||
┌────────────┐ ┌────────────┐ ┌────────────┐
|
||||
│ 市场数据整合 │ ──► │ 数据格式化 │ ──► │ 提示词构建 │
|
||||
└──────┬─────┘ └──────┬─────┘ └──────┬─────┘
|
||||
│ │ │
|
||||
└──────────────────┼──────────────────┘
|
||||
│
|
||||
▼
|
||||
┌────────────┐ ┌────────────┐ ┌────────────┐
|
||||
│ 交易信号执行 │ ◄── │ 信号质量检查 │ ◄── │ 大模型API调用│
|
||||
└────────────┘ └────────────┘ └────────────┘
|
||||
```
|
||||
|
||||
#### 1. 数据格式化
|
||||
|
||||
系统通过`format_data_for_llm`方法将市场数据转换为文本格式,供AI模型分析:
|
||||
|
||||
```python
|
||||
data_text = "订单流数据分析:\n\n"
|
||||
data_text += f"当前时间: {recent_data['datetime'].iloc[-1]}\n"
|
||||
data_text += f"当前价格: {recent_data['close'].iloc[-1]}\n"
|
||||
data_text += f"MA5: {ma5:.2f}\n"
|
||||
data_text += f"MA10: {ma10:.2f}\n"
|
||||
data_text += f"MA20: {ma20:.2f}\n"
|
||||
data_text += f"订单流净值: {recent_data['delta'].iloc[-1]}\n"
|
||||
data_text += f"堆积指标: {recent_data['dj'].iloc[-1]}\n"
|
||||
# ...更多市场数据...
|
||||
```
|
||||
|
||||
#### 2. AI分析要素
|
||||
|
||||
AI模型会综合分析以下关键因素:
|
||||
|
||||
- **技术形态**:均线排列、K线形态、支撑阻力位
|
||||
- **订单流特征**:Delta趋势、堆积情况、买卖力量对比
|
||||
- **市场状态**:超买超卖、波动性、当前位置
|
||||
- **趋势强度**:价格动量、趋势持续性
|
||||
- **当前持仓**:持仓状态、盈亏情况、风险敞口
|
||||
|
||||
#### 3. 交易信号格式
|
||||
|
||||
AI模型返回的交易信号包含以下要素:
|
||||
|
||||
```
|
||||
action: 开多/开空/平多/平空/不操作
|
||||
reason: 交易理由
|
||||
confidence: 置信度(1-10)
|
||||
stop_loss: 止损价
|
||||
take_profit: 止盈价
|
||||
trailing_percent: 跟踪止损百分比
|
||||
```
|
||||
|
||||
例如,当系统检测到强势上涨趋势时,可能生成如下信号:
|
||||
|
||||
```
|
||||
action: 开多
|
||||
reason: 均线形成多头排列,价格突破前期高点,订单流Delta累计持续走高
|
||||
confidence: 8
|
||||
stop_loss: 4382
|
||||
take_profit: 4425
|
||||
trailing_percent: 0.006
|
||||
```
|
||||
|
||||
#### 4. 信号质量控制
|
||||
|
||||
为确保交易信号的可靠性,系统采用多重过滤机制:
|
||||
|
||||
- **置信度阈值**:只有置信度≥6的信号才会执行
|
||||
- **时效性检查**:超过15秒的信号将被忽略
|
||||
- **市场适应性**:AI会根据不同市场环境给出不同置信度
|
||||
|
||||
## 五、风险管理系统
|
||||
|
||||
风险控制是交易系统的生命线,本系统采用三层防护的止损体系。
|
||||
|
||||
### 风险管理层次图
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ 风险管理系统 │
|
||||
└───────────────┬─────────────────────────┘
|
||||
│
|
||||
┌───────────┴───────────┐
|
||||
│ │
|
||||
┌───▼───┐ ┌────▼───┐
|
||||
│止损系统│ │平仓系统 │
|
||||
└───┬───┘ └────┬───┘
|
||||
│ │
|
||||
▼ ▼
|
||||
┌───────────────┐ ┌──────────────┐
|
||||
│ 固定止损 │ │ 日内自动平仓 │
|
||||
└───────────────┘ └──────────────┘
|
||||
┌───────────────┐ ┌──────────────┐
|
||||
│ 跟踪止损 │ │ 反向信号平仓 │
|
||||
└───────────────┘ └──────────────┘
|
||||
┌───────────────┐ ┌──────────────┐
|
||||
│ AI动态止损 │ │ AI指令平仓 │
|
||||
└───────────────┘ └──────────────┘
|
||||
```
|
||||
|
||||
#### 1. 固定止损
|
||||
|
||||
固定止损是最基本的风险控制措施,在开仓时就设定了明确的止损价格:
|
||||
|
||||
- **多头止损**:开仓价 × (1 - fixed_stop_loss_percent)
|
||||
- **空头止损**:开仓价 × (1 + fixed_stop_loss_percent)
|
||||
|
||||
默认固定止损比例为1%,可根据不同品种波动性调整。
|
||||
|
||||
#### 2. 跟踪止损
|
||||
|
||||
跟踪止损能够在保留利润空间的同时,为交易提供风险保护:
|
||||
|
||||
```python
|
||||
# 更新多头跟踪止损价 - 只在价格上涨时更新
|
||||
if stops['long']['trailing_stop'] > 0:
|
||||
new_trailing_stop = current_bid * (1 - self.trailing_stop_percent)
|
||||
if new_trailing_stop > stops['long']['trailing_stop']:
|
||||
self.update_stop_order_dict(instrument_id, 'long', None, None, None, None, new_trailing_stop)
|
||||
```
|
||||
|
||||
跟踪止损的工作原理:
|
||||
- 随着价格向有利方向移动,止损价位也相应调整
|
||||
- 当价格回撤超过设定的百分比时,触发止损
|
||||
- 默认跟踪止损比例为0.5%,由AI模型根据市场波动性动态调整
|
||||
|
||||
#### 3. 日内平仓机制
|
||||
|
||||
系统设有日内自动平仓功能,避免隔夜风险:
|
||||
|
||||
- **收盘平仓时间**:15:00-15:15 或 23:00-23:15
|
||||
- **平仓逻辑**:强制平掉所有持仓,无论盈亏
|
||||
- **禁开新仓**:平仓后设置day_closed标志,禁止当日再开新仓
|
||||
|
||||
## 六、持仓管理与数据存储
|
||||
|
||||
### 持仓数据结构
|
||||
|
||||
系统对每个合约独立管理持仓信息,使用嵌套字典结构:
|
||||
|
||||
```python
|
||||
self.stop_order_dict[instrument_id] = {
|
||||
'long': {
|
||||
'position': 0, # 多头持仓量
|
||||
'entry_price': 0, # 开仓价格
|
||||
'stop_loss': 0, # 止损价格
|
||||
'take_profit': 0, # 止盈价格
|
||||
'trailing_stop': 0 # 跟踪止损价格
|
||||
},
|
||||
'short': {
|
||||
'position': 0, # 空头持仓量
|
||||
'entry_price': 0, # 开仓价格
|
||||
'stop_loss': 0, # 止损价格
|
||||
'take_profit': 0, # 止盈价格
|
||||
'trailing_stop': 0 # 跟踪止损价格
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 数据存储结构
|
||||
|
||||
系统在`traderdata/`目录下保存以下数据文件:
|
||||
|
||||
| 文件名 | 内容 | 用途 |
|
||||
|-------|-----|------|
|
||||
| `{合约代码}_ofdata.json` | 订单流历史数据 | 用于回测分析和模型训练 |
|
||||
| `{合约代码}traderdata.csv` | 持仓和止损止盈数据 | 用于持仓状态恢复 |
|
||||
| `{合约代码}_stops.json` | 详细止盈止损设置 | 用于风险管理参数存储 |
|
||||
|
||||
这种数据存储设计允许系统在重启后能够恢复交易状态,避免信息丢失。
|
||||
|
||||
## 七、系统参数优化指南
|
||||
|
||||
### 关键参数对照表
|
||||
|
||||
| 参数名称 | 默认值 | 作用 | 调整建议 |
|
||||
|---------|-------|-----|---------|
|
||||
| py | 5 | 委托价格偏移量(跳数) | 低波动品种:1-3<br>高波动品种:5-10 |
|
||||
| trailing_stop_percent | 0.005 | 跟踪止损百分比(0.5%) | 低波动品种:0.002-0.005<br>高波动品种:0.008-0.01 |
|
||||
| fixed_stop_loss_percent | 0.01 | 固定止损百分比(1%) | 低波动品种:0.005-0.01<br>高波动品种:0.015-0.02 |
|
||||
| Lots | 1 | 下单手数 | 根据资金量和风险偏好调整 |
|
||||
| BAR_RESAMPLE_RULE | '1T' | K线时间粒度 | 短线:'1T'(1分钟)<br>中线:'5T'(5分钟)<br>长线:'15T'(15分钟) |
|
||||
| trader_rows | 10 | AI分析触发的最小数据行数 | 高频:5<br>中频:10<br>低频:20或更高 |
|
||||
|
||||
### 针对不同品种的优化建议
|
||||
|
||||
**商品期货(如螺纹钢、铜、原油)**:
|
||||
- 波动性较大,建议使用较大的止损范围(1.5%-2%)
|
||||
- K线粒度建议使用1分钟或5分钟
|
||||
- 委托价格偏移量设置较大(5-10跳)
|
||||
|
||||
**金融期货(如股指、国债)**:
|
||||
- 波动性相对较小,建议使用较小的止损范围(0.5%-1%)
|
||||
- K线粒度建议使用5分钟或15分钟
|
||||
- 委托价格偏移量设置较小(1-3跳)
|
||||
|
||||
## 八、常见应用场景
|
||||
|
||||
### 场景一:趋势突破交易
|
||||
|
||||
**市场特征**:
|
||||
- 均线形成多头排列
|
||||
- 价格突破重要阻力位
|
||||
- 订单流Delta累计呈上升趋势
|
||||
|
||||
**系统响应**:
|
||||
- AI识别趋势突破形态,给出高置信度开仓信号
|
||||
- 设置前期突破点下方的止损位置
|
||||
- 采用较小的跟踪止损比例,让利润奔跑
|
||||
|
||||
**典型执行流程图**:
|
||||
```
|
||||
价格突破阻力位 → AI分析(8分置信度) → 开多信号 →
|
||||
设置止损(阻力位下方) → 价格持续上涨 →
|
||||
跟踪止损上移 → 最终获利平仓
|
||||
```
|
||||
|
||||
### 场景二:超买超卖反转交易
|
||||
|
||||
**市场特征**:
|
||||
- 价格处于极端位置(日内位置>85%或<15%)
|
||||
- 订单流指标与价格出现背离
|
||||
- K线形成反转形态(如吞没形态)
|
||||
|
||||
**系统响应**:
|
||||
- AI模型识别到反转信号,给出开仓建议
|
||||
- 设置相对紧密的止损位置
|
||||
- 目标价位设为前期支撑/阻力位
|
||||
|
||||
**典型执行流程图**:
|
||||
```
|
||||
价格极度超买 → 订单流指标转弱 →
|
||||
AI分析(7分置信度) → 开空信号 →
|
||||
设置紧密止损 → 价格回落 → 目标价位获利了结
|
||||
```
|
||||
|
||||
## 九、系统优势与局限性
|
||||
|
||||
### 主要优势
|
||||
|
||||
1. **微观结构洞察**:通过订单流分析看清市场真实供需状态
|
||||
2. **智能决策能力**:大模型AI提供类似专业交易员的分析能力
|
||||
3. **自适应参数**:系统能根据市场状态动态调整风控参数
|
||||
4. **多层风险控制**:完善的止损体系保障资金安全
|
||||
5. **数据持久化**:交易状态保存与恢复机制,确保系统稳定性
|
||||
|
||||
### 局限性
|
||||
|
||||
1. **数据质量依赖**:订单流分析对行情数据质量要求较高
|
||||
2. **API成本**:大模型API调用存在成本,需考虑经济性
|
||||
3. **延迟问题**:AI分析存在延迟,不适合超短线交易
|
||||
4. **特殊行情**:在极端行情下,止损可能因滑点而失效
|
||||
5. **模型局限**:AI模型对某些特殊市场环境可能缺乏足够认知
|
||||
|
||||
## 十、操作指南
|
||||
|
||||
### 运行前准备
|
||||
|
||||
1. **环境配置**:
|
||||
- Python 3.7-3.10
|
||||
- 安装相关依赖库:AlgoPlus、pandas、numpy、openai等
|
||||
- 创建必要的数据存储目录:traderdata/
|
||||
|
||||
2. **账户配置**:
|
||||
```python
|
||||
# 模拟盘或实盘账户配置
|
||||
future_account = get_simulate_account(
|
||||
investor_id='您的账户ID',
|
||||
password='您的密码',
|
||||
server_name='电信1',
|
||||
subscribe_list=[b'au2506'], # 订阅的合约
|
||||
)
|
||||
```
|
||||
|
||||
3. **API配置**:
|
||||
```python
|
||||
# DeepSeek API配置
|
||||
api_key = "您的DeepSeek API密钥"
|
||||
os.environ["OPENAI_API_KEY"] = api_key
|
||||
```
|
||||
|
||||
### 运行与监控
|
||||
|
||||
1. **启动系统**:
|
||||
- 运行主程序文件:`python 实盘运行版本_版本6.py`
|
||||
- 确认系统连接成功并开始接收数据
|
||||
|
||||
2. **运行监控**:
|
||||
- 观察控制台输出的K线数据和订单流分析结果
|
||||
- 查看AI模型的分析结果和交易信号
|
||||
- 监控持仓状态和止损止盈位置
|
||||
|
||||
3. **常见问题排查**:
|
||||
- API连接失败:检查API密钥和网络连接
|
||||
- 数据文件读写错误:检查目录权限和磁盘空间
|
||||
- 交易信号不执行:检查置信度是否满足阈值要求
|
||||
|
||||
## 结语
|
||||
|
||||
AI智能订单流交易策略系统通过融合订单流分析和人工智能决策,为期货交易提供了一套全自动化的解决方案。系统能够捕捉市场微观结构变化,洞察主力资金动向,并结合AI的理解能力做出合理的交易决策。
|
||||
|
||||
这套系统适合有一定编程和交易基础的用户,可以作为决策辅助工具或全自动交易系统使用。在实际应用中,请务必先在模拟环境中充分测试,并确保完全理解风险管理机制,保证资金安全。
|
||||
|
||||
**风险提示**:期货交易存在高风险,本系统仅供学习研究使用,实盘交易盈亏自负。请确保充分了解期货交易风险,根据自身风险承受能力谨慎投资。
|
||||
Reference in New Issue
Block a user