# vue-kline
**Repository Path**: zhengquantao/vue-kline
## Basic Information
- **Project Name**: vue-kline
- **Description**: 基于vue.js的期货,股票K线图
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 10
- **Forks**: 1
- **Created**: 2019-09-22
- **Last Updated**: 2025-01-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# [vue-kline](https://github.com/zhengquantao/vue-kline) [](https://badge.fury.io/js/vue-kline)
[](https://nodei.co/npm/vue-kline/)
>
* 效果图
## Build Setup
> 本项目基于Vue的k线图.某K线插件做了一些封装和二次开发,使其更加便于使用和修改,方便后来的开发者. 修改主要涉及以下几个点:
* 使用 [webpack](https://webpack.js.org/) 打包 js/css/images/*.vue
* 使用 vue.js 对原有代码进行了拆分和封装 支持所有vue版本
* 删除了一些不必要的逻辑
* 把源码中常用可配置的部分抽出来
* 增加对外接口及事件回调
* 超级简单的组件引入方式,不用在意其背后的实现原理,真正做到快速上手,快速开发
### 演示地址
* [源码地址](https://github.com/zhengquantao/vue-kline)
* 简单效果[Demo](https://zhengquantao.github.io/vue-kline/)
### Requirements
* jquery
* jquery.mousewheel
### 安装和使用
安装
```bash
$ npm install vue-kline
OR
only download src (不推荐,要改变import引入路径和自己安装依赖,对新人不友好)
```
* 使用组件方式引入, 放在想添加的页面上
```html
```
* OR 仅仅下载src文件
```html
```
### 自定制(没有使用Vuex作为组件数据转输方式,而是用:xxxx数据绑定方式, 所以vue-kline很轻便、简单)
```html
```
### 参数
```
klineParams:{} // K线图参数(具体参数看 构建选项)
klineData:{} // 数据(只需把指定数据放到这里即可渲染出K线)
```
### 构建选项
| 参数名称 | 参数说明 | 默认值
|:---------|:-----------------|:------------
|`width` | 宽度 (px) | 600
|`height` | 高度度 (px) | 400
|`theme` | 主题 dark(暗色)/light(亮色)| dark
|`language` | 语言 zh-cn(简体中文)/en-us(英文)/zh-tw(繁体中文)| zh-cn
|`ranges` | 聚合选项 1w/1d/12h/6h/4h/2h/1h/30m/15m/5m/3m/1m/line (w:周, d:天, h:小时, m:分钟, line:分时数据)| ["1w", "1d", "1h", "30m", "15m", "5m", "1m", "line"]
|`symbol` | 交易代号|
|`symbolName` | 交易名称 |
|`intervalTime` | 请求间隔时间(ms) | 3000
|`depthWidth` | 深度图宽度 | 最小50,小于50则取50,默认50
### 方法
* redraw()
重新绘制线条
```javascript
this.$refs.callMethods.redraw();
```
* resize(int width, int height)
设置画布大小
```javascript
this.$refs.callMethods.resize(1200, 550);
```
* setSymbol(string symbol, string symbolName)
设置交易品种
```javascript
this.$refs.callMethods.setSymbol('usd/btc', 'USD/BTC');
```
* setTheme(string style)
设置主题
```javascript
this.$refs.callMethods.setTheme('dark'); // dark/light
```
* setLanguage(string lang)
设置语言
```javascript
this.$refs.callMethods.setLanguage('en-us'); // en-us/zh-ch/zh-tw
```
* setIntervalTime(int intervalTime)
设置请求间隔时间(ms)
```javascript
this.$refs.callMethods.setIntervalTime(5000);
```
* setDepthWidth(int width)
设置深度图宽度
```javascript
this.$refs.callMethods.setDepthWidth(100);
```
* onRangeChange: function ()
聚合时间改变时触发
```javascript
this.$refs.callMethods.onRangeChange();
```
### 事件
| 事件函数 | 说明
|:-----------------------|:------------
| `onResize: function(width, height)` | 画布尺寸改变时触发
| `onLangChange: function(lang)` | 语言改变时触发
| `onSymbolChange: function(symbol, symbolName)` | 交易品种改变时触发
| `onThemeChange: function(theme)` | 主题改变时触发
| `onRangeChange: function(range)` | 聚合时间改变时触发
### 回调函数res格式
> 数据请求成功
当success为true,请求成功。
```json
{
"success": true,
"data": {
"lines": [
[
1.50790476E12,
99.30597249871,
99.30597249871,
99.30597249871,
99.30597249871,
66.9905449283
]
],
"depths": {
"asks": [
[
500654.27,
0.5
]
],
"bids": [
[
5798.79,
0.013
]
]
}
}
}
```
> 数据请求失败
当res为空,或者success为false,请求失败。
```json
{
"success": false,
"data": null, // success为false,则忽略data
}
```
* res参数说明:
* `lines`: K线图, 依次是: 时间(ms), 开盘价, 最高价, 最低价, 收盘价, 成交量
* `depths`深度图数据,`asks`: 一定比例的卖单列表, `bids`:一定比例的买单列表, 其中每项的值依次是 : 成交价, 成交量
## 特别说明
* 当然细心的你可能会发现我npm包名(vue-kline)和github上的名字(vue-Kline)会不一样,对你造成一定误解,对此我十分抱歉。原因是当我先把vue-kline发布到npm上,再回到github上是发现名字十天前已经被人使用了。没有办法github上只能硬着头皮用K大写 vue-Kline。
* 朋友如果你是`cli3`+`typescript`你可能会遇到无法显示的问题.只要把kline.vue里的render改成template的形式,就能正常显示
* 当然如果你想自定义显示精度,可以在`plotters.js`和`util.js`更改,如果有问题,可以加加下面的群号,我会第一时间给你回复
## vue-kline起源与ctpbee发展计划
vue-kline起因是我们内部开源ctpbee量化项目,需要将数据直观展示给用户,而网上又没有关于vue的实现。在此背景下vue-kline孕育而生。
[ctpbee](https://github.com/ctpbee/ctpbee)是一个可供使用的交易微框架, 主要面对开发者, 希望能得到各位大佬的支持.
策略以及指标等工具都以ctpbee_** 形式发布. ctpbee只提供最小的内核. 本人崇尚开源, 无论你是交易者还是程序员, 只要你有新的想法以及对开源感兴趣, 欢迎基于ctpbee 开发出新的可用工具. 我会维护一个工具列表, 指引用户前往使用.
## 最后一句
如果这个能帮助到你, 请点击star来支持我噢. ^_^
如果你希望贡献代码, 欢迎加群一起讨论和或者提交PR QQ群号(: 756319143) [点进加入群聊以了解更多](https://jq.qq.com/?_wv=1027&k=5xWbIq3)
最后一句 ----> 祝各位大佬都能赚钱 !