# 缠论分析系统 一个基于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+ - 推荐使用虚拟环境 ### 安装步骤 1. **克隆项目** ```bash git clone cd chanlun ``` 2. **创建虚拟环境** ```bash python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows ``` 3. **安装依赖** ```bash pip install -r requirements.txt ``` ### 运行方式 #### 1. Web界面模式(推荐) ```bash python main.py --mode web ``` 然后在浏览器中访问 `http://localhost:8050` #### 2. 命令行模式 ```bash # 基本分析 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 | ## 缠论理论说明 ### 基础概念 1. **K线包含关系** - 当一根K线的高低点完全包含另一根K线时,需要进行合并处理 - 合并规则根据当前趋势方向确定 2. **分型** - 顶分型:中间K线高点比左右K线都高 - 底分型:中间K线低点比左右K线都低 - 支持不同强度的分型识别 3. **笔** - 连接相邻不同类型分型的直线 - 必须满足严格的分型交替规则 4. **线段** - 由至少3笔组成 - 有明确的生成和破坏规则 5. **中枢** - 至少3个线段的重叠区域 - 是价格震荡的核心区间 6. **买卖点** - 一类:中枢突破点 - 二类:回拉确认点 - 三类:次级别突破点 ## 使用示例 ### Web界面使用 1. 启动Web服务 2. 选择交易对和时间周期 3. 调整分析参数 4. 点击"获取数据并分析" 5. 查看可视化结果和统计信息 ### 编程接口 ```python 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线图与成交量 - 分型标记(三角形标识) - 笔(实线连接) - 线段(虚线连接) - 中枢(矩形区域) - 买卖点(箭头标识) ## 注意事项 1. **数据质量**:确保网络连接稳定,避免数据获取失败 2. **计算复杂度**:大量数据分析可能需要较长时间 3. **参数调整**:分型强度等参数需要根据具体情况调整 4. **投资风险**:本系统仅供技术分析参考,不构成投资建议 ## 技术特点 - **模块化设计**:各功能模块独立,便于维护和扩展 - **面向对象**:使用OOP设计,代码结构清晰 - **类型提示**:完整的类型注解,提高代码可读性 - **错误处理**:完善的异常处理机制 - **日志记录**:详细的运行日志 - **可扩展性**:支持新增交易所和指标 ## 开发说明 ### 扩展新交易所 在`data_fetcher.py`中添加新的交易所支持: ```python exchange = ccxt.new_exchange_name({ # 配置参数 }) ``` ### 添加新指标 在相应模块中实现新的分析方法,遵循现有的接口设计。 ### 自定义可视化 在`visualization.py`中添加新的图表类型。 ## 许可证 本项目采用MIT许可证,详见LICENSE文件。 ## 贡献 欢迎提交Issue和Pull Request来改进本项目。 ## 联系方式 如有问题或建议,请通过GitHub Issues联系。