对单个股票的财务报告数据展示及简单的分析(是否是连续增长,增速等等)。 一般的开发流程:
后台准备基础财务数据前端或后台计算显示数据及衍生数据。 这样每次增加数据都需要前端开发根据衍生数据计算文档开发。 我们希望需要所有的数据的计算过程都有业务人员来完成,前端只需要做UI数据展示就可以。只要前端把显示UI完成, 后续业务调整由业务人员来完成,不再依赖前端开发。demo: https://opensource.zealink.com/hqweb/demo/sectiondatatest.html
前几章我们说过,基于我们的HQChart指标执行器可以对基础数据进行计算,可以获得衍生数据指标。 基础我们的指标计算器, 我们增加了截面数据获取函数SF(年份, 报告期, ‘字段名’),返回这期的财务数据字段数据 HQChart使用教程14-分析家语法执行器
SF(年,报告期,字段名) 返回截面报表查询字段的数据。 年: 数值型 报告期: 1-4 1=1季度 2=半年报 3=3季度 4=年报 字段名: ‘流动资产’、‘货币资金’、‘存货’、 ‘流动负债’、‘非流动负债’、‘三项费用’、‘投资收益’、‘归母净利润’、 ‘扣非净利润’、‘扣非每股收益’、‘加权平均净资产收益’、‘在建工程’、‘累计折旧’、‘少数股东利润’、‘汇兑损益’、‘坏账计提’、‘固定资产’、‘当期折旧’、 ‘营业总收入’、‘主营业务利润’、 ‘营业利润’、 ‘净利润’、‘应收账款’、‘财务费用’、‘经营性现金流’、‘资产总计’、‘负债总计’、 ‘所有者权益总计’、 ‘毛利率’、 ‘每股资本公积金’、 ‘每股未分配利润’、‘每股收益’、 ‘每股净资产’、 ‘每股经营性现金流’、 ‘扣非净利润涨幅’、‘扣非净利润涨速’、 ‘净利润涨幅’、 ‘资产负债率’、 ‘利润同比’
计算最近3年 1季度的营业总收入是否连续增长 麦语法脚本: 设置参数 YY为年份变量, YY=2019
DATA2017=SF(YY-2,1,'营业总收入'); DATA2018=SF(YY-1,1,'营业总收入'); DATA2019=SF(YY,1,'营业总收入'); 营业总收入2019一季度:DATA2019; 营业总收入2018一季度:DATA2018; 营业总收入2017一季度:DATA2017; 比上一年:IF(DATA2019>DATA2018, '增加','减少'); 连续增长:IF( DATA2019>DATA2018 AND DATA2018>DATA2017, '是','否');把我们上面的脚本写到前端网页就完成 这个数据的计算了。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <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> <div id='index_data1' style='margin:10px 10px 10px 10px;'> <table class="table"> </table> </div> <div id='index_script1' style='margin:10px 10px 10px 10px;'></div> <div id='index_data2' style='margin:10px 10px 10px 10px;'> <table class="table"></table> </div> <div id='index_script2' style='margin:10px 10px 10px 10px;'></div> <script src="content/js/jquery.min.js"></script> <script src="../jscommon/umychart.js"></script> <script src="../jscommon/umychart.complier.js"></script> <script> function SectionIndex(obj) { this.Symbol='600000.sh'; this.TableID; this.Name; this.ID; this.Args=[]; this.Script; this.IndexControl; if (obj) { if (obj.Symbol) this.Symbol=obj.Symbol; if (obj.Name) this.Name=obj.Name; if (obj.ID) this.ID=obj.ID; if (obj.Args) this.Args=obj.Args; if (obj.Script) this.Script=obj.Script; if (obj.TableID) this.TableID=obj.TableID; } this.Run=function() { var self=this; var obj= { Name:this.Name, ID:this.ID, Args:this.Args, Script: this.Script, ErrorCallback:function(error) { self.ExecuteError(error) }, FinishCallback:function(data, jsExectute) { self.ExecuteFinish(data, jsExectute) }, IsSectionMode:true, }; var stockObj= { HQDataType:HQ_DATA_TYPE.KLINE_ID, Stock: {Symbol:this.Symbol}, Request: { MaxDataCount: 500, MaxMinuteDayCount:5 }, Period:0 , Right:0 }; this.IndexControl=new ScriptIndexConsole(obj); this.IndexControl.ExecuteScript(stockObj); } this.ExecuteError=function(error) { console.log('[SectionIndex::ExecuteError] Error: ',error) } this.ExecuteFinish=function(data, jsExectute) { //收到数据显示在页面上 console.log('[SectionIndex::ExecuteFinish] data, jsExectute ',data, jsExectute); var table=$(this.TableID)[0]; var tr=$('<tr>')[0]; var tb=$('<td>')[0]; tb.innerText=this.Name; tr.append(tb); tb=$('<td>')[0]; tb.innerText=this.Symbol; tr.append(tb); table.appendChild(tr); var outVar=data.Out; for(var i in outVar) { var item=outVar[i]; tr=$('<tr>')[0]; tb=$('<td>')[0]; tb.innerText=item.Name; tr.append(tb); tb=$('<td>')[0]; tb.innerText=item.Data; tr.append(tb); table.appendChild(tr); } } } $(function () { var index=new SectionIndex( { Name:'财务数据', ID:'1111', Symbol:'600000.sh', Args:[ { Name:'YY', Value:2018} ], Script: //脚本 "投资收益:SF(YY,2,'投资收益');\n"+ "营业利润:SF(YY,2,'营业利润');" , TableID:'#index_data1 .table' } ); $("#index_script1 ")[0].innerText='脚本:\n'+index.Script; index.Run(); var index2=new SectionIndex( { Name:'财务数据', ID:'1112', Symbol:'600000.sh', Args:[ { Name:'YY', Value:2019} ], Script: //脚本 "DATA2017=SF(YY-2,1,'营业总收入');\n" + "DATA2018=SF(YY-1,1,'营业总收入');\n" + "DATA2019=SF(YY,1,'营业总收入');\n" + "营业总收入2019一季度:DATA2019;\n" + "营业总收入2018一季度:DATA2018;\n" + "营业总收入2017一季度:DATA2017;\n" + "比上一年:IF(DATA2019>DATA2018, '增加','减少');\n" + "连续增长:IF( DATA2019>DATA2018 AND DATA2018>DATA2017, '是','否');", TableID:'#index_data2 .table' } ); $("#index_script2 ")[0].innerText='脚本:\n'+index2.Script; index2.Run(); }) </script> </body> </html>后续我们也会根据业务需求增加其他的截面数据函数。以满足各种业务展示
如果还有问题可以加交流QQ群: 950092318
地址:https://github.com/jones2000/HQChart
