Add files to chanlun_1

This commit is contained in:
jackyu66git
2025-05-23 19:09:55 +08:00
parent c0e218d23d
commit 4481c47c34
20 changed files with 5574 additions and 0 deletions
+240
View File
@@ -0,0 +1,240 @@
# 缠论分析系统
一个基于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联系。