hqchart 1.1.13027 → 1.1.13046

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.
@@ -7988,7 +7988,7 @@ this.GetSelectRectData=function(selectData){if(Math.abs(selectData.XStart-select
7988
7988
  {var subFrame=this.Frame.SubFrame[1];if(subFrame.Frame)subFrame.Frame.XYSplit=true;}};this.ExportMainData=function(data,option){var aryData=data.ExportMinuteData(option);//导出K线
7989
7989
  return aryData;};this.DisplayLatest=function(){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DISPLAY_LATEST);//选中画图工具事件
7990
7990
  if(event){var sendData={PreventDefault:false};event.Callback(event,sendData,this);if(sendData.PreventDefault)return;}this.CursorIndex=null;this.LastPoint.X=0;this.LastPoint.Y=0;this.GlobalOption.IsDisplayLatest=true;this.DrawDynamicInfo();};this.TryClickIndexTitle=function(x,y){for(var i=0;i<this.TitlePaint.length;++i){var item=this.TitlePaint[i];if(!item.IsClickTitle)continue;if(!item.IsClickTitle(x,y))continue;var data={Point:{X:x,Y:y},Title:item.Title,FrameID:item.Frame.Identify};JSConsole.Chart.Log('[MinuteChartContainer::TryClickIndexTitle] click title ',data);var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEXTITLE);if(event&&event.Callback)event.Callback(event,data,this);return true;}return false;};}//盘前数据
7991
- MinuteChartContainer.JsonDataToBeforeOpenData=function(data){var symbol=data.stock[0].symbol;var upperSymbol=symbol.toUpperCase();var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var yClose=data.stock[0].yclos;var preClose=data.stock[0].yclose;//前一个数据价格
7991
+ MinuteChartContainer.JsonDataToBeforeOpenData=function(data){var symbol=data.stock[0].symbol;var upperSymbol=symbol.toUpperCase();var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var yClose=data.stock[0].yclose;var preClose=data.stock[0].yclose;//前一个数据价格
7992
7992
  var stockData=data.stock[0];var date=stockData.date;//日期
7993
7993
  var beforeOpenData={Data:[],TotalCount:15,Ver:1.0,Date:date};var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_BEFOREOPEN_EXTENDDATA;//扩展数据序号
7994
7994
  if(stockData.beforeinfo){if(IFrameSplitOperator.IsNumber(stockData.beforeinfo.totalcount))beforeOpenData.TotalCount=stockData.beforeinfo.totalcount;if(IFrameSplitOperator.IsNumber(stockData.beforeinfo.ver))beforeOpenData.Ver=stockData.beforeinfo.ver;}if(beforeOpenData.Ver==1.0){if(IFrameSplitOperator.IsNonEmptyArray(stockData.before)){for(var i=0;i<stockData.before.length;++i){var item=new BeforeOpenData();var jsData=stockData.before[i];item.YClose=yClose;item.Time=jsData[0];item.Date=date;item.Price=jsData[1];if(!item.Price)item.Price=preClose;else preClose=item.Price;if(isSHSZ)item.Vol[0]=jsData[2]/100;//沪深股票原始单位股
@@ -11104,9 +11104,10 @@ else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","
11104
11104
  {var _outVar14=this.VarTable.get(_varName3);var _value8={Name:_varName3,Data:_outVar14,Color:color,Type:2};if(lineWidth)_value8.LineWidth=lineWidth;if(color)_value8.Color=color;if(upColor)_value8.UpColor=upColor;if(downColor)_value8.DownColor=downColor;this.OutVarTable.push(_value8);}else if(_varName3&&color&&!_draw3){var _outVar15=this.VarTable.get(_varName3);if(!Array.isArray(_outVar15))_outVar15=this.SingleDataToArrayData(_outVar15);var _value9={Name:_varName3,Data:_outVar15,Color:color,Type:0};if(lineWidth)_value9.LineWidth=lineWidth;if(isShow==false)_value9.IsShow=false;if(isExData==true)_value9.IsExData=true;if(isDotLine==true)_value9.IsDotLine=true;if(isOverlayLine==true)_value9.IsOverlayLine=true;if(isNoneName==true)_value9.NoneName=true;if(isShowTitle==false)_value9.IsShowTitle=false;if(stepLine==true)_value9.Type=7;this.OutVarTable.push(_value9);}else if(_draw3)//画图函数
11105
11105
  {var outVar={Name:_draw3.Name,Draw:_draw3,Type:1};if(color)outVar.Color=color;if(isDotLine==true)outVar.IsDotLine=true;if(lineWidth)outVar.LineWidth=lineWidth;if(isDrawAbove)outVar.IsDrawAbove=true;if(isDrawCenter)outVar.IsDrawCenter=true;if(isDrawBelow)outVar.IsDrawBelow=true;if(drawAlign>=0)outVar.DrawAlign=drawAlign;if(drawVAlign>=0)outVar.DrawVAlign=drawVAlign;if(fontSize>0)outVar.DrawFontSize=fontSize;if(bgConfig)outVar.Background=bgConfig;if(vLineConfig)outVar.VerticalLine=vLineConfig;if(IFrameSplitOperator.IsNumber(xOffset))outVar.XOffset=xOffset;if(IFrameSplitOperator.IsNumber(yOffset))outVar.YOffset=yOffset;if(IFrameSplitOperator.IsBool(isFirstDraw))outVar.IsFirstDraw=isFirstDraw;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar16=this.VarTable.get(_varName3);var _value10={Name:_varName3,Data:_outVar16,Type:0};if(color)_value10.Color=color;if(lineWidth)_value10.LineWidth=lineWidth;if(isShow==false)_value10.IsShow=false;if(isExData==true)_value10.IsExData=true;if(isDotLine==true)_value10.IsDotLine=true;if(isOverlayLine==true)_value10.IsOverlayLine=true;if(isShowTitle==false)_value10.IsShowTitle=false;if(stepLine==true)_value10.Type=7;this.OutVarTable.push(_value10);}}}};this.ReadUnaryExpression=function(item,varInfo){var argument=item.Argument;var outVar=null;if(argument.Type==Syntax.Literal){outVar=argument.Value;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.Identifier){var varName=argument.Name;outVar=this.ReadVariable(varName,item.Expression);if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.BinaryExpression){outVar=argument.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.CallExpression){var callItem=argument;if(this.Draw.IsDrawFunction(callItem.Callee.Name)){return false;}else if(callItem.Callee.Name==="IFC"&&callItem.Draw){return false;}else{outVar=callItem.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}}else{return false;}if(item.Operator=='-'){if(outVar)outVar=this.Algorithm.Subtract(0,outVar);}varInfo.OutVar=outVar;return true;};this.GetOutIconData=function(cond,iconDraw){if(Array.isArray(cond)){for(var i=0;i<cond.length&&i<iconDraw.DrawData.length;++i){var item=cond[i];if(item<=0)iconDraw.DrawData[i]=null;}return iconDraw;}if(cond)return iconDraw;return null;};this.GetSoundEvent=function(){if(!this.GetEventCallback)return null;return this.GetEventCallback(JSCHART_EVENT_ID.ON_PLAY_SOUND);};this.Run=function(){try{var data=this.RunAST();//执行脚本
11106
11106
  JSConsole.Complier.Log('[JSComplier.Run] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.Run] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}}catch(error){JSConsole.Complier.Log(error);if(error.Job){JSConsole.Complier.Log('[JSComplier.Run] download job and reexectue',error.Job);this.JobList.push(error.Job);this.JobList.push({ID:JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT});this.Execute();}else if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.DebugRun_End=function(){var data=this.OutVarTable;JSConsole.Complier.Log('[JSComplier.DebugRun_End] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.DebugRun_End] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}};this.DebugRun_Next=function(debugCtrl){var _this46=this;if(debugCtrl.ExeLine<debugCtrl.LineCount){var item=this.AST.Body[debugCtrl.ExeLine];this.RunASTNode(item);++debugCtrl.ExeLine;this.DebugFilter(debugCtrl,function(){_this46.DebugRun_Next(debugCtrl);});}else{this.DebugRun_End();debugCtrl.Status=2;this.DebugFilter(debugCtrl,null);}};//debug模式
11107
- this.DebugRun=function(){var _this47=this;try{if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();var debugCtrl={LineCount:this.AST.Body.length,ExeLine:0,Self:this,Status:1};this.DebugFilter(debugCtrl,function(){_this47.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};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;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var tempValue=this.GetNodeValueEx(node.Argument);var value=this.Algorithm.Subtract(0,tempValue);}else{var value=node.Argument.Value;}return value;};this.VisitSequenceExpression=function(node){for(var _i130 in node.Expression){var _item20=node.Expression[_i130];this.VisitNode(_item20);}};//函数调用
11107
+ this.DebugRun=function(){var _this47=this;try{if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();var debugCtrl={LineCount:this.AST.Body.length,ExeLine:0,Self:this,Status:1};this.DebugFilter(debugCtrl,function(){_this47.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};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;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var tempValue=this.GetNodeValueEx(node.Argument);var value=this.Algorithm.Subtract(0,tempValue);}else{var value=node.Argument.Value;}return value;};this.VisitSequenceExpression=function(node){for(var _i130 in node.Expression){var _item20=node.Expression[_i130];this.VisitNode(_item20);}};this.GetDynamicScriptIndex=function(node,args){var dynamicName=node.Callee.Value;var aryValue=dynamicName.split(".");if(aryValue.length!=2){this.ThrowUnexpectedNode(node,'\u8C03\u7528\u6307\u6807\u683C\u5F0F\''+dynamicName+'\'\u9519\u8BEF');}var name=aryValue[0];var outName=aryValue[1];var period=null;var pos=outName.indexOf('#');if(pos!=-1){period=outName.slice(pos+1);//周期
11108
+ outName=outName.slice(0,pos);}var strValue="";for(var i=0;i<args.length;++i){var value=args[i];if(strValue.length>0)strValue+=",";strValue+=''+value;}var strArgs='('+strValue+')';var key=outName+'#'+strArgs;if(period)key+='#'+period;if(!this.VarTable.has(name))return null;var indexData=this.VarTable.get(name);var value=indexData[key];return value;};//函数调用
11108
11109
  this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var i=0;i<node.Arguments.length;++i){var item=node.Arguments[i];var value;if(funcName==="IFC"&&i>=1)break;//IFC先处理第1个条件参数
11109
- if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);args.push(value);}if(node.Callee.Type==Syntax.Literal){var dynamicName=node.Callee.Value;var aryValue=dynamicName.split(".");if(aryValue.length!=2){this.ThrowUnexpectedNode(node,'\u8C03\u7528\u6307\u6807\u683C\u5F0F\''+dynamicName+'\'\u9519\u8BEF');}var name=aryValue[0];var outName=aryValue[1];var strValue="";for(var i=0;i<args.length;++i){var value=args[i];if(strValue.length>0)strValue+=",";strValue+=''+value;}var strArgs='('+strValue+')';var key=outName+'#'+strArgs;node.Out=[];if(!this.VarTable.has(name))return node.Out;var indexData=this.VarTable.get(name);var value=indexData[key];if(value)node.Out=value;return node.Out;}if(funcName==="IFC"){//IFC(X,A,B)若X不为0则执行A,否则执行B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
11110
+ if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);args.push(value);}if(node.Callee.Type==Syntax.Literal){node.Out=[];node.Draw=null;var data=this.GetDynamicScriptIndex(node,args);if(data)node.Out=data;return node.Out;}if(funcName==="IFC"){//IFC(X,A,B)若X不为0则执行A,否则执行B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
11110
11111
  var bResult=this.Algorithm.IFC(args[0]);var item=bResult?node.Arguments[1]:node.Arguments[2];var value;if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);node.Out=value;if(item.Draw)node.Draw=item.Draw;return node.Out;}//JSConsole.Complier.Log('[JSExecute::VisitCallExpression]' , funcName, '(', args.toString() ,')');
11111
11112
  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;}switch(funcName){case'DYNAINFO'://行情最新数据
11112
11113
  node.Out=this.SymbolData.GetLatestCacheData(args[0]);break;case'STICKLINE':node.Draw=this.Draw.STICKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT':node.Draw=this.Draw.DRAWTEXT(args[0],args[1],args[2]);node.Out=[];break;case'DRAWTEXT_FIX':node.Draw=this.Draw.DRAWTEXT_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'SUPERDRAWTEXT':node.Draw=this.Draw.SUPERDRAWTEXT(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWICON':node.Draw=this.Draw.DRAWICON(args[0],args[1],args[2]);node.Out=[];break;case"ICON":node.Draw=this.Draw.ICON(args[0],args[1]);node.Out=[];break;case"TIPICON":node.Draw=this.Draw.TIPICON(args[0],args[1],args[2],args[3]);node.Out=[];break;case"BACKGROUND":node.Draw=this.Draw.BACKGROUND(args[0],args[1],args[2],args[3],args[4],args[5]);node.Out=[];break;case"CKLINE":node.Draw=this.Draw.CKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWLINE':node.Draw=this.Draw.DRAWLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData;break;case'DRAWBAND':node.Draw=this.Draw.DRAWBAND(args[0],args[1],args[2],args[3]);node.Out=[];break;case"FILLRGN":if(args.length>=4)node.Draw=this.Draw.FILLRGN2(args);else node.Draw=this.Draw.FILLRGN(args[0],args[1],args[2]);node.Out=[];break;case"FLOATRGN":node.Draw=this.Draw.FLOATRGN(args);node.Out=[];break;case"FILLTOPRGN":node.Draw=this.Draw.FILLBGRGN(1,args);node.Out=[];break;case"FILLBOTTOMRGN":node.Draw=this.Draw.FILLBGRGN(0,args);node.Out=[];break;case"FILLVERTICALRGN":node.Draw=this.Draw.FILLVERTICALRGN(args);node.Out=[];break;case'DRAWKLINE':case"DRAWKLINE1":node.Draw=this.Draw.DRAWKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWKLINE_IF':node.Draw=this.Draw.DRAWKLINE_IF(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWOVERLAYKLINE":node.Draw=this.Draw.DRAWOVERLAYKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWCOLORKLINE":node.Draw=this.Draw.DRAWCOLORKLINE(args[0],args[1],args[2]);node.Out=[];break;case'PLOYLINE':case'POLYLINE':node.Draw=this.Draw.POLYLINE(args[0],args[1]);node.Out=node.Draw.DrawData;break;case'DRAWNUMBER':node.Draw=this.Draw.DRAWNUMBER(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Value;break;case"DRAWNUMBER_FIX":node.Draw=this.Draw.DRAWNUMBER_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData.Value;break;case"DRAWCHANNEL":node.Draw=this.Draw.DRAWCHANNEL(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'RGB':node.Out=this.Draw.RGB(args[0],args[1],args[2]);break;case"RGBA":node.Out=this.Draw.RGBA(args[0],args[1],args[2],args[3]);break;case"UPCOLOR":node.Out=this.Draw.UPCOLOR(args[0]);break;case"DOWNCOLOR":node.Out=this.Draw.DOWNCOLOR(args[0]);break;case"XMOVE":node.Out=this.Draw.XMOVE(args[0]);break;case"YMOVE":node.Out=this.Draw.YMOVE(args[0]);break;case"FIRSTDRAW":node.Out=this.Draw.FIRSTDRAW(args[0]);break;case'PARTLINE':node.Draw=this.Draw.PARTLINE(args);node.Out=[];break;case'DRAWGBK':node.Draw=this.Draw.DRAWGBK(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWGBK2':node.Draw=this.Draw.DRAWGBK2(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWGBK_DIV":node.Draw=this.Draw.DRAWGBK_DIV(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT_LINE':node.Draw=this.Draw.DRAWTEXT_LINE(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'DRAWRECTREL':node.Draw=this.Draw.DRAWRECTREL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWTEXTREL":node.Draw=this.Draw.DRAWTEXTREL(args[0],args[1],args[2]);node.Out=[];break;case"DRAWTEXTABS":node.Draw=this.Draw.DRAWTEXTABS(args[0],args[1],args[2]);node.Out=[];break;case"DRAWOVERLAYLINE":node.Draw=this.Draw.DRAWOVERLAYLINE(args[0],args[1],args[2]);node.Out=node.Draw.DrawData.Data;break;case"DRAWSL":node.Draw=this.Draw.DRAWSL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"VERTLINE":node.Draw=this.Draw.VERTLINE(args[0],args[1]);node.Out=node.Draw.DrawData.Data;break;case"HORLINE":node.Draw=this.Draw.HORLINE(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case'CODELIKE':node.Out=this.SymbolData.CODELIKE(args[0]);break;case'NAMELIKE':case"NAMEINCLUDE":node.Out=this.SymbolData.NAMELIKE(args[1]);break;case'REFDATE':node.Out=this.SymbolData.REFDATE(args[0],args[1]);break;case'FINANCE':node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINONE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"GPJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"SCJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"MARGIN":node.Out=this.SymbolData.GetMarginCacheData(args[0],node);break;case"HK2SHSZ":node.Out=this.SymbolData.GetHKToSHSZCacheData(args[0],node);break;case"NEWS":node.Out=this.SymbolData.GetNewsAnalysisCacheData(args[0],node);break;case'UPCOUNT':case'DOWNCOUNT':node.Out=this.SymbolData.GetIndexIncreaseCacheData(funcName,args[0],node);break;case'SF':node.Out=this.SymbolData.GetSectionFinanceCacheData(args[0],args[1],args[2],node);break;case'LOADAPIDATA':node.Out=this.SymbolData.GetCustomApiData(args);break;case"STKINDI":case"CALCSTOCKINDEX":node.Out=this.SymbolData.GetScriptIndexOutData(args,node,funcName);break;case"SOUND":node.Draw=this.Draw.SOUND(args[0]);node.Out=[];break;case"PLAYSOUND":node.Draw=this.Draw.PLAYSOUND(args[0],args[1]);node.Out=[];break;case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':node.Out=this.SymbolData.GetOtherSymolCacheData({FunctionName:funcName,Args:args});break;case"INBLOCK":node.Out=this.SymbolData.IsInBlock(args[0],node);break;case'COVER_C':case'COVER_O':case'COVER_H':case'COVER_L':case'COVER_A':case'COVER_V':if(args.length==2)return this.SymbolData.GetSymbolPeriodCacheData2(JSComplierHelper.GetConvertValueName(funcName),args[0],args[1]);return this.SymbolData.GetSymbolPeriodCacheData(JSComplierHelper.GetConvertValueName(funcName),args[0]);case"SYSPARAM":return this.SymbolData.SysParam(args[0],this);case"TESTSKIP":var bExit=this.Algorithm.TESTSKIP(args[0],node);node.Out=null;if(bExit){this.Interrupt.Exit=true;if(node&&node.Marker){var marker=node.Marker;this.Interrupt.Line=marker.Line;this.Interrupt.Index=marker.Index;this.Interrupt.Column=marker.Column;}}break;//交易函数
@@ -12660,7 +12661,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
12660
12661
  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);};}/********************************************************************************
12661
12662
  * 版本信息输出
12662
12663
  *
12663
- */var HQCHART_VERSION="1.1.13026";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();//把给外界调用的方法暴露出来
12664
+ */var HQCHART_VERSION="1.1.13045";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();//把给外界调用的方法暴露出来
12664
12665
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12665
12666
  // BaseIndex:BaseIndex,
12666
12667
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.13027",
3
+ "version": "1.1.13046",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -17710,6 +17710,42 @@ function JSExecute(ast,option)
17710
17710
  }
17711
17711
  }
17712
17712
 
17713
+ this.GetDynamicScriptIndex=function(node, args)
17714
+ {
17715
+ var dynamicName=node.Callee.Value;
17716
+ var aryValue=dynamicName.split(".");
17717
+ if (aryValue.length!=2)
17718
+ {
17719
+ this.ThrowUnexpectedNode(node,`调用指标格式'${dynamicName}'错误`);
17720
+ }
17721
+
17722
+ var name=aryValue[0];
17723
+ var outName=aryValue[1];
17724
+ var period=null;
17725
+ var pos=outName.indexOf('#');
17726
+ if (pos!=-1)
17727
+ {
17728
+ period=outName.slice(pos+1); //周期
17729
+ outName=outName.slice(0,pos);
17730
+ }
17731
+
17732
+ var strValue="";
17733
+ for(var i=0; i<args.length; ++i)
17734
+ {
17735
+ var value=args[i];
17736
+ if (strValue.length>0) strValue+=",";
17737
+ strValue+=`${value}`;
17738
+ }
17739
+ var strArgs=`(${strValue})`;
17740
+ var key=`${outName}#${strArgs}`;
17741
+ if (period) key+=`#${period}`;
17742
+
17743
+ if (!this.VarTable.has(name)) return null;
17744
+ var indexData=this.VarTable.get(name);
17745
+ var value=indexData[key];
17746
+ return value;
17747
+ }
17748
+
17713
17749
  //函数调用
17714
17750
  this.VisitCallExpression=function(node)
17715
17751
  {
@@ -17735,30 +17771,10 @@ function JSExecute(ast,option)
17735
17771
 
17736
17772
  if (node.Callee.Type==Syntax.Literal)
17737
17773
  {
17738
- var dynamicName=node.Callee.Value;
17739
- var aryValue=dynamicName.split(".");
17740
- if (aryValue.length!=2)
17741
- {
17742
- this.ThrowUnexpectedNode(node,`调用指标格式'${dynamicName}'错误`);
17743
- }
17744
-
17745
- var name=aryValue[0];
17746
- var outName=aryValue[1];
17747
- var strValue="";
17748
- for(var i=0; i<args.length; ++i)
17749
- {
17750
- var value=args[i];
17751
- if (strValue.length>0) strValue+=",";
17752
- strValue+=`${value}`;
17753
- }
17754
- var strArgs=`(${strValue})`;
17755
- var key=`${outName}#${strArgs}`;
17756
-
17757
17774
  node.Out=[];
17758
- if (!this.VarTable.has(name)) return node.Out;
17759
- var indexData=this.VarTable.get(name);
17760
- var value=indexData[key];
17761
- if (value) node.Out=value;
17775
+ node.Draw=null;
17776
+ var data=this.GetDynamicScriptIndex(node, args);
17777
+ if (data) node.Out=data;
17762
17778
  return node.Out;
17763
17779
  }
17764
17780
 
@@ -77460,7 +77460,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
77460
77460
  var upperSymbol=symbol.toUpperCase();
77461
77461
  var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);
77462
77462
 
77463
- var yClose=data.stock[0].yclos;
77463
+ var yClose=data.stock[0].yclose;
77464
77464
  var preClose=data.stock[0].yclose; //前一个数据价格
77465
77465
  var stockData=data.stock[0];
77466
77466
  var date=stockData.date; //日期
@@ -81352,7 +81352,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
81352
81352
  var upperSymbol=symbol.toUpperCase();
81353
81353
  var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);
81354
81354
 
81355
- var yClose=data.stock[0].yclos;
81355
+ var yClose=data.stock[0].yclose;
81356
81356
  var preClose=data.stock[0].yclose; //前一个数据价格
81357
81357
  var stockData=data.stock[0];
81358
81358
  var date=stockData.date; //日期
@@ -111133,6 +111133,42 @@ function JSExecute(ast,option)
111133
111133
  }
111134
111134
  }
111135
111135
 
111136
+ this.GetDynamicScriptIndex=function(node, args)
111137
+ {
111138
+ var dynamicName=node.Callee.Value;
111139
+ var aryValue=dynamicName.split(".");
111140
+ if (aryValue.length!=2)
111141
+ {
111142
+ this.ThrowUnexpectedNode(node,`调用指标格式'${dynamicName}'错误`);
111143
+ }
111144
+
111145
+ var name=aryValue[0];
111146
+ var outName=aryValue[1];
111147
+ var period=null;
111148
+ var pos=outName.indexOf('#');
111149
+ if (pos!=-1)
111150
+ {
111151
+ period=outName.slice(pos+1); //周期
111152
+ outName=outName.slice(0,pos);
111153
+ }
111154
+
111155
+ var strValue="";
111156
+ for(var i=0; i<args.length; ++i)
111157
+ {
111158
+ var value=args[i];
111159
+ if (strValue.length>0) strValue+=",";
111160
+ strValue+=`${value}`;
111161
+ }
111162
+ var strArgs=`(${strValue})`;
111163
+ var key=`${outName}#${strArgs}`;
111164
+ if (period) key+=`#${period}`;
111165
+
111166
+ if (!this.VarTable.has(name)) return null;
111167
+ var indexData=this.VarTable.get(name);
111168
+ var value=indexData[key];
111169
+ return value;
111170
+ }
111171
+
111136
111172
  //函数调用
111137
111173
  this.VisitCallExpression=function(node)
111138
111174
  {
@@ -111158,30 +111194,10 @@ function JSExecute(ast,option)
111158
111194
 
111159
111195
  if (node.Callee.Type==Syntax.Literal)
111160
111196
  {
111161
- var dynamicName=node.Callee.Value;
111162
- var aryValue=dynamicName.split(".");
111163
- if (aryValue.length!=2)
111164
- {
111165
- this.ThrowUnexpectedNode(node,`调用指标格式'${dynamicName}'错误`);
111166
- }
111167
-
111168
- var name=aryValue[0];
111169
- var outName=aryValue[1];
111170
- var strValue="";
111171
- for(var i=0; i<args.length; ++i)
111172
- {
111173
- var value=args[i];
111174
- if (strValue.length>0) strValue+=",";
111175
- strValue+=`${value}`;
111176
- }
111177
- var strArgs=`(${strValue})`;
111178
- var key=`${outName}#${strArgs}`;
111179
-
111180
111197
  node.Out=[];
111181
- if (!this.VarTable.has(name)) return node.Out;
111182
- var indexData=this.VarTable.get(name);
111183
- var value=indexData[key];
111184
- if (value) node.Out=value;
111198
+ node.Draw=null;
111199
+ var data=this.GetDynamicScriptIndex(node, args);
111200
+ if (data) node.Out=data;
111185
111201
  return node.Out;
111186
111202
  }
111187
111203
 
@@ -130107,7 +130123,7 @@ function ScrollBarBGChart()
130107
130123
 
130108
130124
 
130109
130125
 
130110
- var HQCHART_VERSION="1.1.13026";
130126
+ var HQCHART_VERSION="1.1.13045";
130111
130127
 
130112
130128
  function PrintHQChartVersion()
130113
130129
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13026";
8
+ var HQCHART_VERSION="1.1.13045";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -81396,7 +81396,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
81396
81396
  var upperSymbol=symbol.toUpperCase();
81397
81397
  var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);
81398
81398
 
81399
- var yClose=data.stock[0].yclos;
81399
+ var yClose=data.stock[0].yclose;
81400
81400
  var preClose=data.stock[0].yclose; //前一个数据价格
81401
81401
  var stockData=data.stock[0];
81402
81402
  var date=stockData.date; //日期
@@ -111177,6 +111177,42 @@ function JSExecute(ast,option)
111177
111177
  }
111178
111178
  }
111179
111179
 
111180
+ this.GetDynamicScriptIndex=function(node, args)
111181
+ {
111182
+ var dynamicName=node.Callee.Value;
111183
+ var aryValue=dynamicName.split(".");
111184
+ if (aryValue.length!=2)
111185
+ {
111186
+ this.ThrowUnexpectedNode(node,`调用指标格式'${dynamicName}'错误`);
111187
+ }
111188
+
111189
+ var name=aryValue[0];
111190
+ var outName=aryValue[1];
111191
+ var period=null;
111192
+ var pos=outName.indexOf('#');
111193
+ if (pos!=-1)
111194
+ {
111195
+ period=outName.slice(pos+1); //周期
111196
+ outName=outName.slice(0,pos);
111197
+ }
111198
+
111199
+ var strValue="";
111200
+ for(var i=0; i<args.length; ++i)
111201
+ {
111202
+ var value=args[i];
111203
+ if (strValue.length>0) strValue+=",";
111204
+ strValue+=`${value}`;
111205
+ }
111206
+ var strArgs=`(${strValue})`;
111207
+ var key=`${outName}#${strArgs}`;
111208
+ if (period) key+=`#${period}`;
111209
+
111210
+ if (!this.VarTable.has(name)) return null;
111211
+ var indexData=this.VarTable.get(name);
111212
+ var value=indexData[key];
111213
+ return value;
111214
+ }
111215
+
111180
111216
  //函数调用
111181
111217
  this.VisitCallExpression=function(node)
111182
111218
  {
@@ -111202,30 +111238,10 @@ function JSExecute(ast,option)
111202
111238
 
111203
111239
  if (node.Callee.Type==Syntax.Literal)
111204
111240
  {
111205
- var dynamicName=node.Callee.Value;
111206
- var aryValue=dynamicName.split(".");
111207
- if (aryValue.length!=2)
111208
- {
111209
- this.ThrowUnexpectedNode(node,`调用指标格式'${dynamicName}'错误`);
111210
- }
111211
-
111212
- var name=aryValue[0];
111213
- var outName=aryValue[1];
111214
- var strValue="";
111215
- for(var i=0; i<args.length; ++i)
111216
- {
111217
- var value=args[i];
111218
- if (strValue.length>0) strValue+=",";
111219
- strValue+=`${value}`;
111220
- }
111221
- var strArgs=`(${strValue})`;
111222
- var key=`${outName}#${strArgs}`;
111223
-
111224
111241
  node.Out=[];
111225
- if (!this.VarTable.has(name)) return node.Out;
111226
- var indexData=this.VarTable.get(name);
111227
- var value=indexData[key];
111228
- if (value) node.Out=value;
111242
+ node.Draw=null;
111243
+ var data=this.GetDynamicScriptIndex(node, args);
111244
+ if (data) node.Out=data;
111229
111245
  return node.Out;
111230
111246
  }
111231
111247
 
@@ -130265,7 +130281,7 @@ function HQChartScriptWorker()
130265
130281
 
130266
130282
 
130267
130283
 
130268
- var HQCHART_VERSION="1.1.13026";
130284
+ var HQCHART_VERSION="1.1.13045";
130269
130285
 
130270
130286
  function PrintHQChartVersion()
130271
130287
  {