ElliottWaveScanner - 艾略特波浪理论智能选股系统
基于艾略特波浪理论的智能股票分析和选股系统,自动识别波浪模式并生成投资建议。
项目简介
ElliottWaveScanner 是一个 .NET 8 C# 控制台应用程序,实现了艾略特波浪理论的自动化分析。系统能够:
- 自动识别股票的波浪结构(1-2-3-4-5 推动浪和 A-B-C 修正浪)
- 根据波浪位置生成买入/卖出/持有建议
- 支持多种数据源(通过 MooTdx 集成通达信数据)
- 生成详细的分析报告(控制台、CSV、JSON 格式)
- 提供波浪置信度和风险等级评估
功能特性
波浪分析
- 推动浪识别: 自动识别 1-2-3-4-5 推动浪结构
- 修正浪识别: 识别 A-B-C 修正浪模式
- 延伸浪检测: 检测 3 浪和 5 浪的延伸情况
- 失败浪识别: 识别失败浪模式
- 规则验证: 验证艾略特波浪的基本规则
选股策略
- 基于波浪位置的智能选股
- 综合评分系统(0-100分)
- 风险等级评估(1-5级)
- 多维度信号生成
数据支持
- 支持 MooTdx 数据源(通达信)
- 支持实时行情和历史K线数据
- 支持股票列表和基本信息获取
报告生成
- 控制台彩色报告输出
- CSV 格式导出
- JSON 格式导出
- 详细的波浪分析说明
系统要求
- .NET 8.0 SDK
- Python 3.13
- 通达信客户端(用于数据源)
- Windows 操作系统
安装步骤
1. 克隆项目
bash
git clone https://github.com/yourusername/ElliottWaveScanner.git
cd ElliottWaveScanner
2. 安装 Python 依赖
bash
pip install mootdx
3. 配置 Python 路径
编辑 ElliottWaveScanner.csproj,确保 Python DLL 路径正确:
xml
<PropertyGroup>
<PythonDll>C:\\Python313\\python313.dll</PythonDll>
</PropertyGroup>
4. 配置通达信数据路径
编辑 DataProviders/MooTdxDataProvider.cs,设置通达信数据目录:
csharp
_reader = ReaderFactory.factory(market: "std", tdxdir: "D:/new_tdx");
5. 还原 NuGet 包
bash
dotnet restore
使用方法
构建项目
bash
dotnet build
运行程序
bash
dotnet run
发布为可执行文件
bash
dotnet publish -c Release -r win-x64 --self-contained
项目结构
ElliottWaveScanner/
├── Analysis/ # 分析引擎
│ └── ElliottWaveEngine.cs # 艾略特波浪分析核心引擎
├── DataProviders/ # 数据提供者
│ ├── IStockDataProvider.cs # 数据提供者接口
│ ├── MooTdxDataProvider.cs # MooTdx 数据提供者
│ ├── MockStockDataProvider.cs # 模拟数据提供者
│ ├── DataFrameHelper.cs # DataFrame 转换辅助类
│ └── PythonEngineHelper.cs # Python 引擎辅助类
├── Models/ # 数据模型
│ ├── Stock.cs # 股票模型
│ ├── PriceBar.cs # K线数据模型
│ └── Wave.cs # 波浪模型
├── Reports/ # 报告生成
│ └── ReportGenerator.cs # 报告生成器
├── Services/ # 业务逻辑
│ └── ElliottWaveScanner.cs # 选股扫描器
├── Program.cs # 程序入口
└── ElliottWaveScanner.csproj # 项目配置文件
艾略特波浪理论说明
推动浪(1-2-3-4-5)
- 1浪: 上涨趋势起点,通常涨幅较小,成交量温和
- 2浪: 1浪后的回调,不应跌破1浪起点(回撤通常不超过61.8%)
- 3浪: 最强上涨浪,通常涨幅最大,成交量最大(最佳买入时机)
- 4浪: 3浪后的回调,不应与1浪价格区间重叠
- 5浪: 最后一波上涨,可能延伸,注意风险
修正浪(A-B-C)
- A浪: 下跌回调开始,市场开始转向
- B浪: 下跌中的反弹,通常较弱
- C浪: 最后一波下跌,可能反转
重要规则
- 浪2不能回撤超过浪1的100%
- 浪3通常是最强的浪
- 浪4不能与浪1的价格区间重叠
- 浪4回调不能超过浪3的100%
- 浪3和浪5可能出现延伸
选股信号说明
强烈买入信号
- 3浪主升阶段
- 高置信度分析
- 上涨趋势明确
买入信号
- 1浪起点
- 4浪回调结束
- C浪完成可能反转
持有/关注
- 2浪回调中
- B浪反弹中
- 趋势不明朗
观望/谨慎
- A浪下跌中
- 5浪末期
- 趋势转折点
卖出信号
- 5浪完成
- 高风险位置
- 趋势可能反转
配置选项
选股条件(StockFilterCriteria)
csharp
// 最小成交量
MinVolume = 100000000
// 最小成交额
MinAmount = 1000000000
// 最小波浪置信度
MinConfidence = 60
// 最小分析K线数量
MinPriceBars = 60
// 允许的波浪类型
AllowedWaveTypes = { ImpulseWave1, ImpulseWave3, ... }
波浪分析配置(ElliottWaveConfig)
csharp
// 最小所需K线数量
MinBarsRequired = 60
// Pivot点回看周期
PivotLookback = 5
// 最小Pivot点间距
MinPivotDistance = 10
输出示例
控制台输出
╔══════════════════════════════════════════════════════════════════════════════╗
║ 艾略特波浪理论智能选股系统 v1.0 ║
╚══════════════════════════════════════════════════════════════════════════════╝
开始扫描股票...
>> 正在获取股票列表...
>> 获取到 5000 只股票,开始分析...
>> 分析中 [1/5000]: 000001 平安银行
...
╔══════════════════════════════════════════════════════════════════════════════╗
║ 艾略特波浪理论选股分析报告 ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ 分析时间: 2026-02-25 19:03:47 ║
║ 符合条件股票数量: 25只 ║
╚══════════════════════════════════════════════════════════════════════════════╝
══════════════════════════════════════════════════════════════════════════════
强烈买入信号 (5只)
══════════════════════════════════════════════════════════════════════════════
【000001】平安银行
┌─────────────────────────────────────────────────────────────────┐
│ 建议: 强烈买入 评分: 85/100 风险: 2/5 │
│ 現价: 12.50 涨跌: +2.35% │
│ 波浪: 推动浪 趋势: Upward 置信度: 78% │
│ 位置: 3浪主升中 │
│ 整体: 01/15->02/25 10.50-> 12.50 ( +19.05%)│
│ 波浪: 1 2 3 4 5 │
│ 信号: │
│ • 【3浪主升】强烈买入信号 │
│ • 当前处于最强上涨浪,建议重仓持有 │
│ • 上涨趋势 - 整体涨幅: 19.05% │
└─────────────────────────────────────────────────────────────────┘
...
CSV 输出
csv
代码,名称,现价,涨跌%,建议,评分,风险,行业,波浪类型,趋势,置信度%,位置
000001,平安银行,12.50,2.35,强烈买入,85,2,银行,推动浪,Upward,78,3浪主升中
JSON 输出
json
[
{
"code": "000001",
"name": "平安银行",
"currentPrice": 12.50,
"changePercent": 2.35,
"recommendation": "强烈买入",
"score": 85,
"riskLevel": 2,
"waveSequences": [...]
}
]
常见问题
Q: Python DLL 找不到怎么办?
A: 确保 Python 3.13 已正确安装,并在 ElliottWaveScanner.csproj 中配置正确的路径。
Q: 通达信数据路径如何配置?
A: 编辑 DataProviders/MooTdxDataProvider.cs,修改 tdxdir 参数为你的通达信安装目录。
Q: 如何调整选股条件?
A: 在 Services/ElliottWaveScanner.cs 中修改 StockFilterCriteria 的默认值,或在创建扫描器时传入自定义条件。
Q: 支持哪些数据源?
A: 目前支持 MooTdx(通达信),可以通过实现 IStockDataProvider 接口添加其他数据源。
开发指南
代码规范
- 使用 .NET 8 特性
- 遵循 C# 命名约定
- 使用文件作用域命名空间
- 启用可空引用类型
详细的开发指南请参考 <AGENTS.md>。
添加测试
bash
# 添加 xUnit 测试项目
dotnet new xunit -n ElliottWaveScanner.Tests
dotnet add ElliottWaveScanner.Tests reference ElliottWaveScanner.csproj
# 运行测试
dotnet test
贡献指南
欢迎贡献代码!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
许可证
本项目采用 MIT 许可证 - 详见 <LICENSE> 文件。
免责声明
本软件仅供学习和研究使用,不构成任何投资建议。股市有风险,投资需谨慎。使用本软件产生的任何投资决策风险由使用者自行承担。
联系方式
致谢
- 艾略特波浪理论创始人 Ralph Nelson Elliott
- MooTdx 数据库维护者
- .NET 社区
注意: 本项目仍在开发中,功能可能不完整或有错误。使用时请谨慎。