README.md
# K线图分析系统
使用 Dear PyGui 构建的现代化 K 线图分析系统,支持多种时间周期和视图模式,设计风格类似于同花顺软件。
## 功能特点
### 核心功能
- **K 线图显示**:显示随机生成的 K 线数据,支持多种时间周期
- **分时图**:提供分时图视图,显示价格走势
- **多种时间周期**:支持 1分钟、5分钟、15分钟、1小时、4小时、1天
- **技术指标**:支持 MA 均线、MACD、KDJ、RSI 等技术指标(当前版本为模拟数据)
- **数据统计**:显示最高/最低/平均价格和总成交量
### 用户界面
- **主窗口**:显示 K 线图和控制面板
- **侧边栏**:提供指标选择和数据统计信息
- **深色主题**:采用现代化的深色主题,提升视觉体验
## 快速开始
### 安装依赖
```bash
# 创建并激活虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装所需库
pip install -r requirements.txt
```
### 运行程序
```bash
# 在有图形界面的系统上直接运行
python kline_app.py
# 在无图形界面的系统上使用虚拟 X 服务器
xvfb-run -a python kline_app.py
# 运行使用 Matplotlib 绘制图表的版本
python kline_app_matplotlib.py
```
## 项目结构
```
.
├── kline_app.py # 主程序文件(使用 Dear PyGui 绘图)
├── kline_app_matplotlib.py # 主程序文件(使用 Matplotlib 绘图)
├── kline_app_simple.py # 简化版程序(备用)
├── requirements.txt # 依赖库列表
└── README.md # 项目说明文档
```
## 代码结构
### 核心模块
1. **数据生成模块**:`generate_random_kline_data()` 函数,生成随机 K 线数据
2. **显示更新模块**:`update_kline_display()` 和 `update_time_line_chart()` 函数,更新图表显示
3. **事件处理模块**:处理时间周期切换和视图模式改变
4. **UI 布局模块**:创建主窗口、侧边栏和其他 UI 组件
### 主要函数说明
- `generate_random_kline_data()`:生成随机 K 线数据
- `update_kline_display()`:更新 K 线图显示
- `update_time_line_chart()`:更新分时图显示
- `change_timeframe()`:切换时间周期
- `change_view_mode()`:切换视图模式
- `regenerate_data()`:重新生成随机数据
## 使用说明
### 控制面板功能
1. **时间周期选择**:可以选择以下时间周期:
- 1M:1分钟
- 5M:5分钟
- 15M:15分钟
- 1H:1小时
- 4H:4小时
- 1D:1天
2. **视图模式**:支持以下视图模式:
- K 线图:显示收盘价折线图
- 分时图:显示价格走势折线图
3. **重新生成数据**:点击按钮重新生成随机 K 线数据
### 技术指标选择
在侧边栏可以选择以下技术指标:
- **MA 均线**:MA5、MA10、MA20、MA60
- **MACD**:指数平滑异同移动平均线
- **KDJ**:随机指标
- **RSI**:相对强弱指数
### 数据统计
侧边栏显示以下数据统计信息:
- 最高价格
- 最低价格
- 平均价格
- 总成交量
## 后续开发
### 替换真实数据
要替换为真实数据,您需要修改 `generate_random_kline_data()` 函数,使其从实际数据源获取数据。
### 数据接口设计
程序使用统一的数据格式:
```python
kline_data = [
{
"timestamp": datetime, # 时间戳
"open": float, # 开盘价
"high": float, # 最高价
"low": float, # 最低价
"close": float, # 收盘价
"volume": int # 成交量
},
...
]
```
您可以根据需要实现数据接口,支持以下功能:
- 从 CSV 文件读取历史数据
- 从 API 获取实时数据
- 连接数据库获取数据
### 添加更多功能
- 保存/加载分析结果
- 导出图表为图片
- 历史数据回放
- 自定义指标
- 多窗口显示
- 实时数据更新
## 技术栈
- **Python 3.12**:开发语言
- **Dear PyGui**:GUI 框架
- **NumPy**:数据处理
- **Matplotlib**:图表绘制(可选)
## 项目说明
本项目是一个基础框架,您可以根据需要进行扩展和定制。程序设计注重代码的可读性和可维护性,方便后续功能的添加和修改。
---
**注意**:当前版本使用随机生成的数据,仅供演示和学习使用。在生产环境中,请替换为真实的数据来源。