在当今快速变化的金融市场中,我注意到一个吊诡的现象:市面上许多 AI 量化工具似乎在关键环节上偏离了正确方向。
数据神圣不可侵犯,必须用 100% 可靠的算法来承接。
为什么现有工具偏离正确方向?
- 让概率替代确定性:把财务数据交给推理处理
- 用信息掩盖信号:沉迷舆情与财报,忽略量价关系
- 错置分工:让 AI 做计算,人来意会
PulseTrader 的正确姿势:
- 算法保底精确:所有技术指标 100% 可验证、可复现
- 量价优先分析:用量价关系和相对强度刻画情绪,用 SuperTrend 捕捉趋势
- 化繁为简设计:少量稳健规则抵抗过拟合,回归量价分析本质
- AI 负责洞察:智能分析与呈现,降低门槛、提高可得性
PulseTrader 采用分离式架构设计,确保计算的绝对精确性和 AI 辅助的智能化:
graph LR
%% 用户交互层 - 圆角矩形
USER([输入股票名称]) --> APP([应用层<br/>TrendInsigt.py])
%% 数据处理层 - 矩形
APP --> DATA[数据层<br/>stock_data_provider]
DATA --> CACHE[(缓存层<br/>stock_cache.py<br/>SQLite Database)]
%% 计算引擎层 - 六边形
CACHE --> SUPER{{指标层<br/>supertrend_component}}
CACHE --> RSI{{信号层<br/>rsi_component}}
%% 存储管理层 - 梯形
SUPER --> STORE[/存储层<br/>indicators_storage\]
RSI --> STORE
STORE --> CACHE
%% 输出层 - 圆角矩形和菱形
STORE --> VIZ[可视化层<br/>plotting_component]
VIZ --> CHART([交互式图表输出])
%% AI 分析层 - 云形状
STORE --> AI{{AI 分析<br/>analysis.py<br/>GPT-5}}
AI --> REPORT([智能分析报告])
%% 工具层 - 圆形
QUERY((查询工具<br/>indicators_query.py)) --> CACHE
%% 用户交互层样式 - 蓝色系
classDef userLayer fill:#e3f2fd,stroke:#1976d2,stroke-width:3px,color:#000
class USER,APP,CHART,REPORT userLayer
%% 数据层样式 - 紫色系
classDef dataLayer fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,color:#000
class DATA dataLayer
%% 存储层样式 - 红色系
classDef storageLayer fill:#ffebee,stroke:#d32f2f,stroke-width:4px,color:#000
class CACHE storageLayer
%% 计算层样式 - 橙色系
classDef computeLayer fill:#fff3e0,stroke:#f57c00,stroke-width:2px,color:#000
class SUPER,RSI computeLayer
%% 存储管理样式 - 绿色系
classDef mgmtLayer fill:#e8f5e8,stroke:#388e3c,stroke-width:2px,color:#000
class STORE,VIZ mgmtLayer
%% AI 层样式 - 黄色系
classDef aiLayer fill:#fff8e1,stroke:#ffa000,stroke-width:2px,color:#000
class AI aiLayer
%% 工具层样式 - 青色系
classDef toolLayer fill:#e0f2f1,stroke:#00695c,stroke-width:2px,color:#000
class QUERY toolLayer
核心特性:
- 统一数据库:SQLite 一库统管,6 张数据表科学设计,消除重复存储
- 精确计算:100% 可靠算法,数据完整性检验 + Wilder 等确定性算法
- 智能缓存:增量更新、快速查询,内置交易日历避免无效请求
- 多市场支持:统一架构下支持 A 股和港股,自动识别股票代码类型
%%{init: {'theme':'forest'}}%%
erDiagram
stock_data ||--o{ technical_indicators : symbol
technical_indicators ||--o{ rsi_divergences : symbol
technical_indicators ||--o{ trend_signals : symbol
stock_data ||--|| stock_info : code
stock_data {
integer id PK
string symbol
string stock_name
string date
real open_price
real high_price
real low_price
real close_price
integer volume
real daily_change_pct
string market_type "a=A股, hk=港股"
datetime created_at
datetime updated_at
unique symbol_date "UNIQUE(symbol, date)"
}
technical_indicators {
integer id PK
string symbol
string stock_name
string date
real rsi14
real ma10
real daily_change_pct
integer trend
real upper_band
real lower_band
real volume
real vol_ratio
real vol_20d_avg
real vol_20d_max
real vol_50d_min
integer is_high_vol_bar
integer is_sky_vol_bar
integer is_low_vol_bar
integer near_20d_high
integer price_condition
datetime created_at
datetime updated_at
unique symbol_date "UNIQUE(symbol, date)"
}
rsi_divergences {
integer id PK
string symbol
string stock_name
string date
string prev_date
string type
string timeframe
real rsi_change
real price_change
real confidence
real current_rsi
real prev_rsi
real current_price
real prev_price
datetime created_at
}
trend_signals {
integer id PK
string symbol
string stock_name
string date
string signal_type
real price
real trend_value
datetime created_at
}
stock_info {
integer id PK
string code
string name
string market_type "a=A股, hk=港股"
datetime created_at
datetime updated_at
unique code_market "UNIQUE(code, market_type)"
}
trading_calendar {
integer id PK
string trade_date
datetime created_at
unique trade_date "UNIQUE(trade_date)"
}
Agent Z 交易助手的核心能力:
- 量价核心:重视脉冲、背离等关键信号模式
- 信号聚焦:极端条件深入分析,常规范围让图表说话
- 左侧交易偏好:在弱势中寻找机会,避免追涨
- 确定性偏好:信号冲突时优选等待
- 动态仓位管理:基于 Kelly 准则的渐进式建仓和分层止损策略
graph LR
%% 输入层
COMPLEX([复杂的市场信息]) --> FILTER{过滤机制}
%% 过滤分支
FILTER --> |基本面| NOISE1([财报迷宫])
FILTER --> |舆 情| NOISE2([新闻噪音])
FILTER --> |量价关系| CORE([核心信号])
%% 核心分析层
CORE --> TREND{{趋势判断}}
CORE --> RSI_DIV{{情绪极值}}
%% 输出层
TREND --> SIGNAL([清晰的投资信号])
RSI_DIV --> SIGNAL
%% 噪音信息
classDef noiseLayer fill:#ffebee,stroke:#d32f2f,stroke-width:2px,color:#000
class COMPLEX,NOISE1,NOISE2 noiseLayer
%% 过滤决策
classDef filterLayer fill:#f5f5f5,stroke:#616161,stroke-width:2px,color:#000
class FILTER filterLayer
%% 核心信号
classDef coreLayer fill:#e8f5e8,stroke:#2e7d32,stroke-width:3px,color:#000
class CORE coreLayer
%% 分析引擎
classDef engineLayer fill:#fff3e0,stroke:#f57c00,stroke-width:2px,color:#000
class TREND,RSI_DIV engineLayer
%% 最终输出
classDef outputLayer fill:#e3f2fd,stroke:#1976d2,stroke-width:3px,color:#000
class SIGNAL outputLayer
可视化特点:默认采用对数坐标——用距离表示百分比,跨数量级比较更可靠;交互式图表一键切换周期
demo.mp4
三大成交量信号识别:
- 极致缩量:当日成交量为 50 日最低量,往往出现在市场恐慌或关注度极低时
- 放量:20 日最高成交量 + 接近 20 日新高 + 强势上涨(日涨幅 >1.5% 且盘中涨幅 >2%)
- 爆量:放量基础上成交量超过 20 日均量 3.5 倍的极端情况
量价配合原理:
graph LR
%% 量价关系分析
VOL([成交量数据]) --> CALC{指标计算}
PRICE([价格数据]) --> CALC
%% 三种成交量信号判断
CALC --> LOW[极致缩量<br/>50 日最低量<br/>情绪低迷信号]
CALC --> HIGH[放量<br/>量价齐升<br/>资金关注度高]
CALC --> SKY[爆量<br/>极端爆量<br/>情绪达到沸点]
%% 投资含义
LOW --> MEANING1[孕育机会]
HIGH --> MEANING2[趋势延续]
SKY --> MEANING3[谨慎追高]
%% 样式定义
classDef volLow fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#000
classDef volHigh fill:#fff3e0,stroke:#f57c00,stroke-width:2px,color:#000
classDef volSky fill:#ffebee,stroke:#d32f2f,stroke-width:2px,color:#000
classDef meaning fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px,color:#000
class LOW,MEANING1 volLow
class HIGH,MEANING2 volHigh
class SKY,MEANING3 volSky
class VOL,PRICE,CALC meaning
数据精确性:100% 算法可靠,每个计算结果可手工验证,LLM 推理与数据计算完全分离
实用性导向:目标是清晰可执行的交易计划,而非好看的回测曲线
简化设计:
- 极简交互:输入股票名称即开始分析
- 对数坐标:用距离代表百分比,相同倍数即相同高度,长期趋势与复利一眼可读
- 人性量化:RSI 背离检测捕捉情绪临界点
该项目的分析模块需要 AIHUBMIX API KEY,先到 Aihubmix 官网申请。
安装 .NET Runtime(技术指标计算依赖):
# macOS
brew install dotnet
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y dotnet-runtime-8.0
# Windows
# 下载并安装 .NET 8.0 Runtime: https://dotnet.microsoft.com/download
安装项目依赖:
# 克隆仓库
git clone https://github.com/jerlinn/PulseTrader.git
cd PulseTrader
# 安装依赖
pip install -r requirements.txt
# 配置系统环境变量
# 例如,在 ~/.zshrc 中加入
export AIHUBMIX_API_KEY="在上面申请的密钥"
# 运行指令使其生效
source ~/.zshrc
# 交互式分析(推荐新用户)
python pulse_trader.py
# 直接分析指定 A 股
python pulse_trader.py --stock "杭钢股份"
# 直接分析指定港股(支持股票名称或代码)
python pulse_trader.py --stock "腾讯控股"
python pulse_trader.py --stock "00700"
# 仅技术分析(无 AI)
python pulse_trader.py --stock "东方电气" --no-ai
# 技术分析组件
python TrendInsigt.py
# AI 分析组件
python analysis.py --chart figures/股票名_PulseTrader_日期.png
# 数据查询工具
python indicators_query.py 杭钢股份 --export
# 指定分析上下文
python analysis.py --context "今日减仓比例指导"
python analysis.py --context "分析突破有效性,判断追涨时机"
PulseTrader/
├── pulse_trader.py # 🚀 All-in-One 集成脚本(推荐入口)
├── TrendInsigt.py # 技术分析组件(可独立运行)
├── analysis.py # AI 分析组件(可独立运行)
├── analyst_prompt.md # AI 分析师 system prompt
├── plotting_component.py # 绘图组件(对数坐标可视化)
├── rsi_component.py # RSI 计算与背离检测
├── supertrend_component.py # SuperTrend 指标计算
├── volume_indicators.py # 成交量指标计算(极致缩量、放量、爆量)
├── stock_data_provider.py # 数据提供者接口(支持 A 股+港股)
├── stock_cache.py # 统一数据库管理(SQLite)
├── indicators_storage.py # 技术指标计算和存储
├── indicators_query.py # 数据查询和导出工具
├── cache/
│ └── stock_data.db # SQLite 数据库(统一存储)
├── figures/ # 生成的图表文件
├── reports/ # AI 分析报告(Markdown)
├── USAGE_PULSE_TRADER.md # All-in-One 脚本详细使用指南
├── USAGE_INDICATORS_STORAGE.md # 数据存储系统文档
└── requirements.txt # 项目依赖
层次设计:
- 集成层:
pulse_trader.py
- 统一入口 - 分析层:
TrendInsigt.py
+analysis.py
- 独立组件 - 计算层:
rsi_component.py
+supertrend_component.py
+volume_indicators.py
- 核心算法 - 数据层:
stock_data_provider.py
+stock_cache.py
- 数据管理
支持 A 股和港股,智能识别输入:
- A 股代码:6 位数字格式(如
600519
,000001
) - 港股代码:5 位数字格式,以 0 开头(如
00700
,00941
) - 自动搜索:输入股票名称时自动跨市场搜索
- 精确匹配:支持 XD 前缀等特殊情况处理
- 组件化
- 对接 LLM
- 构建场域,影响 LLM 行为
- prompt 层面大幅简化报告,提升可操作性和易读性
- 数据库统计和管理功能
- 数据交互设计优化:股票名称 → 数据和图表 → LLM → 报告
- 分析时可以传入用户的其他上下文,如具体的问题或额外信息
- 数据结构优化,实现数据持久化机制
- 数据传递:补充交易量和量比的存储和传递
- 修复非交易日获取数据时的处理异常
- 对于除权除息日这种边缘情况,用 XD 前缀去匹配
- All-in-one 脚本
- H 股支持
- 成交量指标:极致缩量、放量、爆量识别与可视化
- 优化相对强度阈值、峰值算法和置信度阈值(详见 rsi_component.py 代码注释)
- Deepseek 支持?
- 美股支持
欢迎所有形式的贡献!无论你是想报告 bug、提出功能建议、改进文档还是提交代码。 请查看 CONTRIBUTING 了解详情。
本项目仅供学习、研究和技术交流使用,不构成任何投资建议。
- 非投资建议:所有分析结果均不构成投资建议,投资决策风险自担
- 学习用途:作为 AI 与量化分析的教育工具,用于算法研究和技术交流
- 技术限制:不保证数据源完整性,不应用于实盘交易决策
- 合规使用:用户应遵守当地法规,与专业投资顾问咨询后再做决策
本项目采用 GPL-3.0 许可证,详见 LICENSE 文件。
- 完全开源:代码公开透明,个人学习研究完全自由
- 商业使用:需遵循 GPL-3.0,衍生作品必须同样开源
- 核心价值:推动行业正确发展,建立开放透明的投资工具生态
Follow @eviljer 获取更多 AI 玩法。