hqchart 1.1.12649 → 1.1.12655

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.
@@ -3943,7 +3943,9 @@ 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="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;//派生
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;var bHScreen=this.ChartFrame.IsHScreen===true;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+=bHScreen?-2:2;}else if(this.TradeType=="SELL"||this.TradeType=="SELLSHORT"){this.Canvas.textBaseline="bottom";yOffset=bHScreen?2:-2;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();var xPointCount=this.ChartFrame.XPointCount;var border=this.ChartFrame.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;if(bHScreen){chartright=this.ChartBorder.GetBottom();//top=this.ChartBorder.GetRightEx();
3947
+ //bottom=this.ChartBorder.GetLeftEx();
3948
+ xOffset=this.ChartBorder.GetTop()+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
3949
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawText';//类名
3948
3950
  this.Color="rgb(255,193,37)";//线段颜色
3949
3951
  this.TextFont="14px 微软雅黑";//线段宽度
@@ -10617,7 +10619,8 @@ this.DRAWGBK=function(condition,color,color2,colorAngle){var drawData={Color:[],
10617
10619
  //例如:
10618
10620
  //DRAWGBK_DIV(C>O,RGB(0,255,0),RGB(255,0,0),0,0);
10619
10621
  this.DRAWGBK_DIV=function(condition,color,color2,colorType,fillType){var drawData={AryColor:[color,color2],ColorType:colorType,FillType:fillType,Data:[]};var result={DrawData:drawData,DrawType:'DRAWGBK_DIV'};if(!this.SymbolData||!this.SymbolData.Data||!IFrameSplitOperator.IsNonEmptyArray(this.SymbolData.Data.Data))return result;var aryKData=this.SymbolData.Data.Data;if(Array.isArray(condition)){for(var i=0;i<aryKData.length;++i){var condItem=condition[i];var item=null;if(condItem){var kItem=aryKData[i];if(fillType==1)item={AryValue:[kItem.High,kItem.Low]};else if(fillType==2)item={AryValue:[kItem.Open,kItem.Close]};else item={AryValue:null};}drawData.Data[i]=item;}}else{if(condition){for(var i=0;i<aryKData.length;++i){var kItem=aryKData[i];var item=null;if(fillType==1)item={AryValue:[kItem.High,kItem.Low]};else if(fillType==2)item={AryValue:[kItem.Open,kItem.Close]};else item={AryValue:null};drawData.Data[i]=item;}}}return result;};//画文字 及线段
10620
- this.DRAWTEXT_LINE=function(condition,price,text,textcolor,fontSize,linetype,linecolor){var drawData={Text:{Title:text,Color:textcolor},Line:{Type:linetype,Color:linecolor}};if(fontSize<=0)fontSize=12;drawData.Text.Font=fontSize*GetDevicePixelRatio()+'px 微软雅黑';var result={DrawData:null,DrawType:'DRAWTEXT_LINE'};if(Array.isArray(condition)){for(var i in condition){var item=condition[i];if(item){if(Array.isArray(price))drawData.Price=price[i];else drawData.Price=price;result.DrawData=drawData;break;}}}else{if(condition){if(Array.isArray(price))drawData.Price=price[0];else drawData.Price=price;result.DrawData=drawData;}}return result;};// 相对位置上画矩形.
10622
+ this.DRAWTEXT_LINE=function(condition,price,text,textcolor,fontSize,linetype,linecolor){var drawData={Text:{Title:text,Color:textcolor},Line:{Type:linetype,Color:linecolor}};if(fontSize<=0)fontSize=12;drawData.Text.Font=fontSize*GetDevicePixelRatio()+'px 微软雅黑';var result={DrawData:null,DrawType:'DRAWTEXT_LINE'};if(Array.isArray(condition)){var item=null;if(IFrameSplitOperator.IsNonEmptyArray(condition))item=condition[condition.length-1];//取最后一个数值
10623
+ if(item){if(Array.isArray(price))drawData.Price=price[condition.length-1];else drawData.Price=price;result.DrawData=drawData;}}else{if(condition){if(Array.isArray(price)){var value=null;if(price.length>0)value=price[price.length-1];drawData.Price=value;}else{drawData.Price=price;}result.DrawData=drawData;}}return result;};// 相对位置上画矩形.
10621
10624
  //用法: DRAWRECTREL(LEFT,TOP,RIGHT,BOTTOM,COLOR),以图形窗口(LEFT,TOP)为左上角,(RIGHT,BOTTOM)为右下角绘制矩形,坐标单位是窗口沿水平和垂直方向的1/1000,取值范围是0—999,超出范围则可能显示在图形窗口外,矩形中间填充颜色COLOR,COLOR为0表示不填充.
10622
10625
  //例如: DRAWRECTREL(0,0,500,500,RGB(255,255,0))表示在图形最左上部1/4位置用黄色绘制矩形
10623
10626
  this.DRAWRECTREL=function(left,top,right,bottom,color){var drawData={Rect:{Left:Math.min(left,right),Top:Math.min(top,bottom),Right:Math.max(right,left),Bottom:Math.max(bottom,top)},Color:color};if(color==0)drawData.Color=null;var result={DrawData:drawData,DrawType:'DRAWRECTREL'};return result;};//DRAWTEXTREL(X,Y,TEXT),在图形窗口(X,Y)坐标位置书写文字TEXT,坐标单位是窗口沿水平和垂直方向的1/1000,X、Y取值范围是0—999,超出范围则可能显示在图形窗口外。
@@ -11304,17 +11307,17 @@ else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf
11304
11307
  }}else if(itemExpression.Type==Syntax.Literal)//常量
11305
11308
  {var aryValue=itemExpression.Value;_varName7=itemExpression.Value.toString();isNoneName=true;this.VarTable.set(_varName7,aryValue);//把常量放到变量表里
11306
11309
  }else if(itemExpression.Type==Syntax.CallExpression){if(_j15==0){if(this.IsDrawFunction(itemExpression.Callee.Name)){draw=itemExpression.Out;_drawName=itemExpression.Callee.Name;}else{var _varValue4=itemExpression.Out;_varName7='__temp_sc_'+itemExpression.Callee.Name+'_'+_i146+'__';isNoneName=true;this.VarTable.set(_varName7,_varValue4);}}}else if(itemExpression.Type==Syntax.BinaryExpression){_varName7="__temp_sb_"+_i146+"__";var _aryValue2=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName7,_aryValue2);}}var outValue;if(draw)outValue='\u8F93\u51FA: '+draw;else if(isNoneName)outValue='\u8F93\u51FA: '+this.VarTable.get(_varName7);else outValue='\u8F93\u51FA'+_varName7+': '+this.VarTable.get(_varName7);if(color)outValue+=',\u989C\u8272'+this.GetColorExplain(color);if(lineWidth)outValue+=',\u7EBF\u6BB5\u7C97\u7EC6'+this.GetLineWidthExplain(lineWidth);if(isShow==false)outValue+=",不显示";if(isDotLine==true)outValue+=",画虚线";if(isDrawAbove==true)outValue+=',显示在位置之上';if(pointDot&&_varName7)//圆点
11307
- {outValue+=",画小圆点线";var _value15={Name:_varName7,Data:outValue,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};this.OutVarTable.push(_value15);}else if(circleDot&&_varName7)//圆点
11308
- {outValue+=",画小圆圈线";var _value16={Name:_varName7,Data:outValue,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};this.OutVarTable.push(_value16);}else if(lineStick&&_varName7)//LINESTICK 同时画出柱状线和指标线
11309
- {outValue+=",画出柱状线和指标线";var _value17={Name:_varName7,Data:outValue,Type:4};this.OutVarTable.push(_value17);}else if(stick&&_varName7)//STICK 画柱状线
11310
- {outValue+=",画柱状线";var _value18={Name:_varName7,Data:outValue,Type:5};this.OutVarTable.push(_value18);}else if(volStick&&_varName7)//VOLSTICK 画彩色柱状线
11311
- {outValue+=",画成交量柱状线";var _value19={Name:_varName7,Data:outValue,Type:6};this.OutVarTable.push(_value19);}else if(_varName7&&color){var _value20={Name:_varName7,Data:outValue,Color:color,Type:0};this.OutVarTable.push(_value20);}else if(draw)//画图函数
11312
- {var outVar={Name:_drawName,Data:outValue,Type:1};this.OutVarTable.push(outVar);}else if(colorStick&&_varName7)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
11313
- {outValue+=",画彩色柱状线";var _value21={Name:_varName7,Data:outValue,Color:color,Type:2};this.OutVarTable.push(_value21);}else if(_varName7){var _value22={Name:_varName7,Data:outValue,Type:0};this.OutVarTable.push(_value22);}}}}JSConsole.Complier.Log('[JSExplainer::Run]',this.VarTable);return this.OutVarTable;};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;}};this.VisitSequenceExpression=function(node){for(var _i147 in node.Expression){var _item28=node.Expression[_i147];this.VisitNode(_item28);}};//函数调用
11310
+ {outValue+=",画小圆点线";var _value15={Name:_varName7,Draw:outValue,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};this.OutVarTable.push(_value15);}else if(circleDot&&_varName7)//圆点
11311
+ {outValue+=",画小圆圈线";var _value16={Name:_varName7,Draw:outValue,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};this.OutVarTable.push(_value16);}else if(lineStick&&_varName7)//LINESTICK 同时画出柱状线和指标线
11312
+ {outValue+=",画出柱状线和指标线";var _value17={Name:_varName7,Draw:outValue,Type:4};this.OutVarTable.push(_value17);}else if(stick&&_varName7)//STICK 画柱状线
11313
+ {outValue+=",画柱状线";var _value18={Name:_varName7,Draw:outValue,Type:5};this.OutVarTable.push(_value18);}else if(volStick&&_varName7)//VOLSTICK 画彩色柱状线
11314
+ {outValue+=",画成交量柱状线";var _value19={Name:_varName7,Draw:outValue,Type:6};this.OutVarTable.push(_value19);}else if(_varName7&&color){var _value20={Name:_varName7,Data:outValue,Color:color,Type:0};this.OutVarTable.push(_value20);}else if(draw)//画图函数
11315
+ {var outVar={Name:_drawName,Draw:outValue,Type:1};this.OutVarTable.push(outVar);}else if(colorStick&&_varName7)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
11316
+ {outValue+=",画彩色柱状线";var _value21={Name:_varName7,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value21);}else if(_varName7){var _value22={Name:_varName7,Data:outValue,Type:0};this.OutVarTable.push(_value22);}}}}JSConsole.Complier.Log('[JSExplainer::Run]',this.VarTable);return this.OutVarTable;};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;}};this.VisitSequenceExpression=function(node){for(var _i147 in node.Expression){var _item28=node.Expression[_i147];this.VisitNode(_item28);}};//函数调用
11314
11317
  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';}}],//字符串函数
11315
11318
  ["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)//动态参数
11316
11319
  {}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);//绘图函数
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 自定义色
11320
+ 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"RGBA":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+','+args[3]+']';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;case"BACKGROUND":return"绘制背景";case"UPCOLOR":return'\u4E0A\u6DA8\u989C\u8272'+args[0];case"DOWNCOLOR":return'\u4E0B\u8DCC\u989C\u8272'+args[0];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 自定义色
11318
11321
  //格式为COLOR+“RRGGBB”:RR、GG、BB表示红色、绿色和蓝色的分量,每种颜色的取值范围是00-FF,采用了16进制。
11319
11322
  //例如:MA5:MA(CLOSE,5),COLOR00FFFF 表示纯红色与纯绿色的混合色:COLOR808000表示淡蓝色和淡绿色的混合色。
11320
11323
  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
@@ -11459,7 +11462,9 @@ if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK","
11459
11462
  hqChart.ChartPaint.push(line);};this.CreateChartSlopeLine=function(hqChart,windowIndex,varItem,id){var line=new ChartSlopeLine();line.Canvas=hqChart.Canvas;line.Name=varItem.Name;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)line.Color=this.GetColor(varItem.Color);else line.Color=this.GetDefaultColor(id);if(varItem.IsDotLine)line.IsDotLine=true;//虚线
11460
11463
  if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)line.LineWidth=width;}var titleIndex=windowIndex+1;line.Data.Data=varItem.Draw.DrawData.Data;line.Option=varItem.Draw.DrawData.Option;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,null,line.Color);//给一个空的标题
11461
11464
  hqChart.ChartPaint.push(line);};this.CreateChartVericaltLine=function(hqChart,windowIndex,varItem,id){var chart=new ChartVericaltLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}this.SetChartLineDash(chart,varItem.Draw.DrawData);chart.Data.Data=varItem.Draw.DrawData.Data;hqChart.ChartPaint.push(chart);};this.SetChartLineDash=function(chart,option){if(IFrameSplitOperator.IsNumber(option.LineType)){var lineType=option.LineType;var pixelRatio=GetDevicePixelRatio();switch(lineType){case 1:chart.LineType=[10*pixelRatio,10*pixelRatio];break;case 2:chart.LineType=[0,10*pixelRatio];chart.LineCap="square";break;case 3:chart.LineType=[10*pixelRatio,3*pixelRatio,3*pixelRatio,3*pixelRatio];break;case 4:chart.LineType=[10*pixelRatio,3*pixelRatio,3*pixelRatio,3*pixelRatio,3*pixelRatio,3*pixelRatio];break;}}else if(IFrameSplitOperator.IsString(option.LineType)){var aryString=option.LineType.split(',');var aryLinType=[];for(var i=0;i<aryString.length;++i){aryLinType.push(parseInt(aryString[i]));}chart.LineType=aryLinType;}};this.CreateChartHorizontalLine=function(hqChart,windowIndex,varItem,id){var chart=new ChartHorizontalLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}this.SetChartLineDash(chart,varItem.Draw.DrawData);chart.ExtendType=varItem.Draw.DrawData.Extend;chart.Data.Data=varItem.Draw.DrawData.Data;hqChart.ChartPaint.push(chart);};this.CreateBackgroud=function(hqChart,windowIndex,varItem,id){var chart=new ChartBackground();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.Color=drawData.Color;chart.ColorAngle=drawData.Angle;if(drawData.Data)chart.Data.Data=drawData.Data;}hqChart.ChartPaint.push(chart);};this.CreateBackgroundDiv=function(hqChart,windowIndex,varItem,id){var chart=new ChartBackgroundDiv();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.AryColor=drawData.AryColor;chart.ColorType=drawData.ColorType;if(drawData.Data)chart.Data.Data=drawData.Data;}hqChart.ChartPaint.push(chart);};this.CreateLineMultiData=function(hqChart,windowIndex,varItem,id){var chart=new ChartLineMultiData();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.Color=drawData.Color;if(drawData.PointColor)chart.PointColor=drawData.PointColor;if(IFrameSplitOperator.IsPlusNumber(drawData.PointRadius))chart.PointRadius=drawData.PointRadius;if(IFrameSplitOperator.IsPlusNumber(drawData.LineWidth))chart.LineWidth=drawData.LineWidth;if(drawData.Data)chart.Data.Data=drawData.Data;}var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);//标题
11462
- titleData.DataType="MULTI_POINT_LINE";hqChart.TitlePaint[titleIndex].Data[id]=titleData;hqChart.ChartPaint.push(chart);};this.CreateTradeIcon=function(hqChart,windowIndex,varItem,id){var chart=new ChartTradeIcon();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData.Data;chart.AryIcon=varItem.Draw.DrawData.Icons;chart.TradeType=varItem.Draw.DrawType;if(varItem.DrawFontSize>0)chart.SVG.Size=varItem.DrawFontSize;//图标大小
11465
+ titleData.DataType="MULTI_POINT_LINE";hqChart.TitlePaint[titleIndex].Data[id]=titleData;hqChart.ChartPaint.push(chart);};this.CreateTradeIcon=function(hqChart,windowIndex,varItem,id){var chart=new ChartTradeIcon();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData.Data;chart.AryIcon=varItem.Draw.DrawData.Icons;chart.TradeType=varItem.Draw.DrawType;//修改颜色
11466
+ if(varItem.Color&&IFrameSplitOperator.IsNonEmptyArray(chart.AryIcon)){for(var i=0;i<chart.AryIcon.length;++i){var item=chart.AryIcon[i];if(!item||!item.Color)continue;item.Color=varItem.Color;}}//图片大小
11467
+ if(varItem.DrawFontSize>0)chart.SVG.Size=varItem.DrawFontSize*GetDevicePixelRatio();//图标大小
11463
11468
  hqChart.ChartPaint.push(chart);};this.CreateTextLine=function(hqChart,windowIndex,varItem,id){var chart=new ChartTextLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.Text=drawData.Text;chart.Line=drawData.Line;chart.Price=drawData.Price;}hqChart.ChartPaint.push(chart);};this.CreateNumberText=function(hqChart,windowIndex,varItem,id){var chartText=new ChartSingleText();chartText.Canvas=hqChart.Canvas;chartText.Name=varItem.Name;chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chartText.ReloadResource();chartText.TextAlign="center";if(varItem.Color)chartText.Color=this.GetColor(varItem.Color);else chartText.Color=this.GetDefaultColor(id);if(varItem.IsDrawAbove)chartText.Direction=1;else chartText.Direction=2;if(varItem.Draw.Position)chartText.Position=varItem.Draw.Position;//赋值坐标
11464
11469
  var titleIndex=windowIndex+1;chartText.Data.Data=varItem.Draw.DrawData.Value;chartText.Text=varItem.Draw.DrawData.Text;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
11465
11470
  hqChart.ChartPaint.push(chartText);};this.CreateDrawText=function(hqChart,windowIndex,varItem,id){var chartText=new ChartSingleText();chartText.Canvas=hqChart.Canvas;chartText.Name=varItem.Name;chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chartText.ReloadResource();if(varItem.Color)chartText.Color=this.GetColor(varItem.Color);else chartText.Color=this.GetDefaultColor(id);if(varItem.IsDrawAbove)chartText.Direction=1;else chartText.Direction=0;if(varItem.DrawFontSize>0)chartText.TextFont=varItem.DrawFontSize*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1';//临时用下吧
@@ -12791,7 +12796,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
12791
12796
  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);};}/********************************************************************************
12792
12797
  * 版本信息输出
12793
12798
  *
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();//把给外界调用的方法暴露出来
12799
+ */var HQCHART_VERSION="1.1.12654";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();//把给外界调用的方法暴露出来
12795
12800
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12796
12801
  // BaseIndex:BaseIndex,
12797
12802
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "hqchart",
3
3
  "description": "stock chart",
4
4
  "author": "jones2000",
5
- "version": "1.1.12649",
5
+ "version": "1.1.12655",
6
6
  "main": "lib/main.js",
7
7
  "private": false,
8
8
  "license": "Apache License 2.0",
@@ -10826,25 +10826,31 @@ function JSDraw(errorHandler,symbolData)
10826
10826
 
10827
10827
  if (Array.isArray(condition))
10828
10828
  {
10829
- for(var i in condition)
10829
+ var item=null;
10830
+ if (IFrameSplitOperator.IsNonEmptyArray(condition))
10831
+ item=condition[condition.length-1]; //取最后一个数值
10832
+
10833
+ if (item)
10830
10834
  {
10831
- var item=condition[i];
10832
- if (item)
10833
- {
10834
- if (Array.isArray(price)) drawData.Price=price[i];
10835
- else drawData.Price=price;
10836
- result.DrawData=drawData;
10837
-
10838
- break;
10839
- }
10835
+ if (Array.isArray(price)) drawData.Price=price[condition.length-1];
10836
+ else drawData.Price=price;
10837
+ result.DrawData=drawData;
10840
10838
  }
10841
10839
  }
10842
10840
  else
10843
10841
  {
10844
10842
  if (condition)
10845
10843
  {
10846
- if (Array.isArray(price)) drawData.Price=price[0];
10847
- else drawData.Price=price;
10844
+ if (Array.isArray(price))
10845
+ {
10846
+ var value=null;
10847
+ if (price.length>0) value=price[price.length-1];
10848
+ drawData.Price=value;
10849
+ }
10850
+ else
10851
+ {
10852
+ drawData.Price=price;
10853
+ }
10848
10854
  result.DrawData=drawData;
10849
10855
  }
10850
10856
  }
@@ -18269,31 +18275,31 @@ function JSExplainer(ast,option)
18269
18275
  if (pointDot && varName) //圆点
18270
18276
  {
18271
18277
  outValue+=",画小圆点线";
18272
- let value={Name:varName, Data:outValue, Radius:g_JSChartResource.POINTDOT.Radius, Type:3};
18278
+ let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.POINTDOT.Radius, Type:3};
18273
18279
  this.OutVarTable.push(value);
18274
18280
  }
18275
18281
  else if (circleDot && varName) //圆点
18276
18282
  {
18277
18283
  outValue+=",画小圆圈线";
18278
- let value={Name:varName, Data:outValue, Radius:g_JSChartResource.CIRCLEDOT.Radius, Type:3};
18284
+ let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.CIRCLEDOT.Radius, Type:3};
18279
18285
  this.OutVarTable.push(value);
18280
18286
  }
18281
18287
  else if (lineStick && varName) //LINESTICK 同时画出柱状线和指标线
18282
18288
  {
18283
18289
  outValue+=",画出柱状线和指标线";
18284
- let value={Name:varName, Data:outValue, Type:4};
18290
+ let value={Name:varName, Draw:outValue, Type:4};
18285
18291
  this.OutVarTable.push(value);
18286
18292
  }
18287
18293
  else if (stick && varName) //STICK 画柱状线
18288
18294
  {
18289
18295
  outValue+=",画柱状线";
18290
- let value={Name:varName, Data:outValue, Type:5};
18296
+ let value={Name:varName, Draw:outValue, Type:5};
18291
18297
  this.OutVarTable.push(value);
18292
18298
  }
18293
18299
  else if (volStick && varName) //VOLSTICK 画彩色柱状线
18294
18300
  {
18295
18301
  outValue+=",画成交量柱状线";
18296
- let value={Name:varName, Data:outValue, Type:6};
18302
+ let value={Name:varName, Draw:outValue, Type:6};
18297
18303
  this.OutVarTable.push(value);
18298
18304
  }
18299
18305
  else if (varName && color)
@@ -18303,13 +18309,13 @@ function JSExplainer(ast,option)
18303
18309
  }
18304
18310
  else if (draw) //画图函数
18305
18311
  {
18306
- var outVar={ Name:drawName, Data:outValue, Type:1 };
18312
+ var outVar={ Name:drawName, Draw:outValue, Type:1 };
18307
18313
  this.OutVarTable.push(outVar);
18308
18314
  }
18309
18315
  else if (colorStick && varName) //CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
18310
18316
  {
18311
18317
  outValue+=",画彩色柱状线";
18312
- let value={Name:varName, Data:outValue, Color:color, Type:2};
18318
+ let value={Name:varName, Draw:outValue, Color:color, Type:2};
18313
18319
  this.OutVarTable.push(value);
18314
18320
  }
18315
18321
  else if (varName)
@@ -18635,6 +18641,8 @@ function JSExplainer(ast,option)
18635
18641
  return `当满足条件${args[0]}时,在横轴${args[1]}纵轴${args[2]}位置书写数字`;
18636
18642
  case "RGB":
18637
18643
  return `自定色[${args[0]},${args[1]},${args[2]}]`;
18644
+ case "RGBA":
18645
+ return `自定色[${args[0]},${args[1]},${args[2]},${args[3]}]`;
18638
18646
  case "DRAWBAND":
18639
18647
  return '画带状线';
18640
18648
  case "DRAWRECTREL":
@@ -18661,6 +18669,12 @@ function JSExplainer(ast,option)
18661
18669
 
18662
18670
  case "YMOVE":
18663
18671
  return;
18672
+ case "BACKGROUND":
18673
+ return "绘制背景";
18674
+ case "UPCOLOR":
18675
+ return `上涨颜色${args[0]}`;
18676
+ case "DOWNCOLOR":
18677
+ return `下跌颜色${args[0]}`;
18664
18678
 
18665
18679
  default:
18666
18680
  this.ThrowUnexpectedNode(node,`函数${funcName}不存在`);
@@ -20488,7 +20502,20 @@ function ScriptIndex(name,script,args,option)
20488
20502
  chart.AryIcon=varItem.Draw.DrawData.Icons;
20489
20503
  chart.TradeType=varItem.Draw.DrawType;
20490
20504
 
20491
- if (varItem.DrawFontSize>0) chart.SVG.Size=varItem.DrawFontSize; //图标大小
20505
+ //修改颜色
20506
+ if (varItem.Color && IFrameSplitOperator.IsNonEmptyArray(chart.AryIcon))
20507
+ {
20508
+ for(var i=0;i<chart.AryIcon.length;++i)
20509
+ {
20510
+ var item=chart.AryIcon[i];
20511
+ if (!item || !item.Color) continue;
20512
+
20513
+ item.Color=varItem.Color;
20514
+ }
20515
+ }
20516
+
20517
+ //图片大小
20518
+ if (varItem.DrawFontSize>0) chart.SVG.Size=varItem.DrawFontSize*GetDevicePixelRatio(); //图标大小
20492
20519
 
20493
20520
  hqChart.ChartPaint.push(chart);
20494
20521
  }
@@ -30542,6 +30542,7 @@ function ChartTradeIcon()
30542
30542
  if(!this.Data || !this.Data.Data) return;
30543
30543
  if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon)) return;
30544
30544
 
30545
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
30545
30546
  this.Canvas.font=`${this.SVG.Size}px ${this.SVG.Family}`;
30546
30547
  this.Canvas.textAlign=this.TextAlign;
30547
30548
  this.Canvas.textBaseline='middle';
@@ -30549,22 +30550,27 @@ function ChartTradeIcon()
30549
30550
  if (this.TradeType=="BUY" || this.TradeType=="BUYSHORT")
30550
30551
  {
30551
30552
  this.Canvas.textBaseline="top";
30552
- yOffset+2;
30553
+ yOffset+=(bHScreen?-2:2);
30553
30554
  }
30554
30555
  else if (this.TradeType=="SELL" || this.TradeType=="SELLSHORT")
30555
30556
  {
30556
30557
  this.Canvas.textBaseline="bottom";
30557
- yOffset=-2;
30558
+ yOffset=(bHScreen?2:-2);
30558
30559
  }
30559
-
30560
- var bHScreen=(this.ChartFrame.IsHScreen===true);
30560
+
30561
30561
  var dataWidth=this.ChartFrame.DataWidth;
30562
30562
  var distanceWidth=this.ChartFrame.DistanceWidth;
30563
30563
  var chartright=this.ChartBorder.GetRight();
30564
- if (bHScreen) chartright=this.ChartBorder.GetBottom();
30565
30564
  var xPointCount=this.ChartFrame.XPointCount;
30566
30565
  var border=this.ChartFrame.GetBorder();
30567
30566
  var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
30567
+ if (bHScreen)
30568
+ {
30569
+ chartright=this.ChartBorder.GetBottom();
30570
+ //top=this.ChartBorder.GetRightEx();
30571
+ //bottom=this.ChartBorder.GetLeftEx();
30572
+ xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
30573
+ }
30568
30574
 
30569
30575
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
30570
30576
  {
@@ -131,8 +131,9 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
131
131
  "FONTSIZE21":LINE_WIDTH_NAME,"FONTSIZE22":LINE_WIDTH_NAME,"FONTSIZE23":LINE_WIDTH_NAME,"FONTSIZE24":LINE_WIDTH_NAME,"FONTSIZE25":LINE_WIDTH_NAME,
132
132
 
133
133
  "VALIGN0":LINE_WIDTH_NAME,"VALIGN1":LINE_WIDTH_NAME,"VALIGN2":LINE_WIDTH_NAME,
134
+ "ALIGN0":LINE_WIDTH_NAME,"ALIGN1":LINE_WIDTH_NAME,"ALIGN2":LINE_WIDTH_NAME,
134
135
 
135
- 'COLORSTICK':DRAW_NAME,'CIRCLEDOT':DRAW_NAME,'POINTDOT':DRAW_NAME,'LINESTICK':DRAW_NAME,'STICK':DRAW_NAME,'NODRAW':DRAW_NAME,
136
+ 'COLORSTICK':DRAW_NAME,'CIRCLEDOT':DRAW_NAME,'POINTDOT':DRAW_NAME,'LINESTICK':DRAW_NAME,'STICK':DRAW_NAME,'NODRAW':DRAW_NAME,"NOTEXT":DRAW_NAME,"NOTITLE":DRAW_NAME,
136
137
  "LINEAREA":DRAW_NAME,
137
138
 
138
139
  "BUY":DRAW_NAME,"SELL":DRAW_NAME,"SELLSHORT":DRAW_NAME,"BUYSHORT":DRAW_NAME,"TIPICON":DRAW_NAME,"AUTOFILTER":FUNCTION_NAME,
@@ -34622,6 +34622,7 @@ function ChartTradeIcon()
34622
34622
  if(!this.Data || !this.Data.Data) return;
34623
34623
  if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon)) return;
34624
34624
 
34625
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
34625
34626
  this.Canvas.font=`${this.SVG.Size}px ${this.SVG.Family}`;
34626
34627
  this.Canvas.textAlign=this.TextAlign;
34627
34628
  this.Canvas.textBaseline='middle';
@@ -34629,22 +34630,27 @@ function ChartTradeIcon()
34629
34630
  if (this.TradeType=="BUY" || this.TradeType=="BUYSHORT")
34630
34631
  {
34631
34632
  this.Canvas.textBaseline="top";
34632
- yOffset+2;
34633
+ yOffset+=(bHScreen?-2:2);
34633
34634
  }
34634
34635
  else if (this.TradeType=="SELL" || this.TradeType=="SELLSHORT")
34635
34636
  {
34636
34637
  this.Canvas.textBaseline="bottom";
34637
- yOffset=-2;
34638
+ yOffset=(bHScreen?2:-2);
34638
34639
  }
34639
-
34640
- var bHScreen=(this.ChartFrame.IsHScreen===true);
34640
+
34641
34641
  var dataWidth=this.ChartFrame.DataWidth;
34642
34642
  var distanceWidth=this.ChartFrame.DistanceWidth;
34643
34643
  var chartright=this.ChartBorder.GetRight();
34644
- if (bHScreen) chartright=this.ChartBorder.GetBottom();
34645
34644
  var xPointCount=this.ChartFrame.XPointCount;
34646
34645
  var border=this.ChartFrame.GetBorder();
34647
34646
  var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
34647
+ if (bHScreen)
34648
+ {
34649
+ chartright=this.ChartBorder.GetBottom();
34650
+ //top=this.ChartBorder.GetRightEx();
34651
+ //bottom=this.ChartBorder.GetLeftEx();
34652
+ xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
34653
+ }
34648
34654
 
34649
34655
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
34650
34656
  {
@@ -104892,25 +104898,31 @@ function JSDraw(errorHandler,symbolData)
104892
104898
 
104893
104899
  if (Array.isArray(condition))
104894
104900
  {
104895
- for(var i in condition)
104901
+ var item=null;
104902
+ if (IFrameSplitOperator.IsNonEmptyArray(condition))
104903
+ item=condition[condition.length-1]; //取最后一个数值
104904
+
104905
+ if (item)
104896
104906
  {
104897
- var item=condition[i];
104898
- if (item)
104899
- {
104900
- if (Array.isArray(price)) drawData.Price=price[i];
104901
- else drawData.Price=price;
104902
- result.DrawData=drawData;
104903
-
104904
- break;
104905
- }
104907
+ if (Array.isArray(price)) drawData.Price=price[condition.length-1];
104908
+ else drawData.Price=price;
104909
+ result.DrawData=drawData;
104906
104910
  }
104907
104911
  }
104908
104912
  else
104909
104913
  {
104910
104914
  if (condition)
104911
104915
  {
104912
- if (Array.isArray(price)) drawData.Price=price[0];
104913
- else drawData.Price=price;
104916
+ if (Array.isArray(price))
104917
+ {
104918
+ var value=null;
104919
+ if (price.length>0) value=price[price.length-1];
104920
+ drawData.Price=value;
104921
+ }
104922
+ else
104923
+ {
104924
+ drawData.Price=price;
104925
+ }
104914
104926
  result.DrawData=drawData;
104915
104927
  }
104916
104928
  }
@@ -112335,31 +112347,31 @@ function JSExplainer(ast,option)
112335
112347
  if (pointDot && varName) //圆点
112336
112348
  {
112337
112349
  outValue+=",画小圆点线";
112338
- let value={Name:varName, Data:outValue, Radius:g_JSChartResource.POINTDOT.Radius, Type:3};
112350
+ let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.POINTDOT.Radius, Type:3};
112339
112351
  this.OutVarTable.push(value);
112340
112352
  }
112341
112353
  else if (circleDot && varName) //圆点
112342
112354
  {
112343
112355
  outValue+=",画小圆圈线";
112344
- let value={Name:varName, Data:outValue, Radius:g_JSChartResource.CIRCLEDOT.Radius, Type:3};
112356
+ let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.CIRCLEDOT.Radius, Type:3};
112345
112357
  this.OutVarTable.push(value);
112346
112358
  }
112347
112359
  else if (lineStick && varName) //LINESTICK 同时画出柱状线和指标线
112348
112360
  {
112349
112361
  outValue+=",画出柱状线和指标线";
112350
- let value={Name:varName, Data:outValue, Type:4};
112362
+ let value={Name:varName, Draw:outValue, Type:4};
112351
112363
  this.OutVarTable.push(value);
112352
112364
  }
112353
112365
  else if (stick && varName) //STICK 画柱状线
112354
112366
  {
112355
112367
  outValue+=",画柱状线";
112356
- let value={Name:varName, Data:outValue, Type:5};
112368
+ let value={Name:varName, Draw:outValue, Type:5};
112357
112369
  this.OutVarTable.push(value);
112358
112370
  }
112359
112371
  else if (volStick && varName) //VOLSTICK 画彩色柱状线
112360
112372
  {
112361
112373
  outValue+=",画成交量柱状线";
112362
- let value={Name:varName, Data:outValue, Type:6};
112374
+ let value={Name:varName, Draw:outValue, Type:6};
112363
112375
  this.OutVarTable.push(value);
112364
112376
  }
112365
112377
  else if (varName && color)
@@ -112369,13 +112381,13 @@ function JSExplainer(ast,option)
112369
112381
  }
112370
112382
  else if (draw) //画图函数
112371
112383
  {
112372
- var outVar={ Name:drawName, Data:outValue, Type:1 };
112384
+ var outVar={ Name:drawName, Draw:outValue, Type:1 };
112373
112385
  this.OutVarTable.push(outVar);
112374
112386
  }
112375
112387
  else if (colorStick && varName) //CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
112376
112388
  {
112377
112389
  outValue+=",画彩色柱状线";
112378
- let value={Name:varName, Data:outValue, Color:color, Type:2};
112390
+ let value={Name:varName, Draw:outValue, Color:color, Type:2};
112379
112391
  this.OutVarTable.push(value);
112380
112392
  }
112381
112393
  else if (varName)
@@ -112701,6 +112713,8 @@ function JSExplainer(ast,option)
112701
112713
  return `当满足条件${args[0]}时,在横轴${args[1]}纵轴${args[2]}位置书写数字`;
112702
112714
  case "RGB":
112703
112715
  return `自定色[${args[0]},${args[1]},${args[2]}]`;
112716
+ case "RGBA":
112717
+ return `自定色[${args[0]},${args[1]},${args[2]},${args[3]}]`;
112704
112718
  case "DRAWBAND":
112705
112719
  return '画带状线';
112706
112720
  case "DRAWRECTREL":
@@ -112727,6 +112741,12 @@ function JSExplainer(ast,option)
112727
112741
 
112728
112742
  case "YMOVE":
112729
112743
  return;
112744
+ case "BACKGROUND":
112745
+ return "绘制背景";
112746
+ case "UPCOLOR":
112747
+ return `上涨颜色${args[0]}`;
112748
+ case "DOWNCOLOR":
112749
+ return `下跌颜色${args[0]}`;
112730
112750
 
112731
112751
  default:
112732
112752
  this.ThrowUnexpectedNode(node,`函数${funcName}不存在`);
@@ -114554,7 +114574,20 @@ function ScriptIndex(name,script,args,option)
114554
114574
  chart.AryIcon=varItem.Draw.DrawData.Icons;
114555
114575
  chart.TradeType=varItem.Draw.DrawType;
114556
114576
 
114557
- if (varItem.DrawFontSize>0) chart.SVG.Size=varItem.DrawFontSize; //图标大小
114577
+ //修改颜色
114578
+ if (varItem.Color && IFrameSplitOperator.IsNonEmptyArray(chart.AryIcon))
114579
+ {
114580
+ for(var i=0;i<chart.AryIcon.length;++i)
114581
+ {
114582
+ var item=chart.AryIcon[i];
114583
+ if (!item || !item.Color) continue;
114584
+
114585
+ item.Color=varItem.Color;
114586
+ }
114587
+ }
114588
+
114589
+ //图片大小
114590
+ if (varItem.DrawFontSize>0) chart.SVG.Size=varItem.DrawFontSize*GetDevicePixelRatio(); //图标大小
114558
114591
 
114559
114592
  hqChart.ChartPaint.push(chart);
114560
114593
  }
@@ -130166,7 +130199,7 @@ function ScrollBarBGChart()
130166
130199
 
130167
130200
 
130168
130201
 
130169
- var HQCHART_VERSION="1.1.12648";
130202
+ var HQCHART_VERSION="1.1.12654";
130170
130203
 
130171
130204
  function PrintHQChartVersion()
130172
130205
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12648";
8
+ var HQCHART_VERSION="1.1.12654";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -34666,6 +34666,7 @@ function ChartTradeIcon()
34666
34666
  if(!this.Data || !this.Data.Data) return;
34667
34667
  if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon)) return;
34668
34668
 
34669
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
34669
34670
  this.Canvas.font=`${this.SVG.Size}px ${this.SVG.Family}`;
34670
34671
  this.Canvas.textAlign=this.TextAlign;
34671
34672
  this.Canvas.textBaseline='middle';
@@ -34673,22 +34674,27 @@ function ChartTradeIcon()
34673
34674
  if (this.TradeType=="BUY" || this.TradeType=="BUYSHORT")
34674
34675
  {
34675
34676
  this.Canvas.textBaseline="top";
34676
- yOffset+2;
34677
+ yOffset+=(bHScreen?-2:2);
34677
34678
  }
34678
34679
  else if (this.TradeType=="SELL" || this.TradeType=="SELLSHORT")
34679
34680
  {
34680
34681
  this.Canvas.textBaseline="bottom";
34681
- yOffset=-2;
34682
+ yOffset=(bHScreen?2:-2);
34682
34683
  }
34683
-
34684
- var bHScreen=(this.ChartFrame.IsHScreen===true);
34684
+
34685
34685
  var dataWidth=this.ChartFrame.DataWidth;
34686
34686
  var distanceWidth=this.ChartFrame.DistanceWidth;
34687
34687
  var chartright=this.ChartBorder.GetRight();
34688
- if (bHScreen) chartright=this.ChartBorder.GetBottom();
34689
34688
  var xPointCount=this.ChartFrame.XPointCount;
34690
34689
  var border=this.ChartFrame.GetBorder();
34691
34690
  var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
34691
+ if (bHScreen)
34692
+ {
34693
+ chartright=this.ChartBorder.GetBottom();
34694
+ //top=this.ChartBorder.GetRightEx();
34695
+ //bottom=this.ChartBorder.GetLeftEx();
34696
+ xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
34697
+ }
34692
34698
 
34693
34699
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
34694
34700
  {
@@ -104936,25 +104942,31 @@ function JSDraw(errorHandler,symbolData)
104936
104942
 
104937
104943
  if (Array.isArray(condition))
104938
104944
  {
104939
- for(var i in condition)
104945
+ var item=null;
104946
+ if (IFrameSplitOperator.IsNonEmptyArray(condition))
104947
+ item=condition[condition.length-1]; //取最后一个数值
104948
+
104949
+ if (item)
104940
104950
  {
104941
- var item=condition[i];
104942
- if (item)
104943
- {
104944
- if (Array.isArray(price)) drawData.Price=price[i];
104945
- else drawData.Price=price;
104946
- result.DrawData=drawData;
104947
-
104948
- break;
104949
- }
104951
+ if (Array.isArray(price)) drawData.Price=price[condition.length-1];
104952
+ else drawData.Price=price;
104953
+ result.DrawData=drawData;
104950
104954
  }
104951
104955
  }
104952
104956
  else
104953
104957
  {
104954
104958
  if (condition)
104955
104959
  {
104956
- if (Array.isArray(price)) drawData.Price=price[0];
104957
- else drawData.Price=price;
104960
+ if (Array.isArray(price))
104961
+ {
104962
+ var value=null;
104963
+ if (price.length>0) value=price[price.length-1];
104964
+ drawData.Price=value;
104965
+ }
104966
+ else
104967
+ {
104968
+ drawData.Price=price;
104969
+ }
104958
104970
  result.DrawData=drawData;
104959
104971
  }
104960
104972
  }
@@ -112379,31 +112391,31 @@ function JSExplainer(ast,option)
112379
112391
  if (pointDot && varName) //圆点
112380
112392
  {
112381
112393
  outValue+=",画小圆点线";
112382
- let value={Name:varName, Data:outValue, Radius:g_JSChartResource.POINTDOT.Radius, Type:3};
112394
+ let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.POINTDOT.Radius, Type:3};
112383
112395
  this.OutVarTable.push(value);
112384
112396
  }
112385
112397
  else if (circleDot && varName) //圆点
112386
112398
  {
112387
112399
  outValue+=",画小圆圈线";
112388
- let value={Name:varName, Data:outValue, Radius:g_JSChartResource.CIRCLEDOT.Radius, Type:3};
112400
+ let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.CIRCLEDOT.Radius, Type:3};
112389
112401
  this.OutVarTable.push(value);
112390
112402
  }
112391
112403
  else if (lineStick && varName) //LINESTICK 同时画出柱状线和指标线
112392
112404
  {
112393
112405
  outValue+=",画出柱状线和指标线";
112394
- let value={Name:varName, Data:outValue, Type:4};
112406
+ let value={Name:varName, Draw:outValue, Type:4};
112395
112407
  this.OutVarTable.push(value);
112396
112408
  }
112397
112409
  else if (stick && varName) //STICK 画柱状线
112398
112410
  {
112399
112411
  outValue+=",画柱状线";
112400
- let value={Name:varName, Data:outValue, Type:5};
112412
+ let value={Name:varName, Draw:outValue, Type:5};
112401
112413
  this.OutVarTable.push(value);
112402
112414
  }
112403
112415
  else if (volStick && varName) //VOLSTICK 画彩色柱状线
112404
112416
  {
112405
112417
  outValue+=",画成交量柱状线";
112406
- let value={Name:varName, Data:outValue, Type:6};
112418
+ let value={Name:varName, Draw:outValue, Type:6};
112407
112419
  this.OutVarTable.push(value);
112408
112420
  }
112409
112421
  else if (varName && color)
@@ -112413,13 +112425,13 @@ function JSExplainer(ast,option)
112413
112425
  }
112414
112426
  else if (draw) //画图函数
112415
112427
  {
112416
- var outVar={ Name:drawName, Data:outValue, Type:1 };
112428
+ var outVar={ Name:drawName, Draw:outValue, Type:1 };
112417
112429
  this.OutVarTable.push(outVar);
112418
112430
  }
112419
112431
  else if (colorStick && varName) //CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
112420
112432
  {
112421
112433
  outValue+=",画彩色柱状线";
112422
- let value={Name:varName, Data:outValue, Color:color, Type:2};
112434
+ let value={Name:varName, Draw:outValue, Color:color, Type:2};
112423
112435
  this.OutVarTable.push(value);
112424
112436
  }
112425
112437
  else if (varName)
@@ -112745,6 +112757,8 @@ function JSExplainer(ast,option)
112745
112757
  return `当满足条件${args[0]}时,在横轴${args[1]}纵轴${args[2]}位置书写数字`;
112746
112758
  case "RGB":
112747
112759
  return `自定色[${args[0]},${args[1]},${args[2]}]`;
112760
+ case "RGBA":
112761
+ return `自定色[${args[0]},${args[1]},${args[2]},${args[3]}]`;
112748
112762
  case "DRAWBAND":
112749
112763
  return '画带状线';
112750
112764
  case "DRAWRECTREL":
@@ -112771,6 +112785,12 @@ function JSExplainer(ast,option)
112771
112785
 
112772
112786
  case "YMOVE":
112773
112787
  return;
112788
+ case "BACKGROUND":
112789
+ return "绘制背景";
112790
+ case "UPCOLOR":
112791
+ return `上涨颜色${args[0]}`;
112792
+ case "DOWNCOLOR":
112793
+ return `下跌颜色${args[0]}`;
112774
112794
 
112775
112795
  default:
112776
112796
  this.ThrowUnexpectedNode(node,`函数${funcName}不存在`);
@@ -114598,7 +114618,20 @@ function ScriptIndex(name,script,args,option)
114598
114618
  chart.AryIcon=varItem.Draw.DrawData.Icons;
114599
114619
  chart.TradeType=varItem.Draw.DrawType;
114600
114620
 
114601
- if (varItem.DrawFontSize>0) chart.SVG.Size=varItem.DrawFontSize; //图标大小
114621
+ //修改颜色
114622
+ if (varItem.Color && IFrameSplitOperator.IsNonEmptyArray(chart.AryIcon))
114623
+ {
114624
+ for(var i=0;i<chart.AryIcon.length;++i)
114625
+ {
114626
+ var item=chart.AryIcon[i];
114627
+ if (!item || !item.Color) continue;
114628
+
114629
+ item.Color=varItem.Color;
114630
+ }
114631
+ }
114632
+
114633
+ //图片大小
114634
+ if (varItem.DrawFontSize>0) chart.SVG.Size=varItem.DrawFontSize*GetDevicePixelRatio(); //图标大小
114602
114635
 
114603
114636
  hqChart.ChartPaint.push(chart);
114604
114637
  }
@@ -130324,7 +130357,7 @@ function HQChartScriptWorker()
130324
130357
 
130325
130358
 
130326
130359
 
130327
- var HQCHART_VERSION="1.1.12648";
130360
+ var HQCHART_VERSION="1.1.12654";
130328
130361
 
130329
130362
  function PrintHQChartVersion()
130330
130363
  {