以AI量化为生:21.交易图表AI分析功能集成
本文是《以AI量化为生》系列的第21篇,我们将在图表交易系统中集成AI分析功能。从数据采集到多模型对比,从多周期协同分析到智能决策建议,实现AI驱动的实时市场分析。

写在前面
这两周太累了。没时间更新文章,因为把绝大部分时间都投入在AI分析和AI交易引擎的思考设计和开发中。从架构设计到提示词优化,从数据采集到多模型协同,整个过程挺折腾的,但看到效果出来还是很有成就感。
上一篇讲了实时图表交易系统的开发,交易面板、风控监控这些功能都基本完善了。有朋友问,现在系统能交易了,但怎么做出交易决策呢?每天盯着K线图看指标,还是容易错过机会或者判断失误。
这个问题确实很实际。做交易,信息量太大,技术指标、多周期趋势、成交量、缺口形态,要同时考虑很多因素。人脑处理这些信息容易疲劳,也可能忽略一些关键信号。
所以这篇就来讲讲怎么把AI分析集成到图表交易系统里。内容包括多模型对比分析(DeepSeek、Claude、GPT、Gemini一起分析)、多周期协同分析(15分钟+1小时组合、5分钟+15分钟组合、1小时+日线组合一起看)、自动数据采集(K线、指标、持仓数据自动收集),还有AI给出的结构化交易建议。
AI分析面板设计
上一篇文章提到过,交易面板顶部有个紧凑的AI分析区域。界面很简单,就两个按钮:

多模型对比分析:点击后弹出对话框,可以选择多个AI模型同时分析当前市场。支持DeepSeek V3.2、Claude Sonnet 4.5、Gemini 3 Flash Preview、GPT-5.2等模型,默认选中DeepSeek和Claude。

多周期分析:点击后选择周期组合和模型,比如"15分钟+1小时"配合DeepSeek模型,系统会自动采集两个周期的数据让AI分析。
按钮设计很简单,但背后的逻辑不简单。每次点击都会触发一套完整的数据采集和分析流程。
三层架构回顾
AI分析功能沿用了之前讲过的三层架构:
UI层 (vnpy_charttrader/ui/panels/ai_analysis_panel.py)
↓ 用户点击按钮
业务逻辑层 (core/charts/managers/ai_analysis_coordinator.py)
↓ 异步线程调用AI
数据采集层 (core/charts/utils/market_data_collector.py)
UI层只负责按钮点击和结果展示。用户点击"多模型对比",弹出对话框选择模型,确认后调用协调器开始分析。
协调器层是核心,负责创建分析线程、管理AI客户端、处理异步调用、发送信号通知UI。每次分析都在独立线程中执行,不会阻塞主界面。
数据采集层负责从图表提取K线数据、技术指标、持仓信息,打包成JSON格式发送给AI。这个模块设计得很灵活,可以从图表直接获取,也可以通过talib计算。
多模型对比分析
多模型对比是AI分析的特色功能。同一个市场,让DeepSeek、Claude、GPT、Gemini各自分析一遍,看看它们的判断是否一致。
分析流程
用户点击"多模型对比"按钮后:
- 选择模型:弹出对话框,勾选要对比的模型(至少选一个)
- 采集数据:系统从当前图表采集K线、指标、持仓等多维度数据
- 并发调用:使用asyncio并发调用多个AI模型
- 展示结果:分析完成后,弹出结果对话框,分屏展示各模型的分析
数据采集细节
数据采集是AI分析的基础。系统会自动收集:
- 当前K线:最近20根K线的OHLCV数据
- 技术指标:BOLL、MACD、RSI、DMI、SMA、EMA、ATR、Volume等
- 多周期数据:如果启用,还会采集上一级和下一级周期的K线
- 持仓数据:当前持仓方向、入场价格、浮动盈亏
- 辅助分析:开盘缺口、波动率、成交量状态
数据采集的代码逻辑不复杂,核心是从图表的_items字典中获取指标对象,调用get_current_values()方法获取最新值。如果图表没有某个指标,采集器会跳过,不会臆测数据。
异步并发执行
多模型分析的关键在于并发执行。使用asyncio的gather方法可以同时调用多个AI模型:
# 创建所有分析任务
tasks = [
self._async_analyze(market_data, model["name"], model["type"])
for model in models
]
# 并发执行
results = await asyncio.gather(*tasks, return_exceptions=True)
这样可以大幅提升分析速度。如果串行调用,4个模型可能需要20秒;并发调用只需要5-8秒。
结果分屏展示
分析完成后,结果对话框会根据模型数量智能布局:
- 1个模型:单屏显示
- 2个模型:左右分屏
- 3个模型:上面2个,下面1个
- 4个模型:2x2网格布局
每个模型的结果用不同颜色标识:Claude是橙色,OpenAI是绿色,Gemini是蓝色,DeepSeek是紫色。这样可以一眼区分不同模型的观点。

多周期协同分析
多周期分析是稳健交易的核心。日线看大趋势,1小时找入场位,15分钟精确进场,5分钟避开噪音。AI可以同时分析多个周期,给出综合判断。
周期组合选择
系统预设了几种周期组合:
- 15分钟 + 1小时:日内交易常用组合
- 5分钟 + 15分钟:短线精确入场
- 1小时 + 4小时:波段交易组合
用户可以根据自己的交易风格选择。选择后,系统会自动从1分钟K线聚合成对应周期的K线,然后分别发送给AI分析。
K线聚合逻辑
多周期分析的基础是K线聚合。系统从图表的base_minute_bars(1分钟K线)出发,按照目标周期进行聚合:
def _aggregate_bars(self, minute_bars, period):
"""聚合K线"""
if period == "5min":
return self._aggregate_by_minute(minute_bars, 5)
elif period == "15min":
return self._aggregate_by_minute(minute_bars, 15)
elif period == "1hour":
return self._aggregate_by_hour(minute_bars)
聚合时会考虑交易时段边界,避免跨时段合成K线。比如螺纹钢的夜盘21:00-23:00和日盘9:00-15:00,合成1小时K线时会在23:00和15:00截断,不会跨到下一时段。
多周期权重设计
AI提示词中定义了各周期的权重:日线20%,1小时50%,15分钟25%,5分钟5%。这个权重分配是实战总结出来的。
日线趋势是基础,决定了大方向。如果日线是上升趋势,就算1小时和15分钟出现做空信号,也要谨慎对待。
1小时是主战场,日内交易的主要参考周期。大部分入场和出场决策都在这里完成。
15分钟用于精确入场,比如1小时看多,15分钟出现回调支撑位,就是入场时机。
5分钟的权重最低,主要用于识别噪音。比如5分钟出现反转信号,但1小时和15分钟趋势没变,这可能只是假突破。
结果展示
多周期分析的结果也是分屏展示,每个周期一个面板。AI会分析每个周期的趋势、技术指标、关键价位,然后给出综合判断:

如果周期之间出现冲突,AI会明确指出风险,建议观望。这种多周期协同验证的方式,能大幅提升交易的成功率。
AI提示词设计
AI分析的质量,很大程度上取决于提示词的设计。系统使用了一套结构化的提示词,包含市场结构、技术指标、多周期、持仓管理等多个模块。
稳健交易原则
提示词开篇就明确了核心原则:
**风险第一,盈利第二**:
- 每笔交易必须有明确的风险控制计划
- 优先考虑资金保护,其次考虑盈利机会
- 宁可错过机会,不可承担过度风险
这个原则贯穿整个分析流程。AI给出的建议都会包含止损位、风险收益比、仓位建议,不会只喊"买入"或"卖出"。
持仓优先分析
提示词要求AI优先检查持仓状态:
**重要:当前持仓状态检查**
- 首先检查position字段,判断当前是否有持仓
- 如果有持仓,则将持仓管理作为分析的核心重点
- 如果无持仓,则分析新的入场机会
这个设计很实用。实际交易中,持仓管理往往比寻找新机会更重要。有持仓时,AI会重点分析止盈止损位调整、加仓减仓时机;没持仓时,才会分析新的入场机会。
写在最后
多模型对比可以让我们看到不同AI的观点差异,多周期分析能提升交易信号的可靠性,结构化输出让AI的建议清晰可执行。但最终的交易决策还是要靠自己,AI只是提供参考信息。
下一篇准备讲讲回测模块界面的再度优化改造。包括回测结果的对比展示、参数优化的可视化等。回测是策略研发的核心环节,界面做得好,能大幅提升研发效率。
先写到这,有问题欢迎留言交流。
本文是《以AI量化为生》系列的第21篇,ATMQuant量化交易系统已开源至GitHub:https://github.com/seasonstar/atmquant
本文内容仅供学习交流,不构成任何投资建议。交易有风险,投资需谨慎。
加入「量策堂·AI算法指标策略」
想系统性掌握交易系统开发、策略研发、指标可视化?加入我的知识星球,获取ATMTrader Pro完整源码,获得持续、体系化的成长支持:

往期文章回顾
《以AI量化为生》系列
《量化指标解码》系列
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)