用vue.js实现的期货,股票的实时k线

项目地址:https://github.com/zhengquantao/vue-Kline

vue-kline

  • 效果图

Build Setup

本项目基于Vue的k线图.某K线插件做了一些封装和二次开发,使其更加便于使用和修改,方便后来的开发者. 修改主要涉及以下几个点:

  • 使用 webpack 打包 js/css/images/*.vue
  • 使用 vue.js 对原有代码进行了拆分和封装 支持所有vue版本
  • 删除了一些不必要的逻辑
  • 把源码中常用可配置的部分抽出来
  • 增加对外接口及事件回调
  • 超级简单的组件引入方式,不用在意其背后的实现原理,真正做到快速上手,快速开发

演示地址

Requirements

  • jquery
  • jquery.mousewheel

安装和使用

安装

$ npm install vue-kline
OR
only download src (不推荐,要改变import引入路径和自己安装依赖,对新人不友好)
  • 使用组件方式引入, 放在想添加的页面上
   <template>
<div id="app">
<!--把子组件放到想放的位置-->
<Vue-kline></Vue-kline>
</div>
</template>
<script>
import VueKline from "vue-kline"; //当前页引入vue-kline
export default {
components: {
VueKline, //以子组件形式注册到当前页面中
},
};
</script>
  • OR 仅仅下载src文件
  <template>
<div id="app">
<!--把子组件放到想放的位置-->
<Vue-kline></Vue-kline>
</div>
</template>
<script>
import VueKline from "./src/kline"; //当前页引入vue-kline(引入方式不同,其他方式相同,注意要改你自己的路径)
export default {
components: {
VueKline, //以子组件形式注册到当前页面中
},
};
</script>

自定制(没有使用Vuex作为组件数据转输方式,而是用:xxxx数据绑定方式, 所以vue-kline很轻便、简单)

    <template>
<div class="container">
<!-- :klineParams="klineParams" :klineData="klineData" 绑定下面data数据 用于自定制数据传输到vue-kline, ref="callMethods"绑定一个DOM事件 用于调用接口 --->
<Vue-kline :klineParams="klineParams" :klineData="klineData" ref="callMethods"></Vue-kline>
</div>
</template>
<script>
import VueKline from "vue-kline";
improt axios from "axios"
export default {
components: {
...
VueKline
},
data() {
return {
klineParams: {
width: 600, // k线窗口宽
height: 400, // k线窗口高
theme: "dark", // 主题颜色
language: "zh-cn", //语言
ranges: ["1w", "1d", "1h", "30m", "15m", "5m", "1m", "line"], // 聚合选项
symbol: "BTC", // 交易代号
symbolName: "BTC/USD", // 交易名称
intervalTime: 5000, // k线更新周期 毫秒
depthWidth: 50 // 深度图宽度
},
klineData: {}; // 数据
},
computed: { // 当然你可以写在methods中, 我这里写到computed中
requestData(){ //方法名任意取
this.$axios.request({
url: "xxxxx", //请求地址
method: "POST"
})
.then(ret => {
this.klineData = ret // 把返回数据赋值到上面的 klineData,
});
},
},
mounted(){
this.requestData; // 进入页面时执行 requestData()
},
methods:{ // 可根据使用场景调用内部自定制方法(如果不需要就不写)
this.$refs.callMethods.resize(int width, int height);
this.$refs.callMethods.setSymbol(string symbol, string symbolName)
this.$refs.callMethods.setTheme(string style);
this.$refs.callMethods.setLanguage(string lang);
this.$refs.callMethods.setIntervalTime(int intervalTime);
this.$refs.callMethods.setDepthWidth(int width);
this.$refs.callMethods.onRangeChange();
this.$refs.callMethods.redraw();
}
};
</script>

参数

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()

    重新绘制线条

this.$refs.callMethods.redraw();
  • resize(int width, int height)

    设置画布大小

this.$refs.callMethods.resize(1200, 550);
  • setSymbol(string symbol, string symbolName)

    设置交易品种

this.$refs.callMethods.setSymbol('usd/btc', 'USD/BTC');
  • setTheme(string style)

    设置主题

this.$refs.callMethods.setTheme('dark');  // dark/light
  • setLanguage(string lang)

    设置语言

this.$refs.callMethods.setLanguage('en-us');  // en-us/zh-ch/zh-tw
  • setIntervalTime(int intervalTime)

    设置请求间隔时间(ms)

this.$refs.callMethods.setIntervalTime(5000);
  • setDepthWidth(int width)

    设置深度图宽度

this.$refs.callMethods.setDepthWidth(100);
  • onRangeChange: function ()

    聚合时间改变时触发

this.$refs.callMethods.onRangeChange();

事件

事件函数 说明
onResize: function(width, height) 画布尺寸改变时触发
onLangChange: function(lang) 语言改变时触发
onSymbolChange: function(symbol, symbolName) 交易品种改变时触发
onThemeChange: function(theme) 主题改变时触发
onRangeChange: function(range) 聚合时间改变时触发

回调函数res格式

数据请求成功

当success为true,请求成功。

{
"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,请求失败。

{
"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。

vue-kline起源与ctpbee发展计划

vue-kline起因是我们内部开源ctpbee量化项目,需要将数据直观展示给用户,而网上又没有关于vue的实现。在此背景下vue-kline孕育而生。

ctpbee是一个可供使用的交易微框架, 主要面对开发者, 希望能得到各位大佬的支持. 策略以及指标等工具都以ctpbee_** 形式发布. ctpbee只提供最小的内核. 本人崇尚开源, 无论你是交易者还是程序员, 只要你有新的想法以及对开源感兴趣, 欢迎基于ctpbee 开发出新的可用工具. 我会维护一个工具列表, 指引用户前往使用.

最后一句

如果这个能帮助到你, 请点击star来支持我噢. ^_^

如果你希望贡献代码, 欢迎加群一起讨论和或者提交PR QQ群号(: 756319143) 点进加入群聊以了解更多

最后一句 ----> 祝各位大佬都能赚钱 !

如果对你有用或者你喜欢,希望能在github上给我点颗星星,给我支持吧!github地址>>>

用vue.js实现的期货,股票的实时K线的更多相关文章

  1. 美年健康股票成交量和K线关系

    看下美年健康的股票,这次主要是研究下成交量和K线的关系,以最后5天为例子,股票下跌成交量降低,说明抛压很小,在最后3天,价格突破的时候,成交量是平时的两倍,说明有机构买入, 业绩部分还可以,全民健身是 ...

  2. 股票K线图-JfreeChart版

    http://blog.csdn.net/ami121/article/details/3953272 股票K线图-JfreeChart版 标签: jfreechartpropertiesapplet ...

  3. 利用JFreeChart绘制股票K线图完整解决方案

    http://blog.sina.com.cn/s/blog_4ad042e50100q7d9.html 利用JFreeChart绘制股票K线图完整解决方案 (2011-04-30 13:27:17) ...

  4. Vue.js 和 MVVM 小细节

    MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...

  5. Vue.js 2.0 和 React、Augular等其他框架的全方位对比

    引言 这个页面无疑是最难编写的,但也是非常重要的.或许你遇到了一些问题并且先前用其他的框架解决了.来这里的目的是看看Vue是否有更好的解决方案.那么你就来对了. 客观来说,作为核心团队成员,显然我们会 ...

  6. 窥探Vue.js 2.0 - Virtual DOM到底是个什么鬼?

    引言 你可能听说在Vue.js 2.0已经发布,并且在其中新添加如了一些新功能.其中一个功能就是"Virtual DOM". Virtual DOM是什么 在之前,React和Em ...

  7. vue.js学习笔记

    有了孩子之后,元旦就哪也去不了了(孩子太小),刚好利用一些时间,来公司充充电补补课,学习学习新技术,在这里做一个整理和总结.(选择的东西,既然热爱就把他做好吧!). 下来进入咱们的学习环节: 一.从H ...

  8. 从Vue.js窥探前端行业

    近年来前端开发趋势 1.旧浏览器逐渐淘汰,移动端需求增加: 旧浏览器主要指的是IE6-IE8,它是不支持ES5特性的:IE9+.chrome.sarafi.firefox对ES5是完全支持的,移动端大 ...

  9. vue.js初探

    前言 入手2016最火前端框架之一vue.js.大概从网上找了些资料看了下vue.js,从网上的资料来看只能惊叹其发展速度太快,让我意外的是其作者是华人的前提下作品这么受欢迎. 网上的博客和教程各种组 ...

随机推荐

  1. vi、wc、gzip、bzip2、tar、yum安装、dpek、用户信息操作等命令

    命令模式 输入"dd"即可将这一行删除 按下"p"即可粘贴 插入模式: a:从光标这个位置之后插入 A:在行尾插入 i:从光标之前插入 I:行首插入 o:在光标 ...

  2. woj1013 Barcelet 字符串 woj1014 Doraemon's Flashlight 几何

    title: woj1013 Barcelet 字符串 date: 2020-03-18 18:00:00 categories: acm tags: [acm,字符串,woj] 字符串,字典序. 1 ...

  3. KEIL5 使用STM32 官方例程

    1. 安装keil5,破解 网上很多安装包/教程,跳过 2.下载官方固件库 https://www.st.com/content/st_com/en.html 在这里找微处理器,STM32 stand ...

  4. oslab oranges 一个操作系统的实现 实验四 认识保护模式(三):中断异常

    实验目的: 理解中断与异常机制的实现机理 对应章节:第三章3.4节,3.5节 实验内容: 1. 理解中断与异常的机制 2. 调试8259A的编程基本例程 3. 调试时钟中断例程 4. 建立IDT,实现 ...

  5. C++含有无符号类型的表达式的计算

    unsigned u=10; int i=-42; cout<<i+i<<endl; cout<<u+i<<endl; 在第二个输出表达式中,相加前首先 ...

  6. 解决: "E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) ..."

    解决: "E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?& ...

  7. zsh terminal set infinity scroll height

    zsh terminal set infinity scroll height zsh Terminal 开启无限滚动 https://stackoverflow.com/questions/2761 ...

  8. window.navigator All In One

    window.navigator All In One navigator "use strict"; /** * * @author xgqfrms * @license MIT ...

  9. taro 渲染 html

    taro 渲染 html https://taro-docs.jd.com/taro/next/docs/next/html.html // Taro 更推荐使用框架自带的渲染 HTML 方式 // ...

  10. Node.js & ES modules & .mjs

    Node.js & ES modules & .mjs Node.js v13.9.0 https://nodejs.org/api/esm.html https://nodejs.o ...