效果:从后台获取回测数据,在前端动态展现,和聚宽实现的回测效果相仿

大体思路:先传一个[[int,0],[int,0],[int,0],[int,0],[int,0],...]格式的死数据到前端渲染x轴,这样在我们动态加载数据的时候就不会出现x轴动态的变化的尴尬场面了,但是还有一个问题就是0轴上的数据也会显示到数据框,这个时候我们就需要设置一个属性 enableMouseTracking: false 这个属性我找了好长时间,所以一定要记住!

index.html代码

  1. var chart = Highcharts.stockChart('container', {
  2. rangeSelector: {
  3. allButtonsEnabled: true
  4. },
  5. chart: {
  6. animation: false,
  7. showAxes: true
  8. },
  9. credits: { //版权信息配置
  10. enabled: false
  11. },
  12. tooltip: { // 数据提示框配置
  13. split: false,//把x轴和y轴放在一个图标里
  14. xDateFormat: '%Y年%m月%d日,%A',//鼠标移动到趋势线上时显示的日期格式
  15. shared: true,
  16. pointFormatter: function () {
  17. return '<span style="color: '+ this.series.color + '">\u25CF</span> '+ this.series.name+': <b>'+ (this.y*100).toFixed(3) + '%</b><br/>'
  18. }
  19. },
  20. xAxis: {
  21. crosshair: { // 十字准星线配置
  22. width: 1,
  23. color: "black"
  24. },
  25. type: 'datetime', // 时间轴
  26. tickmarkPlacement:"on", // 点和x轴对齐
  27. labels: {
  28. formatter: function () {
  29. return Highcharts.dateFormat("%Y-%m-%d", this.value);
  30. }
  31. },
  32. minTickInterval: 24
  33. },
  34. yAxis: {
  35. labels: {
  36. formatter: function () {
  37. return this.value*100+"%"; // y轴数据百分比
  38. }
  39. }
  40. },
  41. series: [{
  42. name:'',
  43. data:[],
  44. color:"black",
  45. enableMouseTracking: false //鼠标移动的时候0轴信息不显示
  46. },{
  47. name: '策略收益',
  48. data:[],
  49. color:"#058DC7"
  50. }]
  51. });
  52. var ws;
  53. var return_dic;
  54. var i=0;
  55. function run_py() {
  56. ws = new WebSocket("ws://127.0.0.1:8888/run_py/");
  57. var msg = {
  58. py_name: $("#py_name").val(),
  59. py_count: $("#py_count").val()
  60. };
  61. ws.onopen = function() {
  62. ws.send(JSON.stringify(msg));
  63. };
  64. // 思路:第0个数据列渲染一个0轴,其余数据列通过addpoint动态渲染
  65. ws.onmessage = function (evt) {
  66. return_dic = JSON.parse(evt.data);
  67. if ("date_false" in return_dic){
  68. chart.series[0].setData(return_dic.date_false); // 先把0轴渲染出来
  69. }else {
  70. console.log(chart.series[0].data[i].x);
  71. chart.series[1].addPoint([chart.series[0].data[i].x,return_dic.returns]); // 动态添加真实数据
  72. i+=1;
  73. }
  74. };
  75. }

  注意注意:一定是 (this.y*100).toFixed(3)而不是this.y.toFixed(5)*100,不然页面会有bug,踩过坑的人都懂

后端代码

  1. class EchoWebSocket(tornado.websocket.WebSocketHandler):
  2. def open(self):
  3. print("WebSocket opened")
  4.  
  5. def on_message(self, message): #主逻辑在这里写的,注意不要忘了发完数据关闭close掉连接,如果要求一直连着那就没必要关了
  6. self.write_message(u"You said: " + message)
  7.  
  8. def on_close(self):
  9. print("WebSocket closed")

highstaock+websocket实现动态展现的更多相关文章

  1. highstock+websocket实现动态展现

    效果:从后台获取回测数据,在前端动态展现,和聚宽实现的回测效果相仿 大体思路:先传一个[[int,0],[int,0],[int,0],[int,0],[int,0],...]格式的死数据到前端渲染x ...

  2. Python动态展现之一

    首先: def f(): print('first') def g(): f() g() def f(): print('second') g() 结果: >>> first sec ...

  3. web端百度地图API实现实时轨迹动态展现

    最近在工作中遇到了一个百度地图api中的难题,恐怕有的程序员可能也遇到过.就是实时定位并显示轨迹,网上大部分都是通过创建polyline对象贴到地图上.当然,百度地图的画线就是这样实现的,但是好多人会 ...

  4. iOS开发笔记-根据frame大小动态调整fontSize的自适应文本及圆形进度条控件的实现

    最近同样是新App,设计稿里出现一种圆形进度条的设计,如下: 想了想,圆形进度条实现起来不难,但是其中显示百分比的文本确需要自适应,虽然可以使用时自己设定文本字体的大小,但是这样显得很麻烦,也很low ...

  5. 数据可视化之powerBI技巧(十八)Power BI动态技巧:动态显示列和度量值

    今天分享一个可视化小技巧,如何在PowerBI的表格中动态显示需要的列? 就是这样的效果, 也就是根据切片器的筛选,来显示需要的列,做起来很简单,步骤如下: 01 逆透视表 进入Powerquery编 ...

  6. FK JavaScript之:ArcGIS JavaScript API之地图动画

    地图要素动画应用场景:动态显示地图上的要素的属性随着时间的改变而改变,并根据其属性的变化设置其渲染.比如:某水域项目中,随着时间的变化,动态展现水域的清淤进度 本文目的:对ArcGIS JavaScr ...

  7. 【读书笔记《Android游戏编程之从零开始》】11.游戏开发基础(SurfaceView 游戏框架、View 和 SurfaceView 的区别)

    1. SurfaceView 游戏框架实例 实例效果:就是屏幕上的文本跟着点击的地方移动,效果图如下: 步骤: 新建项目“GameSurfaceView”,首先自定义一个类"MySurfac ...

  8. ZK框架的分析与应用

    前言:本文是在下的在学习ZK官方文档时整理出来的初稿.本来里面有很多的效果图片和图片代码的.奈何博客园中图片不能粘贴上去,所以感兴趣的筒子们就将就吧.内容中,如有不好的地方,欢迎斧正! ZK框架的分析 ...

  9. Android自定义窗口动画

    第一步,设置出现和消失的xml 1.在res/anim下创建enter_anim.xml,设置窗口出现的动画 <?xml version="1.0" encoding=&qu ...

随机推荐

  1. 提高UI设计效率的4个技巧

    提高UI设计效率的4个技巧 如何提高UI设计的速度?在这里分享一些我观察到的常见问题和改善方式.当然,需要注意的地方何其多. 身为设计师的你,应该要了解工程实作的基本原理: 业界 NG 率:接近 10 ...

  2. SSE(Server-sent events)技术在web端消息推送和实时聊天中的使用

    最近在公司闲着没事研究了几天,终于搞定了SSE从理论到实际应用,中间还是有一些坑的. 1.SSE简介 SSE(Server-sent events)翻译过来为:服务器发送事件.是基于http协议,和W ...

  3. ava集合---HashSet的源码分析

    一.HasnSet概述 Hashset实现set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set的迭代顺序.特别是它不保证该顺序恒久不变.此类允许使用Null元素 一.HasnSe ...

  4. zabbix通过SNMP监控服务器硬件及构建触发器

    公司的服务器没装系统无法使用IPMI协议来监控服务器硬件信息,所以我们使用SNMP来获取,下面介绍如何通过SNMP监控服务器硬件信息. 1.HP服务器进入iLO开启SNMP协议. 2.查看服务器温度信 ...

  5. OC实现单选和多选按钮

    本代码库暂时有OC封装,改天有空在补一个Swift封装的,主要是因为swift不是那么熟,怕出错,半天找不到问题多尴尬呀! 先附上demo下载地址CSDN:http://download.csdn.n ...

  6. Win调整和小技巧

    推荐win下一些个人爱用的工具软件(以及使用心得)和一些系统调整方法,让win下不尽人意的设置发生小小变化,让整天摸着电脑的ITer们的生活更有乐趣. 本人酷爱收集一些好用的软件,若各位也对某个或某些 ...

  7. 如何减小ios安装包大小

    以前的老文章了,搬到cnblog 更小的安装包意味着更快的下载安装速度,也往往意味着更快的加载运行速度,是优化ios应用的一个重要方面,本文主要参考<减小iOS应用程序的大小>,在实际测试 ...

  8. iOS中CocoaPods的安装及错误详解

    什么是CocoaPods CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为"Pods"的依赖库(这些类库必须是Coc ...

  9. JUnit单元测试遇到的问题及解决思路

    JUnit是Java单元测试框架,我们在对开发的系统进行单元测试的时候,也遇到了如何测试多个测试用例的问题.  背景:我们的所有测试用例都保存在Excel文件中,该文件包含测试用例和预期输出.我们希望 ...

  10. nyoj 公约数和公倍数

    公约数和公倍数 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 小明被一个问题给难住了,现在需要你帮帮忙.问题是:给出两个正整数,求出它们的最大公约数和最小公倍数. ...