20250509:第一次修改LLM订单流策略

This commit is contained in:
Win_home
2025-05-09 21:02:48 +08:00
parent 5e372d746e
commit ef6204bafa
18 changed files with 11167 additions and 0 deletions

View File

@@ -0,0 +1,433 @@
# AI智能订单流交易策略详细说明
## 项目简介
本项目是一个基于订单流分析与大语言模型(LLM)集成的智能期货交易系统通过AlgoPlus接口对接CTP交易系统实现全自动化的交易策略执行。系统核心特点是结合高频Tick数据订单流分析与人工智能决策系统对期货市场进行实时监控、分析和交易。
### 技术架构
- **数据层**通过CTP接口获取实时Tick数据
- **分析层**订单流分析、K线构建、技术指标计算
- **决策层**基于DeepSeek大模型的AI决策系统
- **执行层**:自动化交易执行系统,包含风险控制模块
## 核心功能详解
### 1. 订单流数据处理
系统处理原始Tick数据构建以下信息
- **成交订单流**:分析每个价位的买入/卖出压力
- **多空资金流向**:计算买卖力量对比指标
- **堆积指标(DJ)**:识别主力资金大量买入卖出信号
- **订单流趋势**:分析订单流累计变化趋势
- **波动性指标**:监控市场情绪变化
### 2. 技术分析模块
系统自动构建并分析以下技术分析指标:
- **移动平均线**5、10、20周期均线系统监控均线形态多头排列、空头排列、金叉、死叉
- **K线形态识别**自动识别大阳线、大阴线、十字星、吞没形态等经典K线组合
- **趋势强度**:计算价格趋势的强度和持续性
- **支撑阻力位**:自动识别近期关键价格区域
- **超买超卖状态**:判断当前价格在日内区间的位置
### 3. AI决策系统
系统集成了DeepSeek大模型作为核心决策引擎
- **市场状态识别**:全面分析当前市场环境
- **交易信号生成**:产生开仓、平仓或调整持仓的信号
- **风险参数建议**:动态优化止损止盈水平
- **多层验证机制**:通过置信度评分过滤低质量信号
完整的交易决策包含:
- **方向**:开多/开空/平多/平空/不操作
- **置信度**1-10分级评估系统
- **止损价**:推荐的止损位置
- **止盈价**:推荐的止盈位置
- **跟踪百分比**:针对当前市场波动性优化的跟踪止损参数
### 4. 风险控制系统
多层次风险管理机制:
- **固定止损**:基于开仓价设置硬性止损点
- **跟踪止损**:随价格变动动态调整止损价位,锁定盈利
- **日内平仓**:自动在交易时段结束前平仓,避免隔夜风险
- **反向信号管理**:收到反向信号时智能处理现有持仓
- **资金管理**:控制单笔交易风险占比
### 5. 数据存储与分析
系统自动保存交易和市场数据:
- **订单流历史数据**以JSON格式保存方便后续分析
- **交易记录**:包含所有成交信息
- **止损止盈设置**:记录每个合约的风险管理参数
- **AI决策记录**:保存模型分析结果和建议
## 详细系统配置指南
### 环境要求
- **操作系统**Windows 7/10/11 或 Linux (Ubuntu 18.04+)
- **Python版本**Python 3.7-3.10推荐3.8
- **内存要求**至少4GB RAM推荐8GB以上
- **存储空间**至少500MB可用空间
- **网络要求**:稳定的网络连接,低延迟
### 依赖安装
```bash
# 安装基础依赖
pip install AlgoPlus
pip install pandas numpy
pip install python-dateutil
# 安装AI模型依赖
pip install openai
pip install requests
```
### 详细配置选项
#### 1. 基础交易参数
可在`MyTrader`类初始化方法中修改:
```python
# 基础交易参数
self.py = 5 # 委托价格偏移量,单位跳数
self.Lots = 1 # 每次开仓手数
self.trailing_stop_percent = 0.005 # 跟踪止损百分比(0.5%)
self.fixed_stop_loss_percent = 0.01 # 固定止损百分比(1%)
self.dj_X = 1 # 订单流堆积参数阈值
# AI模型控制
self.use_ai_model = True # 是否启用AI模型
self.trader_rows = 10 # 触发AI分析的最小数据行数
# 日内交易控制
self.day_closed = False # 日内平仓标志
```
#### 2. 高级参数配置
在主程序中设置:
```python
# 全局参数配置
GLOBAL_LLM_CONFIG = {
'api_key': 'your-api-key', # API密钥
'base_url': 'https://api.deepseek.com', # API基础URL
'model_name': 'deepseek-reasoner' # 模型名称
}
# K线时间粒度设置
BAR_RESAMPLE_RULE = '1T' # 1分钟K线
# 其他可选值:
# '5T' - 5分钟K线
# '15T' - 15分钟K线
# '30T' - 30分钟K线
# '1H' - 1小时K线
# '4H' - 4小时K线
# '5S' - 5秒K线
# 历史数据加载设置
LOAD_HISTORY = False # 是否加载历史数据
HISTORY_ROWS = 30 # 加载历史数据行数
```
#### 3. 主力合约设置
在交易账户配置中设置要交易的合约:
```python
# 模拟盘设置
future_account = get_simulate_account(
investor_id='您的账户ID',
password='您的密码',
server_name='电信1',
# 订阅多个合约示例
subscribe_list=[
b'au2506', # 黄金主力合约
b'rb2410', # 螺纹钢主力合约
b'IF2406', # 沪深300指数期货主力合约
b'cu2407' # 铜主力合约
],
)
```
## 详细使用指南
### 首次运行前准备
1. **创建必要目录**
```bash
mkdir -p traderdata logs
```
2. **API密钥配置**
确保在代码中配置了正确的DeepSeek API密钥
```python
api_key = "您的API密钥"
os.environ["OPENAI_API_KEY"] = api_key
```
3. **账户检查**
- 模拟账户确认Simnow账户可正常登录
- 实盘账户:确认资金足够,交易权限已开通
4. **合约选择**
- 建议从流动性好的品种开始,如螺纹钢(rb)、黄金(au)、沪深300(IF)
- 确保所选合约处于交易时段
### 运行系统
1. **启动主程序**
```bash
python 实盘运行版本_版本6.py
```
2. **启动确认**
- 确认系统显示"API连接测试成功"
- 确认系统正确连接到CTP服务器
- 确认接收到Tick数据
3. **监控运行状态**
- 观察新K线形成和订单流数据生成
- 观察AI模型分析结果
- 监控交易执行和持仓状态
### 高级操作指南
#### 多合约交易管理
系统支持同时监控多个合约,对每个合约独立生成交易信号和执行交易:
1. **风险分散**:建议同时监控多个相关性低的品种
2. **资金分配**:可通过调整`self.Lots`参数控制各合约下单手数
3. **单独配置**:每个合约的止损止盈设置独立保存和管理
#### 自定义止损止盈策略
系统提供了多种止损止盈机制,可以根据不同市场环境调整:
1. **固定止损**:适合趋势明确的市场
```python
self.fixed_stop_loss_percent = 0.01 # 1%止损
```
2. **跟踪止损**:适合波动较大的市场
```python
self.trailing_stop_percent = 0.005 # 0.5%跟踪止损
```
3. **动态止损**由AI模型根据市场状态动态调整
- 系统会根据波动性自动建议0.0001-0.001范围内的跟踪止损参数
#### 回测与优化
虽然本系统主要面向实盘交易,但可以通过以下方式进行策略评估:
1. **离线数据分析**
- 查看`traderdata/{合约代码}_ofdata.json`中的历史数据和AI决策记录
- 分析交易成功率和盈亏比
2. **参数优化**
- 针对不同品种调整`self.py`委托价格偏移量
- 针对不同波动性市场调整止损止盈参数
- 调整`trader_rows`参数控制AI分析触发频率
## 技术架构详解
### 多进程架构
系统采用多进程设计,实现行情和交易的分离:
- **行情进程**:专注于数据接收和处理
- **交易进程**:负责交易决策和执行
- **AI分析线程**:在后台异步运行,不阻塞主交易流程
```
主程序
├── 行情进程 (run_tick_engine)
│ └── Tick数据处理
│ ├── 构建K线
│ └── 计算订单流指标
└── 交易进程 (run_trader)
├── MyTrader实例
│ ├── 交易逻辑处理
│ ├── 止损止盈管理
│ └── 日内平仓控制
└── AI分析线程 (background_model_call)
└── 交易信号生成
```
### 数据流向
系统数据流向设计清晰,各模块职责明确:
```
CTP行情接口 → Tick数据 → K线构建 → 订单流分析
交易执行 ← 交易信号 ← AI模型分析 ← 市场数据融合
```
### 核心类解析
#### `MyTrader`类
继承自`TraderApiBase`,实现以下核心功能:
- 处理交易回报和订单状态
- 管理持仓和风险控制
- 协调AI模型交易决策
- 执行交易指令
关键方法:
- `background_model_call`调用AI模型进行分析
- `check_stop_conditions`:检查止损止盈条件
- `clear_position_info`:清理持仓信息
- `format_data_for_llm`格式化数据供AI模型分析
#### AI决策系统
`call_deepseek_model`函数负责调用DeepSeek大模型
- 采用重试机制确保API调用可靠性
- 解析AI模型返回的交易信号
- 处理异常情况和错误
## 故障排除
### 常见问题与解决方案
1. **CTP连接问题**
- **症状**无法连接到CTP服务器或频繁断连
- **解决方案**
- 检查网络连接稳定性
- 确认服务器地址和端口正确
- 检查账户密码是否正确
2. **AI模型调用失败**
- **症状**"API调用失败"错误
- **解决方案**
- 验证API密钥有效性
- 检查网络能否访问DeepSeek API
- 查看是否达到API调用限制
3. **数据文件读写错误**
- **症状**"读取或保存JSON文件时出错"
- **解决方案**
- 确认traderdata目录存在且有写权限
- 检查磁盘空间是否充足
- 确保没有其他程序锁定目标文件
4. **交易执行问题**
- **症状**:交易信号生成但未执行
- **解决方案**
- 检查置信度是否达到执行阈值(≥6)
- 确认是否在交易时段内
- 确认是否有足够可用资金
### 日志与调试
系统提供详细的控制台输出用于监控和调试:
```
===== 开始AI分析 [15:30:45] =====
正在分析合约: au2506
分析数据行数: 25
最新价格: 486.35
...
AI模型分析完成结果已放入队列耗时: 5.32秒
分析结果: {'action': '开多', 'confidence': 8, 'reason': '订单流持续为正...'}
===== AI分析完成 =====
===== 执行AI模型交易信号 [15:30:53] =====
信号生成时间: 15:30:50
信号类型: 开多
置信度: 8
理由: 订单流持续为正...
...
执行开多操作
设置止损价: 482.35, 止盈价: 489.28, 跟踪止损价: 483.72, 跟踪百分比: 0.500%
===== 交易信号执行完成 =====
```
## 性能优化建议
1. **降低API调用频率**
- 增加`trader_rows`参数值减少AI模型调用频率
- 在低波动时段可考虑暂时禁用AI分析
2. **优化数据存储**
- 定期清理过时的历史数据文件
- 使用更高效的数据结构和存储格式
3. **减少不必要的计算**
- 调整K线时间粒度避免过于频繁的处理
- 针对性能瓶颈部分进行代码优化
## 进阶开发指南
### 自定义扩展
系统设计具有良好的扩展性,可以在以下方面进行自定义开发:
1. **增加新的技术指标**
在`format_data_for_llm`方法中添加新的技术分析指标
2. **优化订单流算法**
修改`GetOrderFlow_dj`函数,实现更精细的订单流分析
3. **扩展风险管理策略**
在`check_stop_conditions`中实现更复杂的止损止盈策略
4. **自定义AI提示词**
修改`call_deepseek_model`函数中的prompt变量优化AI分析效果
### 集成其他AI模型
除了默认的DeepSeek模型系统架构支持集成其他AI服务
```python
# 使用其他LLM服务示例
def call_alternative_model(data_df, trader_instance):
# 配置新的客户端
client = AlternativeClient(api_key="your-api-key")
# 准备数据
data_text = trader_instance.format_data_for_llm(data_df)
# 调用API
response = client.chat(prompt=data_text)
# 解析结果
trading_signal = parse_response(response)
return trading_signal
```
## 资产风险声明
本交易系统仅供学习和研究使用,实际交易存在以下风险:
1. **市场风险**:期货市场波动可能导致重大损失
2. **系统风险**:软件故障、网络延迟等可能影响交易执行
3. **模型风险**AI分析并非100%准确,可能做出错误判断
4. **流动性风险**:某些合约在特定时段可能缺乏足够流动性
5. **操作风险**:参数设置不当可能导致意外损失
使用本系统进行实盘交易,盈亏自负。请确保充分了解期货交易风险,谨慎投资。
## 技术支持与更新
本系统仍在持续完善中,欢迎提供反馈和建议。使用过程中如遇问题,请提供以下信息:
1. 系统运行环境操作系统版本、Python版本
2. 完整的错误信息和日志
3. 问题发生时的操作步骤
## 版权声明
本策略代码版权归作者所有,仅供个人学习使用,禁止商业传播和销售。