hqchart 1.1.12644 → 1.1.12649
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/umychart.vue.js +19 -10
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +71 -3
- package/src/jscommon/umychart.js +25 -7
- package/src/jscommon/umychart.resource/js/codemirror/javascript.js +1 -1
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +97 -11
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +97 -11
package/lib/umychart.vue.js
CHANGED
|
@@ -3943,7 +3943,7 @@ if(this.Position.Type==0)this.Canvas.textAlign='left';else if(this.Position.Type
|
|
|
3943
3943
|
var xRect=x-margin[0];var yRect=y-margin[2];var bgWidth=textWidth+margin[2]+margin[3];var bgHeight=drawInfo.Font.Height+margin[0]+margin[1];if(this.TextBG.Color){this.Canvas.fillStyle=this.TextBG.Color;this.Canvas.fillRect(xRect,yRect,bgHeight,bgWidth);}if(this.TextBG.Border){this.Canvas.strokeStyle=this.TextBG.Border;this.Canvas.strokeRect(ToFixedPoint(xRect),ToFixedPoint(yRect),ToFixedRect(bgHeight),ToFixedRect(bgWidth));}}this.Canvas.textBaseline="bottom";this.Canvas.textAlign="left";this.Canvas.fillStyle=drawInfo.Text.Color;this.Canvas.save();this.Canvas.translate(x,y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,0,0);this.Canvas.restore();}else{var x=drawInfo.X;var y=drawInfo.Y;if(drawInfo.Text.Align=="right")x=x-textWidth;else if(drawInfo.Text.Align=="center")x=x-textWidth/2;if(drawInfo.Text.Baseline=="top")y+=drawInfo.Font.Height;else if(drawInfo.Text.Baseline=="middle")y+=drawInfo.Font.Height/2;if(this.TextBG&&(this.TextBG.Color||this.TextBG.Border)){var margin=this.TextBG.Margin;//0=上 1=下 2=左 3=右
|
|
3944
3944
|
var xRect=x-margin[2];var yRect=y-drawInfo.Font.Height-margin[1];var bgWidth=textWidth+margin[2]+margin[3];var bgHeight=drawInfo.Font.Height+margin[0]+margin[1];if(this.TextBG.Color){this.Canvas.fillStyle=this.TextBG.Color;this.Canvas.fillRect(xRect,yRect,bgWidth,bgHeight);}if(this.TextBG.Border){this.Canvas.strokeStyle=this.TextBG.Border;this.Canvas.strokeRect(ToFixedPoint(xRect),ToFixedPoint(yRect),ToFixedRect(bgWidth),ToFixedRect(bgHeight));}}this.Canvas.textBaseline="bottom";this.Canvas.textAlign="left";this.Canvas.fillStyle=drawInfo.Text.Color;this.Canvas.fillText(text,x,y);}};}function ChartTradeIcon(){this.newMethod=IChartPainting;//派生
|
|
3945
3945
|
this.newMethod();delete this.newMethod;this.ClassName='ChartTradeIcon';//类名
|
|
3946
|
-
this.TextAlign='center';this.TextBaseline='middle';this.SVG={Family:"iconfont",Size:12};this.AryIcon;this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.Data||!this.Data.Data)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon))return;this.Canvas.font=this.SVG.Size+'px '+this.SVG.Family;this.Canvas.textAlign=this.TextAlign;this.Canvas.textBaseline='middle';var yOffset=0;if(this.TradeType=="BUY"||this.TradeType=="BUYSHORT"){this.Canvas.textBaseline="
|
|
3946
|
+
this.TextAlign='center';this.TextBaseline='middle';this.SVG={Family:"iconfont",Size:12};this.AryIcon;this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.Data||!this.Data.Data)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon))return;this.Canvas.font=this.SVG.Size+'px '+this.SVG.Family;this.Canvas.textAlign=this.TextAlign;this.Canvas.textBaseline='middle';var yOffset=0;if(this.TradeType=="BUY"||this.TradeType=="BUYSHORT"){this.Canvas.textBaseline="top";yOffset+2;}else if(this.TradeType=="SELL"||this.TradeType=="SELLSHORT"){this.Canvas.textBaseline="bottom";yOffset=-2;}var bHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();if(bHScreen)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;var border=this.ChartFrame.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(value))continue;if(value<=0)continue;var iconItem=this.AryIcon[i];if(!IFrameSplitOperator.IsNumber(iconItem.Value)||!iconItem.Icon)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var y=this.GetYFromData(iconItem.Value,false);this.Canvas.fillStyle=iconItem.Color;if(dataWidth>2)x=ToFixedPoint(x);this.DrawTradeIcon(iconItem.Icon,x,y+yOffset,bHScreen);}};this.DrawTradeIcon=function(text,x,y,isHScreen){if(isHScreen){this.Canvas.save();this.Canvas.translate(y,x);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,0,0);this.Canvas.restore();}else{this.Canvas.fillText(text,x,y);}};this.GetMaxMin=function(){var range={Max:null,Min:null};if(!this.Data||!this.Data.Data)return range;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon))return range;var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;if(this.ChartFrame.GlobalOption&&this.ChartFrame.GlobalOption.IsValueFullRange){start=0;xPointCount=this.Data.Data.length;}for(var i=start,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(value))continue;if(value<=0)continue;var iconItem=this.AryIcon[i];if(!IFrameSplitOperator.IsNumber(iconItem.Value)||!iconItem.Icon)continue;if(range.Max==null)range.Max=iconItem.Value;else if(range.Max<iconItem.Value)range.Max=iconItem.Value;if(range.Min==null)range.Min=iconItem.Value;else if(range.Min>iconItem.Value)range.Min=iconItem.Value;}return range;};}function ChartDrawText(){this.newMethod=IChartPainting;//派生
|
|
3947
3947
|
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawText';//类名
|
|
3948
3948
|
this.Color="rgb(255,193,37)";//线段颜色
|
|
3949
3949
|
this.TextFont="14px 微软雅黑";//线段宽度
|
|
@@ -5503,7 +5503,7 @@ if(IFrameSplitOperator.IsNonEmptyArray(this.OverlayChartPaint)){for(var i=0;i<th
|
|
|
5503
5503
|
var pixelRatio=GetDevicePixelRatio();if(isHScreen){if(this.Frame.ChartBorder.Right<5*pixelRatio)return;var left=2;var bottom=this.Frame.ChartBorder.Right/2;//上下居中显示
|
|
5504
5504
|
var right=this.Frame.ChartBorder.GetHeight();var xText=this.Frame.ChartBorder.GetChartWidth();var yText=this.Frame.ChartBorder.GetTop();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);}else{if(this.Frame.ChartBorder.Top<5*pixelRatio)return;}this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.font=this.Font;var position={Left:left,Bottom:bottom,IsHScreen:isHScreen};var titleData=this.GetFormatTitle({Data:item});if(titleData&&IFrameSplitOperator.IsNonEmptyArray(titleData.AryText)){for(var i=0;i<titleData.AryText.length;++i){var item=titleData.AryText[i];if(!this.DrawText(item.Text,item.Color,position))break;}}};this.Draw=function(){if(!this.IsShow)return;if(this.CursorIndex==null||!this.Data||this.Data.length<=0){this.OnDrawEventCallback(null);return;}this.Canvas.font=this.Font;this.SpaceWidth=this.Canvas.measureText('0').width;var index=this.CursorIndex;index=parseInt(index.toFixed(0));var dataIndex=this.Data.DataOffset+index;if(dataIndex>=this.Data.Data.length)dataIndex=this.Data.Data.length-1;if(dataIndex<0){this.OnDrawEventCallback(null);return;}if(this.IsShowLastData())//鼠标不在图形上 显示最后一条数据
|
|
5505
5505
|
{dataIndex=this.Data.Data.length-1;}var item=this.Data.Data[dataIndex];this.OnDrawEventCallback(item);this.Canvas.save();this.DrawItem(item);this.Canvas.restore();};this.OnDrawEventCallback=function(drawData){var bDrawEvent=this.OnDrawEvent&&this.OnDrawEvent.Callback;var bMouseMoveEvent=this.OnMouseMoveEvent&&this.OnMouseMoveEvent.Callback;if(!bDrawEvent&&!bMouseMoveEvent)return;var data={Draw:drawData,Name:this.ClassName};if(this.Data&&this.Data.Data){var index=Math.abs(this.CursorIndex);index=parseInt(index.toFixed(0));var dataIndex=this.Data.DataOffset+index;var dataCount=this.Data.Data.length;data.DataIndex=dataIndex;data.DataCount=dataCount;}//叠加股票
|
|
5506
|
-
if(IFrameSplitOperator.IsNonEmptyArray(this.OverlayChartPaint)){data.OverlayStock=[];for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Symbol||!item.Title)continue;data.OverlayStock.push({Symbol:item.Symbol,Name:item.Title,Data:item.Data});}}if(bDrawEvent)this.OnDrawEvent.Callback(this.OnDrawEvent,data,this);if(bMouseMoveEvent)this.OnMouseMoveEvent.Callback(this.OnMouseMoveEvent,data,this);};this.GetColor=function(price,yclse){if(price>yclse)return this.UpColor;else if(price<yclse)return this.DownColor;else return this.UnchagneColor;};this.OnUnchangeTitleColor=function(event,sendData){if(!event||!event.Callback)return false;sendData.ClassName=this.ClassName;event.Callback(event,sendData,this);if(sendData&&sendData.TitleColor)return true;return false;};this.DrawText=function(title,color,position){if(!title)return true;var isHScreen=this.Frame.IsHScreen===true;var right=this.Frame.ChartBorder.GetRight();if(isHScreen)right=this.Frame.ChartBorder.GetHeight();this.Canvas.fillStyle=color;var textWidth=this.Canvas.measureText(title).width;if(position.Left+textWidth>right)return false;if(this.IsShow)this.Canvas.fillText(title,position.Left,position.Bottom,textWidth);position.Left+=textWidth+this.SpaceWidth;return true;};//计算K线指标标题信息
|
|
5506
|
+
if(IFrameSplitOperator.IsNonEmptyArray(this.OverlayChartPaint)){data.OverlayStock=[];for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Symbol||!item.Title)continue;data.OverlayStock.push({Symbol:item.Symbol,Name:item.Title,Data:item.Data,Color:item.Color});}}if(bDrawEvent)this.OnDrawEvent.Callback(this.OnDrawEvent,data,this);if(bMouseMoveEvent)this.OnMouseMoveEvent.Callback(this.OnMouseMoveEvent,data,this);};this.GetColor=function(price,yclse){if(price>yclse)return this.UpColor;else if(price<yclse)return this.DownColor;else return this.UnchagneColor;};this.OnUnchangeTitleColor=function(event,sendData){if(!event||!event.Callback)return false;sendData.ClassName=this.ClassName;event.Callback(event,sendData,this);if(sendData&&sendData.TitleColor)return true;return false;};this.DrawText=function(title,color,position){if(!title)return true;var isHScreen=this.Frame.IsHScreen===true;var right=this.Frame.ChartBorder.GetRight();if(isHScreen)right=this.Frame.ChartBorder.GetHeight();this.Canvas.fillStyle=color;var textWidth=this.Canvas.measureText(title).width;if(position.Left+textWidth>right)return false;if(this.IsShow)this.Canvas.fillText(title,position.Left,position.Bottom,textWidth);position.Left+=textWidth+this.SpaceWidth;return true;};//计算K线指标标题信息
|
|
5507
5507
|
this.GetKLineCalculateTitle=function(){if(!this.HQChart)return null;var klineCalulate=this.HQChart.GetKLineCalulate();if(!klineCalulate||!klineCalulate.GetTitle)return null;return klineCalulate.GetTitle();};this.IsShowLastData=function(){var isShow=false;if(this.DrawStatus&&this.DrawStatus.IsTitleShowLatestData){var status=this.DrawStatus;if(!IFrameSplitOperator.IsNumber(status.FrameID)||status.FrameID<0)isShow=true;else if(status.CorssCursorTouchEnd&&status.IsOnTouch==false)isShow=true;}return isShow;};}function DynamicMinuteTitlePainting(){this.newMethod=DynamicKLineTitlePainting;//派生
|
|
5508
5508
|
this.newMethod();delete this.newMethod;this.ClassName='DynamicMinuteTitlePainting';this.SpaceWidth=1*GetDevicePixelRatio();this.YClose;this.IsShowDate=false;//标题是否显示日期
|
|
5509
5509
|
this.IsShowTime=true;//标题是否显示时间
|
|
@@ -10819,7 +10819,12 @@ return result;};//BARPOS 返回从第一根K线开始到当前的周期数。
|
|
|
10819
10819
|
//2、本机已有的第一根K线上返回值为1。
|
|
10820
10820
|
this.GetBarPos=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i123=0;_i123<lCount;++_i123){result.push(_i123+1);}return result;};this.GetTotalTradeMinuteCount=function(){var data=g_MinuteCoordinateData.GetCoordinateData(this.Symbol);if(data&&data.Count>0)return data.Count-1;return 242;};this.GetTotalBarsCount=function(){var lCount=this.Data.Data.length;return lCount;};this.GetIsLastBar=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i124=0;_i124<lCount;++_i124){if(_i124==lCount-1)result.push(1);else result.push(0);}return result;};//BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置.
|
|
10821
10821
|
//例如:BARSTATUS=2表示当天是该数据的最后一个周期.
|
|
10822
|
-
this.GetBarStatus=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var i=0;i<lCount;++i){if(i==0)result[i]=1;else if(i==lCount-1)result[i]=2;else result[i]=0;}return result;}
|
|
10822
|
+
this.GetBarStatus=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var i=0;i<lCount;++i){if(i==0)result[i]=1;else if(i==lCount-1)result[i]=2;else result[i]=0;}return result;};//求真实波幅, (最高-最低),(最高-昨收),(最低-昨收)三者绝对值中的最大值.
|
|
10823
|
+
//用法:
|
|
10824
|
+
//TR,求真实波幅.
|
|
10825
|
+
//例如:ATR:=MA(TR,10);
|
|
10826
|
+
//表示求真实波幅的10周期均值
|
|
10827
|
+
this.GetTRData=function(node){var result=[];if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return result;var lCount=this.Data.Data.length;for(var i=0;i<lCount;++i){var item=this.Data.Data[i];var max=null;if(IFrameSplitOperator.IsNumber(item.High)&&IFrameSplitOperator.IsNumber(item.Low)){var value=Math.abs(item.High-item.Low);if(max==null||max<value)max=value;}if(IFrameSplitOperator.IsNumber(item.High)&&IFrameSplitOperator.IsNumber(item.YClose)){var value=Math.abs(item.High-item.YClose);if(max==null||max<value)max=value;}if(IFrameSplitOperator.IsNumber(item.YClose)&&IFrameSplitOperator.IsNumber(item.Low)){var value=Math.abs(item.Low-item.YClose);if(max==null||max<value)max=value;}result[i]=max;}return result;};//融资融券函数
|
|
10823
10828
|
this.GetMarginCacheData=function(id,node){var jobID=JS_EXECUTE_JOB_ID.GetMarginJobID(id);if(!jobID)this.Execute.ThrowUnexpectedNode(node,'不支持MARGIN('+id+')');if(this.MarginData.has(jobID))return this.MarginData.get(jobID);return[];};//下融资融券
|
|
10824
10829
|
this.GetMarginData=function(jobID){if(this.MarginData.has(jobID))return this.Execute.RunNextJob();JSConsole.Complier.Log('[JSSymbolData::GetMarginData] jobID=',jobID);var self=this;var fieldList=["name","date","symbol"];switch(jobID){case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE://融资融券余额
|
|
10825
10830
|
fieldList.push("margin.balance");break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE://融资占比
|
|
@@ -11182,7 +11187,8 @@ this.ConstVarTable=new _map2.default([//个股数据
|
|
|
11182
11187
|
["ZDBLOCKNUM",null],//所属自定义板块的个数
|
|
11183
11188
|
["HYSYL",null],//指数市盈率或个股所属行业的市盈率
|
|
11184
11189
|
["HYSJL",null],//指数市净率或个股所属行业的市净率
|
|
11185
|
-
['DRAWNULL',null],["NULL",null],["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null]
|
|
11190
|
+
['DRAWNULL',null],["NULL",null],["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null],["TR",null],//真实波幅
|
|
11191
|
+
["AUTOFILTER",null]]);this.SymbolData=new JSSymbolData(this.AST,option,this);this.Algorithm=new JSAlgorithm(this.ErrorHandler,this.SymbolData);this.Draw=new JSDraw(this.ErrorHandler,this.SymbolData);this.JobList=[];//执行的任务队列
|
|
11186
11192
|
this.UpdateUICallback=null;//回调
|
|
11187
11193
|
this.CallbackParam=null;this.IsSectionMode=false;if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam){this.CallbackParam=option.CallbackParam;if(this.CallbackParam.HQChart)this.GetEventCallback=function(id){return _this45.CallbackParam.HQChart.GetEventCallback(id);};}if(option.Arguments)this.Arguments=option.Arguments;if(option.IsSectionMode)this.IsSectionMode=option.IsSectionMode;if(option.Self)this.IndexCtrl=option.Self;//调试模式信息
|
|
11188
11194
|
if(IFrameSplitOperator.IsNumber(option.Debug))this.Debug=option.Debug;if(option.DebugFilter)this.DebugFilter=option.DebugFilter;}this.Execute=function(){this.OutVarTable=[];this.VarTable=new _map2.default();this.VarDrawTable=new _map2.default();//绘图变量表
|
|
@@ -11212,7 +11218,8 @@ case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINONE:return this.SymbolData.GetFinOne(jobI
|
|
|
11212
11218
|
return this.SymbolData.GetVariantData(jobItem);case JS_EXECUTE_JOB_ID.JOB_CUSTOM_VARIANT_DATA:return this.SymbolData.GetCustomVariantData(jobItem);case JS_EXECUTE_JOB_ID.JOB_CUSTOM_FUNCTION_DATA:return this.SymbolData.GetCustomFunctionData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_CUSTOM_API_DATA:return this.SymbolData.DownloadCustomAPIData(jobItem);case JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX:return this.SymbolData.CallScriptIndex(jobItem);case JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT:if(this.Debug===1&&this.DebugFilter)return this.DebugRun();else return this.Run();}};this.ReadSymbolData=function(name,node){switch(name){case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':case"OPI":case'VOLINSTK':case"SETTLE":case"QHJSJ":case"ZSTJJ":case"ISEQUAL"://平盘
|
|
11213
11219
|
case"ISUP"://收阳
|
|
11214
11220
|
case"ISDOWN"://收阴
|
|
11215
|
-
return this.SymbolData.GetSymbolCacheData(name);case'VOLR':return this.SymbolData.GetVolRateCacheData(node)
|
|
11221
|
+
return this.SymbolData.GetSymbolCacheData(name);case'VOLR':return this.SymbolData.GetVolRateCacheData(node);case"TR"://TR,求真实波幅.
|
|
11222
|
+
return this.SymbolData.GetTRData(node);//大盘数据
|
|
11216
11223
|
case'INDEXA':case'INDEXC':case'INDEXH':case'INDEXH':case'INDEXO':case'INDEXV':case'INDEXL':case'INDEXADV':case'INDEXDEC':return this.SymbolData.GetIndexCacheData(name);case'CURRBARSCOUNT':return this.SymbolData.GetCurrBarsCount();case"BARPOS":return this.SymbolData.GetBarPos();case"TOTALBARSCOUNT":return this.SymbolData.GetTotalBarsCount();case"TOTALFZNUM":return this.SymbolData.GetTotalTradeMinuteCount();case'ISLASTBAR':return this.SymbolData.GetIsLastBar();case"BARSTATUS":return this.SymbolData.GetBarStatus();case"TOTALCAPITAL":case'CAPITAL':case'EXCHANGE':case"HYBLOCK":case"DYBLOCK":case"GNBLOCK":case"FGBLOCK":case"ZSBLOCK":case"ZHBLOCK":case"ZDBLOCK":case"HYZSCODE":case"GNBLOCKNUM":case"FGBLOCKNUM":case"ZSBLOCKNUM":case"ZHBLOCKNUM":case"ZDBLOCKNUM":case"HYSYL":case"HYSJL":return this.SymbolData.GetStockCacheData({VariantName:name,Node:node});case'SETCODE':return this.SymbolData.SETCODE();case'CODE':return this.SymbolData.GetSymbol();case'STKNAME':return this.SymbolData.GetName();case"TIME":return this.SymbolData.TIME();case"TIME2":return this.SymbolData.TIME2();case'DATE':return this.SymbolData.DATE();case"DATETIME":return this.SymbolData.DateTime();case'YEAR':return this.SymbolData.YEAR();case'MONTH':return this.SymbolData.MONTH();case'WEEK':case"WEEKDAY":return this.SymbolData.WEEK();case"DAY":return this.SymbolData.DAY();case'PERIOD':return this.SymbolData.PERIOD();case'FROMOPEN':return this.SymbolData.GetLatestIndexCacheData('FROMOPEN');case"HOUR":return this.SymbolData.HOUR();case"MINUTE":return this.SymbolData.MINUTE();case'DRAWNULL':case"NULL":return this.SymbolData.GetDrawNull();case'ADVANCE':case'DECLINE':return this.SymbolData.GetIndexIncreaseCacheData(name,this.SymbolData.Symbol,node);case"TQFLAG":return this.SymbolData.Right;case"MACHINEDATE":{var now=new Date();return now.getFullYear()*10000+now.getMonth()*1*100+now.getDate()-19000000;}case"MACHINETIME":{var now=new Date();return now.getHours()*10000+now.getMinutes()*1*100+now.getSeconds();}case"MACHINEWEEK":{var now=new Date();return now.getDay();}case"WEEKOFYEAR":return this.SymbolData.WEEKOFYEAR();case"DAYSTOTODAY":return this.SymbolData.DAYSTOTODAY();}};this.ReadCustomVariant=function(name,node){return this.SymbolData.GetStockCacheData({VariantName:name,Node:node});};//读取变量
|
|
11217
11224
|
this.ReadVariable=function(name,node){if(this.ConstVarTable.has(name)){var data=this.ConstVarTable.get(name);if(data==null)//动态加载,用到再加载
|
|
11218
11225
|
{data=this.ReadSymbolData(name,node);this.ConstVarTable.set(name,data);}return data;}if(g_JSComplierResource.IsCustomVariant(name))return this.ReadCustomVariant(name,node);//读取自定义变量
|
|
@@ -11281,7 +11288,7 @@ this.ConstVarTable=new _map2.default([//个股数据
|
|
|
11281
11288
|
['HYBLOCK',"所属行业"],//所属行业板块
|
|
11282
11289
|
['DYBLOCK',"所属地域"],//所属地域板块
|
|
11283
11290
|
['GNBLOCK',"所属概念"],//所属概念
|
|
11284
|
-
["FGBLOCK","所属风格板块"],["ZSBLOCK","所属指数板块"],["ZHBLOCK",'所属组合板块'],["ZDBLOCK",'所属自定义板块'],["HYZSCODE","所属行业的板块指数代码"],["GNBLOCKNUM","所属概念板块的个数"],["FGBLOCKNUM","所属风格板块的个数"],["ZSBLOCKNUM","所属指数板块的个数"],["ZHBLOCKNUM","所属组合板块的个数"],["ZDBLOCKNUM","所属自定义板块的个数"],["HYSYL","指数市盈率或个股所属行业的市盈率"],["HYSJL","指数市净率或个股所属行业的市净率"],['DRAWNULL',"无效数据"]]);if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam)this.CallbackParam=option.CallbackParam;if(option.Arguments)this.Arguments=option.Arguments;}this.Run=function(){try{this.OutVarTable=[];this.VarTable=new _map2.default();JSConsole.Complier.Log('[JSExecute::JSExplainer] Load Arguments',this.Arguments);for(var _i145 in this.Arguments)//预定义的变量
|
|
11291
|
+
["FGBLOCK","所属风格板块"],["ZSBLOCK","所属指数板块"],["ZHBLOCK",'所属组合板块'],["ZDBLOCK",'所属自定义板块'],["HYZSCODE","所属行业的板块指数代码"],["GNBLOCKNUM","所属概念板块的个数"],["FGBLOCKNUM","所属风格板块的个数"],["ZSBLOCKNUM","所属指数板块的个数"],["ZHBLOCKNUM","所属组合板块的个数"],["ZDBLOCKNUM","所属自定义板块的个数"],["HYSYL","指数市盈率或个股所属行业的市盈率"],["HYSJL","指数市净率或个股所属行业的市净率"],['DRAWNULL',"无效数据"],["TR","求真实波幅"]]);if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam)this.CallbackParam=option.CallbackParam;if(option.Arguments)this.Arguments=option.Arguments;}this.Run=function(){try{this.OutVarTable=[];this.VarTable=new _map2.default();JSConsole.Complier.Log('[JSExecute::JSExplainer] Load Arguments',this.Arguments);for(var _i145 in this.Arguments)//预定义的变量
|
|
11285
11292
|
{var _item26=this.Arguments[_i145];this.VarTable.set(_item26.Name,_item26.Value);}var data=this.RunAST();//执行脚本
|
|
11286
11293
|
JSConsole.Complier.Log('[JSExplainer.Run] explain finish',data);if(this.UpdateUICallback)//回调发送结果, 可以支持异步
|
|
11287
11294
|
{JSConsole.Complier.Log('[JSExplainer.Run] invoke UpdateUICallback.');this.UpdateUICallback(data);}}catch(error){JSConsole.Complier.Log('[JSExplainer.Run] throw error ',error);if(this.ErrorCallback){this.ErrorCallback(error,this.OutVarTable);}}};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i146 in this.AST.Body){var _item27=this.AST.Body[_i146];this.VisitNode(_item27);//输出变量
|
|
@@ -11307,11 +11314,11 @@ else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf
|
|
|
11307
11314
|
this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i148 in node.Arguments){var _item29=node.Arguments[_i148];var value=void 0;if(_item29.Type==Syntax.BinaryExpression||_item29.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(_item29);else if(_item29.Type==Syntax.CallExpression)value=this.VisitCallExpression(_item29);else value=this.GetNodeValue(_item29);args.push(value);}JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}node.Out=this.CallFunctionExplain(funcName,args,node);return node.Out;};this.FUNCTION_INFO_LIST=new _map2.default([["REF",{Name:"REF",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684'+args[0];}}],["REFX",{Name:"REFX",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684'+args[0];}}],["REFV",{Name:"REFV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFXV",{Name:"REFXV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFDATE",{Name:"REFDATE",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5'+args[0];}}],["COUNT",{Name:"COUNT",Param:{Count:2},ToString:function ToString(args){return'\u7EDF\u8BA1'+args[1]+'\u65E5\u4E2D\u6EE1\u8DB3'+args[0]+'\u7684\u5929\u6570';}}],["BARSLASTCOUNT",{Name:"BARSLASTCOUNT",Param:{Count:1},ToString:function ToString(args){return'\u6761\u4EF6'+args[0]+'\u8FDE\u7EED\u6210\u7ACB\u6B21\u6570';}}],["BARSCOUNT",{Name:"BARSCOUNT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u6709\u6548\u6570\u636E\u5468\u671F\u6570';}}],["BARSLAST",{Name:"BARSLAST",Param:{Count:1},ToString:function ToString(args){return'\u4E0A\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSNEXT",{Name:"BARSNEXT",Param:{Count:1},ToString:function ToString(args){return'\u4E0B\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCEN",{Name:"BARSSINCEN",Param:{Count:2},ToString:function ToString(args){return'\u5728'+args[1]+'\u5468\u671F\u5185\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCE",{Name:"BARSSINCE",Param:{Count:1},ToString:function ToString(args){return'\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["HHV",{Name:"HHV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u9AD8\u503C';}}],["LLV",{Name:"LLV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u4F4E\u503C';}}],["ZTPRICE",{Name:"ZTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算涨停价';}}],["DTPRICE",{Name:"DTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算跌停价';}}],["BACKSET",{Name:"BACKSET",Param:{Count:2},ToString:function ToString(args){return'\u82E5'+args[0]+'\u5219\u5C06\u6700\u8FD1'+args[1]+'\u5468\u671F\u7F6E\u4E3A1';}}],["HOD",{Name:"HOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u9AD8\u503C\u540D\u6B21';}}],["LOD",{Name:"LOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u4F4E\u503C\u540D\u6B21';}}],["REVERSE",{Name:"REVERSE",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u76F8\u53CD\u6570';}}],["FILTER",{Name:"FILTER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u8FC7\u6EE4';}}],["FILTERX",{Name:"FILTERX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u53CD\u5411\u8FC7\u6EE4';}}],["TFILTER",{Name:"TFILTER",Param:{Count:3},ToString:function ToString(args){return'\u4FE1\u53F7\u8FC7\u6EE4(\u591A\u5934)';}}],["SUMBARS",{Name:"SUMBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7D2F\u52A0\u81F3'+args[1]+'\u7684\u5929\u6570';}}],["MA",{Name:"MA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7B80\u5355\u79FB\u52A8\u5E73\u5747';}}],["SMA",{Name:"SMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["MEMA",{Name:"MEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["EMA",{Name:"EMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMA",{Name:"EXPMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMEMA",{Name:"EXPMEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["WMA",{Name:"WMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u52A0\u6743\u79FB\u52A8\u5E73\u5747';}}],["DMA",{Name:"DMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u52A8\u6001\u79FB\u52A8\u5E73\u5747';}}],["XMA",{Name:"XMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u504F\u79FB\u79FB\u52A8\u5E73\u5747';}}],["RANGE",{Name:"RANGE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["CONST",{Name:"CONST",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6700\u540E\u4E00\u65E5\u503C';}}],["TOPRANGE",{Name:"TOPRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5927\u503C';}}],["LOWRANGE",{Name:"LOWRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5C0F\u503C';}}],["FINDHIGH",{Name:"FINDHIGH",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7';}}],["FINDHIGHBARS",{Name:"FINDHIGHBARS",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["FINDLOW",{Name:"FINDLOW",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7';}}],["FINDLOWBARS",{Name:"FINDLOWBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["SUM",{Name:"SUM",Param:{Count:2},ToString:function ToString(args){return''+args[0]+args[1]+'\u65E5\u7D2F\u52A0';}}],["MULAR",{Name:"MULAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u65E5\u7D2F\u4E58';}}],["AMA",{Name:"AMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u81EA\u9002\u5E94\u5747\u7EBF';}}],["TMA",{Name:"TMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["CROSS",{Name:"CROSS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u4E0A\u7A7F'+args[1];}}],["LONGCROSS",{Name:"LONGCROSS",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u5C0F\u4E8E'+args[1]+'\u4FDD\u6301'+args[2]+'\u4E2A\u4EA4\u6613\u65E5\u540E\u4EA4\u53C9\u4E0A\u7A7F';}}],["UPNDAY",{Name:"UPNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u6DA8';}}],["DOWNNDAY",{Name:"DOWNNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u8DCC';}}],["NDAY",{Name:"NDAY",Param:{Count:3},ToString:function ToString(args){return'\u6700\u8FD1'+args[2]+'\u65E5'+args[0]+'\u4E00\u76F4\u5927\u4E8E'+args[1];}}],["EXIST",{Name:"EXIST",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u5B58\u5728'+args[0];}}],["EXISTR",{Name:"EXISTR",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u5B58\u5728'+args[0];}}],["EVERY",{Name:"EVERY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u4E00\u76F4\u5B58\u5728'+args[0];}}],["LAST",{Name:"LAST",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u6301\u7EED'+args[0];}}],["NOT",{Name:"NOT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u53D6\u53CD';}}],["IF",{Name:"IF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFF",{Name:"IFF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFN",{Name:"IFN",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFC",{Name:"IFC",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["TESTSKIP",{Name:"TESTSKIP",Param:{Count:1},ToString:function ToString(args){return'\u5982\u679C\u6EE1\u8DB3\u6761\u4EF6'+args[0]+',\u516C\u5F0F\u8FD4\u56DE';}}],["VALUEWHEN",{Name:"VALUEWHEN",Param:{Count:2},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE\u4E0A\u4E2A\u8F93\u51FA\u503C ';}}],["MAX",{Name:"MAX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5927\u503C';}}],["MIN",{Name:"MIN",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5C0F\u503C';}}],["ACOS",{Name:"ACOS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u4F59\u5F26';}}],["ASIN",{Name:"ASIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5F26';}}],["ATAN",{Name:"ATAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5207';}}],["COS",{Name:"COS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u4F59\u5F26';}}],["SIN",{Name:"SIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5F26';}}],["TAN",{Name:"TAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5207';}}],["EXP",{Name:"EXP",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6307\u6570';}}],["LN",{Name:"LN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u81EA\u7136\u5BF9\u6570';}}],["LOG",{Name:"LOG",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5BF9\u6570';}}],["SQRT",{Name:"SQRT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5F00\u65B9';}}],["ABS",{Name:"ABS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7EDD\u5BF9\u503C';}}],["POW",{Name:"POW",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u4E58\u5E42';}}],["CEILING",{Name:"CEILING",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["FLOOR",{Name:"FLOOR",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["INTPART",{Name:"INTPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6574\u6570\u90E8\u5206';}}],["BETWEEN",{Name:"BETWEEN",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["FRACPART",{Name:"FRACPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5C0F\u6570\u90E8\u5206';}}],["ROUND",{Name:"ROUND",Param:{Count:1},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["ROUND2",{Name:"ROUND2",Param:{Count:2},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["SIGN",{Name:"SIGN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7B26\u53F7';}}],["MOD",{Name:"MOD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5173\u4E8E'+args[1]+'\u7684\u6A21';}}],["RAND",{Name:"RAND",Param:{Count:1},ToString:function ToString(args){return'\u968F\u673A\u6B63\u6574\u6570';}}],["AVEDEV",{Name:"AVEDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u5747\u7EDD\u5BF9\u504F\u5DEE';}}],["DEVSQ",{Name:"DEVSQ",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6570\u636E\u504F\u5DEE\u5E73\u65B9\u548C';}}],["FORCAST",{Name:"FORCAST",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u9884\u6D4B\u503C';}}],["TSMA",{Name:"TSMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u4E2A\u5468\u671F\u5185\u7684\u65F6\u95F4\u5E8F\u5217\u4E09\u89D2\u79FB\u52A8\u5E73\u5747';}}],["SLOPE",{Name:"SLOPE",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u659C\u7387';}}],["STD",{Name:"STD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6807\u51C6\u5DEE';}}],["STDP",{Name:"STDP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6807\u51C6\u5DEE';}}],["STDDEV",{Name:"STDDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6807\u51C6\u504F\u5DEE';}}],["VAR",{Name:"VAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6837\u672C\u65B9\u5DEE';}}],["VARP",{Name:"VARP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6837\u672C\u65B9\u5DEE';}}],["COVAR",{Name:"COVAR",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u534F\u65B9\u5DEE';}}],["RELATE",{Name:"RELATE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[0]+'\u5468\u671F\u7684\u76F8\u5173\u7CFB\u6570';}}],["BETA",{Name:"BETA",Param:{Count:1},ToString:function ToString(args){return'\u03B2(Beta)\u7CFB\u6570';}}],["BETAEX",{Name:"BETAEX",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u76F8\u5173\u653E\u5927\u7CFB\u6570';}}],["COST",{Name:"COST",Param:{Count:1},ToString:function ToString(args){return'\u83B7\u5229\u76D8\u4E3A'+args[0]+'%\u7684\u6210\u672C\u5206\u5E03';}}],["WINNER",{Name:"WINNER",Param:{Count:1},ToString:function ToString(args){return'\u4EE5'+args[0]+'\u8BA1\u7B97\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["LWINNER",{Name:"LWINNER",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[0]+'\u65E5\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["PWINNER",{Name:"PWINNER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["COSTEX",{Name:"COSTEX",Param:{Count:2},ToString:function ToString(args){return'\u4F4D\u4E8E\u4EF7\u683C'+args[0]+'\u548C'+args[1]+'\u95F4\u7684\u6210\u672C';}}],["PPART",{Name:"PPART",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u5360\u603B\u6210\u672C\u7684\u6BD4\u4F8B';}}],["SAR",{Name:"SAR",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411';}}],["SARTURN",{Name:"SARTURN",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411\u70B9';}}],//字符串函数
|
|
11308
11315
|
["CON2STR",{Name:"CON2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["VAR2STR",{Name:"VAR2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["STR2CON",{Name:"STR2CON",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u6570\u5B57';}}],["STRLEN",{Name:"STRLEN",Param:{Count:1},ToString:function ToString(args){return'\u5F97\u5230'+args[0]+'\u5B57\u7B26\u4E32\u957F\u5EA6';}}],["STRCAT",{Name:"STRCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["VARCAT",{Name:"VARCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["STRSPACE",{Name:"STRSPACE",Param:{Count:1},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u52A0\u4E00\u7A7A\u683C';}}],["SUBSTR",{Name:"SUBSTR",Param:{Count:3},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u53D6\u4E00\u90E8\u5206';}}],["STRCMP",{Name:"STRCMP",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u548C\u5B57\u7B26\u4E32'+args[1]+'\u6BD4\u8F83';}}],["FINDSTR",{Name:"FINDSTR",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u67E5\u627E\u5B57\u7B26\u4E32'+args[1];}}],["NAMEINCLUD",{Name:"NAMEINCLUD",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["CODELIKE",{Name:"CODELIKE",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["INBLOCK",{Name:"AVEDEV",Param:{Count:1},ToString:function ToString(args){return'\u5C5E\u4E8E'+args[0]+'\u677F\u5757';}}],["STKINDI",{Name:"STKINDI",Param:{Dynamic:true},ToString:function ToString(args){return"指标引用";}}],["STRFORMAT",{Name:"STRFORMAT",Param:{Dynamic:true},ToString:function ToString(args){return'\u683C\u5F0F\u5316'+args[0]+'\u5B57\u7B26\u4E32';}}],["HHVBARS",{Name:"HHVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';}}],["LLVBARS",{Name:"LLVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';}}]]);this.CallFunctionExplain=function(funcName,args,node){if(this.FUNCTION_INFO_LIST.has(funcName)){var item=this.FUNCTION_INFO_LIST.get(funcName);if(item.Param.Dynamic===true)//动态参数
|
|
11309
11316
|
{}else{if(item.Param.Count!=args.length)this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u53C2\u6570\u4E2A\u6570\u4E0D\u6B63\u786E. \u9700\u8981'+item.Param.Count+'\u4E2A\u53C2\u6570');}return item.ToString(args);}switch(funcName){case"CALCSTOCKINDEX":return'\u5F15\u7528'+args[0]+'\u7684'+args[1]+'\u6307\u6807\u7B2C'+args[2]+'\u4E2A\u8F93\u51FA\u503C';case"PEAK":case"PEAKBARS":case"ZIG":case"ZIGA":case"TROUGH":case"TROUGHBARS":return this.GetZIGExplain(funcName,args);case"FINANCE":return this.GetFinanceExplain(args);case"DYNAINFO":return this.GetDynainfoExplain(args);case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':return this.GetOtherSymbolExplain({FunctionName:funcName,Args:args},node);//绘图函数
|
|
11310
|
-
case"PLOYLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6\u4EE5'+args[1]+'\u4F4D\u7F6E\u4E3A\u9876\u70B9\u753B\u6298\u7EBF\u8FDE\u63A5';case"DRAWLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u8D77\u70B9\uFF0C\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[2]+'\u65F6,\u5728'+args[3]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u7EC8\u70B9,'+args[4]+'\u8868\u793A\u662F\u5426\u5EF6\u957F';case"DRAWSL":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u659C\u7EBF\u7EBF\u6027\u56DE\u5F52,'+args[2]+'\u659C\u7387,'+args[3]+'\u957F\u5EA6,'+args[4]+'\u65B9\u5411';case"DRAWKLINE":case"DRAWKLINE1":return'K线';case"DRAWICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"DRAWTEXT":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWTEXT_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWNUMBER":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"DRAWNUMBER_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"RGB":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+']';case"DRAWBAND":return'画带状线';case"DRAWRECTREL":return"相对位置上画矩形.";case"DRAWGBK":return"填充背景";case"TIPICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"STICKLINE":var barType="";if(args[4]==-1)barType="虚线空心柱";else if(args[4]==0)barType="实心柱";else barType="实线空心柱";return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6, \u5728'+args[1]+'\u548C'+args[2]+'\u4F4D\u7F6E\u4E4B\u95F4\u753B\u67F1\u72B6\u7EBF,\u5BBD\u5EA6\u4E3A'+args[3]+','+barType;case"YMOVE":return;default:this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u4E0D\u5B58\u5728');}};this.GetDynainfoExplain=function(args){var DATA_NAME_MAP=new _map2.default([[3,"前收盘价"],[4,"开盘价"],[5,"最高价"],[6,"最低价"],[7,"现价"],[8,'总量'],[9,"现量"],[10,"总金额"],[11,"均价"],[12,"日涨跌"],[13,"振幅"],[14,"涨幅"],[15,"开盘时的成交金额"],[16,"前5日每分钟均量"],[17,"量比"],[18,"上涨家数"],[19,"下跌家数"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u5373\u65F6\u884C\u60C5['+id+']';};this.GetFinanceExplain=function(args){var DATA_NAME_MAP=new _map2.default([[1,"总股本"],[2,"市场类型"],[3,"沪深品种类型"],[4,"沪深行业代码"],[5,"B股"],[6,"H股"],[7,"流通股本[股]"],[8,"股东人数[户]"],[9,"资产负债率%"],[10,"总资产"],[11,"流动资产"],[12,"固定资产"],[13,"无形资产"],[15,"流动负债"],[16,"少数股东权益"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u8D22\u52A1\u6570\u636E['+id+']';};this.GetZIGExplain=function(funcName,args){var value=args[0];if(value==0)value="开盘价";else if(value==1)value="最高价";else if(value==2)value="最低价";else if(value==3)value="收盘价";switch(funcName){case"PEAK":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u503C';case"PEAKBARS":return value+'\u7684'+args[1]+'5%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u4F4D\u7F6E';case"ZIG":return value+'\u7684'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"ZIGA":return value+'\u53D8\u5316'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"TROUGH":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u503C';case"TROUGHBARS":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u4F4D\u7F6E';}};this.GetColorExplain=function(colorName){var COLOR_MAP=new _map2.default([['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);if(COLOR_MAP.has(colorName))return COLOR_MAP.get(colorName);//COLOR 自定义色
|
|
11317
|
+
case"PLOYLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6\u4EE5'+args[1]+'\u4F4D\u7F6E\u4E3A\u9876\u70B9\u753B\u6298\u7EBF\u8FDE\u63A5';case"DRAWLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u8D77\u70B9\uFF0C\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[2]+'\u65F6,\u5728'+args[3]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u7EC8\u70B9,'+args[4]+'\u8868\u793A\u662F\u5426\u5EF6\u957F';case"DRAWSL":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u659C\u7EBF\u7EBF\u6027\u56DE\u5F52,'+args[2]+'\u659C\u7387,'+args[3]+'\u957F\u5EA6,'+args[4]+'\u65B9\u5411';case"DRAWKLINE":case"DRAWKLINE1":return'K线';case"DRAWICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"DRAWTEXT":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWTEXT_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWNUMBER":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"DRAWNUMBER_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"RGB":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+']';case"DRAWBAND":return'画带状线';case"DRAWRECTREL":return"相对位置上画矩形.";case"DRAWGBK":return"填充背景";case"TIPICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"STICKLINE":var barType="";if(args[4]==-1)barType="虚线空心柱";else if(args[4]==0)barType="实心柱";else barType="实线空心柱";return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6, \u5728'+args[1]+'\u548C'+args[2]+'\u4F4D\u7F6E\u4E4B\u95F4\u753B\u67F1\u72B6\u7EBF,\u5BBD\u5EA6\u4E3A'+args[3]+','+barType;case"SELL":return"卖出平仓";case"BUY":return"买入开仓";case"SELLSHORT":return"卖出开仓";case"BUYSHORT":return"买入平仓";case"YMOVE":return;default:this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u4E0D\u5B58\u5728');}};this.GetDynainfoExplain=function(args){var DATA_NAME_MAP=new _map2.default([[3,"前收盘价"],[4,"开盘价"],[5,"最高价"],[6,"最低价"],[7,"现价"],[8,'总量'],[9,"现量"],[10,"总金额"],[11,"均价"],[12,"日涨跌"],[13,"振幅"],[14,"涨幅"],[15,"开盘时的成交金额"],[16,"前5日每分钟均量"],[17,"量比"],[18,"上涨家数"],[19,"下跌家数"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u5373\u65F6\u884C\u60C5['+id+']';};this.GetFinanceExplain=function(args){var DATA_NAME_MAP=new _map2.default([[1,"总股本"],[2,"市场类型"],[3,"沪深品种类型"],[4,"沪深行业代码"],[5,"B股"],[6,"H股"],[7,"流通股本[股]"],[8,"股东人数[户]"],[9,"资产负债率%"],[10,"总资产"],[11,"流动资产"],[12,"固定资产"],[13,"无形资产"],[15,"流动负债"],[16,"少数股东权益"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u8D22\u52A1\u6570\u636E['+id+']';};this.GetZIGExplain=function(funcName,args){var value=args[0];if(value==0)value="开盘价";else if(value==1)value="最高价";else if(value==2)value="最低价";else if(value==3)value="收盘价";switch(funcName){case"PEAK":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u503C';case"PEAKBARS":return value+'\u7684'+args[1]+'5%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u4F4D\u7F6E';case"ZIG":return value+'\u7684'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"ZIGA":return value+'\u53D8\u5316'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"TROUGH":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u503C';case"TROUGHBARS":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u4F4D\u7F6E';}};this.GetColorExplain=function(colorName){var COLOR_MAP=new _map2.default([['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);if(COLOR_MAP.has(colorName))return COLOR_MAP.get(colorName);//COLOR 自定义色
|
|
11311
11318
|
//格式为COLOR+“RRGGBB”:RR、GG、BB表示红色、绿色和蓝色的分量,每种颜色的取值范围是00-FF,采用了16进制。
|
|
11312
11319
|
//例如:MA5:MA(CLOSE,5),COLOR00FFFF 表示纯红色与纯绿色的混合色:COLOR808000表示淡蓝色和淡绿色的混合色。
|
|
11313
11320
|
if(colorName.indexOf('COLOR')==0)return'#'+colorName.substr(5);return'rgb(30,144,255)';};this.GetLineWidthExplain=function(lineWidth){var width=parseInt(lineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))return width;return 1;};this.SymbolPeriodExplain=function(valueName,period){var mapStockDataName=new _map2.default([['CLOSE',"收盘价"],["C","收盘价"],['VOL',"成交量"],['V',"成交量"],['OPEN',"开盘价"],['O',"开盘价"],['HIGH',"最高价"],['H',"最高价"],['LOW',"最低价"],['L',"最低价"],['AMOUNT',"成交金额"],['AMO',"成交金额"],['VOLINSTK',"持仓量"]]);//MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH,SEASON,YEAR
|
|
11314
|
-
var mapPeriodName=new _map2.default([["MIN1","1分钟"],["MIN5","5分钟"],["MIN15","15分钟"],["MIN30","30分钟"],["MIN60","60分钟"],["DAY","日"],["WEEK","周"],["MONTH","月"],['SEASON',"季"],["YEAR","年"],["WEEK2","双周"],["HALFYEAR","半年"]]);var dataName=valueName;if(mapStockDataName.has(valueName))dataName=mapStockDataName.get(valueName);var periodName=period;if(mapPeriodName.has(period))periodName=mapPeriodName.get(period);return dataName+'[\u53D6'+periodName+'\u6570\u636E]';};this.GetOtherSymbolExplain=function(obj,node){var mapStockDataName=new _map2.default([['CLOSE',"收盘价"],["C","收盘价"],['VOL',"成交量"],['V',"成交量"],['OPEN',"开盘价"],['O',"开盘价"],['HIGH',"最高价"],['H',"最高价"],['LOW',"最低价"],['L',"最低价"],['AMOUNT',"成交金额"],['AMO',"成交金额"],['VOLINSTK',"持仓量"]]);if(obj.FunctionName){var args=obj.Args;var dataName=mapStockDataName.get(obj.FunctionName);return'['+args[0]+']'+dataName;}else if(obj.Literal){var value=obj.Literal.toUpperCase();var args=value.split("$");if(!mapStockDataName.has(args[1]))return"";var symbol=args[0];var dataName=mapStockDataName.get(args[1]);return'['+symbol+']'+dataName;}};this.IsDrawFunction=function(name){var setFunctionName=new _set2.default(["STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF','PLOYLINE','POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS",'DRAWOVERLAYLINE',"FILLRGN","FILLRGN2","FILLTOPRGN","FILLBOTTOMRGN","FILLVERTICALRGN","FLOATRGN","DRAWSL","DRAWGBK2"]);if(setFunctionName.has(name))return true;return false;};//赋值
|
|
11321
|
+
var mapPeriodName=new _map2.default([["MIN1","1分钟"],["MIN5","5分钟"],["MIN15","15分钟"],["MIN30","30分钟"],["MIN60","60分钟"],["DAY","日"],["WEEK","周"],["MONTH","月"],['SEASON',"季"],["YEAR","年"],["WEEK2","双周"],["HALFYEAR","半年"]]);var dataName=valueName;if(mapStockDataName.has(valueName))dataName=mapStockDataName.get(valueName);var periodName=period;if(mapPeriodName.has(period))periodName=mapPeriodName.get(period);return dataName+'[\u53D6'+periodName+'\u6570\u636E]';};this.GetOtherSymbolExplain=function(obj,node){var mapStockDataName=new _map2.default([['CLOSE',"收盘价"],["C","收盘价"],['VOL',"成交量"],['V',"成交量"],['OPEN',"开盘价"],['O',"开盘价"],['HIGH',"最高价"],['H',"最高价"],['LOW',"最低价"],['L',"最低价"],['AMOUNT',"成交金额"],['AMO',"成交金额"],['VOLINSTK',"持仓量"]]);if(obj.FunctionName){var args=obj.Args;var dataName=mapStockDataName.get(obj.FunctionName);return'['+args[0]+']'+dataName;}else if(obj.Literal){var value=obj.Literal.toUpperCase();var args=value.split("$");if(!mapStockDataName.has(args[1]))return"";var symbol=args[0];var dataName=mapStockDataName.get(args[1]);return'['+symbol+']'+dataName;}};this.IsDrawFunction=function(name){var setFunctionName=new _set2.default(["STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF','PLOYLINE','POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS",'DRAWOVERLAYLINE',"FILLRGN","FILLRGN2","FILLTOPRGN","FILLBOTTOMRGN","FILLVERTICALRGN","FLOATRGN","DRAWSL","DRAWGBK2","BUY","BUYSHORT","SELL","SELLSHORT"]);if(setFunctionName.has(name))return true;return false;};//赋值
|
|
11315
11322
|
this.VisitAssignmentExpression=function(node){var left=node.Left;if(left.Type!=Syntax.Identifier)this.ThrowUnexpectedNode(node);var varName=left.Name;var right=node.Right;var value=null;if(right.Type==Syntax.BinaryExpression||right.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(right);else if(right.Type==Syntax.CallExpression)value=this.VisitCallExpression(right);else if(right.Type==Syntax.Literal){value=right.Value;if(IFrameSplitOperator.IsString(value)&&right.Value.indexOf("$")>0)value=this.GetOtherSymbolExplain({Literal:value},node);}else if(right.Type==Syntax.Identifier)//右值是变量
|
|
11316
11323
|
value=this.ReadVariable(right.Name,right);else if(right.Type==Syntax.MemberExpression)value=this.ReadMemberVariable(right);else if(right.Type==Syntax.UnaryExpression){if(right.Operator=='-'){var tempValue=this.GetNodeValue(right.Argument);value='-'+tempValue;}else{value=right.Argument.Value;}}JSConsole.Complier.Log('[JSExplainer::VisitAssignmentExpression]',varName,' = ',value);this.VarTable.set(varName,value);};this.ReadMemberVariable=function(node){var obj=node.Object;var member=node.Property;var maiObj=void 0;if(obj.Type==Syntax.BinaryExpression||obj.Type==Syntax.LogicalExpression)maiObj=this.VisitBinaryExpression(obj);else if(obj.Type==Syntax.CallExpression)maiObj=this.VisitCallExpression(obj);else{if(member.Name.indexOf('#')>0){var aryValue=member.Name.split("#");var value=obj.Name+'\u7684'+aryValue[0]+'[\u5468\u671F'+aryValue[1]+']';}else{var value=obj.Name+'\u7684'+member.Name;}return value;}if(!maiObj)return null;var value=maiObj[member.Name];if(value)return value;return null;};//逻辑运算
|
|
11317
11324
|
this.VisitBinaryExpression=function(node){var stack=[];stack.push(node);var temp=null;while(stack.length!=0){temp=stack[stack.length-1];if(temp.Left&&node!=temp.Left&&node!=temp.Right){stack.push(temp.Left);}else if(temp.Right&&node!=temp.Right){stack.push(temp.Right);}else{var value=stack.pop();if(value.Type==Syntax.BinaryExpression)//只遍历操作符就可以
|
|
@@ -11320,7 +11327,9 @@ value.Out='('+leftValue+' '+value.Operator+' '+rightValue+')';if(leftValue=="收
|
|
|
11320
11327
|
switch(value.Operator){case'&&':case'AND':value.Out='('+_leftValue2+' \u5E76\u4E14 '+_rightValue2+')';break;case'||':case'OR':value.Out='('+_leftValue2+' \u6216\u8005 '+_rightValue2+')';break;}JSConsole.Complier.Log('[JSExplainer::VisitBinaryExpression] LogicalExpression',value);}node=temp;}}return node.Out;};this.GetNodeValue=function(node){switch(node.Type){case Syntax.Literal://数字
|
|
11321
11328
|
return node.Value;case Syntax.UnaryExpression:if(node.Operator=='-'){var _value23=this.GetNodeValue(node.Argument);return'-'+_value23;}return node.Argument.Value;case Syntax.Identifier:var value=this.ReadVariable(node.Name,node);return value;case Syntax.BinaryExpression:case Syntax.LogicalExpression:return node.Out;case Syntax.CallExpression:return this.VisitCallExpression(node);default:this.ThrowUnexpectedNode(node);}};//读取变量
|
|
11322
11329
|
this.ReadVariable=function(name,node){if(this.ConstVarTable.has(name)){var data=this.ConstVarTable.get(name);return data;}if(g_JSComplierResource.IsCustomVariant(name))return this.ReadCustomVariant(name,node);//读取自定义变量
|
|
11323
|
-
if(this.VarTable.has(name))return this.VarTable.get(name);if(name.indexOf('#')>0){var aryPeriod=name.split('#');return this.SymbolPeriodExplain(aryPeriod[0],aryPeriod[1]);}
|
|
11330
|
+
if(this.VarTable.has(name))return this.VarTable.get(name);if(name.indexOf('#')>0){var aryPeriod=name.split('#');return this.SymbolPeriodExplain(aryPeriod[0],aryPeriod[1]);}if(name=="AUTOFILTER")//信号过滤
|
|
11331
|
+
{return this.AUTOFILTER();}this.ThrowUnexpectedNode(node,'变量'+name+'不存在');return name;};this.AUTOFILTER=function(){//TODO:过滤信号
|
|
11332
|
+
return null;};this.ThrowUnexpectedNode=function(node,message){var marker=node.Marker;var msg=message||"执行异常";return this.ErrorHandler.ThrowError(marker.Index,marker.Line,marker.Column,msg);};this.ThrowError=function(){};}//对外导出类
|
|
11324
11333
|
function JSComplier(){}//词法分析
|
|
11325
11334
|
JSComplier.Tokenize=function(code){JSConsole.Complier.Log('[JSComplier.Tokenize]',code);var tokenizer=new Tokenizer(code);var tokens=[];try{while(true){var token=tokenizer.GetNextToken();if(!token)break;tokens.push(token);}}catch(e){}return tokens;};//语法解析 生成抽象语法树(Abstract Syntax Tree)
|
|
11326
11335
|
JSComplier.Parse=function(code){JSConsole.Complier.Log('[JSComplier.Parse]',code);var parser=new JSParser(code);parser.Initialize();var program=parser.ParseScript();var ast=program;return ast;};/*
|
|
@@ -12782,7 +12791,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
12782
12791
|
this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
12783
12792
|
* 版本信息输出
|
|
12784
12793
|
*
|
|
12785
|
-
*/var HQCHART_VERSION="1.1.
|
|
12794
|
+
*/var HQCHART_VERSION="1.1.12648";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
12786
12795
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12787
12796
|
// BaseIndex:BaseIndex,
|
|
12788
12797
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -13249,6 +13249,46 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
13249
13249
|
return result;
|
|
13250
13250
|
}
|
|
13251
13251
|
|
|
13252
|
+
//求真实波幅, (最高-最低),(最高-昨收),(最低-昨收)三者绝对值中的最大值.
|
|
13253
|
+
//用法:
|
|
13254
|
+
//TR,求真实波幅.
|
|
13255
|
+
//例如:ATR:=MA(TR,10);
|
|
13256
|
+
//表示求真实波幅的10周期均值
|
|
13257
|
+
this.GetTRData=function(node)
|
|
13258
|
+
{
|
|
13259
|
+
var result=[];
|
|
13260
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return result;
|
|
13261
|
+
|
|
13262
|
+
let lCount=this.Data.Data.length;
|
|
13263
|
+
for(var i=0 ;i<lCount;++i)
|
|
13264
|
+
{
|
|
13265
|
+
var item=this.Data.Data[i];
|
|
13266
|
+
var max=null;
|
|
13267
|
+
if (IFrameSplitOperator.IsNumber(item.High) && IFrameSplitOperator.IsNumber(item.Low))
|
|
13268
|
+
{
|
|
13269
|
+
var value=Math.abs(item.High-item.Low);
|
|
13270
|
+
if (max==null || max<value) max=value;
|
|
13271
|
+
}
|
|
13272
|
+
|
|
13273
|
+
if (IFrameSplitOperator.IsNumber(item.High) && IFrameSplitOperator.IsNumber(item.YClose))
|
|
13274
|
+
{
|
|
13275
|
+
var value=Math.abs(item.High-item.YClose);
|
|
13276
|
+
if (max==null || max<value) max=value;
|
|
13277
|
+
}
|
|
13278
|
+
|
|
13279
|
+
if (IFrameSplitOperator.IsNumber(item.YClose) && IFrameSplitOperator.IsNumber(item.Low))
|
|
13280
|
+
{
|
|
13281
|
+
var value=Math.abs(item.Low-item.YClose);
|
|
13282
|
+
if (max==null || max<value) max=value;
|
|
13283
|
+
}
|
|
13284
|
+
|
|
13285
|
+
result[i]=max;
|
|
13286
|
+
}
|
|
13287
|
+
|
|
13288
|
+
|
|
13289
|
+
return result;
|
|
13290
|
+
}
|
|
13291
|
+
|
|
13252
13292
|
//融资融券函数
|
|
13253
13293
|
this.GetMarginCacheData=function(id, node)
|
|
13254
13294
|
{
|
|
@@ -16388,7 +16428,10 @@ function JSExecute(ast,option)
|
|
|
16388
16428
|
['DRAWNULL',null],
|
|
16389
16429
|
["NULL",null],
|
|
16390
16430
|
|
|
16391
|
-
["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null]
|
|
16431
|
+
["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null],
|
|
16432
|
+
|
|
16433
|
+
["TR", null], //真实波幅
|
|
16434
|
+
["AUTOFILTER", null]
|
|
16392
16435
|
|
|
16393
16436
|
]);
|
|
16394
16437
|
|
|
@@ -16556,6 +16599,9 @@ function JSExecute(ast,option)
|
|
|
16556
16599
|
case 'VOLR':
|
|
16557
16600
|
return this.SymbolData.GetVolRateCacheData(node);
|
|
16558
16601
|
|
|
16602
|
+
case "TR": //TR,求真实波幅.
|
|
16603
|
+
return this.SymbolData.GetTRData(node);
|
|
16604
|
+
|
|
16559
16605
|
//大盘数据
|
|
16560
16606
|
case 'INDEXA':
|
|
16561
16607
|
case 'INDEXC':
|
|
@@ -17986,7 +18032,8 @@ function JSExplainer(ast,option)
|
|
|
17986
18032
|
["HYSYL","指数市盈率或个股所属行业的市盈率"],
|
|
17987
18033
|
["HYSJL","指数市净率或个股所属行业的市净率"],
|
|
17988
18034
|
|
|
17989
|
-
['DRAWNULL',"无效数据"]
|
|
18035
|
+
['DRAWNULL',"无效数据"],
|
|
18036
|
+
["TR", "求真实波幅"],
|
|
17990
18037
|
|
|
17991
18038
|
]);
|
|
17992
18039
|
|
|
@@ -18603,6 +18650,15 @@ function JSExplainer(ast,option)
|
|
|
18603
18650
|
else barType="实线空心柱";
|
|
18604
18651
|
return `当满足条件${args[0]}时, 在${args[1]}和${args[2]}位置之间画柱状线,宽度为${args[3]},${barType}`;
|
|
18605
18652
|
|
|
18653
|
+
case "SELL":
|
|
18654
|
+
return "卖出平仓";
|
|
18655
|
+
case "BUY":
|
|
18656
|
+
return "买入开仓";
|
|
18657
|
+
case "SELLSHORT":
|
|
18658
|
+
return "卖出开仓";
|
|
18659
|
+
case "BUYSHORT":
|
|
18660
|
+
return "买入平仓";
|
|
18661
|
+
|
|
18606
18662
|
case "YMOVE":
|
|
18607
18663
|
return;
|
|
18608
18664
|
|
|
@@ -18748,7 +18804,8 @@ function JSExplainer(ast,option)
|
|
|
18748
18804
|
[
|
|
18749
18805
|
"STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF','PLOYLINE',
|
|
18750
18806
|
'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS",
|
|
18751
|
-
'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2"
|
|
18807
|
+
'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2",
|
|
18808
|
+
"BUY","BUYSHORT","SELL","SELLSHORT",
|
|
18752
18809
|
]);
|
|
18753
18810
|
if (setFunctionName.has(name)) return true;
|
|
18754
18811
|
|
|
@@ -18948,10 +19005,21 @@ function JSExplainer(ast,option)
|
|
|
18948
19005
|
return this.SymbolPeriodExplain(aryPeriod[0],aryPeriod[1]);
|
|
18949
19006
|
}
|
|
18950
19007
|
|
|
19008
|
+
if (name=="AUTOFILTER") //信号过滤
|
|
19009
|
+
{
|
|
19010
|
+
return this.AUTOFILTER();
|
|
19011
|
+
}
|
|
19012
|
+
|
|
18951
19013
|
this.ThrowUnexpectedNode(node, '变量'+name+'不存在');
|
|
18952
19014
|
return name;
|
|
18953
19015
|
}
|
|
18954
19016
|
|
|
19017
|
+
this.AUTOFILTER=function()
|
|
19018
|
+
{
|
|
19019
|
+
//TODO:过滤信号
|
|
19020
|
+
return null;
|
|
19021
|
+
}
|
|
19022
|
+
|
|
18955
19023
|
this.ThrowUnexpectedNode=function(node,message)
|
|
18956
19024
|
{
|
|
18957
19025
|
let marker=node.Marker;
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -30548,13 +30548,13 @@ function ChartTradeIcon()
|
|
|
30548
30548
|
var yOffset=0;
|
|
30549
30549
|
if (this.TradeType=="BUY" || this.TradeType=="BUYSHORT")
|
|
30550
30550
|
{
|
|
30551
|
-
this.Canvas.textBaseline="
|
|
30552
|
-
yOffset
|
|
30551
|
+
this.Canvas.textBaseline="top";
|
|
30552
|
+
yOffset+2;
|
|
30553
30553
|
}
|
|
30554
30554
|
else if (this.TradeType=="SELL" || this.TradeType=="SELLSHORT")
|
|
30555
30555
|
{
|
|
30556
|
-
this.Canvas.textBaseline="
|
|
30557
|
-
yOffset
|
|
30556
|
+
this.Canvas.textBaseline="bottom";
|
|
30557
|
+
yOffset=-2;
|
|
30558
30558
|
}
|
|
30559
30559
|
|
|
30560
30560
|
var bHScreen=(this.ChartFrame.IsHScreen===true);
|
|
@@ -30579,12 +30579,30 @@ function ChartTradeIcon()
|
|
|
30579
30579
|
var right=xOffset+dataWidth;
|
|
30580
30580
|
if (right>chartright) break;
|
|
30581
30581
|
|
|
30582
|
-
|
|
30583
30582
|
var x=left+(right-left)/2;
|
|
30584
30583
|
var y=this.GetYFromData(iconItem.Value, false);
|
|
30585
30584
|
|
|
30586
30585
|
this.Canvas.fillStyle=iconItem.Color;
|
|
30587
|
-
|
|
30586
|
+
|
|
30587
|
+
if (dataWidth>2) x=ToFixedPoint(x);
|
|
30588
|
+
|
|
30589
|
+
this.DrawTradeIcon(iconItem.Icon,x,y+yOffset, bHScreen);
|
|
30590
|
+
}
|
|
30591
|
+
}
|
|
30592
|
+
|
|
30593
|
+
this.DrawTradeIcon=function(text,x,y,isHScreen)
|
|
30594
|
+
{
|
|
30595
|
+
if (isHScreen)
|
|
30596
|
+
{
|
|
30597
|
+
this.Canvas.save();
|
|
30598
|
+
this.Canvas.translate(y, x);
|
|
30599
|
+
this.Canvas.rotate(90 * Math.PI / 180);
|
|
30600
|
+
this.Canvas.fillText(text,0,0);
|
|
30601
|
+
this.Canvas.restore();
|
|
30602
|
+
}
|
|
30603
|
+
else
|
|
30604
|
+
{
|
|
30605
|
+
this.Canvas.fillText(text,x,y);
|
|
30588
30606
|
}
|
|
30589
30607
|
}
|
|
30590
30608
|
|
|
@@ -48594,7 +48612,7 @@ function DynamicKLineTitlePainting()
|
|
|
48594
48612
|
var item=this.OverlayChartPaint[i];
|
|
48595
48613
|
if (!item.Symbol || !item.Title) continue;
|
|
48596
48614
|
|
|
48597
|
-
data.OverlayStock.push({ Symbol:item.Symbol, Name:item.Title, Data:item.Data });
|
|
48615
|
+
data.OverlayStock.push({ Symbol:item.Symbol, Name:item.Title, Data:item.Data, Color:item.Color });
|
|
48598
48616
|
}
|
|
48599
48617
|
}
|
|
48600
48618
|
|
|
@@ -135,7 +135,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|
|
135
135
|
'COLORSTICK':DRAW_NAME,'CIRCLEDOT':DRAW_NAME,'POINTDOT':DRAW_NAME,'LINESTICK':DRAW_NAME,'STICK':DRAW_NAME,'NODRAW':DRAW_NAME,
|
|
136
136
|
"LINEAREA":DRAW_NAME,
|
|
137
137
|
|
|
138
|
-
"BUY":DRAW_NAME,"SELL":DRAW_NAME,"SELLSHORT":DRAW_NAME,"BUYSHORT":DRAW_NAME,"TIPICON":DRAW_NAME,
|
|
138
|
+
"BUY":DRAW_NAME,"SELL":DRAW_NAME,"SELLSHORT":DRAW_NAME,"BUYSHORT":DRAW_NAME,"TIPICON":DRAW_NAME,"AUTOFILTER":FUNCTION_NAME,
|
|
139
139
|
|
|
140
140
|
//颜色
|
|
141
141
|
'COLORYELLOW':COLORYELLOW,'COLORBLACK':COLORBLACK,'COLORBLUE':COLORBLUE,'COLORGREEN':COLORGREEN,'COLORCYAN':COLORCYAN,'COLORRED':COLORRED,
|
|
@@ -34628,13 +34628,13 @@ function ChartTradeIcon()
|
|
|
34628
34628
|
var yOffset=0;
|
|
34629
34629
|
if (this.TradeType=="BUY" || this.TradeType=="BUYSHORT")
|
|
34630
34630
|
{
|
|
34631
|
-
this.Canvas.textBaseline="
|
|
34632
|
-
yOffset
|
|
34631
|
+
this.Canvas.textBaseline="top";
|
|
34632
|
+
yOffset+2;
|
|
34633
34633
|
}
|
|
34634
34634
|
else if (this.TradeType=="SELL" || this.TradeType=="SELLSHORT")
|
|
34635
34635
|
{
|
|
34636
|
-
this.Canvas.textBaseline="
|
|
34637
|
-
yOffset
|
|
34636
|
+
this.Canvas.textBaseline="bottom";
|
|
34637
|
+
yOffset=-2;
|
|
34638
34638
|
}
|
|
34639
34639
|
|
|
34640
34640
|
var bHScreen=(this.ChartFrame.IsHScreen===true);
|
|
@@ -34659,12 +34659,30 @@ function ChartTradeIcon()
|
|
|
34659
34659
|
var right=xOffset+dataWidth;
|
|
34660
34660
|
if (right>chartright) break;
|
|
34661
34661
|
|
|
34662
|
-
|
|
34663
34662
|
var x=left+(right-left)/2;
|
|
34664
34663
|
var y=this.GetYFromData(iconItem.Value, false);
|
|
34665
34664
|
|
|
34666
34665
|
this.Canvas.fillStyle=iconItem.Color;
|
|
34667
|
-
|
|
34666
|
+
|
|
34667
|
+
if (dataWidth>2) x=ToFixedPoint(x);
|
|
34668
|
+
|
|
34669
|
+
this.DrawTradeIcon(iconItem.Icon,x,y+yOffset, bHScreen);
|
|
34670
|
+
}
|
|
34671
|
+
}
|
|
34672
|
+
|
|
34673
|
+
this.DrawTradeIcon=function(text,x,y,isHScreen)
|
|
34674
|
+
{
|
|
34675
|
+
if (isHScreen)
|
|
34676
|
+
{
|
|
34677
|
+
this.Canvas.save();
|
|
34678
|
+
this.Canvas.translate(y, x);
|
|
34679
|
+
this.Canvas.rotate(90 * Math.PI / 180);
|
|
34680
|
+
this.Canvas.fillText(text,0,0);
|
|
34681
|
+
this.Canvas.restore();
|
|
34682
|
+
}
|
|
34683
|
+
else
|
|
34684
|
+
{
|
|
34685
|
+
this.Canvas.fillText(text,x,y);
|
|
34668
34686
|
}
|
|
34669
34687
|
}
|
|
34670
34688
|
|
|
@@ -52674,7 +52692,7 @@ function DynamicKLineTitlePainting()
|
|
|
52674
52692
|
var item=this.OverlayChartPaint[i];
|
|
52675
52693
|
if (!item.Symbol || !item.Title) continue;
|
|
52676
52694
|
|
|
52677
|
-
data.OverlayStock.push({ Symbol:item.Symbol, Name:item.Title, Data:item.Data });
|
|
52695
|
+
data.OverlayStock.push({ Symbol:item.Symbol, Name:item.Title, Data:item.Data, Color:item.Color });
|
|
52678
52696
|
}
|
|
52679
52697
|
}
|
|
52680
52698
|
|
|
@@ -107297,6 +107315,46 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
107297
107315
|
return result;
|
|
107298
107316
|
}
|
|
107299
107317
|
|
|
107318
|
+
//求真实波幅, (最高-最低),(最高-昨收),(最低-昨收)三者绝对值中的最大值.
|
|
107319
|
+
//用法:
|
|
107320
|
+
//TR,求真实波幅.
|
|
107321
|
+
//例如:ATR:=MA(TR,10);
|
|
107322
|
+
//表示求真实波幅的10周期均值
|
|
107323
|
+
this.GetTRData=function(node)
|
|
107324
|
+
{
|
|
107325
|
+
var result=[];
|
|
107326
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return result;
|
|
107327
|
+
|
|
107328
|
+
let lCount=this.Data.Data.length;
|
|
107329
|
+
for(var i=0 ;i<lCount;++i)
|
|
107330
|
+
{
|
|
107331
|
+
var item=this.Data.Data[i];
|
|
107332
|
+
var max=null;
|
|
107333
|
+
if (IFrameSplitOperator.IsNumber(item.High) && IFrameSplitOperator.IsNumber(item.Low))
|
|
107334
|
+
{
|
|
107335
|
+
var value=Math.abs(item.High-item.Low);
|
|
107336
|
+
if (max==null || max<value) max=value;
|
|
107337
|
+
}
|
|
107338
|
+
|
|
107339
|
+
if (IFrameSplitOperator.IsNumber(item.High) && IFrameSplitOperator.IsNumber(item.YClose))
|
|
107340
|
+
{
|
|
107341
|
+
var value=Math.abs(item.High-item.YClose);
|
|
107342
|
+
if (max==null || max<value) max=value;
|
|
107343
|
+
}
|
|
107344
|
+
|
|
107345
|
+
if (IFrameSplitOperator.IsNumber(item.YClose) && IFrameSplitOperator.IsNumber(item.Low))
|
|
107346
|
+
{
|
|
107347
|
+
var value=Math.abs(item.Low-item.YClose);
|
|
107348
|
+
if (max==null || max<value) max=value;
|
|
107349
|
+
}
|
|
107350
|
+
|
|
107351
|
+
result[i]=max;
|
|
107352
|
+
}
|
|
107353
|
+
|
|
107354
|
+
|
|
107355
|
+
return result;
|
|
107356
|
+
}
|
|
107357
|
+
|
|
107300
107358
|
//融资融券函数
|
|
107301
107359
|
this.GetMarginCacheData=function(id, node)
|
|
107302
107360
|
{
|
|
@@ -110436,7 +110494,10 @@ function JSExecute(ast,option)
|
|
|
110436
110494
|
['DRAWNULL',null],
|
|
110437
110495
|
["NULL",null],
|
|
110438
110496
|
|
|
110439
|
-
["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null]
|
|
110497
|
+
["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null],
|
|
110498
|
+
|
|
110499
|
+
["TR", null], //真实波幅
|
|
110500
|
+
["AUTOFILTER", null]
|
|
110440
110501
|
|
|
110441
110502
|
]);
|
|
110442
110503
|
|
|
@@ -110604,6 +110665,9 @@ function JSExecute(ast,option)
|
|
|
110604
110665
|
case 'VOLR':
|
|
110605
110666
|
return this.SymbolData.GetVolRateCacheData(node);
|
|
110606
110667
|
|
|
110668
|
+
case "TR": //TR,求真实波幅.
|
|
110669
|
+
return this.SymbolData.GetTRData(node);
|
|
110670
|
+
|
|
110607
110671
|
//大盘数据
|
|
110608
110672
|
case 'INDEXA':
|
|
110609
110673
|
case 'INDEXC':
|
|
@@ -112034,7 +112098,8 @@ function JSExplainer(ast,option)
|
|
|
112034
112098
|
["HYSYL","指数市盈率或个股所属行业的市盈率"],
|
|
112035
112099
|
["HYSJL","指数市净率或个股所属行业的市净率"],
|
|
112036
112100
|
|
|
112037
|
-
['DRAWNULL',"无效数据"]
|
|
112101
|
+
['DRAWNULL',"无效数据"],
|
|
112102
|
+
["TR", "求真实波幅"],
|
|
112038
112103
|
|
|
112039
112104
|
]);
|
|
112040
112105
|
|
|
@@ -112651,6 +112716,15 @@ function JSExplainer(ast,option)
|
|
|
112651
112716
|
else barType="实线空心柱";
|
|
112652
112717
|
return `当满足条件${args[0]}时, 在${args[1]}和${args[2]}位置之间画柱状线,宽度为${args[3]},${barType}`;
|
|
112653
112718
|
|
|
112719
|
+
case "SELL":
|
|
112720
|
+
return "卖出平仓";
|
|
112721
|
+
case "BUY":
|
|
112722
|
+
return "买入开仓";
|
|
112723
|
+
case "SELLSHORT":
|
|
112724
|
+
return "卖出开仓";
|
|
112725
|
+
case "BUYSHORT":
|
|
112726
|
+
return "买入平仓";
|
|
112727
|
+
|
|
112654
112728
|
case "YMOVE":
|
|
112655
112729
|
return;
|
|
112656
112730
|
|
|
@@ -112796,7 +112870,8 @@ function JSExplainer(ast,option)
|
|
|
112796
112870
|
[
|
|
112797
112871
|
"STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF','PLOYLINE',
|
|
112798
112872
|
'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS",
|
|
112799
|
-
'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2"
|
|
112873
|
+
'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2",
|
|
112874
|
+
"BUY","BUYSHORT","SELL","SELLSHORT",
|
|
112800
112875
|
]);
|
|
112801
112876
|
if (setFunctionName.has(name)) return true;
|
|
112802
112877
|
|
|
@@ -112996,10 +113071,21 @@ function JSExplainer(ast,option)
|
|
|
112996
113071
|
return this.SymbolPeriodExplain(aryPeriod[0],aryPeriod[1]);
|
|
112997
113072
|
}
|
|
112998
113073
|
|
|
113074
|
+
if (name=="AUTOFILTER") //信号过滤
|
|
113075
|
+
{
|
|
113076
|
+
return this.AUTOFILTER();
|
|
113077
|
+
}
|
|
113078
|
+
|
|
112999
113079
|
this.ThrowUnexpectedNode(node, '变量'+name+'不存在');
|
|
113000
113080
|
return name;
|
|
113001
113081
|
}
|
|
113002
113082
|
|
|
113083
|
+
this.AUTOFILTER=function()
|
|
113084
|
+
{
|
|
113085
|
+
//TODO:过滤信号
|
|
113086
|
+
return null;
|
|
113087
|
+
}
|
|
113088
|
+
|
|
113003
113089
|
this.ThrowUnexpectedNode=function(node,message)
|
|
113004
113090
|
{
|
|
113005
113091
|
let marker=node.Marker;
|
|
@@ -130080,7 +130166,7 @@ function ScrollBarBGChart()
|
|
|
130080
130166
|
|
|
130081
130167
|
|
|
130082
130168
|
|
|
130083
|
-
var HQCHART_VERSION="1.1.
|
|
130169
|
+
var HQCHART_VERSION="1.1.12648";
|
|
130084
130170
|
|
|
130085
130171
|
function PrintHQChartVersion()
|
|
130086
130172
|
{
|
|
@@ -34672,13 +34672,13 @@ function ChartTradeIcon()
|
|
|
34672
34672
|
var yOffset=0;
|
|
34673
34673
|
if (this.TradeType=="BUY" || this.TradeType=="BUYSHORT")
|
|
34674
34674
|
{
|
|
34675
|
-
this.Canvas.textBaseline="
|
|
34676
|
-
yOffset
|
|
34675
|
+
this.Canvas.textBaseline="top";
|
|
34676
|
+
yOffset+2;
|
|
34677
34677
|
}
|
|
34678
34678
|
else if (this.TradeType=="SELL" || this.TradeType=="SELLSHORT")
|
|
34679
34679
|
{
|
|
34680
|
-
this.Canvas.textBaseline="
|
|
34681
|
-
yOffset
|
|
34680
|
+
this.Canvas.textBaseline="bottom";
|
|
34681
|
+
yOffset=-2;
|
|
34682
34682
|
}
|
|
34683
34683
|
|
|
34684
34684
|
var bHScreen=(this.ChartFrame.IsHScreen===true);
|
|
@@ -34703,12 +34703,30 @@ function ChartTradeIcon()
|
|
|
34703
34703
|
var right=xOffset+dataWidth;
|
|
34704
34704
|
if (right>chartright) break;
|
|
34705
34705
|
|
|
34706
|
-
|
|
34707
34706
|
var x=left+(right-left)/2;
|
|
34708
34707
|
var y=this.GetYFromData(iconItem.Value, false);
|
|
34709
34708
|
|
|
34710
34709
|
this.Canvas.fillStyle=iconItem.Color;
|
|
34711
|
-
|
|
34710
|
+
|
|
34711
|
+
if (dataWidth>2) x=ToFixedPoint(x);
|
|
34712
|
+
|
|
34713
|
+
this.DrawTradeIcon(iconItem.Icon,x,y+yOffset, bHScreen);
|
|
34714
|
+
}
|
|
34715
|
+
}
|
|
34716
|
+
|
|
34717
|
+
this.DrawTradeIcon=function(text,x,y,isHScreen)
|
|
34718
|
+
{
|
|
34719
|
+
if (isHScreen)
|
|
34720
|
+
{
|
|
34721
|
+
this.Canvas.save();
|
|
34722
|
+
this.Canvas.translate(y, x);
|
|
34723
|
+
this.Canvas.rotate(90 * Math.PI / 180);
|
|
34724
|
+
this.Canvas.fillText(text,0,0);
|
|
34725
|
+
this.Canvas.restore();
|
|
34726
|
+
}
|
|
34727
|
+
else
|
|
34728
|
+
{
|
|
34729
|
+
this.Canvas.fillText(text,x,y);
|
|
34712
34730
|
}
|
|
34713
34731
|
}
|
|
34714
34732
|
|
|
@@ -52718,7 +52736,7 @@ function DynamicKLineTitlePainting()
|
|
|
52718
52736
|
var item=this.OverlayChartPaint[i];
|
|
52719
52737
|
if (!item.Symbol || !item.Title) continue;
|
|
52720
52738
|
|
|
52721
|
-
data.OverlayStock.push({ Symbol:item.Symbol, Name:item.Title, Data:item.Data });
|
|
52739
|
+
data.OverlayStock.push({ Symbol:item.Symbol, Name:item.Title, Data:item.Data, Color:item.Color });
|
|
52722
52740
|
}
|
|
52723
52741
|
}
|
|
52724
52742
|
|
|
@@ -107341,6 +107359,46 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
107341
107359
|
return result;
|
|
107342
107360
|
}
|
|
107343
107361
|
|
|
107362
|
+
//求真实波幅, (最高-最低),(最高-昨收),(最低-昨收)三者绝对值中的最大值.
|
|
107363
|
+
//用法:
|
|
107364
|
+
//TR,求真实波幅.
|
|
107365
|
+
//例如:ATR:=MA(TR,10);
|
|
107366
|
+
//表示求真实波幅的10周期均值
|
|
107367
|
+
this.GetTRData=function(node)
|
|
107368
|
+
{
|
|
107369
|
+
var result=[];
|
|
107370
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return result;
|
|
107371
|
+
|
|
107372
|
+
let lCount=this.Data.Data.length;
|
|
107373
|
+
for(var i=0 ;i<lCount;++i)
|
|
107374
|
+
{
|
|
107375
|
+
var item=this.Data.Data[i];
|
|
107376
|
+
var max=null;
|
|
107377
|
+
if (IFrameSplitOperator.IsNumber(item.High) && IFrameSplitOperator.IsNumber(item.Low))
|
|
107378
|
+
{
|
|
107379
|
+
var value=Math.abs(item.High-item.Low);
|
|
107380
|
+
if (max==null || max<value) max=value;
|
|
107381
|
+
}
|
|
107382
|
+
|
|
107383
|
+
if (IFrameSplitOperator.IsNumber(item.High) && IFrameSplitOperator.IsNumber(item.YClose))
|
|
107384
|
+
{
|
|
107385
|
+
var value=Math.abs(item.High-item.YClose);
|
|
107386
|
+
if (max==null || max<value) max=value;
|
|
107387
|
+
}
|
|
107388
|
+
|
|
107389
|
+
if (IFrameSplitOperator.IsNumber(item.YClose) && IFrameSplitOperator.IsNumber(item.Low))
|
|
107390
|
+
{
|
|
107391
|
+
var value=Math.abs(item.Low-item.YClose);
|
|
107392
|
+
if (max==null || max<value) max=value;
|
|
107393
|
+
}
|
|
107394
|
+
|
|
107395
|
+
result[i]=max;
|
|
107396
|
+
}
|
|
107397
|
+
|
|
107398
|
+
|
|
107399
|
+
return result;
|
|
107400
|
+
}
|
|
107401
|
+
|
|
107344
107402
|
//融资融券函数
|
|
107345
107403
|
this.GetMarginCacheData=function(id, node)
|
|
107346
107404
|
{
|
|
@@ -110480,7 +110538,10 @@ function JSExecute(ast,option)
|
|
|
110480
110538
|
['DRAWNULL',null],
|
|
110481
110539
|
["NULL",null],
|
|
110482
110540
|
|
|
110483
|
-
["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null]
|
|
110541
|
+
["MACHINEDATE",null],["MACHINETIME",null],["MACHINEWEEK",null],
|
|
110542
|
+
|
|
110543
|
+
["TR", null], //真实波幅
|
|
110544
|
+
["AUTOFILTER", null]
|
|
110484
110545
|
|
|
110485
110546
|
]);
|
|
110486
110547
|
|
|
@@ -110648,6 +110709,9 @@ function JSExecute(ast,option)
|
|
|
110648
110709
|
case 'VOLR':
|
|
110649
110710
|
return this.SymbolData.GetVolRateCacheData(node);
|
|
110650
110711
|
|
|
110712
|
+
case "TR": //TR,求真实波幅.
|
|
110713
|
+
return this.SymbolData.GetTRData(node);
|
|
110714
|
+
|
|
110651
110715
|
//大盘数据
|
|
110652
110716
|
case 'INDEXA':
|
|
110653
110717
|
case 'INDEXC':
|
|
@@ -112078,7 +112142,8 @@ function JSExplainer(ast,option)
|
|
|
112078
112142
|
["HYSYL","指数市盈率或个股所属行业的市盈率"],
|
|
112079
112143
|
["HYSJL","指数市净率或个股所属行业的市净率"],
|
|
112080
112144
|
|
|
112081
|
-
['DRAWNULL',"无效数据"]
|
|
112145
|
+
['DRAWNULL',"无效数据"],
|
|
112146
|
+
["TR", "求真实波幅"],
|
|
112082
112147
|
|
|
112083
112148
|
]);
|
|
112084
112149
|
|
|
@@ -112695,6 +112760,15 @@ function JSExplainer(ast,option)
|
|
|
112695
112760
|
else barType="实线空心柱";
|
|
112696
112761
|
return `当满足条件${args[0]}时, 在${args[1]}和${args[2]}位置之间画柱状线,宽度为${args[3]},${barType}`;
|
|
112697
112762
|
|
|
112763
|
+
case "SELL":
|
|
112764
|
+
return "卖出平仓";
|
|
112765
|
+
case "BUY":
|
|
112766
|
+
return "买入开仓";
|
|
112767
|
+
case "SELLSHORT":
|
|
112768
|
+
return "卖出开仓";
|
|
112769
|
+
case "BUYSHORT":
|
|
112770
|
+
return "买入平仓";
|
|
112771
|
+
|
|
112698
112772
|
case "YMOVE":
|
|
112699
112773
|
return;
|
|
112700
112774
|
|
|
@@ -112840,7 +112914,8 @@ function JSExplainer(ast,option)
|
|
|
112840
112914
|
[
|
|
112841
112915
|
"STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF','PLOYLINE',
|
|
112842
112916
|
'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS",
|
|
112843
|
-
'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2"
|
|
112917
|
+
'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2",
|
|
112918
|
+
"BUY","BUYSHORT","SELL","SELLSHORT",
|
|
112844
112919
|
]);
|
|
112845
112920
|
if (setFunctionName.has(name)) return true;
|
|
112846
112921
|
|
|
@@ -113040,10 +113115,21 @@ function JSExplainer(ast,option)
|
|
|
113040
113115
|
return this.SymbolPeriodExplain(aryPeriod[0],aryPeriod[1]);
|
|
113041
113116
|
}
|
|
113042
113117
|
|
|
113118
|
+
if (name=="AUTOFILTER") //信号过滤
|
|
113119
|
+
{
|
|
113120
|
+
return this.AUTOFILTER();
|
|
113121
|
+
}
|
|
113122
|
+
|
|
113043
113123
|
this.ThrowUnexpectedNode(node, '变量'+name+'不存在');
|
|
113044
113124
|
return name;
|
|
113045
113125
|
}
|
|
113046
113126
|
|
|
113127
|
+
this.AUTOFILTER=function()
|
|
113128
|
+
{
|
|
113129
|
+
//TODO:过滤信号
|
|
113130
|
+
return null;
|
|
113131
|
+
}
|
|
113132
|
+
|
|
113047
113133
|
this.ThrowUnexpectedNode=function(node,message)
|
|
113048
113134
|
{
|
|
113049
113135
|
let marker=node.Marker;
|
|
@@ -130238,7 +130324,7 @@ function HQChartScriptWorker()
|
|
|
130238
130324
|
|
|
130239
130325
|
|
|
130240
130326
|
|
|
130241
|
-
var HQCHART_VERSION="1.1.
|
|
130327
|
+
var HQCHART_VERSION="1.1.12648";
|
|
130242
130328
|
|
|
130243
130329
|
function PrintHQChartVersion()
|
|
130244
130330
|
{
|