hqchart 1.1.12463 → 1.1.12470
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/umychart.NetworkFilterTest.vue.js +1 -1
- package/lib/umychart.vue.js +39 -28
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +4 -4
- package/src/jscommon/umychart.complier.js +15 -0
- package/src/jscommon/umychart.js +176 -27
- package/src/jscommon/umychart.testdata/60000.sh.5day.minute.js +4 -4
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +192 -28
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +4 -4
- package/src/jscommon/umychart.vue/umychart.vue.js +192 -28
- package/src/jscommon/umychart.wechat/umychart.charttitle.wechat.js +3 -0
- package/src/jscommon/umychart.wechat/umychart.coordinatedata.wechat.js +4 -0
- package/src/jscommon/umychart.wechat/umychart.extendchart.wechat.js +2 -0
- package/src/jscommon/umychart.wechat/umychart.version.wechat.js +1 -1
- package/src/jscommon/umychart.wechat/umychart.wechat.3.0.js +12 -19
package/lib/umychart.vue.js
CHANGED
|
@@ -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;}
|
|
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;};
|
|
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;
|
|
6651
|
-
{
|
|
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
|
-
|
|
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;}}
|
|
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;
|
|
@@ -12466,7 +12477,7 @@ this.AreaColor=g_JSChartResource.ScrollBar.BGChart.AreaColor;//面积图颜色
|
|
|
12466
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;};}/********************************************************************************
|
|
12467
12478
|
* 版本信息输出
|
|
12468
12479
|
*
|
|
12469
|
-
*/var HQCHART_VERSION="1.1.
|
|
12480
|
+
*/var HQCHART_VERSION="1.1.12469";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
12481
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12471
12482
|
// BaseIndex:BaseIndex,
|
|
12472
12483
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -4971,7 +4971,7 @@ var MINUTE_5DAY_DATA={
|
|
|
4971
4971
|
]
|
|
4972
4972
|
],
|
|
4973
4973
|
"date": 20230706,
|
|
4974
|
-
"yclose": 7.
|
|
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.
|
|
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.
|
|
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.
|
|
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=
|