240 lines
6.3 KiB
Markdown
240 lines
6.3 KiB
Markdown
# 缠论分析系统
|
||
|
||
一个基于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联系。 |