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**:图表绘制(可选)

## 项目说明

本项目是一个基础框架,您可以根据需要进行扩展和定制。程序设计注重代码的可读性和可维护性,方便后续功能的添加和修改。

---

**注意**:当前版本使用随机生成的数据,仅供演示和学习使用。在生产环境中,请替换为真实的数据来源。