20250509:第一次修改LLM订单流策略
This commit is contained in:
433
1.交易策略/999.其他策略/4.松鼠SF20_基于LLM的订单流日内交易策略/使用文档/3.28版本/README.md
Normal file
433
1.交易策略/999.其他策略/4.松鼠SF20_基于LLM的订单流日内交易策略/使用文档/3.28版本/README.md
Normal 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. 问题发生时的操作步骤
|
||||
|
||||
## 版权声明
|
||||
|
||||
本策略代码版权归作者所有,仅供个人学习使用,禁止商业传播和销售。
|
||||
Reference in New Issue
Block a user