dash-kline-charts


Namedash-kline-charts JSON
Version 0.1.2 PyPI version JSON
download
home_pagehttps://github.com/kingzeus/dash-kline-charts
SummaryA Dash component for displaying financial charts using KLineChart
upload_time2025-07-14 10:10:29
maintainerNone
docs_urlNone
authorYefei Fan
requires_python>=3.7
licenseNone
keywords dash plotly react kline chart financial candlestick
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Dash KLineChart Component

[![npm version](https://badge.fury.io/js/dash-kline-charts.svg)](https://badge.fury.io/js/dash-kline-charts)
[![PyPI version](https://badge.fury.io/py/dash-kline-charts.svg)](https://badge.fury.io/py/dash-kline-charts)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

一个基于 KLineChart 的自定义 Dash 组件,用于在 Python Dash 应用中展示专业的金融图表。

## 🚀 项目特性

- **📈 专业金融图表**:基于 KLineChart 10.0.0-alpha8,支持 K线图、蜡烛图等金融图表
- **🎯 完整技术指标**:内置 MA、EMA、RSI、MACD、BOLL 等常用技术指标
- **📱 响应式设计**:支持桌面端和移动端,自适应不同屏幕尺寸
- **🎨 主题定制**:支持明暗主题切换和自定义样式
- **⚡ 高性能渲染**:基于 HTML5 Canvas,支持大数据集流畅渲染
- **🔄 实时更新**:支持实时数据更新和动态交互
- **🐍 Python 友好**:完全兼容 Dash 生态系统,支持 Pandas DataFrame

## 📦 安装

```bash
pip install dash-kline-charts
```

> **📌 注意**: KLineChart JavaScript 库会自动包含在组件中,无需额外安装或配置。组件会自动加载所需的 `klinecharts.min.js` 文件。

## 🔧 快速开始

### 基础用法

```python
import dash
from dash import html, dcc, Input, Output
import dash_kline_charts as dkc
import pandas as pd

# 创建示例数据
data = [
    {'timestamp': 1609459200000, 'open': 100, 'high': 110, 'low': 95, 'close': 105, 'volume': 1000},
    {'timestamp': 1609545600000, 'open': 105, 'high': 115, 'low': 100, 'close': 110, 'volume': 1200},
    # ... 更多数据
]

app = dash.Dash(__name__)

app.layout = html.Div([
    dkc.DashKLineChart(
        id='kline-chart',
        data=data,
        style={'height': '600px'},
        config={
            'grid': {'show': True},
            'candle': {'type': 'candle_solid'},
            'theme': 'dark'
        }
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)
```

### 添加技术指标

```python
dkc.DashKLineChart(
    id='kline-chart',
    data=data,
    indicators=[
        {'name': 'MA', 'params': [5, 10, 20]},
        {'name': 'RSI', 'params': [14]},
        {'name': 'MACD', 'params': [12, 26, 9]}
    ],
    style={'height': '600px'}
)
```

### 实时数据更新

```python
@app.callback(
    Output('kline-chart', 'data'),
    Input('interval-component', 'n_intervals')
)
def update_data(n):
    # 获取最新数据
    new_data = get_latest_market_data()
    return new_data
```

## 📋 API 文档

### DashKLineChart 属性

| 属性 | 类型 | 默认值 | 描述 |
|------|------|--------|------|
| `id` | str | - | 组件唯一标识符 |
| `data` | list | [] | 图表数据,OHLC 格式 |
| `config` | dict | {} | 图表配置选项 |
| `style` | dict | {} | 组件样式设置 |
| `indicators` | list | [] | 技术指标配置 |
| `theme` | str | 'light' | 主题设置 ('light' 或 'dark') |
| `responsive` | bool | True | 是否启用响应式设计 |

### 数据格式

```python
data = [
    {
        'timestamp': 1609459200000,  # 时间戳(毫秒)
        'open': 100.0,              # 开盘价
        'high': 110.0,              # 最高价
        'low': 95.0,                # 最低价
        'close': 105.0,             # 收盘价
        'volume': 1000              # 成交量
    },
    # ... 更多数据点
]
```

### 配置选项

```python
config = {
    'grid': {
        'show': True,
        'horizontal': {'show': True},
        'vertical': {'show': True}
    },
    'candle': {
        'type': 'candle_solid',      # 蜡烛图类型
        'bar': {'upColor': '#26A69A', 'downColor': '#EF5350'}
    },
    'crosshair': {
        'show': True,
        'horizontal': {'show': True},
        'vertical': {'show': True}
    },
    'yAxis': {
        'show': True,
        'position': 'right'
    },
    'xAxis': {
        'show': True,
        'position': 'bottom'
    }
}
```

## 🧪 支持的技术指标

- **移动平均线**: MA, EMA, SMA
- **趋势指标**: MACD, RSI, KDJ
- **成交量指标**: VOL, OBV
- **波动率指标**: BOLL, ATR
- **自定义指标**: 支持自定义技术指标

## 🎨 主题定制

### 预设主题

```python
# 明亮主题
theme = 'light'

# 暗黑主题
theme = 'dark'
```

### 自定义主题

```python
custom_theme = {
    'background': '#1e1e1e',
    'grid': '#333333',
    'candle': {
        'up': '#26A69A',
        'down': '#EF5350'
    },
    'text': '#ffffff'
}
```

## 📱 响应式设计

组件自动适配不同屏幕尺寸:

```python
dkc.DashKLineChart(
    id='kline-chart',
    data=data,
    responsive=True,
    style={
        'height': '400px',
        'width': '100%'
    }
)
```

## 🔧 开发环境设置

### 开发依赖

```bash
# 安装开发依赖
npm install

# 启动开发服务器
npm start

# 构建生产版本
npm run build

# 运行测试
npm test
```

### Python 开发环境

```bash
# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows

# 安装依赖
pip install -r requirements.txt

# 运行示例
python examples/basic_example.py
```

## 🤝 贡献指南

1. Fork 本项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request

### 开发规范

- 遵循 PEP 8 代码风格
- 编写单元测试
- 更新文档
- 提交前运行测试套件

## 📄 许可证

本项目基于 MIT 许可证开源 - 详见 [LICENSE](LICENSE) 文件。

## 📚 相关资源

- [KLineChart 官方文档](https://klinecharts.com/)
- [Dash 文档](https://dash.plotly.com/)
- [React 组件开发指南](https://reactjs.org/docs/components-and-props.html)

## 🐛 问题反馈

如果您发现任何问题或有功能建议,请在 [GitHub Issues](https://github.com/your-username/dash-kline-charts/issues) 中提出。

## 📧 联系我们

- 项目主页: [https://github.com/your-username/dash-kline-charts](https://github.com/your-username/dash-kline-charts)
- 邮箱: your-email@example.com

## 📊 支持的图表类型

- **蜡烛图** (candle_solid): 实心蜡烛图
- **空心蜡烛图** (candle_stroke): 空心蜡烛图
- **OHLC 图** (ohlc): 开高低收图
- **面积图** (area): 面积填充图

## 📐 技术指标

| 指标 | 名称 | 参数示例 |
|------|------|----------|
| MA | 移动平均线 | [5, 10, 20] |
| EMA | 指数移动平均线 | [12, 26] |
| RSI | 相对强弱指数 | [14] |
| MACD | 移动平均收敛散度 | [12, 26, 9] |
| BOLL | 布林带 | [20, 2] |
| KDJ | 随机指标 | [9, 3, 3] |
| VOL | 成交量 | [] |

## 🎨 主题支持

- **明亮主题**: 适合白天使用的明亮界面
- **暗黑主题**: 适合夜间使用的暗色界面
- **自定义主题**: 支持完全自定义颜色方案

## 🔧 系统要求

### Python 环境
- Python 3.7+
- Dash 2.0+
- Plotly 5.0+

### 浏览器支持
- Chrome 80+
- Firefox 75+
- Safari 13+
- Edge 80+

## 🏗️ 项目架构

```
dash-kline-charts/
├── src/                    # React 组件源码
├── dash_kline_charts/     # Python 包
├── examples/              # 示例应用
├── tests/                 # 测试文件
├── docs/                  # 文档
└── lib/                   # 构建输出
```

## 🧪 测试

### JavaScript 测试
```bash
npm test
npm run test:watch
npm run test:coverage
```

### Python 测试
```bash
python -m pytest tests/
python -m pytest tests/ --cov=dash_kline_charts
```

## 📚 文档

- [📋 API 文档](docs/API.md) - 详细的 API 参考
- [🤝 贡献指南](docs/CONTRIBUTING.md) - 如何参与项目开发
- [🏗️ 项目结构](docs/PROJECT_STRUCTURE.md) - 项目目录结构说明
- [📝 更新日志](CHANGELOG.md) - 版本更新记录

## 🔗 相关链接

- [KLineChart 官方文档](https://klinecharts.com/)
- [Dash 官方文档](https://dash.plotly.com/)
- [React 官方文档](https://reactjs.org/)

## 🏷️ 版本历史

查看 [CHANGELOG.md](CHANGELOG.md) 了解详细的版本更新历史。

## 📄 许可证

本项目基于 [MIT 许可证](LICENSE) 开源。

## 🙏 致谢

- [KLineChart](https://github.com/klinecharts/KLineChart) - 提供优秀的金融图表库
- [Dash](https://github.com/plotly/dash) - 提供强大的 Python web 应用框架
- 所有为此项目做出贡献的开发者

## 📞 支持

- 🐛 [报告问题](https://github.com/your-username/dash-kline-charts/issues)
- 💡 [功能请求](https://github.com/your-username/dash-kline-charts/issues)
- 💬 [社区讨论](https://github.com/your-username/dash-kline-charts/discussions)
- 📧 邮箱: your-email@example.com

---

**⭐ 如果这个项目对您有帮助,请给我们一个 Star!**

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/kingzeus/dash-kline-charts",
    "name": "dash-kline-charts",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "dash, plotly, react, kline, chart, financial, candlestick",
    "author": "Yefei Fan",
    "author_email": "Yefei Fan <fyfcnc@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/2a/3c/9ac6ab57617bb818a4d403f14cdbf7d17346e4acd97ee119488e954b2c3c/dash_kline_charts-0.1.2.tar.gz",
    "platform": null,
    "description": "# Dash KLineChart Component\n\n[![npm version](https://badge.fury.io/js/dash-kline-charts.svg)](https://badge.fury.io/js/dash-kline-charts)\n[![PyPI version](https://badge.fury.io/py/dash-kline-charts.svg)](https://badge.fury.io/py/dash-kline-charts)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\u4e00\u4e2a\u57fa\u4e8e KLineChart \u7684\u81ea\u5b9a\u4e49 Dash \u7ec4\u4ef6\uff0c\u7528\u4e8e\u5728 Python Dash \u5e94\u7528\u4e2d\u5c55\u793a\u4e13\u4e1a\u7684\u91d1\u878d\u56fe\u8868\u3002\n\n## \ud83d\ude80 \u9879\u76ee\u7279\u6027\n\n- **\ud83d\udcc8 \u4e13\u4e1a\u91d1\u878d\u56fe\u8868**\uff1a\u57fa\u4e8e KLineChart 10.0.0-alpha8\uff0c\u652f\u6301 K\u7ebf\u56fe\u3001\u8721\u70db\u56fe\u7b49\u91d1\u878d\u56fe\u8868\n- **\ud83c\udfaf \u5b8c\u6574\u6280\u672f\u6307\u6807**\uff1a\u5185\u7f6e MA\u3001EMA\u3001RSI\u3001MACD\u3001BOLL \u7b49\u5e38\u7528\u6280\u672f\u6307\u6807\n- **\ud83d\udcf1 \u54cd\u5e94\u5f0f\u8bbe\u8ba1**\uff1a\u652f\u6301\u684c\u9762\u7aef\u548c\u79fb\u52a8\u7aef\uff0c\u81ea\u9002\u5e94\u4e0d\u540c\u5c4f\u5e55\u5c3a\u5bf8\n- **\ud83c\udfa8 \u4e3b\u9898\u5b9a\u5236**\uff1a\u652f\u6301\u660e\u6697\u4e3b\u9898\u5207\u6362\u548c\u81ea\u5b9a\u4e49\u6837\u5f0f\n- **\u26a1 \u9ad8\u6027\u80fd\u6e32\u67d3**\uff1a\u57fa\u4e8e HTML5 Canvas\uff0c\u652f\u6301\u5927\u6570\u636e\u96c6\u6d41\u7545\u6e32\u67d3\n- **\ud83d\udd04 \u5b9e\u65f6\u66f4\u65b0**\uff1a\u652f\u6301\u5b9e\u65f6\u6570\u636e\u66f4\u65b0\u548c\u52a8\u6001\u4ea4\u4e92\n- **\ud83d\udc0d Python \u53cb\u597d**\uff1a\u5b8c\u5168\u517c\u5bb9 Dash \u751f\u6001\u7cfb\u7edf\uff0c\u652f\u6301 Pandas DataFrame\n\n## \ud83d\udce6 \u5b89\u88c5\n\n```bash\npip install dash-kline-charts\n```\n\n> **\ud83d\udccc \u6ce8\u610f**: KLineChart JavaScript \u5e93\u4f1a\u81ea\u52a8\u5305\u542b\u5728\u7ec4\u4ef6\u4e2d\uff0c\u65e0\u9700\u989d\u5916\u5b89\u88c5\u6216\u914d\u7f6e\u3002\u7ec4\u4ef6\u4f1a\u81ea\u52a8\u52a0\u8f7d\u6240\u9700\u7684 `klinecharts.min.js` \u6587\u4ef6\u3002\n\n## \ud83d\udd27 \u5feb\u901f\u5f00\u59cb\n\n### \u57fa\u7840\u7528\u6cd5\n\n```python\nimport dash\nfrom dash import html, dcc, Input, Output\nimport dash_kline_charts as dkc\nimport pandas as pd\n\n# \u521b\u5efa\u793a\u4f8b\u6570\u636e\ndata = [\n    {'timestamp': 1609459200000, 'open': 100, 'high': 110, 'low': 95, 'close': 105, 'volume': 1000},\n    {'timestamp': 1609545600000, 'open': 105, 'high': 115, 'low': 100, 'close': 110, 'volume': 1200},\n    # ... \u66f4\u591a\u6570\u636e\n]\n\napp = dash.Dash(__name__)\n\napp.layout = html.Div([\n    dkc.DashKLineChart(\n        id='kline-chart',\n        data=data,\n        style={'height': '600px'},\n        config={\n            'grid': {'show': True},\n            'candle': {'type': 'candle_solid'},\n            'theme': 'dark'\n        }\n    )\n])\n\nif __name__ == '__main__':\n    app.run_server(debug=True)\n```\n\n### \u6dfb\u52a0\u6280\u672f\u6307\u6807\n\n```python\ndkc.DashKLineChart(\n    id='kline-chart',\n    data=data,\n    indicators=[\n        {'name': 'MA', 'params': [5, 10, 20]},\n        {'name': 'RSI', 'params': [14]},\n        {'name': 'MACD', 'params': [12, 26, 9]}\n    ],\n    style={'height': '600px'}\n)\n```\n\n### \u5b9e\u65f6\u6570\u636e\u66f4\u65b0\n\n```python\n@app.callback(\n    Output('kline-chart', 'data'),\n    Input('interval-component', 'n_intervals')\n)\ndef update_data(n):\n    # \u83b7\u53d6\u6700\u65b0\u6570\u636e\n    new_data = get_latest_market_data()\n    return new_data\n```\n\n## \ud83d\udccb API \u6587\u6863\n\n### DashKLineChart \u5c5e\u6027\n\n| \u5c5e\u6027 | \u7c7b\u578b | \u9ed8\u8ba4\u503c | \u63cf\u8ff0 |\n|------|------|--------|------|\n| `id` | str | - | \u7ec4\u4ef6\u552f\u4e00\u6807\u8bc6\u7b26 |\n| `data` | list | [] | \u56fe\u8868\u6570\u636e\uff0cOHLC \u683c\u5f0f |\n| `config` | dict | {} | \u56fe\u8868\u914d\u7f6e\u9009\u9879 |\n| `style` | dict | {} | \u7ec4\u4ef6\u6837\u5f0f\u8bbe\u7f6e |\n| `indicators` | list | [] | \u6280\u672f\u6307\u6807\u914d\u7f6e |\n| `theme` | str | 'light' | \u4e3b\u9898\u8bbe\u7f6e ('light' \u6216 'dark') |\n| `responsive` | bool | True | \u662f\u5426\u542f\u7528\u54cd\u5e94\u5f0f\u8bbe\u8ba1 |\n\n### \u6570\u636e\u683c\u5f0f\n\n```python\ndata = [\n    {\n        'timestamp': 1609459200000,  # \u65f6\u95f4\u6233\uff08\u6beb\u79d2\uff09\n        'open': 100.0,              # \u5f00\u76d8\u4ef7\n        'high': 110.0,              # \u6700\u9ad8\u4ef7\n        'low': 95.0,                # \u6700\u4f4e\u4ef7\n        'close': 105.0,             # \u6536\u76d8\u4ef7\n        'volume': 1000              # \u6210\u4ea4\u91cf\n    },\n    # ... \u66f4\u591a\u6570\u636e\u70b9\n]\n```\n\n### \u914d\u7f6e\u9009\u9879\n\n```python\nconfig = {\n    'grid': {\n        'show': True,\n        'horizontal': {'show': True},\n        'vertical': {'show': True}\n    },\n    'candle': {\n        'type': 'candle_solid',      # \u8721\u70db\u56fe\u7c7b\u578b\n        'bar': {'upColor': '#26A69A', 'downColor': '#EF5350'}\n    },\n    'crosshair': {\n        'show': True,\n        'horizontal': {'show': True},\n        'vertical': {'show': True}\n    },\n    'yAxis': {\n        'show': True,\n        'position': 'right'\n    },\n    'xAxis': {\n        'show': True,\n        'position': 'bottom'\n    }\n}\n```\n\n## \ud83e\uddea \u652f\u6301\u7684\u6280\u672f\u6307\u6807\n\n- **\u79fb\u52a8\u5e73\u5747\u7ebf**: MA, EMA, SMA\n- **\u8d8b\u52bf\u6307\u6807**: MACD, RSI, KDJ\n- **\u6210\u4ea4\u91cf\u6307\u6807**: VOL, OBV\n- **\u6ce2\u52a8\u7387\u6307\u6807**: BOLL, ATR\n- **\u81ea\u5b9a\u4e49\u6307\u6807**: \u652f\u6301\u81ea\u5b9a\u4e49\u6280\u672f\u6307\u6807\n\n## \ud83c\udfa8 \u4e3b\u9898\u5b9a\u5236\n\n### \u9884\u8bbe\u4e3b\u9898\n\n```python\n# \u660e\u4eae\u4e3b\u9898\ntheme = 'light'\n\n# \u6697\u9ed1\u4e3b\u9898\ntheme = 'dark'\n```\n\n### \u81ea\u5b9a\u4e49\u4e3b\u9898\n\n```python\ncustom_theme = {\n    'background': '#1e1e1e',\n    'grid': '#333333',\n    'candle': {\n        'up': '#26A69A',\n        'down': '#EF5350'\n    },\n    'text': '#ffffff'\n}\n```\n\n## \ud83d\udcf1 \u54cd\u5e94\u5f0f\u8bbe\u8ba1\n\n\u7ec4\u4ef6\u81ea\u52a8\u9002\u914d\u4e0d\u540c\u5c4f\u5e55\u5c3a\u5bf8\uff1a\n\n```python\ndkc.DashKLineChart(\n    id='kline-chart',\n    data=data,\n    responsive=True,\n    style={\n        'height': '400px',\n        'width': '100%'\n    }\n)\n```\n\n## \ud83d\udd27 \u5f00\u53d1\u73af\u5883\u8bbe\u7f6e\n\n### \u5f00\u53d1\u4f9d\u8d56\n\n```bash\n# \u5b89\u88c5\u5f00\u53d1\u4f9d\u8d56\nnpm install\n\n# \u542f\u52a8\u5f00\u53d1\u670d\u52a1\u5668\nnpm start\n\n# \u6784\u5efa\u751f\u4ea7\u7248\u672c\nnpm run build\n\n# \u8fd0\u884c\u6d4b\u8bd5\nnpm test\n```\n\n### Python \u5f00\u53d1\u73af\u5883\n\n```bash\n# \u521b\u5efa\u865a\u62df\u73af\u5883\npython -m venv venv\nsource venv/bin/activate  # Linux/Mac\nvenv\\Scripts\\activate     # Windows\n\n# \u5b89\u88c5\u4f9d\u8d56\npip install -r requirements.txt\n\n# \u8fd0\u884c\u793a\u4f8b\npython examples/basic_example.py\n```\n\n## \ud83e\udd1d \u8d21\u732e\u6307\u5357\n\n1. Fork \u672c\u9879\u76ee\n2. \u521b\u5efa\u7279\u6027\u5206\u652f (`git checkout -b feature/AmazingFeature`)\n3. \u63d0\u4ea4\u66f4\u6539 (`git commit -m 'Add some AmazingFeature'`)\n4. \u63a8\u9001\u5230\u5206\u652f (`git push origin feature/AmazingFeature`)\n5. \u521b\u5efa Pull Request\n\n### \u5f00\u53d1\u89c4\u8303\n\n- \u9075\u5faa PEP 8 \u4ee3\u7801\u98ce\u683c\n- \u7f16\u5199\u5355\u5143\u6d4b\u8bd5\n- \u66f4\u65b0\u6587\u6863\n- \u63d0\u4ea4\u524d\u8fd0\u884c\u6d4b\u8bd5\u5957\u4ef6\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u57fa\u4e8e MIT \u8bb8\u53ef\u8bc1\u5f00\u6e90 - \u8be6\u89c1 [LICENSE](LICENSE) \u6587\u4ef6\u3002\n\n## \ud83d\udcda \u76f8\u5173\u8d44\u6e90\n\n- [KLineChart \u5b98\u65b9\u6587\u6863](https://klinecharts.com/)\n- [Dash \u6587\u6863](https://dash.plotly.com/)\n- [React \u7ec4\u4ef6\u5f00\u53d1\u6307\u5357](https://reactjs.org/docs/components-and-props.html)\n\n## \ud83d\udc1b \u95ee\u9898\u53cd\u9988\n\n\u5982\u679c\u60a8\u53d1\u73b0\u4efb\u4f55\u95ee\u9898\u6216\u6709\u529f\u80fd\u5efa\u8bae\uff0c\u8bf7\u5728 [GitHub Issues](https://github.com/your-username/dash-kline-charts/issues) \u4e2d\u63d0\u51fa\u3002\n\n## \ud83d\udce7 \u8054\u7cfb\u6211\u4eec\n\n- \u9879\u76ee\u4e3b\u9875: [https://github.com/your-username/dash-kline-charts](https://github.com/your-username/dash-kline-charts)\n- \u90ae\u7bb1: your-email@example.com\n\n## \ud83d\udcca \u652f\u6301\u7684\u56fe\u8868\u7c7b\u578b\n\n- **\u8721\u70db\u56fe** (candle_solid): \u5b9e\u5fc3\u8721\u70db\u56fe\n- **\u7a7a\u5fc3\u8721\u70db\u56fe** (candle_stroke): \u7a7a\u5fc3\u8721\u70db\u56fe\n- **OHLC \u56fe** (ohlc): \u5f00\u9ad8\u4f4e\u6536\u56fe\n- **\u9762\u79ef\u56fe** (area): \u9762\u79ef\u586b\u5145\u56fe\n\n## \ud83d\udcd0 \u6280\u672f\u6307\u6807\n\n| \u6307\u6807 | \u540d\u79f0 | \u53c2\u6570\u793a\u4f8b |\n|------|------|----------|\n| MA | \u79fb\u52a8\u5e73\u5747\u7ebf | [5, 10, 20] |\n| EMA | \u6307\u6570\u79fb\u52a8\u5e73\u5747\u7ebf | [12, 26] |\n| RSI | \u76f8\u5bf9\u5f3a\u5f31\u6307\u6570 | [14] |\n| MACD | \u79fb\u52a8\u5e73\u5747\u6536\u655b\u6563\u5ea6 | [12, 26, 9] |\n| BOLL | \u5e03\u6797\u5e26 | [20, 2] |\n| KDJ | \u968f\u673a\u6307\u6807 | [9, 3, 3] |\n| VOL | \u6210\u4ea4\u91cf | [] |\n\n## \ud83c\udfa8 \u4e3b\u9898\u652f\u6301\n\n- **\u660e\u4eae\u4e3b\u9898**: \u9002\u5408\u767d\u5929\u4f7f\u7528\u7684\u660e\u4eae\u754c\u9762\n- **\u6697\u9ed1\u4e3b\u9898**: \u9002\u5408\u591c\u95f4\u4f7f\u7528\u7684\u6697\u8272\u754c\u9762\n- **\u81ea\u5b9a\u4e49\u4e3b\u9898**: \u652f\u6301\u5b8c\u5168\u81ea\u5b9a\u4e49\u989c\u8272\u65b9\u6848\n\n## \ud83d\udd27 \u7cfb\u7edf\u8981\u6c42\n\n### Python \u73af\u5883\n- Python 3.7+\n- Dash 2.0+\n- Plotly 5.0+\n\n### \u6d4f\u89c8\u5668\u652f\u6301\n- Chrome 80+\n- Firefox 75+\n- Safari 13+\n- Edge 80+\n\n## \ud83c\udfd7\ufe0f \u9879\u76ee\u67b6\u6784\n\n```\ndash-kline-charts/\n\u251c\u2500\u2500 src/                    # React \u7ec4\u4ef6\u6e90\u7801\n\u251c\u2500\u2500 dash_kline_charts/     # Python \u5305\n\u251c\u2500\u2500 examples/              # \u793a\u4f8b\u5e94\u7528\n\u251c\u2500\u2500 tests/                 # \u6d4b\u8bd5\u6587\u4ef6\n\u251c\u2500\u2500 docs/                  # \u6587\u6863\n\u2514\u2500\u2500 lib/                   # \u6784\u5efa\u8f93\u51fa\n```\n\n## \ud83e\uddea \u6d4b\u8bd5\n\n### JavaScript \u6d4b\u8bd5\n```bash\nnpm test\nnpm run test:watch\nnpm run test:coverage\n```\n\n### Python \u6d4b\u8bd5\n```bash\npython -m pytest tests/\npython -m pytest tests/ --cov=dash_kline_charts\n```\n\n## \ud83d\udcda \u6587\u6863\n\n- [\ud83d\udccb API \u6587\u6863](docs/API.md) - \u8be6\u7ec6\u7684 API \u53c2\u8003\n- [\ud83e\udd1d \u8d21\u732e\u6307\u5357](docs/CONTRIBUTING.md) - \u5982\u4f55\u53c2\u4e0e\u9879\u76ee\u5f00\u53d1\n- [\ud83c\udfd7\ufe0f \u9879\u76ee\u7ed3\u6784](docs/PROJECT_STRUCTURE.md) - \u9879\u76ee\u76ee\u5f55\u7ed3\u6784\u8bf4\u660e\n- [\ud83d\udcdd \u66f4\u65b0\u65e5\u5fd7](CHANGELOG.md) - \u7248\u672c\u66f4\u65b0\u8bb0\u5f55\n\n## \ud83d\udd17 \u76f8\u5173\u94fe\u63a5\n\n- [KLineChart \u5b98\u65b9\u6587\u6863](https://klinecharts.com/)\n- [Dash \u5b98\u65b9\u6587\u6863](https://dash.plotly.com/)\n- [React \u5b98\u65b9\u6587\u6863](https://reactjs.org/)\n\n## \ud83c\udff7\ufe0f \u7248\u672c\u5386\u53f2\n\n\u67e5\u770b [CHANGELOG.md](CHANGELOG.md) \u4e86\u89e3\u8be6\u7ec6\u7684\u7248\u672c\u66f4\u65b0\u5386\u53f2\u3002\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u57fa\u4e8e [MIT \u8bb8\u53ef\u8bc1](LICENSE) \u5f00\u6e90\u3002\n\n## \ud83d\ude4f \u81f4\u8c22\n\n- [KLineChart](https://github.com/klinecharts/KLineChart) - \u63d0\u4f9b\u4f18\u79c0\u7684\u91d1\u878d\u56fe\u8868\u5e93\n- [Dash](https://github.com/plotly/dash) - \u63d0\u4f9b\u5f3a\u5927\u7684 Python web \u5e94\u7528\u6846\u67b6\n- \u6240\u6709\u4e3a\u6b64\u9879\u76ee\u505a\u51fa\u8d21\u732e\u7684\u5f00\u53d1\u8005\n\n## \ud83d\udcde \u652f\u6301\n\n- \ud83d\udc1b [\u62a5\u544a\u95ee\u9898](https://github.com/your-username/dash-kline-charts/issues)\n- \ud83d\udca1 [\u529f\u80fd\u8bf7\u6c42](https://github.com/your-username/dash-kline-charts/issues)\n- \ud83d\udcac [\u793e\u533a\u8ba8\u8bba](https://github.com/your-username/dash-kline-charts/discussions)\n- \ud83d\udce7 \u90ae\u7bb1: your-email@example.com\n\n---\n\n**\u2b50 \u5982\u679c\u8fd9\u4e2a\u9879\u76ee\u5bf9\u60a8\u6709\u5e2e\u52a9\uff0c\u8bf7\u7ed9\u6211\u4eec\u4e00\u4e2a Star\uff01**\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A Dash component for displaying financial charts using KLineChart",
    "version": "0.1.2",
    "project_urls": {
        "Bug Tracker": "https://github.com/your-username/dash-kline-charts/issues",
        "Documentation": "https://github.com/your-username/dash-kline-charts/blob/main/docs/API.md",
        "Homepage": "https://github.com/your-username/dash-kline-charts",
        "Repository": "https://github.com/your-username/dash-kline-charts"
    },
    "split_keywords": [
        "dash",
        " plotly",
        " react",
        " kline",
        " chart",
        " financial",
        " candlestick"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ccc21135a6d565e71744ae1ef875c61379972f6150eb5e2f533414e688570b96",
                "md5": "3a0a541da984ce8d548a4dc0084d7d6b",
                "sha256": "c99e6d6727c1616996f9b243a19bc67848aa3bda0b356f9f674782a70fdaedef"
            },
            "downloads": -1,
            "filename": "dash_kline_charts-0.1.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3a0a541da984ce8d548a4dc0084d7d6b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 85219,
            "upload_time": "2025-07-14T10:10:28",
            "upload_time_iso_8601": "2025-07-14T10:10:28.122213Z",
            "url": "https://files.pythonhosted.org/packages/cc/c2/1135a6d565e71744ae1ef875c61379972f6150eb5e2f533414e688570b96/dash_kline_charts-0.1.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2a3c9ac6ab57617bb818a4d403f14cdbf7d17346e4acd97ee119488e954b2c3c",
                "md5": "52a2f7557e765032bf487a2722bd41a9",
                "sha256": "63a9a41f29508929a98ba0d55d598692833fa5e9fdc3b36c047ee497c26b444f"
            },
            "downloads": -1,
            "filename": "dash_kline_charts-0.1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "52a2f7557e765032bf487a2722bd41a9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 108910,
            "upload_time": "2025-07-14T10:10:29",
            "upload_time_iso_8601": "2025-07-14T10:10:29.714913Z",
            "url": "https://files.pythonhosted.org/packages/2a/3c/9ac6ab57617bb818a4d403f14cdbf7d17346e4acd97ee119488e954b2c3c/dash_kline_charts-0.1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-14 10:10:29",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "kingzeus",
    "github_project": "dash-kline-charts",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "dash-kline-charts"
}
        
Elapsed time: 0.54643s