4481c47c343f8c334d6d2cde4c142f329f876c86
缠论分析系统
一个基于Python实现的完整缠论技术分析系统,支持数字货币市场的实时数据分析和可视化展示。
系统特性
核心功能
- K线包含关系处理:自动识别和合并K线包含关系
- 分型识别:精确识别顶分型和底分型,支持多级别强度验证
- 笔构建:基于分型生成完整的笔结构
- 线段识别:从笔构建线段,支持线段确认和破坏逻辑
- 中枢检测:识别不同级别的中枢,分析震荡区间
- 买卖点信号:实现三类买卖点的自动识别
数据支持
- 支持多个主流数字货币交易所(Binance、OKX等)
- 多时间周期分析(1分钟到1周)
- 实时数据获取和历史数据分析
- 数据清理和验证机制
可视化功能
- 交互式图表:基于Plotly的高质量图表
- Web界面:Dash框架构建的现代化Web界面
- 多层次展示:K线、分型、笔、线段、中枢、买卖点一体化显示
- 统计分析:提供详细的统计信息和模式分析
项目结构
/chanlun
├── /data # 数据模块
│ ├── __init__.py
│ ├── data_fetcher.py # 数据获取(ccxt)
│ └── data_processor.py # 数据处理和清理
├── /core # 缠论核心逻辑
│ ├── __init__.py
│ ├── kline.py # K线包含关系处理
│ ├── fractal.py # 分型识别
│ ├── stroke.py # 笔逻辑
│ ├── segment.py # 线段逻辑
│ ├── central_bank.py # 中枢识别
│ ├── trading_signal.py # 买卖点信号
│ └── chan_analyzer.py # 综合分析器
├── /web # Web可视化
│ ├── __init__.py
│ ├── app.py # Dash应用
│ └── visualization.py # 图表生成
├── /tests # 测试文件
├── main.py # 主程序入口
├── requirements.txt # 依赖包
└── README.md # 说明文档
安装和使用
环境要求
- Python 3.8+
- 推荐使用虚拟环境
安装步骤
- 克隆项目
git clone <repository-url>
cd chanlun
- 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或
venv\Scripts\activate # Windows
- 安装依赖
pip install -r requirements.txt
运行方式
1. Web界面模式(推荐)
python main.py --mode web
然后在浏览器中访问 http://localhost:8050
2. 命令行模式
# 基本分析
python main.py --mode cli --symbol BTC/USDT --timeframe 1h
# 自定义参数
python main.py --mode cli \
--symbol ETH/USDT \
--timeframe 4h \
--limit 1000 \
--fractal-strength 2 \
--export
参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
--mode |
运行模式:web或cli | web |
--symbol |
交易对 | BTC/USDT |
--timeframe |
时间周期 | 1h |
--limit |
K线数量 | 500 |
--fractal-strength |
分型强度 | 1 |
--exchange |
交易所 | binance |
--port |
Web端口 | 8050 |
--export |
导出结果 | False |
缠论理论说明
基础概念
-
K线包含关系
- 当一根K线的高低点完全包含另一根K线时,需要进行合并处理
- 合并规则根据当前趋势方向确定
-
分型
- 顶分型:中间K线高点比左右K线都高
- 底分型:中间K线低点比左右K线都低
- 支持不同强度的分型识别
-
笔
- 连接相邻不同类型分型的直线
- 必须满足严格的分型交替规则
-
线段
- 由至少3笔组成
- 有明确的生成和破坏规则
-
中枢
- 至少3个线段的重叠区域
- 是价格震荡的核心区间
-
买卖点
- 一类:中枢突破点
- 二类:回拉确认点
- 三类:次级别突破点
使用示例
Web界面使用
- 启动Web服务
- 选择交易对和时间周期
- 调整分析参数
- 点击"获取数据并分析"
- 查看可视化结果和统计信息
编程接口
from data.data_fetcher import DataFetcher
from core.chan_analyzer import ChanAnalyzer
# 获取数据
fetcher = DataFetcher()
klines = fetcher.fetch_klines('BTC/USDT', '1h', 500)
# 缠论分析
analyzer = ChanAnalyzer(klines)
results = analyzer.run_full_analysis()
# 获取分析结果
fractals = analyzer.fractals
strokes = analyzer.strokes
segments = analyzer.segments
central_banks = analyzer.central_banks
trading_points = analyzer.trading_points
# 当前市场结构
market_structure = analyzer.get_current_market_structure()
输出说明
分析结果
- 分型数据:包含位置、价格、类型、强度等信息
- 笔数据:起止点、方向、长度、强度等
- 线段数据:组成笔、方向、确认状态等
- 中枢数据:边界价格、级别、持续时间等
- 买卖点:类型、价格、强度、描述等
可视化图表
- K线图与成交量
- 分型标记(三角形标识)
- 笔(实线连接)
- 线段(虚线连接)
- 中枢(矩形区域)
- 买卖点(箭头标识)
注意事项
- 数据质量:确保网络连接稳定,避免数据获取失败
- 计算复杂度:大量数据分析可能需要较长时间
- 参数调整:分型强度等参数需要根据具体情况调整
- 投资风险:本系统仅供技术分析参考,不构成投资建议
技术特点
- 模块化设计:各功能模块独立,便于维护和扩展
- 面向对象:使用OOP设计,代码结构清晰
- 类型提示:完整的类型注解,提高代码可读性
- 错误处理:完善的异常处理机制
- 日志记录:详细的运行日志
- 可扩展性:支持新增交易所和指标
开发说明
扩展新交易所
在data_fetcher.py中添加新的交易所支持:
exchange = ccxt.new_exchange_name({
# 配置参数
})
添加新指标
在相应模块中实现新的分析方法,遵循现有的接口设计。
自定义可视化
在visualization.py中添加新的图表类型。
许可证
本项目采用MIT许可证,详见LICENSE文件。
贡献
欢迎提交Issue和Pull Request来改进本项目。
联系方式
如有问题或建议,请通过GitHub Issues联系。
Languages
Python
100%