HQChart使用教程14

编程入门 行业动态 更新时间:2024-10-17 00:26:05

HQChart使用<a href=https://www.elefans.com/category/jswz/34/1771193.html style=教程14"/>

HQChart使用教程14

分析家语法执行器

  • 分析家语法执行器
  • 为什么要开发一个分析家语法执行器
  • Demo页面部分代码
  • 执行结果格式
  • HQChart代码地址

分析家语法执行器

HQChart 内置一个分析家语法的执行器, 把分析家脚本通过词法,语法分析构建一个抽象语法树(AST), 执行器通过AST执行, 最后获得数据。 (具体细节我就不多讲了,很枯燥,有兴趣的可以看下“编译原理”, 都是一样的标准化流程)

为什么要开发一个分析家语法执行器

目前市面上的H5K线图指标,无非就是前端计算或后台计算。

  1. 前端计算:通过基础的K线数据(开,高,低,收,成交金额,成交量,外加一些财务数据),使用js 来计算出对应的指标数据,
    好处呢: 降低指标计算对服务器的压力,因为都在本地计算了。
    弊端呢
  • 新加指标需要前端开发人员把指标翻译成js语言, 并且需要发布新的前端页面
  • 对前端开发人员开发水准要求比较高,执行器里面需要很多金融的计算函数如协方差,beta系数等都需要js来完成。
  • 指标基本就不能保密, 都是前端js,懂点js的人都可以查看你的代码
  1. 后端计算: 也是通过基础的K线数据, 单可以使用任何服务器开发语言来计算指标数据(c++, , nodejs. py …)
    好处呢
  • 可选择的开发人员很多,高手比较好招,不需要局限与js人员, 毕竟js的人大部分都是从事UI方面开发,让他们做算法基本会把他们逼疯的。
  • 增加指标只需要后台升级。
  • 指标计算过程前端是看不到的, 保密性比较好。
    坏处呢: 每次都需要从服务器请求指标,在交易时间段, 对服务器压力比较打。 就比方说1个K线图, 你设置30s更新一次K线数据, 那用户多了对后台服务器的压力和流量都是很大的考验

基于上面前后端优劣, 我们把分析家语法使用js重新实现了一遍。我们为了让脚本能同时在前端和后台都可以执行, 我们使用js来现实,后台直接可以使用nodejs, 调用我们的分析家执行器js代码。 这样一套代码前后台都通过。 nodejs性能基本和py差不多, 如果你要追求速度,那只能是用c/c++去实现了。

Demo页面部分代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".dtd">
<html xmlns="">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>指标执行测试</title>   
</head>  
<body><script src="content/js/jquery.min.js"></script><script src="../jscommon/umychartwork.js"></script><script src="../jscommon/umychart.js"></script><script src="../jscommon/umychartplier.js"></script><script>$(function (){var obj=  //分析家脚本,{Name:'测试', ID:'11111', Args:[ { Name:'M1', Value:5}, { Name:'M2', Value:10 }, { Name:'M3', Value:20} ],Script: //脚本'MA1:MA(CLOSE,M1);\n\MA2:MA(CLOSE,M2);\n\MA3:MA(CLOSE,M3);',ErrorCallback:ExecuteError,   //执行错误回调FinishCallback:ExecuteFinish, //计算结果回调};var indexConsole=new ScriptIndexConsole(obj);	//创建一个分析家的语法执行器var stockObj=  //指标执行的股票{HQDataType:HQ_DATA_TYPE.KLINE_ID, //K线数据Stock: {Symbol:'600000.sh'},      //股票代码Request: { MaxDataCount: 500, MaxMinuteDayCount:5 }, //计算数据个数Period:0 ,  //周期 0 日线 1 周线 2 月线 3 年线 Right:1    //复权 0 不复权 1 前复权 2 后复权};indexConsole.ExecuteScript(stockObj);	//执行指标})function ExecuteError(error){console.log('[ExecuteError] Error: ',error)}function ExecuteFinish(data, jsExectute)	//接收执行完成以后的数据{console.log('[ExecuteFinish] data, jsExectute ',data, jsExectute)}</script>  
</body>  
</html>

nodejs也是一样的方法调用。导出 ScriptIndexConsole,HQ_DATA_TYPE。

执行结果格式

返回结果如下图:
Date 数据的日期数组
Out 脚本执行结果返回,一个变量一个数组, 数据对应的日期就是Date的数组
Stock 执行的股票名称 代码
JSExecute 执行器实例

如果你已经开发了一个h5k线图,那可以直接内嵌我们的分析家语法执行器,把执行器计算好的指标显示在你的h5K线图上。
如果你需要策略选股,或策略参数调优都可以使用我们的执行器,使用nodejs并行批量的执行一个板块的股票。

如果还有问题可以加交流QQ群: 950092318

HQChart代码地址

地址:

更多推荐

HQChart使用教程14

本文发布于:2024-02-07 09:56:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755689.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:教程   HQChart

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!