Files
chanlun_1/README.md
T
2025-05-23 19:09:55 +08:00

240 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 缠论分析系统
一个基于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 <repository-url>
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联系。