hqchart 1.1.12463 → 1.1.12472

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.
@@ -1832,7 +1832,7 @@ if(this.Frame.DrawEx)this.Frame.DrawEx({Symbol:this.Symbol});if(this.ChartInfoPa
1832
1832
  if(this.CacheCanvas){this.Canvas.drawImage(this.CacheElement,0,0);this.SetCanvas(this.Canvas);}else{this.Frame.Snapshot();}if(this.Frame.DrawToolbar)this.Frame.DrawToolbar(this.LastMouseStatus);this.DrawSelectedStatus();var moveonPoint=null;if(this.LastMouseStatus&&this.LastMouseStatus.MoveOnPoint)moveonPoint=this.LastMouseStatus.MoveOnPoint;for(var i=0;i<this.ExtendChartPaint.length;++i)//动态扩展图形
1833
1833
  {var item=this.ExtendChartPaint[i];if(item.IsCallbackDraw)continue;if(item.DrawAfterPicture)continue;if(item.IsDynamic&&item.DrawAfterTitle===false){item.Draw();if(item.DrawToolbar)item.DrawToolbar(moveonPoint);}}for(var i=0;i<this.ChartDrawPicture.length;++i){var item=this.ChartDrawPicture[i];if(item.IsDrawFirst)item.Draw();}this.DrawDrawPictureXYCoordinate();//绘制画图工具 X,Y轴刻度信息
1834
1834
  var ptPosition=null;//鼠标位置 null 无效 -1 在外面 >=0 对应的指标窗口中ID
1835
- if(this.LastPoint.X!=null||this.LastPoint.Y!=null){if(this.ChartCorssCursor){this.ChartCorssCursor.LastPoint=this.LastPoint;this.ChartCorssCursor.CursorIndex=this.CursorIndex;var bRestoreCanvas=false;if(this.CorssCursorCanvas)//独立的十字光标层
1835
+ if(this.LastPoint.X!=null||this.LastPoint.Y!=null){if(this.ChartCorssCursor){this.ChartCorssCursor.LastPoint=this.LastPoint;this.ChartCorssCursor.CursorIndex=this.CursorIndex;if(this.EnableNewIndex){this.ChartCorssCursor.CorssCursorIndex=this.CorssCursorIndex;this.ChartCorssCursor.EnableNewIndex=this.EnableNewIndex;}var bRestoreCanvas=false;if(this.CorssCursorCanvas)//独立的十字光标层
1836
1836
  {this.ChartCorssCursor.Canvas=this.CorssCursorCanvas;this.ChartCorssCursor.Canvas.clearRect(0,0,this.CorssCursorElement.width,this.CorssCursorElement.height);bRestoreCanvas=true;}var button=this.PtInButton(this.LastPoint.X,this.LastPoint.Y);if(button)//鼠标在按钮上 不显示十字光标
1837
1837
  {}else if(this.DragMode==JSCHART_DRAG_ID.CLICK_TOUCH_MODE_ID){//点击手势模式下
1838
1838
  if(this.TouchStatus.CorssCursorShow==true)this.ChartCorssCursor.Draw();}else if(this.EnableClickModel){if(this.ClickModel.IsShowCorssCursor===true)this.ChartCorssCursor.Draw();}else if(!(this.CorssCursorTouchEnd===true&&this.MouseDrag)&&!(this.CorssCursorTouchEnd==true&&this.IsOnTouch==false)){//移动端 拖拽数据的时候 不显示十字光标, 没有按屏的时候也不显示十字光标
@@ -1852,7 +1852,7 @@ info.LineColor=item.Color;info.TextColor=g_JSChartResource.FrameLatestPrice.Over
1852
1852
  this.DrawDynamicInfo=function(option){this.LastMouseStatus.MouseOnToolbar=null;//鼠标在工具栏按钮上
1853
1853
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_BEFORE_DRAW_DYNAMIC_INFO);if(event&&event.Callback){var sendData={};event.Callback(event,sendData,this);}if(this.Frame.ScreenImageData==null&&!this.CacheCanvas)return;var isErase=false;if(this.ChartCorssCursor){if(this.ChartCorssCursor.PointX!=null||this.ChartCorssCursor.PointY!=null)isErase=true;}isErase=true;//每次都擦除背景
1854
1854
  if(isErase==false){for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.IsCallbackDraw)continue;if(item.IsDynamic&&item.IsEraseBG){isErase=true;break;}}}if(isErase){if(this.Frame.ScreenImageData){this.Canvas.putImageData(this.Frame.ScreenImageData,0,0);}else if(this.CacheCanvas){this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);this.Canvas.drawImage(this.CacheElement,0,0);}}if(this.Frame.DrawToolbar)this.Frame.DrawToolbar(this.LastMouseStatus);this.DrawSelectedStatus();var moveonPoint=null;if(this.LastMouseStatus&&this.LastMouseStatus.MoveOnPoint)moveonPoint=this.LastMouseStatus.MoveOnPoint;for(var i=0;i<this.ExtendChartPaint.length;++i)//动态扩展图形
1855
- {var item=this.ExtendChartPaint[i];if(item.IsCallbackDraw)continue;if(item.DrawAfterPicture)continue;if(item.IsDynamic&&item.DrawAfterTitle===false&&item.IsAnimation==false){item.Draw();if(item.DrawToolbar)item.DrawToolbar(moveonPoint,this.LastMouseStatus);}}for(var i=0;i<this.ChartDrawPicture.length;++i){var item=this.ChartDrawPicture[i];if(item.IsDrawFirst)item.Draw();}this.DrawDrawPictureXYCoordinate();if(this.ChartCorssCursor){this.ChartCorssCursor.LastPoint=this.LastPoint;this.ChartCorssCursor.CursorIndex=this.CursorIndex;var bRestoreCanvas=false;if(this.CorssCursorCanvas)//独立的十字光标层
1855
+ {var item=this.ExtendChartPaint[i];if(item.IsCallbackDraw)continue;if(item.DrawAfterPicture)continue;if(item.IsDynamic&&item.DrawAfterTitle===false&&item.IsAnimation==false){item.Draw();if(item.DrawToolbar)item.DrawToolbar(moveonPoint,this.LastMouseStatus);}}for(var i=0;i<this.ChartDrawPicture.length;++i){var item=this.ChartDrawPicture[i];if(item.IsDrawFirst)item.Draw();}this.DrawDrawPictureXYCoordinate();if(this.ChartCorssCursor){this.ChartCorssCursor.LastPoint=this.LastPoint;this.ChartCorssCursor.CursorIndex=this.CursorIndex;if(this.EnableNewIndex){this.ChartCorssCursor.CorssCursorIndex=this.CorssCursorIndex;this.ChartCorssCursor.EnableNewIndex=this.EnableNewIndex;}var bRestoreCanvas=false;if(this.CorssCursorCanvas)//独立的十字光标层
1856
1856
  {this.ChartCorssCursor.Canvas=this.CorssCursorCanvas;this.ChartCorssCursor.Canvas.clearRect(0,0,this.CorssCursorElement.width,this.CorssCursorElement.height);bRestoreCanvas=true;}if(option&&option.Corss==false){}else if(this.DragMode==JSCHART_DRAG_ID.CLICK_TOUCH_MODE_ID){if(this.TouchStatus.CorssCursorShow==true)this.ChartCorssCursor.Draw();}else if(this.IsOnTouch===false&&this.CurrentChartDrawPicture&&this.CurrentChartDrawPicture.IsShowCorssCursor===true)//开始绘图
1857
1857
  {this.ChartCorssCursor.Draw();}else if(!(this.IsOnTouch===false&&this.CorssCursorTouchEnd===true)&&!this.CurrentChartDrawPicture){this.ChartCorssCursor.Draw();}else if(this.IsOnTouch===true&&this.CurrentChartDrawPicture&&this.EnableShowCorssCursor&&this.EnableShowCorssCursor.DrawPicture==true){this.ChartCorssCursor.Draw();}if(bRestoreCanvas){this.ChartCorssCursor.Canvas=this.Canvas;}}var ptPosition=null;//鼠标位置 null 无效 -1 在外面 >=0 对应的指标窗口中ID
1858
1858
  if(option&&option.Point&&(option.ParentFunction=='OnMouseMove'||option.ParentFunction=='MoveCorssCursorIndex')){ptPosition=this.Frame.PtInFrame(option.Point.X,option.Point.Y);}var drawStatus=this.GetDrawStatus();drawStatus.DrawName="DrawDynamicInfo";for(var i=0;i<this.TitlePaint.length;++i){var item=this.TitlePaint[i];if(!item.IsDynamic)continue;item.CursorIndex=this.CursorIndex;item.LastPoint=this.LastPoint;if(item.OnDrawEvent){item.OnDrawEvent.FunctionName='DrawDynamicInfo';item.OnDrawEvent.PointPosition=ptPosition;}item.DrawStatus=drawStatus;if(item.ClassName=="DynamicMinuteTitlePainting"){if(option&&IFrameSplitOperator.IsNumber(option.ClientPos)&&option.Point)item.PointInfo={ClientPos:option.ClientPos,Point:{X:option.Point.X,Y:option.Point.Y}};else item.PointInfo=null;}item.Draw(moveonPoint,this.LastMouseStatus);}for(var i=0;i<this.ExtendChartPaint.length;++i)//动态扩展图形 在动态标题以后画
@@ -2059,7 +2059,10 @@ if(option.Start&&option.End)range=mainData.GetDataRange(option.Start,option.End)
2059
2059
  if(!aryData)return null;//主图+附图指标
2060
2060
  for(var i=1;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item||!item.ExportData)continue;var data=item.ExportData(aryKData,range);if(data&&IFrameSplitOperator.IsNonEmptyArray(data)){for(var j=0;j<data.length;++j){var subItem=data[j];if(item.IndexName)aryData.push({Name:subItem.Name+'('+item.IndexName+')',Data:subItem.Data});else aryData.push(subItem);}}}//叠加股票
2061
2061
  for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Data||!IFrameSplitOperator.IsNonEmptyArray(chart.Data.Data))continue;var data=this.ExportMainData(item.Data,{IsOverlay:true});if(data&&IFrameSplitOperator.IsNonEmptyArray(data)){for(var j=0;j<data.length;++j){var subItem=data[j];aryData.push({Name:subItem.Name+'('+item.Symbol+')',Data:subItem.Data});}}}//叠加指标
2062
- for(var i=0,j=0,k=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(IFrameSplitOperator.IsNonEmptyArray(overlayItem.ChartPaint)){for(k=0;k<overlayItem.ChartPaint.length;++k){var chart=overlayItem.ChartPaint[k];if(!chart||!chart.ExportData)continue;var data=chart.ExportData(aryKData,range);if(data&&IFrameSplitOperator.IsNonEmptyArray(data)){for(var index=0;index<data.length;++index){var subItem=data[index];if(chart.IndexName)aryData.push({Name:subItem.Name+'('+chart.IndexName+')',Data:subItem.Data});else aryData.push(subItem);}}}}}}if(option&&option.Type=="CSV"){return this.ExportDataToCSV(aryData);}return aryData;};}function GetDevicePixelRatio(){if(typeof window=='undefined')return 1;return window.devicePixelRatio||1;}function GetFontHeight(context,font,word){if(!context)return null;if(font)context.font=font;var text='擎';if(IFrameSplitOperator.IsString(word))text=word;var fontInfo=context.measureText(text);var textHeight=fontInfo.fontBoundingBoxAscent+fontInfo.fontBoundingBoxDescent;if(!IFrameSplitOperator.IsNumber(textHeight))textHeight=fontInfo.width+2*GetDevicePixelRatio();return textHeight;}function IsPhoneWeb(){var userAgentInfo=navigator.userAgent;var Agents=new Array("Android","iPhone","SymbianOS","Windows Phone","iPad","iPod");for(var v=0;v<Agents.length;v++){if(userAgentInfo.indexOf(Agents[v])>0)return true;}return false;}function OnKeyDown(e)//键盘事件
2062
+ for(var i=0,j=0,k=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(IFrameSplitOperator.IsNonEmptyArray(overlayItem.ChartPaint)){for(k=0;k<overlayItem.ChartPaint.length;++k){var chart=overlayItem.ChartPaint[k];if(!chart||!chart.ExportData)continue;var data=chart.ExportData(aryKData,range);if(data&&IFrameSplitOperator.IsNonEmptyArray(data)){for(var index=0;index<data.length;++index){var subItem=data[index];if(chart.IndexName)aryData.push({Name:subItem.Name+'('+chart.IndexName+')',Data:subItem.Data});else aryData.push(subItem);}}}}}}if(option&&option.Type=="CSV"){return this.ExportDataToCSV(aryData);}return aryData;};//重置指标计数器
2063
+ this.ClearIndexRunCount=function(){//主图指标
2064
+ for(var i=0;i<this.WindowIndex.length;++i){var item=this.WindowIndex[i];if(!item)continue;item.RunCount=0;}//叠加指标
2065
+ for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Script)overlayItem.Script.RunCount=0;}}};}function GetDevicePixelRatio(){if(typeof window=='undefined')return 1;return window.devicePixelRatio||1;}function GetFontHeight(context,font,word){if(!context)return null;if(font)context.font=font;var text='擎';if(IFrameSplitOperator.IsString(word))text=word;var fontInfo=context.measureText(text);var textHeight=fontInfo.fontBoundingBoxAscent+fontInfo.fontBoundingBoxDescent;if(!IFrameSplitOperator.IsNumber(textHeight))textHeight=fontInfo.width+2*GetDevicePixelRatio();return textHeight;}function IsPhoneWeb(){var userAgentInfo=navigator.userAgent;var Agents=new Array("Android","iPhone","SymbianOS","Windows Phone","iPad","iPod");for(var v=0;v<Agents.length;v++){if(userAgentInfo.indexOf(Agents[v])>0)return true;}return false;}function OnKeyDown(e)//键盘事件
2063
2066
  {if(this.JSChartContainer&&this.JSChartContainer.OnKeyDown)this.JSChartContainer.OnKeyDown(e);}function OnWheel(e)//上下滚动事件
2064
2067
  {if(this.JSChartContainer&&this.JSChartContainer.OnWheel)this.JSChartContainer.OnWheel(e);}function ToFixed(number,precision){var b=1;if(isNaN(number))return number;if(number<0)b=-1;var multiplier=Math.pow(10,precision);var value=Math.round(Math.abs(number)*multiplier)/multiplier*b;if(/^(\d+(?:\.\d+)?)(e)([\-]?\d+)$/.test(value))var s=value.toFixed2(precision);else var s=value.toString();var rs=s.indexOf('.');if(rs<0&&precision>0){rs=s.length;s+='.';}while(s.length<=rs+precision){s+='0';}return s;}Number.prototype.toFixed2=Number.prototype.toFixed;//备份下老的
2065
2068
  Number.prototype.toFixed=function(precision){return ToFixed(this,precision);};function Guid(){function S4(){return((1+Math.random())*0x10000|0).toString(16).substring(1);}return"guid"+(S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());}function GetScrollPosition(){var scrollPos={};var scrollTop=0;var scrollLeft=0;if(document.documentElement&&document.documentElement.scrollTop){scrollTop=document.documentElement.scrollTop;scrollLeft=document.documentElement.scrollLeft;}else if(document.body){scrollTop=document.body.scrollTop;scrollLeft=document.body.scrollLeft;}scrollPos.Top=scrollTop;scrollPos.Left=scrollLeft;return scrollPos;}//修正线段有毛刺
@@ -5107,6 +5110,8 @@ this.LastPoint;this.CursorIndex;this.IsOnlyDrawKLine=false;//是否只能画在K
5107
5110
  this.IsOnlyDrawMinute=false;//是否只能画在走势图价格线上
5108
5111
  this.IsFixXLastTime=false;//是否修正X轴,超出当前时间的,X轴调整到当前最后的时间.
5109
5112
  this.IsDrawXRangeBG=false;//是否绘制十字光标背景
5113
+ this.EnableNewIndex=false;//分时图是否使用最新的索引结构 (由外部chart容器传入)
5114
+ this.CorssCursorIndex;//分时图新版本的索引结构 (由外部chart容器传入)
5110
5115
  this.PointX;this.PointY;this.StringFormatX;this.StringFormatY;this.ShowTextMode={Left:1,Right:1,Bottom:1};//0=不显示 1=显示在框架外 2=显示在框架内
5111
5116
  this.TextFormat={Right:0};//0=默认 1=价格显示(分时图才有用)
5112
5117
  this.IsShowCorss=true;//是否显示十字光标
@@ -5120,7 +5125,7 @@ this.VPenColor=g_JSChartResource.CorssCursorVPenColor;//垂直线颜色
5120
5125
  this.TextColor=g_JSChartResource.CorssCursorTextColor;//文本颜色
5121
5126
  this.TextBGColor=g_JSChartResource.CorssCursorBGColor;//文本背景色
5122
5127
  this.BorderColor=g_JSChartResource.CorssCursorBorderColor;//边框颜色
5123
- this.XRangeBGColor=g_JSChartResource.CorssCursorXRangeBGColor;};this.GetCloseYPoint=function(index){if(!this.StringFormatX.Data)return null;var data=this.StringFormatX.Data;if(!data.Data||data.Data.length<=0)return null;var dataIndex=data.DataOffset+index;if(dataIndex>=data.Data.length)dataIndex=data.Data.length-1;if(dataIndex<0)return null;var klineData=data.Data[dataIndex];if(!klineData)return null;this.Close=klineData.Close;var yPoint=this.Frame.GetYFromData(this.Close);return yPoint;};this.GetMinuteCloseYPoint=function(index){if(!IFrameSplitOperator.IsNumber(index))return null;index=parseInt(index);if(!this.StringFormatX.Data)return null;var data=this.StringFormatX.Data;if(!data.Data||data.Data.length<=0)return null;var dataIndex=data.DataOffset+index;if(dataIndex>=data.Data.length)dataIndex=data.Data.length-1;if(dataIndex<0)return null;var close=data.Data[dataIndex];if(!IFrameSplitOperator.IsNumber(index))return null;this.Close=close;var yPoint=this.Frame.GetYFromData(this.Close);return yPoint;};this.GetDateTimeRange=function(index,option){if(!IFrameSplitOperator.IsNumber(index))return null;index=parseInt(index);var data=this.StringFormatX.Data;if(!data.Data||data.Data.length<=0)return null;var dataIndex=data.DataOffset+index;if(dataIndex>=data.Data.length||dataIndex<0)return null;if(!this.Frame||!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return null;var frame=this.Frame.SubFrame[0].Frame;var dataWidth=frame.DataWidth;var distanceWidth=frame.DistanceWidth;var xPointCount=frame.XPointCount;var kItem=data.Data[dataIndex];if(!kItem)return null;var date=kItem.Date*1000000;var time=parseInt(kItem.Time/100)*100;var startTime=date+time;var endTime=date+time+59;var endIndex=dataIndex;for(var i=dataIndex;i<data.Data.length;++i){var item=data.Data[i];var dateTime=item.Date*1000000+item.Time;if(dateTime>endTime)break;if(i-data.DataOffset>=xPointCount)break;endIndex=i;}var startIndex=dataIndex;for(var i=dataIndex;i>=0&&i>=data.DataOffset;--i){var item=data.Data[i];var dateTime=item.Date*1000000+item.Time;if(dateTime<startTime)break;startIndex=i;}var range={StartIndex:startIndex,EndIndex:endIndex};range.XStart=this.Frame.GetXFromIndex(startIndex-data.DataOffset);range.XEnd=this.Frame.GetXFromIndex(endIndex-data.DataOffset);range.XStart-=(distanceWidth+dataWidth)/2;range.XEnd+=(distanceWidth+dataWidth)/2;return range;};this.FixMinuteLastTimeXPoint=function(index){if(!IFrameSplitOperator.IsNumber(index))return null;index=parseInt(index);if(!this.StringFormatX.Data)return null;var data=this.StringFormatX.Data;if(!data.Data||data.Data.length<=0)return null;var dataIndex=data.DataOffset+index;if(dataIndex<data.Data.length)return null;dataIndex=data.Data.length-1;dataIndex-=data.DataOffset;var xPoint=this.Frame.GetXFromIndex(dataIndex);return{X:xPoint,Index:dataIndex};};//返回 -1=不在客户区 1=在主区域 2=左边扩展 3=右边扩展
5128
+ this.XRangeBGColor=g_JSChartResource.CorssCursorXRangeBGColor;};this.GetCloseYPoint=function(index){if(!this.StringFormatX.Data)return null;var data=this.StringFormatX.Data;if(!data.Data||data.Data.length<=0)return null;var dataIndex=data.DataOffset+index;if(dataIndex>=data.Data.length)dataIndex=data.Data.length-1;if(dataIndex<0)return null;var klineData=data.Data[dataIndex];if(!klineData)return null;this.Close=klineData.Close;var yPoint=this.Frame.GetYFromData(this.Close);return yPoint;};this.GetMinuteCloseYPoint=function(index){if(this.EnableNewIndex&&this.CorssCursorIndex){if(!this.StringFormatX||!this.StringFormatX.GetMinuteCloseYPoint)return null;var closeData=this.StringFormatX.GetMinuteCloseYPoint(this.CorssCursorIndex);if(!closeData)return null;this.Close=closeData.Price;return closeData.Y;}else{if(!IFrameSplitOperator.IsNumber(index))return null;index=parseInt(index);if(!this.StringFormatX.Data)return null;var data=this.StringFormatX.Data;if(!data.Data||data.Data.length<=0)return null;var dataIndex=data.DataOffset+index;if(dataIndex>=data.Data.length)dataIndex=data.Data.length-1;if(dataIndex<0)return null;var close=data.Data[dataIndex];if(!IFrameSplitOperator.IsNumber(index))return null;this.Close=close;var yPoint=this.Frame.GetYFromData(this.Close);return yPoint;}};this.GetDateTimeRange=function(index,option){if(!IFrameSplitOperator.IsNumber(index))return null;index=parseInt(index);var data=this.StringFormatX.Data;if(!data.Data||data.Data.length<=0)return null;var dataIndex=data.DataOffset+index;if(dataIndex>=data.Data.length||dataIndex<0)return null;if(!this.Frame||!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return null;var frame=this.Frame.SubFrame[0].Frame;var dataWidth=frame.DataWidth;var distanceWidth=frame.DistanceWidth;var xPointCount=frame.XPointCount;var kItem=data.Data[dataIndex];if(!kItem)return null;var date=kItem.Date*1000000;var time=parseInt(kItem.Time/100)*100;var startTime=date+time;var endTime=date+time+59;var endIndex=dataIndex;for(var i=dataIndex;i<data.Data.length;++i){var item=data.Data[i];var dateTime=item.Date*1000000+item.Time;if(dateTime>endTime)break;if(i-data.DataOffset>=xPointCount)break;endIndex=i;}var startIndex=dataIndex;for(var i=dataIndex;i>=0&&i>=data.DataOffset;--i){var item=data.Data[i];var dateTime=item.Date*1000000+item.Time;if(dateTime<startTime)break;startIndex=i;}var range={StartIndex:startIndex,EndIndex:endIndex};range.XStart=this.Frame.GetXFromIndex(startIndex-data.DataOffset);range.XEnd=this.Frame.GetXFromIndex(endIndex-data.DataOffset);range.XStart-=(distanceWidth+dataWidth)/2;range.XEnd+=(distanceWidth+dataWidth)/2;return range;};this.FixMinuteLastTimeXPoint=function(index){if(!IFrameSplitOperator.IsNumber(index))return null;index=parseInt(index);if(!this.StringFormatX.Data)return null;var data=this.StringFormatX.Data;if(!data.Data||data.Data.length<=0)return null;var dataIndex=data.DataOffset+index;if(dataIndex<data.Data.length)return null;dataIndex=data.Data.length-1;dataIndex-=data.DataOffset;var xPoint=this.Frame.GetXFromIndex(dataIndex);return{X:xPoint,Index:dataIndex};};//返回 -1=不在客户区 1=在主区域 2=左边扩展 3=右边扩展
5124
5129
  this.PtInClient=function(x,y){this.Canvas.beginPath();if(this.Frame.IsHScreen===true){var border=this.Frame.ChartBorder.GetHScreenBorder();this.Canvas.rect(border.Left,border.TopEx,border.Right-border.Left,border.BottomEx-border.TopEx);}else{var border=this.Frame.ChartBorder.GetBorder();this.Canvas.rect(border.LeftEx,border.Top,border.RightEx-border.LeftEx,border.Bottom-border.Top);}if(this.Canvas.isPointInPath(x,y))return 1;if(this.Frame.ChartBorder.LeftExtendWidth>10){this.Canvas.beginPath();if(this.Frame.IsHScreen===true){this.Canvas.rect(border.Left,border.Top,border.Right-border.Left,border.TopEx-border.Top);}else{this.Canvas.rect(border.Left,border.Top,border.LeftEx-border.Left,border.Bottom-border.Top);}if(this.Canvas.isPointInPath(x,y))return 2;}if(this.Frame.ChartBorder.RightExtendWidth>10){this.Canvas.beginPath();if(this.Frame.IsHScreen===true){this.Canvas.rect(border.Left,border.BottomEx,border.Right-border.Left,border.Bottom-border.BottomEx);}else{this.Canvas.rect(border.RightEx,border.Top,border.Right-border.RightEx,border.Bottom-border.Top);}if(this.Canvas.isPointInPath(x,y))return 3;}return-1;};this.GetFontHeight=function(font){return GetFontHeight(this.Canvas,font,"擎");};this.Draw=function(){this.Status=0;this.RightButton.Rect=null;if(!this.LastPoint)return;this.Close=null;var x=this.LastPoint.X;var y=this.LastPoint.Y;var clientPos=this.PtInClient(x,y);this.PointY=null;this.PointY==null;this.ClientPos=clientPos;if(clientPos<=0)return;if(this.Frame.IsHScreen===true){this.HScreenDraw();return;}var border=this.Frame.ChartBorder.GetBorder();var left=border.Left;var right=border.Right;var top=border.TopTitle;var bottom=border.Bottom;var rightWidth=this.Frame.ChartBorder.Right;var chartRight=border.ChartWidth;if(this.IsOnlyDrawKLine)//手机端 十字只能画在K线上
5125
5130
  {x=this.Frame.GetXFromIndex(this.CursorIndex);if(this.IsShowClose){var yPoint=this.GetCloseYPoint(this.CursorIndex);if(yPoint!=null)y=yPoint;}}else if(this.IsOnlyDrawMinute){var yPoint=this.GetMinuteCloseYPoint(this.CursorIndex);if(yPoint!=null)y=yPoint;}if(this.CallAcutionXOperator){this.CallAcutionXOperator.Value=x;this.CallAcutionXOperator.Point={X:x,Y:y};this.CallAcutionXOperator.ClientPos=clientPos;if(this.CallAcutionXOperator.Operator()){x=this.CallAcutionXOperator.X;}}if(this.IsFixXLastTime){var value=this.FixMinuteLastTimeXPoint(this.CursorIndex);if(value){x=value.X;this.CursorIndex=value.Index;}}this.PointY=[[left,y],[right,y]];this.PointX=[[x,top],[x,bottom]];//十字线
5126
5131
  if(this.IsShowCorss){var rangeBG=null;if(this.IsDrawXRangeBG){rangeBG=this.GetDateTimeRange(this.CursorIndex);}var pixel=GetDevicePixelRatio();if(this.HPenType==1||this.HPenType==0)//0=实线 1=虚线
@@ -5228,11 +5233,13 @@ this.newMethod();delete this.newMethod;this.DateFormatType=0;//0=YYYY-MM-DD 1=YY
5228
5233
  this.LanguageID=0;this.Operator=function(){if(!IFrameSplitOperator.IsNumber(this.Value))return false;if(!this.Data)return false;var index=this.Value;index=parseInt(index.toFixed(0));if(this.Data.DataOffset+index>=this.Data.Data.length)return false;var currentData=this.Data.Data[this.Data.DataOffset+index];var dateFormatString="YYYY-MM-DD";if(this.DateFormatType==1)dateFormatString="YYYY/MM/DD";else if(this.DateFormatType==2)dateFormatString="YYYY/MM/DD/W";else if(this.DateFormatType==3)dateFormatString="DD/MM/YYYY";this.Text=IFrameSplitOperator.FormatDateString(currentData.Date,dateFormatString,this.LanguageID);if(ChartData.IsMinutePeriod(this.Data.Period,true))// 分钟周期
5229
5234
  {var time=IFrameSplitOperator.FormatTimeString(currentData.Time);this.Text=this.Text+" "+time;}else if(ChartData.IsSecondPeriod(this.Data.Period)){var time=IFrameSplitOperator.FormatTimeString(currentData.Time,'HH:MM:SS');this.Text=this.Text+" "+time;}else if(ChartData.IsTickPeriod(this.Data.Period))//分笔
5230
5235
  {var time=IFrameSplitOperator.FormatTimeString(currentData.Time);this.Text=this.Text+" "+time;}if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_CORSSCURSOR_X_TEXT);if(event){var data={Item:currentData,Period:this.Data.Period,Date:currentData.Date,Time:currentData.Time,Index:this.Data.DataOffset+index};event.Callback(event,data,this);}}return true;};}function HQMinuteTimeStringFormat(){this.newMethod=IChangeStringFormat;//派生
5231
- this.newMethod();delete this.newMethod;this.Frame;this.Symbol;this.Point;this.ClientPos=-1;this.BeforeOpenData;//单日分时图 盘前数据
5236
+ this.newMethod();delete this.newMethod;this.ClassName="HQMinuteTimeStringFormat";this.Frame;this.Symbol;this.Point;this.ClientPos=-1;this.BeforeOpenData;//单日分时图 盘前数据
5232
5237
  this.AfterCloseData;//单日分时图 收盘数据
5233
5238
  this.MultiDayBeforeOpenData;//多日分时图 盘前数据
5234
5239
  this.MultiDayAfterCloseData;//多日分时图 收盘数据
5235
- this.GetEventCallback;this.GetBeforeOpen=function(){if(!this.BeforeOpenData||!this.BeforeOpenData.Data)return false;var x=this.Frame.IsHScreen==true?this.Point.Y:this.Point.X;var index=this.Frame.GetLeftExtendXData(x,this.BeforeOpenData);index=parseInt(index.toFixed(0));if(index>=this.BeforeOpenData.Data.length)return false;var item=this.BeforeOpenData.Data[index];this.Text=this.FormatCallAcutionDateTime(item,this.BeforeOpenData);return true;};this.GetAfterClose=function(){if(!this.AfterCloseData||!this.AfterCloseData.Data)return false;var x=this.Frame.IsHScreen==true?this.Point.Y:this.Point.X;var index=this.Frame.GetRightExtendXData(x,this.AfterCloseData);index=parseInt(index.toFixed(0));if(index>=this.AfterCloseData.Data.length)return false;var item=this.AfterCloseData.Data[index];this.Text=this.FormatCallAcutionDateTime(item,this.AfterCloseData);return true;};this.GetMultiDayBeforeOpen=function(){var multiDayBeforeOpenData=this.GetMultiDayBeforeOpenData();if(!multiDayBeforeOpenData)return false;if(this.Frame.ChartBorder.MultiDayMinute.Count<=1||this.Frame.ChartBorder.MultiDayMinute.Left<=0)return false;var x=this.Frame.IsHScreen==true?this.Point.Y:this.Point.X;var index=this.Frame.GetLeftExtendXData(x,multiDayBeforeOpenData);if(!index)return false;if(index.DayIndex>=multiDayBeforeOpenData.length)return false;var dayItem=multiDayBeforeOpenData[index.DayIndex];index.DataIndex=parseInt(index.DataIndex.toFixed(0));if(index.DataIndex>=dayItem.Data.length||index.DataIndex<0)return false;var item=dayItem.Data[index.DataIndex];this.Text=this.FormatCallAcutionDateTime(item,dayItem);return true;};this.GetMultiDayAfterClose=function(){var multiDayAfterCloseData=this.GetMultiDayAfterCloseData();if(!multiDayAfterCloseData)return false;if(this.Frame.ChartBorder.MultiDayMinute.Count<=1||this.Frame.ChartBorder.MultiDayMinute.Right<=0)return false;var x=this.Frame.IsHScreen==true?this.Point.Y:this.Point.X;var index=this.Frame.GetRightExtendXData(x,multiDayAfterCloseData);if(!index)return false;if(index.DayIndex>=multiDayAfterCloseData.length)return false;var dayItem=multiDayAfterCloseData[index.DayIndex];index.DataIndex=parseInt(index.DataIndex.toFixed(0));if(index.DataIndex>=dayItem.Data.length)return false;var item=dayItem.Data[index.DataIndex];this.Text=this.FormatCallAcutionDateTime(item,dayItem);return true;};this.FormatCallAcutionDateTime=function(item,callAcutionData){var time=item.Time;if(callAcutionData.Ver==1.0)return IFrameSplitOperator.FormatTimeString(time,"HH:MM");else return IFrameSplitOperator.FormatTimeString(time,"HH:MM:SS");};this.Operator=function(){if(this.ClientPos==2)return this.GetBeforeOpen();else if(this.ClientPos==3)return this.GetAfterClose();else if(this.ClientPos>=200&&this.ClientPos<=299)return this.GetMultiDayBeforeOpen();else if(this.ClientPos>=300&&this.ClientPos<=399)return this.GetMultiDayAfterClose();if(!IFrameSplitOperator.IsNumber(this.Value))return false;var index=Math.abs(this.Value);index=parseInt(index.toFixed(0));var showIndex=index;if(this.Frame&&this.Frame.MinuteCount)showIndex=index%this.Frame.MinuteCount;var timeStringData=g_MinuteTimeStringData;var timeData=timeStringData.GetTimeData(this.Symbol);if(!timeData)return false;if(showIndex<0)showIndex=0;else if(showIndex>timeData.length)showIndex=timeData.length-1;if(this.Frame&&index>=this.Frame.XPointCount)showIndex=timeData.length-1;var time=timeData[showIndex];this.Text=IFrameSplitOperator.FormatTimeString(time);if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_CORSSCURSOR_X_TEXT);if(event){var data={Time:time,Index:showIndex};event.Callback(event,data,this);}}return true;};}//行情tooltip提示信息格式
5240
+ this.GetEventCallback;this.GetBeforeOpen=function(){if(!this.BeforeOpenData||!this.BeforeOpenData.Data)return false;var x=this.Frame.IsHScreen==true?this.Point.Y:this.Point.X;var index=this.Frame.GetLeftExtendXData(x,this.BeforeOpenData);index=parseInt(index.toFixed(0));if(index>=this.BeforeOpenData.Data.length)return false;var item=this.BeforeOpenData.Data[index];this.Text=this.FormatCallAcutionDateTime(item,this.BeforeOpenData);return true;};this.GetAfterClose=function(){if(!this.AfterCloseData||!this.AfterCloseData.Data)return false;var x=this.Frame.IsHScreen==true?this.Point.Y:this.Point.X;var index=this.Frame.GetRightExtendXData(x,this.AfterCloseData);index=parseInt(index.toFixed(0));if(index>=this.AfterCloseData.Data.length)return false;var item=this.AfterCloseData.Data[index];this.Text=this.FormatCallAcutionDateTime(item,this.AfterCloseData);return true;};this.GetMultiDayBeforeOpen=function(){var multiDayBeforeOpenData=this.GetMultiDayBeforeOpenData();if(!multiDayBeforeOpenData)return false;if(this.Frame.ChartBorder.MultiDayMinute.Count<=1||this.Frame.ChartBorder.MultiDayMinute.Left<=0)return false;var x=this.Frame.IsHScreen==true?this.Point.Y:this.Point.X;var index=this.Frame.GetLeftExtendXData(x,multiDayBeforeOpenData);if(!index)return false;if(index.DayIndex>=multiDayBeforeOpenData.length)return false;var dayItem=multiDayBeforeOpenData[index.DayIndex];index.DataIndex=parseInt(index.DataIndex.toFixed(0));if(index.DataIndex>=dayItem.Data.length||index.DataIndex<0)return false;var item=dayItem.Data[index.DataIndex];this.Text=this.FormatCallAcutionDateTime(item,dayItem);return true;};this.GetMultiDayAfterClose=function(){var multiDayAfterCloseData=this.GetMultiDayAfterCloseData();if(!multiDayAfterCloseData)return false;if(this.Frame.ChartBorder.MultiDayMinute.Count<=1||this.Frame.ChartBorder.MultiDayMinute.Right<=0)return false;var x=this.Frame.IsHScreen==true?this.Point.Y:this.Point.X;var index=this.Frame.GetRightExtendXData(x,multiDayAfterCloseData);if(!index)return false;if(index.DayIndex>=multiDayAfterCloseData.length)return false;var dayItem=multiDayAfterCloseData[index.DayIndex];index.DataIndex=parseInt(index.DataIndex.toFixed(0));if(index.DataIndex>=dayItem.Data.length)return false;var item=dayItem.Data[index.DataIndex];this.Text=this.FormatCallAcutionDateTime(item,dayItem);return true;};this.FormatCallAcutionDateTime=function(item,callAcutionData){var time=item.Time;if(callAcutionData.Ver==1.0)return IFrameSplitOperator.FormatTimeString(time,"HH:MM");else return IFrameSplitOperator.FormatTimeString(time,"HH:MM:SS");};this.Operator=function(){if(this.ClientPos==2)return this.GetBeforeOpen();else if(this.ClientPos==3)return this.GetAfterClose();else if(this.ClientPos>=200&&this.ClientPos<=299)return this.GetMultiDayBeforeOpen();else if(this.ClientPos>=300&&this.ClientPos<=399)return this.GetMultiDayAfterClose();if(!IFrameSplitOperator.IsNumber(this.Value))return false;var index=Math.abs(this.Value);index=parseInt(index.toFixed(0));var showIndex=index;if(this.Frame&&this.Frame.MinuteCount)showIndex=index%this.Frame.MinuteCount;var timeStringData=g_MinuteTimeStringData;var timeData=timeStringData.GetTimeData(this.Symbol);if(!timeData)return false;if(showIndex<0)showIndex=0;else if(showIndex>timeData.length)showIndex=timeData.length-1;if(this.Frame&&index>=this.Frame.XPointCount)showIndex=timeData.length-1;var time=timeData[showIndex];this.Text=IFrameSplitOperator.FormatTimeString(time);if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_CORSSCURSOR_X_TEXT);if(event){var data={Time:time,Index:showIndex};event.Callback(event,data,this);}}return true;};this.GetMinuteCloseYPoint=function(cursorIndexData){var type=cursorIndexData.Type;if(type==1||type==2||type==3)//单日 1=主图 2=盘前 3=盘后
5241
+ {if(type==1){if(!this.Data||this.Data.Data.length<=0)return null;var index=cursorIndexData.DataIndex;if(index<0||index>=this.Data.Data.length)index=this.Data.Data.length-1;var close=this.Data.Data[index];var yPoint=this.Frame.GetYFromData(close);return{Price:close,Y:yPoint};}else if(type==2){if(!this.BeforeOpenData||!this.BeforeOpenData.Data)return false;if(cursorIndexData.DataIndex<0||cursorIndexData.DataIndex>=this.BeforeOpenData.Data.length)return null;var item=this.BeforeOpenData.Data[cursorIndexData.DataIndex];var close=item.Price;var yPoint=this.Frame.GetYFromData(close);return{Price:close,Y:yPoint};}else if(type==3){if(!this.AfterCloseData||!this.AfterCloseData.Data)return false;if(cursorIndexData.DataIndex<0||cursorIndexData.DataIndex>=this.AfterCloseData.Data.length)return null;var item=this.AfterCloseData.Data[cursorIndexData.DataIndex];var close=item.Price;var yPoint=this.Frame.GetYFromData(close);return{Price:close,Y:yPoint};}}else if(type==10||type==20||type==30)//多日 10=主图 20=盘前 30=盘后
5242
+ {if(type==10){if(!this.Data||this.Data.Data.length<=0)return null;var index=this.Frame.MinuteCount*cursorIndexData.DayIndex+cursorIndexData.DataIndex;if(index<0||index>=this.Data.Data.length)index=this.Data.Data.length-1;var close=this.Data.Data[index];var yPoint=this.Frame.GetYFromData(close);return{Price:close,Y:yPoint};}else if(type==20){var multiDayBeforeOpenData=this.GetMultiDayBeforeOpenData();if(!multiDayBeforeOpenData)return null;if(cursorIndexData.DayIndex<0||cursorIndexData.DayIndex>=multiDayBeforeOpenData.length)return null;var dayItem=multiDayBeforeOpenData[cursorIndexData.DayIndex];if(cursorIndexData.DataIndex<0||cursorIndexData.DataIndex>=dayItem.Data.length)return null;var item=dayItem.Data[cursorIndexData.DataIndex];var close=item.Price;var yPoint=this.Frame.GetYFromData(close);return{Price:close,Y:yPoint};}else if(type==30){var multiDayAfterCloseData=this.GetMultiDayAfterCloseData();if(!multiDayAfterCloseData)return null;if(cursorIndexData.DayIndex<0||cursorIndexData.DayIndex>=multiDayAfterCloseData.length)return null;var dayItem=multiDayAfterCloseData[cursorIndexData.DayIndex];if(cursorIndexData.DataIndex<0||cursorIndexData.DataIndex>=dayItem.Data.length)return null;var item=dayItem.Data[cursorIndexData.DataIndex];var close=item.Price;var yPoint=this.Frame.GetYFromData(close);return{Price:close,Y:yPoint};}}return null;};}//行情tooltip提示信息格式
5236
5243
  var WEEK_NAME=["日","一","二","三","四","五","六"];function HistoryDataStringFormat(){this.newMethod=IChangeStringFormat;//派生
5237
5244
  this.newMethod();delete this.newMethod;this.ClassName="HistoryDataStringFormat";this.Symbol;this.UpColor=g_JSChartResource.UpTextColor;this.DownColor=g_JSChartResource.DownTextColor;this.UnchagneColor=g_JSChartResource.UnchagneTextColor;this.VolColor=g_JSChartResource.Title.VolColor;this.AmountColor=g_JSChartResource.Title.AmountColor;this.TurnoverRateColor=g_JSChartResource.Title.TurnoverRateColor;this.PositionColor=g_JSChartResource.Title.PositionColor;this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;this.LineCount=0;//一共几行
5238
5245
  this.LineHeight=g_JSChartResource.PCTooltip.LineHeight;//单行高度
@@ -6647,9 +6654,9 @@ RectSelectPaint:paint,//区间选择背景
6647
6654
  IsShowMenu:true,e:e};event.Callback(event,data,this);isShowMenu=data.IsShowMenu;}if(isShowMenu&&this.SelectRectRightMenu){e.data={Chart:this,X:corssCursor.LastPoint.X/pixelTatio,Y:corssCursor.LastPoint.Y/pixelTatio,SelectData:selectData,//区间选择的数据
6648
6655
  RectSelectPaint:paint//区间选择背景
6649
6656
  };this.SelectRectRightMenu.DoModal(e);}}this.Draw();};//创建指定窗口指标
6650
- this.CreateWindowIndex=function(windowIndex){this.WindowIndex[windowIndex].Create(this,windowIndex);};this.BindIndexData=function(windowIndex,hisData,option){if(!this.WindowIndex[windowIndex])return;if(typeof this.WindowIndex[windowIndex].RequestData=="function")//数据需要另外下载的.
6651
- {this.WindowIndex[windowIndex].RequestData(this,windowIndex,hisData,option);return;}if(typeof this.WindowIndex[windowIndex].ExecuteScript=='function'){this.WindowIndex[windowIndex].ExecuteScript(this,windowIndex,hisData);return;}this.WindowIndex[windowIndex].BindData(this,windowIndex,hisData);};//叠加指标
6652
- this.BindOverlayIndexData=function(overlayItem,windowIndex,hisData){if(!overlayItem.Script)return;if(typeof overlayItem.Script.RequestData=='function'){overlayItem.Script.RequestData(this,windowIndex,hisData);return;}if(typeof overlayItem.Script.ExecuteScript=='function'){overlayItem.Script.ExecuteScript(this,windowIndex,hisData);return;}overlayItem.Script.BindData(this,windowIndex,hisData);};//执行指示(专家指示 五彩K线)
6657
+ this.CreateWindowIndex=function(windowIndex){this.WindowIndex[windowIndex].Create(this,windowIndex);};this.BindIndexData=function(windowIndex,hisData,option){if(!this.WindowIndex[windowIndex])return;var item=this.WindowIndex[windowIndex];if(typeof item.RequestData=="function")//数据需要另外下载的.
6658
+ {item.RequestData(this,windowIndex,hisData,option);return;}if(typeof item.ExecuteScript=='function'){if(option&&option.CheckRunCount)if(item.IsExcessRunCount())return;item.ExecuteScript(this,windowIndex,hisData);return;}item.BindData(this,windowIndex,hisData);};//叠加指标
6659
+ this.BindOverlayIndexData=function(overlayItem,windowIndex,hisData,option){if(!overlayItem.Script)return;if(typeof overlayItem.Script.RequestData=='function'){overlayItem.Script.RequestData(this,windowIndex,hisData);return;}if(typeof overlayItem.Script.ExecuteScript=='function'){if(option&&option.CheckRunCount)if(overlayItem.Script.IsExcessRunCount())return;overlayItem.Script.ExecuteScript(this,windowIndex,hisData);return;}overlayItem.Script.BindData(this,windowIndex,hisData);};//执行指示(专家指示 五彩K线)
6653
6660
  this.BindInstructionIndexData=function(hisData){if(this.ColorIndex&&typeof this.ColorIndex.ExecuteScript=='function')//五彩K线
6654
6661
  {this.ColorIndex.ExecuteScript(this,0,hisData);}if(this.TradeIndex&&typeof this.TradeIndex.ExecuteScript=='function')//交易指标
6655
6662
  {this.TradeIndex.ExecuteScript(this,0,hisData);}};//获取子窗口的所有画法
@@ -6659,8 +6666,8 @@ var item=this.ChartPaint[i];if(item.ChartFrame==this.Frame.SubFrame[windowIndex]
6659
6666
  {if(ChartData.IsDayPeriod(self.Period,true))self.RecvRealtimeData(data);else if(ChartData.IsMinutePeriod(self.Period,true))self.RecvMinuteRealtimeData(data);else if(ChartData.IsSecondPeriod(self.Period))self.RecvMinuteRealtimeData(data);};}event.Callback(event,data,this);};this.SendKLineUpdateEvent=function(bindData){var event=this.GetEventCallback(JSCHART_EVENT_ID.RECV_KLINE_UPDATE_DATA);if(event&&event.Callback){var data={HistoryData:bindData,Stock:{Symbol:this.Symbol,Name:this.Name}};event.Callback(event,data,this);return true;}return false;};this.SendManualKLineUpdateEvent=function(bindData){var event=this.GetEventCallback(JSCHART_EVENT_ID.RECV_KLINE_MANUAL_UPDATE_DATA);if(event&&event.Callback){var data={HistoryData:bindData,Stock:{Symbol:this.Symbol,Name:this.Name}};event.Callback(event,data,this);return true;}return false;};this.GetKLineDrawType=function(){return this.KLineDrawType;};this.RequestHistoryData=function(){var self=this;this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.EnableSplash(true);this.FlowCapitalReady=false;this.ResetPage();//重置分页
6660
6667
  this.ResetDragDownload();this.ResetZoomDownload();this.Draw();if(this.NetworkFilter){var kLineDrawType=this.GetKLineDrawType();var obj={Name:'KLineChartContainer::RequestHistoryData',//类名::
6661
6668
  Explain:'日K数据',Request:{Url:self.KLineApiUrl,Type:'POST',Data:{symbol:self.Symbol,count:self.MaxRequestDataCount,field:["name","symbol","yclose","open","price","high","low","vol"],period:this.Period,right:this.Right,klineDrawType:kLineDrawType}},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){self.ChartSplashPaint.EnableSplash(false);self.RecvHistoryData(data);var page=self.Page.Day;if(page.Enable==true&&page.Finish==false){self.RequestHistoryPageData();}else{self.AutoUpdateEvent(true,'KLineChartContainer::RequestHistoryData');self.AutoUpdate();}});if(obj.PreventDefault==true)return;//已被上层替换,不调用默认的网络请求
6662
- }JSNetwork.HttpRequest({url:this.KLineApiUrl,data:{"field":["name","symbol","yclose","open","price","high","low","vol"],"symbol":self.Symbol,"start":-1,"count":self.MaxRequestDataCount},type:"post",dataType:"json",async:true,success:function success(data){self.ChartSplashPaint.EnableSplash(false);self.RecvHistoryData(data);var page=self.Page.Day;if(page.Enable==true&&page.Finish==false){self.RequestHistoryPageData();}else{self.AutoUpdateEvent(true,'KLineChartContainer::RequestHistoryData');self.AutoUpdate();}}});};this.BindAllOverlayIndexData=function(hisData){if(!this.Frame||!this.Frame.SubFrame)return;//叠加指标
6663
- for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];this.BindOverlayIndexData(overlayItem,i,hisData);}}};this.RecvHistoryData=function(data){if(this.EnableVerifyRecvData&&data.symbol!=this.Symbol){JSConsole.Chart.Warn('[KLineChartContainer::RecvHistoryData] recv data symbol not match. HQChart['+this.Symbol+'] , Recv['+data.symbol+']');return;}var aryDayData=KLineChartContainer.JsonDataToHistoryData(data);//原始数据
6669
+ }JSNetwork.HttpRequest({url:this.KLineApiUrl,data:{"field":["name","symbol","yclose","open","price","high","low","vol"],"symbol":self.Symbol,"start":-1,"count":self.MaxRequestDataCount},type:"post",dataType:"json",async:true,success:function success(data){self.ChartSplashPaint.EnableSplash(false);self.RecvHistoryData(data);var page=self.Page.Day;if(page.Enable==true&&page.Finish==false){self.RequestHistoryPageData();}else{self.AutoUpdateEvent(true,'KLineChartContainer::RequestHistoryData');self.AutoUpdate();}}});};this.BindAllOverlayIndexData=function(hisData,option){if(!this.Frame||!this.Frame.SubFrame)return;//叠加指标
6670
+ for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];this.BindOverlayIndexData(overlayItem,i,hisData,option);}}};this.RecvHistoryData=function(data){if(this.EnableVerifyRecvData&&data.symbol!=this.Symbol){JSConsole.Chart.Warn('[KLineChartContainer::RecvHistoryData] recv data symbol not match. HQChart['+this.Symbol+'] , Recv['+data.symbol+']');return;}var aryDayData=KLineChartContainer.JsonDataToHistoryData(data);//原始数据
6664
6671
  var sourceData=new ChartData();sourceData.Data=aryDayData;sourceData.DataType=0;//0=日线数据 1=分钟数据
6665
6672
  sourceData.Symbol=data.symbol;this.SourceData=sourceData;if(this.BeforeBindMainData)this.BeforeBindMainData("RecvHistoryData");//显示的数据
6666
6673
  var bindData=new ChartData();bindData.Data=aryDayData;bindData.Right=this.Right;bindData.Period=this.Period;bindData.DataType=0;bindData.Symbol=data.symbol;if(bindData.Right>0&&!this.IsApiPeriod)//复权
@@ -6765,12 +6772,12 @@ if(this.SourceData.Data.length==0)//第1条数据
6765
6772
  {var newBindData=kLineCalculate.RecvHistoryData(bindData,{Symbol:this.Symbol,Function:"RecvRealtimeData"});bindData=newBindData;this.FlowCapitalReady=true;}this.UpdateMainData(bindData,lastDataCount);//更新主图数据
6766
6773
  this.UpdateOverlayRealtimeData(data);//更新叠加股票数据
6767
6774
  this.BindInstructionIndexData(bindData);//执行指示脚本
6768
- for(var i=0;i<this.Frame.SubFrame.length;++i){this.BindIndexData(i,bindData);}//刷新画图
6775
+ for(var i=0;i<this.Frame.SubFrame.length;++i){this.BindIndexData(i,bindData,{CheckRunCount:true});}//刷新画图
6769
6776
  this.UpdataDataoffset();//更新数据偏移
6770
6777
  this.UpdatePointByCursorIndex(1);//更新十字光标位子
6771
6778
  this.UpdateFrameMaxMin();//调整坐标最大 最小值
6772
6779
  this.Frame.SetSizeChage(true);this.Draw();this.SendKLineUpdateEvent(bindData);//叠加指标计算
6773
- this.BindAllOverlayIndexData(bindData);if(this.mapEvent.has(JSCHART_EVENT_ID.ON_RECV_REALTIME_DATA)){var event=this.mapEvent.get(JSCHART_EVENT_ID.ON_RECV_REALTIME_DATA);var data={HistoryData:bindData,Stock:{Symbol:this.Symbol,Name:this.Name}};event.Callback(event,data,this);}};this.UpdateOverlayRealtimeData=function(data){if(!IFrameSplitOperator.IsNonEmptyArray(this.OverlayChartPaint))return;for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Symbol)continue;if(!item.MainData)continue;//等待主图股票数据未下载完
6780
+ this.BindAllOverlayIndexData(bindData,{CheckRunCount:true});if(this.mapEvent.has(JSCHART_EVENT_ID.ON_RECV_REALTIME_DATA)){var event=this.mapEvent.get(JSCHART_EVENT_ID.ON_RECV_REALTIME_DATA);var data={HistoryData:bindData,Stock:{Symbol:this.Symbol,Name:this.Name}};event.Callback(event,data,this);}};this.UpdateOverlayRealtimeData=function(data){if(!IFrameSplitOperator.IsNonEmptyArray(this.OverlayChartPaint))return;for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Symbol)continue;if(!item.MainData)continue;//等待主图股票数据未下载完
6774
6781
  if(item.Status!=OVERLAY_STATUS_ID.STATUS_FINISHED_ID)continue;var realtimeData=KLineChartContainer.JsonDataToRealtimeData(data,item.Symbol);//获取叠加股票的最新数据
6775
6782
  if(!realtimeData)continue;var sourceData=item.SourceData;//叠加股票的所有数据
6776
6783
  var latestData=sourceData.Data[sourceData.Data.length-1];//最新的一条数据
@@ -6881,16 +6888,16 @@ case 12://4小时
6881
6888
  if(this.SourceData.DataType!=1)isDataTypeChange=true;break;case 10://分笔线
6882
6889
  if(this.SourceData.DataType!=2)isDataTypeChange=true;break;}}}this.Period=period;if(right!=null)this.Right=right;this.ReloadChartDrawPicture();//切换周期了 清空画图工具
6883
6890
  this.ClearRectSelect(true);this.Frame.ClearUpDonwFrameYData();this.ClearCustomKLine();var kLineDrawType=this.GetKLineDrawType();if(kLineDrawType==10||kLineDrawType==11||kLineDrawType==12||kLineDrawType==16)isDataTypeChange=true;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CHANGE_KLINE_PERIOD);if(event&&event.Callback){var sendData={IsApiPeriod:this.IsApiPeriod,Old:oldData,Now:{Period:this.Period,Right:this.Right,KLineDrawType:this.KLineDrawType},IsDataTypeChange:isDataTypeChange//数据类型是否改变 true 重新请求数据
6884
- };event.Callback(event,sendData,this);isDataTypeChange=sendData.IsDataTypeChange;}if(isDataTypeChange==false&&!this.IsApiPeriod){this.Update({UpdateCursorIndexType:2});//更新的时候 取消显示十字光标
6891
+ };event.Callback(event,sendData,this);isDataTypeChange=sendData.IsDataTypeChange;}if(isDataTypeChange==false&&!this.IsApiPeriod){this.ClearIndexRunCount();this.Update({UpdateCursorIndexType:2});//更新的时候 取消显示十字光标
6885
6892
  return;}this.ClearIndexPaint();if(ChartData.IsDayPeriod(this.Period,true)){this.CancelAutoUpdate();//先停止定时器
6886
6893
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod');//切换周期先停止更新
6887
- this.ResetScrollBar();this.ResetOverlaySymbolStatus();this.RequestHistoryData();//请求日线数据
6894
+ this.ResetScrollBar();this.ResetOverlaySymbolStatus();this.ClearIndexRunCount();this.RequestHistoryData();//请求日线数据
6888
6895
  //this.ReqeustKLineInfoData();
6889
6896
  }else if(ChartData.IsMinutePeriod(this.Period,true)||ChartData.IsSecondPeriod(this.Period)){this.CancelAutoUpdate();//先停止定时器
6890
6897
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod');//切换周期先停止更新
6891
- this.ResetScrollBar();this.ResetOverlaySymbolStatus();this.ReqeustHistoryMinuteData();//请求分钟数据
6898
+ this.ResetScrollBar();this.ResetOverlaySymbolStatus();this.ClearIndexRunCount();this.ReqeustHistoryMinuteData();//请求分钟数据
6892
6899
  }else if(ChartData.IsTickPeriod(this.Period)){this.CancelAutoUpdate();//先停止定时器
6893
- this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod');this.ResetScrollBar();this.RequestTickData();//请求分笔数据
6900
+ this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod');this.ResetScrollBar();this.ClearIndexRunCount();this.RequestTickData();//请求分笔数据
6894
6901
  }};//复权切换
6895
6902
  this.ChangeRight=function(right){if(!MARKET_SUFFIX_NAME.IsEnableRight(this.Period,this.Symbol,this.RightFormula))return;var upperSymbol=this.Symbol.toUpperCase();if(MARKET_SUFFIX_NAME.IsBIT(upperSymbol))return;if(right<0||right>2)return;if(this.Right==right)return;this.Right=right;if(!this.IsApiPeriod){this.Update();return;}else//API周期数据 重新请求数据
6896
6903
  {if(ChartData.IsDayPeriod(this.Period,true)){this.CancelAutoUpdate();//先停止定时器
@@ -7050,7 +7057,7 @@ this.UpdateFrameMaxMin();//调整坐标最大 最小值
7050
7057
  this.Frame.SetSizeChage(true);this.Draw();//叠加指标
7051
7058
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];this.BindOverlayIndexData(overlayItem,i,bindData);}}};//切换股票代码
7052
7059
  this.ChangeSymbol=function(symbol,option){this.CancelAutoUpdate();//先停止定时器
7053
- this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');this.ClearRectSelect(true);this.ClearCustomKLine();this.ClearKLineCaluate();this.HideTooltip();this.ResetScrollBar();this.Symbol=symbol;if(!symbol){this.DrawEmpty();return;}if(option){if(option.KLine){var item=option.KLine;if(IFrameSplitOperator.IsNumber(item.Right))this.Right=item.Right;if(IFrameSplitOperator.IsNumber(item.Period))this.Period=item.Period;}}if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))this.Right=0;//指数没有复权
7060
+ this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');this.ClearRectSelect(true);this.ClearCustomKLine();this.ClearKLineCaluate();this.HideTooltip();this.ResetScrollBar();this.ClearIndexRunCount();this.Symbol=symbol;if(!symbol){this.DrawEmpty();return;}if(option){if(option.KLine){var item=option.KLine;if(IFrameSplitOperator.IsNumber(item.Right))this.Right=item.Right;if(IFrameSplitOperator.IsNumber(item.Period))this.Period=item.Period;}}if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))this.Right=0;//指数没有复权
7054
7061
  this.ClearIndexPaint();//清空指标
7055
7062
  if(option){if(option.Windows&&Array.isArray(option.Windows)&&option.Windows.length>0){var windows=option.Windows;var systemScript=new JSIndexScript();for(var i in windows){if(i>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
7056
7063
  var item=windows[i];if(!item)continue;if(item.Script){this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
@@ -7548,7 +7555,7 @@ if(this.Frame&&this.Frame.SubFrame){for(var i=0;i<this.Frame.SubFrame.length;++i
7548
7555
  {var overlayItem=item.OverlayIndex[j];for(var k=0;k<overlayItem.ChartPaint.length;++k){var overlayChart=overlayItem.ChartPaint[k];if(overlayChart&&overlayChart.OnDestroy)overlayChart.OnDestroy();}overlayItem.ChartPaint=[];}}}}//清空叠加标题
7549
7556
  for(var i=1;i<this.TitlePaint.length;++i){var item=this.TitlePaint[i];item.OverlayIndex=new _map2.default();}};this.ResetDayOffset=function(){if(this.PageInfo.Enable){this.DayOffset.Offset=this.PageInfo.Offset;this.DayOffset.ShowDayCount=this.PageInfo.ShowDayCount;}else{this.DayOffset.Offset=0;this.DayOffset.ShowDayCount=-1;}this.DayOffset.PageInfo=null;};//切换股票代码
7550
7557
  this.ChangeSymbol=function(symbol,option){this.StopDisplayLatest();this.CancelAutoUpdate();this.AutoUpdateEvent(false,"MinuteChartContainer::ChangeSymbol");this.Symbol=symbol;this.ResetDayOffset();this.ClearIndexPaint();//清空指标
7551
- this.ResetOverlaySymbolStatus();this.ReloadChartDrawPicture();if(option){if(IFrameSplitOperator.IsNumber(option.DayCount))this.DayCount=option.DayCount;if(IFrameSplitOperator.IsNonEmptyArray(option.Windows))//切换指标
7558
+ this.ResetOverlaySymbolStatus();this.ReloadChartDrawPicture();this.ClearIndexRunCount();if(option){if(IFrameSplitOperator.IsNumber(option.DayCount))this.DayCount=option.DayCount;if(IFrameSplitOperator.IsNonEmptyArray(option.Windows))//切换指标
7552
7559
  {var systemScript=new JSIndexScript();for(var i=0;i<option.Windows.length;++i){var index=2+i;if(index>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
7553
7560
  var item=option.Windows[i];if(!item)continue;if(item.Script){this.WindowIndex[index]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
7554
7561
  }else if(item.API){var apiItem=item.API;this.WindowIndex[index]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexInfo=systemScript.Get(indexID);if(indexInfo){var args=indexInfo.Args;if(item.Args)indexInfo.Args=item.Args;indexInfo.ID=indexID;this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
@@ -7650,7 +7657,7 @@ this.AutoUpdate=function(){this.CancelAutoUpdate();if(!this.IsAutoUpdate)return;
7650
7657
  {//等待开盘
7651
7658
  this.AutoUpdateTimer=setTimeout(function(){self.AutoUpdate();},20000);return;}var frequency=this.AutoUpdateFrequency;if(marketStatus==1)//盘前
7652
7659
  {this.AutoUpdateTimer=setTimeout(function(){self.AutoUpdate();},frequency);}else if(marketStatus==2)//盘中
7653
- {this.AutoUpdateTimer=setTimeout(function(){self.ResetOverlaySymbolStatus();self.RequestMinuteData();},frequency);}};this.BindIndexData=function(windowIndex,hisData){if(!this.WindowIndex[windowIndex])return;if(typeof this.WindowIndex[windowIndex].RequestData=="function")//数据需要另外下载的.
7660
+ {this.AutoUpdateTimer=setTimeout(function(){self.ResetOverlaySymbolStatus();self.RequestMinuteData();},frequency);}};this.BindIndexData=function(windowIndex,hisData,option){if(!this.WindowIndex[windowIndex])return;if(typeof this.WindowIndex[windowIndex].RequestData=="function")//数据需要另外下载的.
7654
7661
  {this.WindowIndex[windowIndex].RequestData(this,windowIndex,hisData);return;}if(typeof this.WindowIndex[windowIndex].ExecuteScript=='function'){this.WindowIndex[windowIndex].ExecuteScript(this,windowIndex,hisData);return;}this.WindowIndex[windowIndex].BindData(this,windowIndex,hisData);};//绑定分钟数据
7655
7662
  this.BindMainData=function(minuteData,yClose,extendData){var multiBeforeOpenData=this.IsShowMultiDayBeforeData?this.MultiDayBeforeOpenData:null;var multiAfterCloseData=this.IsShowMultiDayAfterData?this.MultiDayAfterCloseData:null;//分钟数据
7656
7663
  var bindData=new ChartData();bindData.Data=minuteData.GetClose();this.ChartPaint[0].Data=bindData;this.ChartPaint[0].YClose=yClose;this.ChartPaint[0].NotSupportMessage=null;this.ChartPaint[0].IsShowLead=false;this.ChartPaint[0].LeadData=null;this.ChartPaint[0].BeforeOpenData=this.BeforeOpenData;this.ChartPaint[0].AfterCloseData=this.AfterCloseData;this.ChartPaint[0].MultiDayBeforeOpenData=multiBeforeOpenData;this.ChartPaint[0].MultiDayAfterCloseData=multiAfterCloseData;this.ChartPaint[0].ColorLineData=this.ColorLineData;//自定义分段颜色
@@ -7688,9 +7695,9 @@ scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIn
7688
7695
  overlayFrame.Script=scriptIndex;}else{var scriptIndex=indexCustom.Create();scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
7689
7696
  scriptIndex.Create(this,windowIndex);overlayFrame.Script=scriptIndex;}subFrame.OverlayIndex.push(overlayFrame);return overlayFrame;};this.DeleteOverlayWindowsIndex=function(identify)//删除叠加指标
7690
7697
  {if(!this.DeleteOverlayIndex(identify,null))return;this.Frame.ResetXYSplit(true);this.Draw();};//计算叠加指标
7691
- this.BindAllOverlayIndexData=function(hisData){if(!this.Frame||!this.Frame.SubFrame)return;//叠加指标
7692
- for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];this.BindOverlayIndexData(overlayItem,i,hisData);}}};//叠加指标
7693
- this.BindOverlayIndexData=function(overlayItem,windowIndex,hisData){if(!overlayItem.Script)return;if(typeof overlayItem.Script.RequestData=='function'){overlayItem.Script.RequestData(this,windowIndex,hisData);return;}if(typeof overlayItem.Script.ExecuteScript=='function'){overlayItem.Script.ExecuteScript(this,windowIndex,hisData);return;}overlayItem.Script.BindData(this,windowIndex,hisData);};//获取子窗口的所有画法
7698
+ this.BindAllOverlayIndexData=function(hisData,option){if(!this.Frame||!this.Frame.SubFrame)return;//叠加指标
7699
+ for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];this.BindOverlayIndexData(overlayItem,i,hisData,option);}}};//叠加指标
7700
+ this.BindOverlayIndexData=function(overlayItem,windowIndex,hisData,option){if(!overlayItem.Script)return;if(typeof overlayItem.Script.RequestData=='function'){overlayItem.Script.RequestData(this,windowIndex,hisData);return;}if(typeof overlayItem.Script.ExecuteScript=='function'){overlayItem.Script.ExecuteScript(this,windowIndex,hisData);return;}overlayItem.Script.BindData(this,windowIndex,hisData);};//获取子窗口的所有画法
7694
7701
  this.GetChartPaint=function(windowIndex){var paint=new Array();for(var i in this.ChartPaint){if(i<3)continue;//分钟 均线 成交量 3个线不能改
7695
7702
  var item=this.ChartPaint[i];if(item.ChartFrame==this.Frame.SubFrame[windowIndex].Frame)paint.push(item);}return paint;};//创建指定窗口指标
7696
7703
  this.CreateWindowIndex=function(windowIndex){this.WindowIndex[windowIndex].Create(this,windowIndex);};//获取当前的显示的指标
@@ -11086,7 +11093,9 @@ this.IsUsePageData=false;//是否使用了K线界面数据
11086
11093
  this.Debug;// { Callback:, Count: }
11087
11094
  this.IsSync=false;//是否是同步计算 (无数据请求)
11088
11095
  this.IsShow=true;//是否显示图形
11089
- if(option){if(option.FloatPrecision>=0)this.FloatPrecision=option.FloatPrecision;if(option.StringFormat>0)this.StringFormat=option.StringFormat;if(option.ID)this.ID=option.ID;if(option.KLineType>=0||option.KLineType===-1)this.KLineType=option.KLineType;if(option.InstructionType)this.InstructionType=option.InstructionType;if(option.YSpecificMaxMin)this.YSpecificMaxMin=option.YSpecificMaxMin;if(option.YSplitScale)this.YSplitScale=option.YSplitScale;if(option.Condition)this.Condition=option.Condition;if(option.TitleFont)this.TitleFont=option.TitleFont;if(option.IsShortTitle)this.IsShortTitle=option.IsShortTitle;if(option.OutName)this.OutName=option.OutName;if(IFrameSplitOperator.IsNumber(option.YSplitType))this.YSplitType=option.YSplitType;if(IFrameSplitOperator.IsBool(option.IsSync))this.IsSync=option.IsSync;if(option.Debug){if(IFrameSplitOperator.IsPlusNumber(option.Debug.Count)&&option.Debug.Callback){this.Debug={Count:option.Debug.Count,Callback:option.Debug.Callback};}}}if(option&&option.Lock){if(option.Lock.IsLocked==true)this.IsLocked=true;//指标上锁
11096
+ this.RunCount=0;//已执行次数
11097
+ this.MaxRunCount=-1;//最大执行次数 -1=无限
11098
+ if(option){if(option.FloatPrecision>=0)this.FloatPrecision=option.FloatPrecision;if(option.StringFormat>0)this.StringFormat=option.StringFormat;if(option.ID)this.ID=option.ID;if(option.KLineType>=0||option.KLineType===-1)this.KLineType=option.KLineType;if(option.InstructionType)this.InstructionType=option.InstructionType;if(option.YSpecificMaxMin)this.YSpecificMaxMin=option.YSpecificMaxMin;if(option.YSplitScale)this.YSplitScale=option.YSplitScale;if(option.Condition)this.Condition=option.Condition;if(option.TitleFont)this.TitleFont=option.TitleFont;if(option.IsShortTitle)this.IsShortTitle=option.IsShortTitle;if(option.OutName)this.OutName=option.OutName;if(IFrameSplitOperator.IsNumber(option.YSplitType))this.YSplitType=option.YSplitType;if(IFrameSplitOperator.IsBool(option.IsSync))this.IsSync=option.IsSync;if(IFrameSplitOperator.IsNumber(option.MaxRunCount))this.MaxRunCount=option.MaxRunCount;if(option.Debug){if(IFrameSplitOperator.IsPlusNumber(option.Debug.Count)&&option.Debug.Callback){this.Debug={Count:option.Debug.Count,Callback:option.Debug.Callback};}}}if(option&&option.Lock){if(option.Lock.IsLocked==true)this.IsLocked=true;//指标上锁
11090
11099
  if(option.Lock.Callback)this.LockCallback=option.Lock.Callback;//锁回调
11091
11100
  if(option.Lock.ID)this.LockID=option.Lock.ID;//锁ID
11092
11101
  if(option.Lock.BG)this.LockBG=option.Lock.BG;if(option.Lock.TextColor)this.LockTextColor=option.Lock.TextColor;if(option.Lock.Text)this.LockText=option.Lock.Text;if(option.Lock.Font)this.LockFont=option.Lock.Font;if(option.Lock.Count)this.LockCount=option.Lock.Count;if(option.Lock.MinWidth)this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();}if(args)this.Arguments=args;this.CopyTo=function(dest)//赋值到新实例出来
@@ -11096,13 +11105,15 @@ if(lockData.ID)this.LockID=lockData.ID;//锁ID
11096
11105
  if(lockData.BG)this.LockBG=lockData.BG;if(lockData.TextColor)this.LockTextColor=lockData.TextColor;if(lockData.Text)this.LockText=lockData.Text;if(lockData.Font)this.LockFont=lockData.Font;if(lockData.Count)this.LockCount=lockData.Count;if(lockData.MinWidth)this.LockMinWidth=lockData.MinWidth*GetDevicePixelRatio();}else{//清空锁配置信息
11097
11106
  this.IsLocked=false;//是否锁住指标
11098
11107
  this.LockCallback=null;this.LockID=null;this.LockBG=null;//锁背景色
11099
- this.LockTextColor=null;this.LockText=null;this.LockFont=null;this.LockCount=20;}};this.ExecuteScript=function(hqChart,windowIndex,hisData){this.OutVar=[];var self=this;var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData,Self:this};//数据类型
11108
+ this.LockTextColor=null;this.LockText=null;this.LockFont=null;this.LockCount=20;}};//是否超出执行的最大次数
11109
+ this.IsExcessRunCount=function(){if(this.MaxRunCount<=0)return false;//没有限制
11110
+ return this.RunCount>=this.MaxRunCount;};this.ExecuteScript=function(hqChart,windowIndex,hisData){this.OutVar=[];var self=this;var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData,Self:this};//数据类型
11100
11111
  var hqDataType=HQ_DATA_TYPE.KLINE_ID;//默认K线
11101
11112
  if(hqChart.ClassName==='MinuteChartContainer'||hqChart.ClassName==='MinuteChartHScreenContainer'){if(hqChart.DayCount>1)hqDataType=HQ_DATA_TYPE.MULTIDAY_MINUTE_ID;//多日分钟
11102
11113
  else hqDataType=HQ_DATA_TYPE.MINUTE_ID;//分钟数据
11103
11114
  }else if(hqChart.ClassName==='HistoryMinuteChartContainer'){hqDataType=HQ_DATA_TYPE.HISTORY_MINUTE_ID;//历史分钟
11104
11115
  }var option={HQDataType:hqDataType,Symbol:hqChart.Symbol,Name:hqChart.Name,Data:hisData,SourceData:hqChart.SourceData,Callback:this.RecvResultData,CallbackParam:param,Async:true,MaxRequestDataCount:hqChart.MaxRequestDataCount,MaxRequestMinuteDayCount:hqChart.MaxRequestMinuteDayCount,Arguments:this.Arguments,Condition:this.Condition,IsBeforeData:hqChart.IsBeforeData,IsApiPeriod:hqChart.IsApiPeriod,DrawInfo:null,Self:this};if(this.Debug&&IFrameSplitOperator.IsPlusNumber(this.Debug.Count)&&this.Debug.Callback){--this.Debug.Count;option.Debug=1;option.DebugFilter=this.Debug.Callback;}if(hqChart)//当前屏K线信息
11105
- {if(hqChart.ChartPaint[0]){var item=hqChart.ChartPaint[0];if(item&&item.DrawKRange)option.DrawInfo={Start:item.DrawKRange.Start,End:item.DrawKRange.End};}}if(hqDataType===HQ_DATA_TYPE.HISTORY_MINUTE_ID)option.TrateDate=hqChart.TradeDate;if(hqDataType===HQ_DATA_TYPE.MULTIDAY_MINUTE_ID)option.DayCount=hqChart.DayCount;if(hqChart.NetworkFilter)option.NetworkFilter=hqChart.NetworkFilter;if(this.Condition&&!this.IsMeetCondition(param,option)){this.ShowConditionError(param,this.Condition.Message);return;}var code=this.Script;var run=JSComplier.Execute(code,option,hqChart.ScriptErrorCallback);};//是否符合限制条件
11116
+ {if(hqChart.ChartPaint[0]){var item=hqChart.ChartPaint[0];if(item&&item.DrawKRange)option.DrawInfo={Start:item.DrawKRange.Start,End:item.DrawKRange.End};}}if(hqDataType===HQ_DATA_TYPE.HISTORY_MINUTE_ID)option.TrateDate=hqChart.TradeDate;if(hqDataType===HQ_DATA_TYPE.MULTIDAY_MINUTE_ID)option.DayCount=hqChart.DayCount;if(hqChart.NetworkFilter)option.NetworkFilter=hqChart.NetworkFilter;if(this.Condition&&!this.IsMeetCondition(param,option)){this.ShowConditionError(param,this.Condition.Message);return;}++this.RunCount;var code=this.Script;var run=JSComplier.Execute(code,option,hqChart.ScriptErrorCallback);};//是否符合限制条件
11106
11117
  this.IsMeetCondition=function(param,option){JSConsole.Complier.Log('[ScriptIndex::IsMeetCondition] ',this.Condition);if(this.Condition.Period)//周期是否满足
11107
11118
  {if(!this.IsMeetPeriodCondition(param,option))return false;if(!this.IsMeetIncludeCondition(param,option))return false;}return true;};//周期是否满足条件
11108
11119
  this.IsMeetPeriodCondition=function(param,option){if(!this.Condition.Period)return true;for(var i in this.Condition.Period){var item=this.Condition.Period[i];switch(item){case CONDITION_PERIOD.MINUTE_ID:if(option.HQDataType==HQ_DATA_TYPE.MINUTE_ID)return true;break;case CONDITION_PERIOD.MULTIDAY_MINUTE_ID:if(option.HQDataType==HQ_DATA_TYPE.MULTIDAY_MINUTE_ID)return true;break;case CONDITION_PERIOD.KLINE_DAY_ID:case CONDITION_PERIOD.KLINE_WEEK_ID:case CONDITION_PERIOD.KLINE_MONTH_ID:case CONDITION_PERIOD.KLINE_YEAR_ID:case CONDITION_PERIOD.KLINE_TWOWEEK_ID:case CONDITION_PERIOD.KLINE_QUARTER_ID:case CONDITION_PERIOD.KLINE_MINUTE_ID:case CONDITION_PERIOD.KLINE_5_MINUTE_ID:case CONDITION_PERIOD.KLINE_15_MINUTE_ID:case CONDITION_PERIOD.KLINE_30_MINUTE_ID:case CONDITION_PERIOD.KLINE_60_MINUTE_ID:if(param.HQChart.Period==item)return true;break;}}return false;};this.IsMeetIncludeCondition=function(param,option){if(!this.Condition.Include||this.Condition.Include.length<=0)return true;var symbol=param.HQChart.Symbol;if(symbol)symbol=symbol.toUpperCase();for(var i in this.Condition.Include){var item=this.Condition.Include[i];if(symbol==item)return true;}return false;};//显示指标不符合条件
@@ -11298,7 +11309,7 @@ var hqDataType=HQ_DATA_TYPE.KLINE_ID;//默认K线
11298
11309
  var dateRange=null;if(hqChart.ClassName==='MinuteChartContainer'||hqChart.ClassName==='MinuteChartHScreenContainer'){if(hqChart.DayCount>1)hqDataType=HQ_DATA_TYPE.MULTIDAY_MINUTE_ID;//多日分钟
11299
11310
  else hqDataType=HQ_DATA_TYPE.MINUTE_ID;//分钟数据
11300
11311
  dateRange=hisData.GetDateRange();}else if(hqChart.ClassName==='HistoryMinuteChartContainer'){hqDataType=HQ_DATA_TYPE.HISTORY_MINUTE_ID;//历史分钟
11301
- }else{dateRange=hisData.GetDateRange();}var args=[];if(this.Arguments){for(var i in this.Arguments){var item=this.Arguments[i];args.push({name:item.Name,value:item.Value});}}var requestCount;if(hqChart.GetRequestDataCount)requestCount=hqChart.GetRequestDataCount();var self=this;var postData={indexname:this.ID,symbol:hqChart.Symbol,script:this.Script,args:args,period:hqChart.Period,right:hqChart.Right,hqdatatype:hqDataType};if(dateRange)postData.DateRange=dateRange;if(requestCount){postData.maxdatacount=requestCount.MaxRequestDataCount;postData.maxminutedaycount=requestCount.MaxRequestMinuteDayCount;}if(hqDataType==HQ_DATA_TYPE.MULTIDAY_MINUTE_ID||hqDataType==HQ_DATA_TYPE.MINUTE_ID)postData.daycount=hqChart.DayCount;this.HQDataType=hqDataType;if(hqChart.NetworkFilter){var obj={Name:'APIScriptIndex::ExecuteScript',//类名::
11312
+ }else{dateRange=hisData.GetDateRange();}var args=[];if(this.Arguments){for(var i in this.Arguments){var item=this.Arguments[i];args.push({name:item.Name,value:item.Value});}}var requestCount;if(hqChart.GetRequestDataCount)requestCount=hqChart.GetRequestDataCount();var self=this;var postData={indexname:this.ID,symbol:hqChart.Symbol,script:this.Script,args:args,period:hqChart.Period,right:hqChart.Right,hqdatatype:hqDataType};if(dateRange)postData.DateRange=dateRange;if(requestCount){postData.maxdatacount=requestCount.MaxRequestDataCount;postData.maxminutedaycount=requestCount.MaxRequestMinuteDayCount;}if(hqDataType==HQ_DATA_TYPE.MULTIDAY_MINUTE_ID||hqDataType==HQ_DATA_TYPE.MINUTE_ID)postData.daycount=hqChart.DayCount;this.HQDataType=hqDataType;++this.RunCount;if(hqChart.NetworkFilter){var obj={Name:'APIScriptIndex::ExecuteScript',//类名::
11302
11313
  Explain:'指标计算',Request:{Url:self.ApiUrl,Type:'POST',Data:postData},Self:this,HQChart:hqChart,PreventDefault:false};hqChart.NetworkFilter(obj,function(data){if(self.Version==2)self.RecvAPIData2(data,hqChart,windowIndex,hisData);else self.RecvAPIData(data,hqChart,windowIndex,hisData);});if(obj.PreventDefault==true)return;//已被上层替换,不调用默认的网络请求
11303
11314
  }JSNetwork.HttpRequest({url:self.ApiUrl,data:postData,type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvAPIData(recvData,hqChart,windowIndex,hisData);},error:function error(request){self.RecvError(request);}});};//py 后台指标计算格式
11304
11315
  this.RecvAPIData2=function(data,hqChart,windowIndex,hisData){JSConsole.Complier.Log('[APIScriptIndex::RecvAPIData2] recv data ',this.Name,data);//if (data.code!=0) return;
@@ -12463,10 +12474,17 @@ this.AreaColor=g_JSChartResource.ScrollBar.BGChart.AreaColor;//面积图颜色
12463
12474
  this.ReloadResource=function(resource){this.Color=g_JSChartResource.ScrollBar.BGChart.Color;//线段颜色
12464
12475
  this.LineWidth=g_JSChartResource.ScrollBar.BGChart.LineWidth;//线段宽度
12465
12476
  this.AreaColor=g_JSChartResource.ScrollBar.BGChart.AreaColor;//面积图颜色
12466
- };this.Draw=function(){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;this.Canvas.save();if(this.LineWidth>0)this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();var bottom=this.ChartBorder.GetBottom();this.Canvas.strokeStyle=this.Color;var bFirstPoint=true;var drawCount=0,x,y;var firstPoint={};for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];var value=item.Close;if(!IFrameSplitOperator.IsNumber(value))continue;x=this.ChartFrame.GetXFromIndex(i);y=this.ChartFrame.GetYFromData(value);if(bFirstPoint){this.Canvas.beginPath();this.Canvas.moveTo(x,y);bFirstPoint=false;firstPoint={X:x,Y:y};}else{this.Canvas.lineTo(x,y);}++drawCount;}if(drawCount>0){this.Canvas.stroke();this.Canvas.lineTo(x,bottom);this.Canvas.lineTo(firstPoint.X,bottom);this.Canvas.closePath();this.Canvas.fillStyle=this.AreaColor;this.Canvas.fill();}this.Canvas.restore();};this.GetMaxMin=function(){var range={Max:null,Min:null};if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return range;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];var value=item.Close;if(!IFrameSplitOperator.IsNumber(value))continue;if(range.Max==null||range.Max<value)range.Max=value;if(range.Min==null||range.Min>value)range.Min=value;}return range;};}/********************************************************************************
12477
+ };this.Draw=function(){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;this.Canvas.save();if(this.LineWidth>0)this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();var bottom=this.ChartBorder.GetBottom();this.Canvas.strokeStyle=this.Color;var bFirstPoint=true;var drawCount=0,x,y;var firstPoint={};for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];var value=item.Close;if(!IFrameSplitOperator.IsNumber(value))continue;x=this.ChartFrame.GetXFromIndex(i);y=this.ChartFrame.GetYFromData(value);if(bFirstPoint){this.Canvas.beginPath();this.Canvas.moveTo(x,y);bFirstPoint=false;firstPoint={X:x,Y:y};}else{this.Canvas.lineTo(x,y);}++drawCount;}if(drawCount>0){this.Canvas.stroke();this.Canvas.lineTo(x,bottom);this.Canvas.lineTo(firstPoint.X,bottom);this.Canvas.closePath();this.Canvas.fillStyle=this.AreaColor;this.Canvas.fill();}this.Canvas.restore();};this.GetMaxMin=function(){var range={Max:null,Min:null};if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return range;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];var value=item.Close;if(!IFrameSplitOperator.IsNumber(value))continue;if(range.Max==null||range.Max<value)range.Max=value;if(range.Min==null||range.Min>value)range.Min=value;}return range;};}///////////////////////////////////////////////////////////////////////////////////
12478
+ // 工作线程计算指标示例
12479
+ //
12480
+ //
12481
+ //////////////////////////////////////////////////////////////////////////////////
12482
+ function HQChartScriptWorker(){this.Create=function(){var _this60=this;addEventListener('message',function(obj){_this60.OnRecvMessage(obj);});};this.NetworkFilter=function(data,callback,indexInfo){JSConsole.Complier.Log('[HQChartScriptWorker::NetworkFilter] ['+data.Name+']['+data.Explain+'] data=',data);//数据下载
12483
+ };this.ExecuteScript=function(indexData,message){var _this61=this;var scriptObj={};if(indexData.Script){scriptObj.Name=indexData.Name;scriptObj.ID=indexData.Index;scriptObj.Script=indexData.Script;}else{if(!indexData.Index)return false;var scriptData=new JSIndexScript();var finder=scriptData.Get(indexData.Index);if(!finder)return false;scriptObj.ID=indexData.Index;scriptObj.Name=finder.Name;scriptObj.Script=finder.Script;scriptObj.Args=finder.Args;}if(indexData.Args)scriptObj.Args=indexData.Args;var indexInfo={Name:scriptObj.Name,ID:scriptObj.ID,Script:scriptObj.Script,Args:scriptObj.Args,Guid:message.Guid};scriptObj.ErrorCallback=function(error){_this61.OnExecuteError(error,indexInfo);};scriptObj.FinishCallback=function(data,jsExectute){_this61.OnExecuteFinish(data,indexInfo,jsExectute);};scriptObj.NetworkFilter=function(data,callback){_this61.NetworkFilter(data,callback,indexInfo);};JSConsole.Complier.Log('[HQChartScriptWorker::ExecuteScript] scriptObj=',scriptObj);var indexConsole=new ScriptIndexConsole(scriptObj);var hisData=null;if(message&&message.Data){hisData=new ChartData();hisData.Data=message.Data;hisData.Right=message.Right;hisData.Period=message.Period;hisData.DataType=message.DataType;//0=日线 1=分钟
12484
+ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,Stock:{Symbol:message.Symbol},Request:{MaxDataCount:500,MaxMinuteDayCount:5},Period:message.Period,Right:message.Right,Data:hisData};if(IFrameSplitOperator.IsNumber(message.HQDataType))stockObj.HQDataType=message.HQDataType;indexConsole.ExecuteScript(stockObj);};this.OnRecvMessage=function(message){var data=message.data;if(!data)return;if(data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT){if(!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex))return;for(var i=0;i<data.AryIndex.length;++i){var item=data.AryIndex[i];this.ExecuteScript(item,data);}}};this.OnExecuteFinish=function(data,indexInfo,jsExectute){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT};postMessage(message);};this.OnExecuteError=function(error,indexInfo){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
12467
12485
  * 版本信息输出
12468
12486
  *
12469
- */var HQCHART_VERSION="1.1.12464";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();//把给外界调用的方法暴露出来
12487
+ */var HQCHART_VERSION="1.1.12471";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();//把给外界调用的方法暴露出来
12470
12488
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12471
12489
  // BaseIndex:BaseIndex,
12472
12490
  // ChartLine:ChartLine,
@@ -12493,4 +12511,4 @@ GetDevicePixelRatio:GetDevicePixelRatio},(0,_defineProperty3.default)(_jsChartIn
12493
12511
  HQMinuteTimeStringFormat:HQMinuteTimeStringFormat,//分时图X轴 十字光标输出格式化
12494
12512
  HQDateStringFormat:HQDateStringFormat,//K线图X轴 十字光标输出格式化
12495
12513
  HQPriceStringFormat:HQPriceStringFormat//分时图,K线图Y轴 十字光标输出格式化
12496
- }),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'JS_ID',{JSCHART_EVENT_ID:JSCHART_EVENT_ID,JSCHART_OPERATOR_ID:JSCHART_OPERATOR_ID,JSCHART_DRAG_ID:JSCHART_DRAG_ID,JSCHART_BUTTON_ID:JSCHART_BUTTON_ID,JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID}),_jsChartInit$jsChartS);
12514
+ }),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'JS_ID',{JSCHART_EVENT_ID:JSCHART_EVENT_ID,JSCHART_OPERATOR_ID:JSCHART_OPERATOR_ID,JSCHART_DRAG_ID:JSCHART_DRAG_ID,JSCHART_BUTTON_ID:JSCHART_BUTTON_ID,JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID}),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'HQChartScriptWorker',HQChartScriptWorker),_jsChartInit$jsChartS);
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.12463",
5
+ "version": "1.1.12472",
6
6
  "main": "lib/main.js",
7
7
  "private": false,
8
8
  "license": "Apache License 2.0",
@@ -4971,7 +4971,7 @@ var MINUTE_5DAY_DATA={
4971
4971
  ]
4972
4972
  ],
4973
4973
  "date": 20230706,
4974
- "yclose": 7.21
4974
+ "yclose": 7.24
4975
4975
  },
4976
4976
  {
4977
4977
  "minute": [
@@ -7650,7 +7650,7 @@ var MINUTE_5DAY_DATA={
7650
7650
  ]
7651
7651
  ],
7652
7652
  "date": 20230705,
7653
- "yclose": 7.21
7653
+ "yclose": 7.18
7654
7654
  },
7655
7655
  {
7656
7656
  "minute": [
@@ -10329,7 +10329,7 @@ var MINUTE_5DAY_DATA={
10329
10329
  ]
10330
10330
  ],
10331
10331
  "date": 20230704,
10332
- "yclose": 7.21
10332
+ "yclose": 7.20
10333
10333
  },
10334
10334
  {
10335
10335
  "minute": [
@@ -13008,7 +13008,7 @@ var MINUTE_5DAY_DATA={
13008
13008
  ]
13009
13009
  ],
13010
13010
  "date": 20230703,
13011
- "yclose": 7.21
13011
+ "yclose": 7.25
13012
13012
  }
13013
13013
  ],
13014
13014
  "code": 0
@@ -19008,6 +19008,9 @@ function ScriptIndex(name,script,args,option)
19008
19008
  this.IsSync=false; //是否是同步计算 (无数据请求)
19009
19009
  this.IsShow=true; //是否显示图形
19010
19010
 
19011
+ this.RunCount=0; //已执行次数
19012
+ this.MaxRunCount=-1; //最大执行次数 -1=无限
19013
+
19011
19014
  if (option)
19012
19015
  {
19013
19016
  if (option.FloatPrecision>=0) this.FloatPrecision=option.FloatPrecision;
@@ -19023,6 +19026,7 @@ function ScriptIndex(name,script,args,option)
19023
19026
  if (option.OutName) this.OutName=option.OutName;
19024
19027
  if (IFrameSplitOperator.IsNumber(option.YSplitType)) this.YSplitType=option.YSplitType;
19025
19028
  if (IFrameSplitOperator.IsBool(option.IsSync)) this.IsSync=option.IsSync;
19029
+ if (IFrameSplitOperator.IsNumber(option.MaxRunCount)) this.MaxRunCount=option.MaxRunCount;
19026
19030
 
19027
19031
  if (option.Debug)
19028
19032
  {
@@ -19092,6 +19096,14 @@ function ScriptIndex(name,script,args,option)
19092
19096
  }
19093
19097
  }
19094
19098
 
19099
+ //是否超出执行的最大次数
19100
+ this.IsExcessRunCount=function()
19101
+ {
19102
+ if (this.MaxRunCount<=0) return false; //没有限制
19103
+
19104
+ return this.RunCount>=this.MaxRunCount;
19105
+ }
19106
+
19095
19107
  this.ExecuteScript=function(hqChart,windowIndex,hisData)
19096
19108
  {
19097
19109
  this.OutVar=[];
@@ -19161,6 +19173,7 @@ function ScriptIndex(name,script,args,option)
19161
19173
  return;
19162
19174
  }
19163
19175
 
19176
+ ++this.RunCount;
19164
19177
  let code=this.Script;
19165
19178
  let run=JSComplier.Execute(code,option,hqChart.ScriptErrorCallback);
19166
19179
  }
@@ -22204,6 +22217,8 @@ function APIScriptIndex(name,script,args,option, isOverlay)
22204
22217
  if (hqDataType==HQ_DATA_TYPE.MULTIDAY_MINUTE_ID || hqDataType==HQ_DATA_TYPE.MINUTE_ID) postData.daycount=hqChart.DayCount;
22205
22218
  this.HQDataType=hqDataType;
22206
22219
 
22220
+ ++this.RunCount;
22221
+
22207
22222
  if (hqChart.NetworkFilter)
22208
22223
  {
22209
22224
  var obj=