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的理解能力做出合理的交易决策。
|
||||
|
||||
这套系统适合有一定编程和交易基础的用户,可以作为决策辅助工具或全自动交易系统使用。在实际应用中,请务必先在模拟环境中充分测试,并确保完全理解风险管理机制,保证资金安全。
|
||||
|
||||
**风险提示**:期货交易存在高风险,本系统仅供学习研究使用,实盘交易盈亏自负。请确保充分了解期货交易风险,根据自身风险承受能力谨慎投资。
|
||||
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. 问题发生时的操作步骤
|
||||
|
||||
## 版权声明
|
||||
|
||||
本策略代码版权归作者所有,仅供个人学习使用,禁止商业传播和销售。
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 394 KiB |
Reference in New Issue
Block a user