用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. Navicat 使用 SSH 通道

    使用 Navicat for MySQL 通过跳板机登录 Mysql 时(使用 SSH 通道) 报错如下: SSH : Expected key exchange group packet from ...

  2. 数位dp【模板 + 老年康复】

    学习博客: 戳这里 戳这里 "在信息学竞赛中,有这样一类问题:求给定区间中,满足给定条件的某个D 进制数或此类数的数量.所求的限定条件往往与数位有关,例如数位之和.指定数码个数.数的大小顺序 ...

  3. Linux下/bin和/sbin的区别

    bin: bin为binary的简写主要放置一些系统的必备执行档例如:cat.cp.chmod df.dmesg.gzip.kill.ls.mkdir.more.mount.rm.su.tar等./u ...

  4. how to auto open demo and create it in a new codesandbox

    how to auto open demo and create it in a new codesandbox markdown & iframe https://ant.design/do ...

  5. string logo(字符画),website,html5,css3,atom ide

    1 <!DOCTYPE html> <!-- Powered by... _ _ ____. ______ ._______. _______ ___ ___ sssssssss \ ...

  6. web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)

    web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...

  7. set CSS style in js solutions All In One

    set CSS style in js solutions All In One css in js set each style property separately See the Pen se ...

  8. Microsoft Solitaire Collection

    Microsoft Solitaire Collection game https://zone.msn.com/gameplayer/gameplayerHTML.aspx?game=mssolit ...

  9. 同城速递 & 同城跑腿 & 竞品分析

    同城速递 & 同城跑腿 & 竞品分析 toC / toB 闪送 https://www.ishansong.com/ https://www.tianyancha.com/compan ...

  10. js 在浏览器中使用 monaco editor

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...