hqchart 1.1.12988 → 1.1.13001
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/umychart.vue.js
CHANGED
|
@@ -1852,7 +1852,8 @@ this.EnableShowCorssCursorLine=function(bShow){if(!this.ChartCorssCursor)return;
|
|
|
1852
1852
|
this.GetExtendChartByClassName=function(name){for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.ClassName==name)return{Index:i,Chart:item};}return null;};//获取多个扩展画法
|
|
1853
1853
|
this.GetExtendChartByClassNameV2=function(name){var aryChart=[];for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.ClassName==name){aryChart.push({Index:i,Chart:item});}}if(aryChart.length<=0)return null;return aryChart;};this.GetExtendChartRightWidth=function()//扩展画法右边宽度
|
|
1854
1854
|
{var width=0;for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(!item)continue;if(item.ClassName=="StockChip"||item.ClassName=="DrawToolsButton"){if(IFrameSplitOperator.IsNumber(item.Width))width+=item.Width;}}return width;};//删除扩展画法
|
|
1855
|
-
this.DeleteExtendChart=function(data){if(data.Index>=this.ExtendChartPaint.length)return;if(this.ExtendChartPaint[data.Index]!=data.Chart)return;if(typeof data.Chart.Clear=='function')data.Chart.Clear();this.ExtendChartPaint.splice(data.Index,1);}
|
|
1855
|
+
this.DeleteExtendChart=function(data){if(data.Index>=this.ExtendChartPaint.length)return;if(this.ExtendChartPaint[data.Index]!=data.Chart)return;if(typeof data.Chart.Clear=='function')data.Chart.Clear();this.ExtendChartPaint.splice(data.Index,1);};//删除扩展画法
|
|
1856
|
+
this.DeleteExtendChartByID=function(id){for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.ID==id){this.ExtendChartPaint.splice(i,1);return true;}}return false;};//全屏提示信息 { Title:提示信息, Draw:false/true 是否立即重绘, }
|
|
1856
1857
|
this.EnableSplashScreen=function(enable,option){if(!this.ChartSplashPaint)return;this.ChartSplashPaint.EnableSplash(enable);if(option&&option.Draw===false)return;if(enable)this.DrawSplashScreen(option);else this.Draw();};//设置指标窗口属性 windowItem=SetOption.Windows[i], frameItem=SetOption.Frames[i];
|
|
1857
1858
|
this.SetSubFrameAttribute=function(subFrame,windowItem,frameItem){if(!subFrame||!subFrame.Frame)return;var frame=subFrame.Frame;if(windowItem){if(IFrameSplitOperator.IsBool(windowItem.Modify))frame.ModifyIndex=windowItem.Modify;if(IFrameSplitOperator.IsBool(windowItem.Change))frame.ChangeIndex=windowItem.Change;if(IFrameSplitOperator.IsBool(windowItem.Close))frame.CloseIndex=windowItem.Close;if(IFrameSplitOperator.IsBool(windowItem.Overlay))frame.OverlayIndex=windowItem.Overlay;if(IFrameSplitOperator.IsBool(windowItem.IsDrawTitleBG))frame.IsDrawTitleBG=windowItem.IsDrawTitleBG;if(IFrameSplitOperator.IsNumber(windowItem.TitleHeight))frame.ChartBorder.TitleHeight=windowItem.TitleHeight;else windowItem.TitleHeight=frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsBool(windowItem.IsShowTitleArrow))frame.IsShowTitleArrow=windowItem.IsShowTitleArrow;if(IFrameSplitOperator.IsBool(windowItem.IsShowIndexName))frame.IsShowIndexName=windowItem.IsShowIndexName;if(IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace))frame.IndexParamSpace=windowItem.IndexParamSpace;if(IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace))frame.IndexTitleSpace=windowItem.IndexTitleSpace;}if(frameItem){if(frameItem.SplitCount)frame.YSplitOperator.SplitCount=frameItem.SplitCount;if(IFrameSplitOperator.IsBool(frameItem.IsShowXLine))frame.IsShowXLine=frameItem.IsShowXLine;if(IFrameSplitOperator.IsBool(frameItem.IsShowYLine))frame.IsShowYLine=frameItem.IsShowYLine;if(IFrameSplitOperator.IsBool(frameItem.IsShowLeftText)){frame.IsShowYText[0]=frameItem.IsShowLeftText;frame.YSplitOperator.IsShowLeftText=frameItem.IsShowLeftText;//显示左边刻度
|
|
1858
1859
|
}if(IFrameSplitOperator.IsBool(frameItem.IsShowRightText)){frame.IsShowYText[1]=frameItem.IsShowRightText;frame.YSplitOperator.IsShowRightText=frameItem.IsShowRightText;//显示右边刻度
|
|
@@ -3127,7 +3128,7 @@ this.PriceGap={Enable:false,Count:1};this.PriceGapStyple={Line:{Color:g_JSChartR
|
|
|
3127
3128
|
this.ReloadResource=function(resource){this.TextFont=g_JSChartResource.KLine.MaxMin.Font;this.TextColor=g_JSChartResource.KLine.MaxMin.Color;this.CloseLineColor=g_JSChartResource.CloseLineColor;this.CloseLineAreaColor=g_JSChartResource.CloseLineAreaColor;this.CloseLineWidth=g_JSChartResource.CloseLineWidth;this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.UnchagneColor=g_JSChartResource.UnchagneBarColor;//平盘
|
|
3128
3129
|
this.HighLowBarColor=g_JSChartResource.HighLowBarColor;this.OrderFlow.UpColor={BG:g_JSChartResource.OrderFlow.UpColor.BG,Border:g_JSChartResource.OrderFlow.UpColor.Border};this.OrderFlow.DownColor={BG:g_JSChartResource.OrderFlow.DownColor.BG,Border:g_JSChartResource.OrderFlow.DownColor.Border};this.OrderFlow.UnchagneColor={BG:g_JSChartResource.OrderFlow.UnchagneColor.BG,Border:g_JSChartResource.OrderFlow.UnchagneColor.Border};this.OrderFlow.Text={Color:g_JSChartResource.OrderFlow.Text.Color,Family:g_JSChartResource.OrderFlow.Text.Family,FontMaxSize:g_JSChartResource.OrderFlow.Text.FontMaxSize,MaxValue:g_JSChartResource.OrderFlow.Text.MaxValue};this.OrderFlow.Line={UpDownColor:g_JSChartResource.OrderFlow.Line.UpDownColor,MiddleColor:g_JSChartResource.OrderFlow.Line.MiddleColor};};this.ClearCustomKLine=function(){this.CustomKLine=null;};this.GetCustomKLine=function(kItem){if(!this.CustomKLine)return null;if(!kItem)return null;var key=kItem.Date*1000000;if(IFrameSplitOperator.IsNumber(kItem.Time))key+=kItem.Time;if(!this.CustomKLine.has(key))return null;var value=this.CustomKLine.get(key);return value;};this.DrawHeatMap=function(){if(!this.ChartHeatMap)return;this.ChartHeatMap.Canvas=this.Canvas;this.ChartHeatMap.ChartBorder=this.ChartBorder;this.ChartHeatMap.ChartFrame=this.ChartFrame;this.ChartHeatMap.Data=this.Data;this.ChartHeatMap.Draw();};this.ClearHeatMap=function(){this.ChartHeatMap=null;};this.CreateHeatMap=function(){this.ChartHeatMap=new ChartHeatMap();};this.DrawAKLine=function()//美国线
|
|
3129
3130
|
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var upColor=this.UpColor;var downColor=this.DownColor;var unchagneColor=this.UnchagneColor;var ptMax={X:null,Y:null,Value:null,Align:'left'};var ptMin={X:null,Y:null,Value:null,Align:'left'};this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var eventUnchangeKLine=null;//定制平盘K线颜色事件
|
|
3130
|
-
if(this.GetEventCallback){eventUnchangeKLine=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_UNCHANGE_KLINE_COLOR);}var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:
|
|
3131
|
+
if(this.GetEventCallback){eventUnchangeKLine=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_UNCHANGE_KLINE_COLOR);}var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};if(ptMax.Value==null||ptMax.Value<data.High)//求最大值
|
|
3131
3132
|
{ptMax.X=x;ptMax.Y=yHigh;ptMax.Value=data.High;ptMax.Align=j<xPointCount/2?'left':'right';}if(ptMin.Value==null||ptMin.Value>data.Low)//求最小值
|
|
3132
3133
|
{ptMin.X=x;ptMin.Y=yLow;ptMin.Value=data.Low;ptMin.Align=j<xPointCount/2?'left':'right';}unchagneColor=this.UnchagneColor;if(data.Open<data.Close){this.Canvas.strokeStyle=this.UpColor;//阳线
|
|
3133
3134
|
}else if(data.Open>data.Close){this.Canvas.strokeStyle=this.DownColor;//阳线
|
|
@@ -3136,7 +3137,7 @@ if(this.GetEventCallback){eventUnchangeKLine=this.GetEventCallback(JSCHART_EVENT
|
|
|
3136
3137
|
{if(i<this.ColorData.length)upColor=downColor=unchagneColor=this.ColorData[i]>0?this.UpColor:this.DownColor;else upColor=downColor=unchagneColor=this.DownColor;}if(this.IsThinAKBar==false&&dataWidth>=9){var coordinateInfo={YLow:yLow,YHigh:yHigh,YOpen:yOpen,YClose:yClose,X:x,Left:left,Right:right};var colorInfo={UpColor:upColor,DownColor:downColor,UnchangeColor:unchagneColor};this.DrawAKBar(data,dataWidth,isHScreen,coordinateInfo,colorInfo);}else{this.Canvas.beginPath();//最高-最低
|
|
3137
3138
|
if(isHScreen){if(data.High==data.Low&&dataWidth<4){this.Canvas.moveTo(yHigh,ToFixedPoint(x));this.Canvas.lineTo(yLow-1,ToFixedPoint(x));}else{this.Canvas.moveTo(yHigh,ToFixedPoint(x));this.Canvas.lineTo(yLow,ToFixedPoint(x));}}else{if(data.High==data.Low&&dataWidth<4){this.Canvas.moveTo(ToFixedPoint(x),yHigh);this.Canvas.lineTo(ToFixedPoint(x),yLow+1);}else{this.Canvas.moveTo(ToFixedPoint(x),yHigh);this.Canvas.lineTo(ToFixedPoint(x),yLow);}}this.Canvas.stroke();if(dataWidth>=4){this.Canvas.beginPath();//开盘
|
|
3138
3139
|
if(isHScreen){this.Canvas.moveTo(ToFixedPoint(yOpen),left);this.Canvas.lineTo(ToFixedPoint(yOpen),x);}else{this.Canvas.moveTo(left,ToFixedPoint(yOpen));this.Canvas.lineTo(x,ToFixedPoint(yOpen));}this.Canvas.stroke();this.Canvas.beginPath();//收盘
|
|
3139
|
-
if(isHScreen){this.Canvas.moveTo(ToFixedPoint(yClose),right);this.Canvas.lineTo(ToFixedPoint(yClose),x);}else{this.Canvas.moveTo(right,ToFixedPoint(yClose));this.Canvas.lineTo(x,ToFixedPoint(yClose));}this.Canvas.stroke();}}if(this.Data.DataType==0){var infoItem={Xleft:left,XRight:right,YMax:yHigh,XCenter:x,YMin:yLow,DayData:data,Index:j};this.DrawInfo(infoItem);}if(this.PriceGap.Enable&&preKItemInfo){this.
|
|
3140
|
+
if(isHScreen){this.Canvas.moveTo(ToFixedPoint(yClose),right);this.Canvas.lineTo(ToFixedPoint(yClose),x);}else{this.Canvas.moveTo(right,ToFixedPoint(yClose));this.Canvas.lineTo(x,ToFixedPoint(yClose));}this.Canvas.stroke();}}if(this.Data.DataType==0){var infoItem={Xleft:left,XRight:right,YMax:yHigh,XCenter:x,YMin:yLow,DayData:data,Index:j};this.DrawInfo(infoItem);}if(this.PriceGap.Enable&&preKItemInfo){this.CheckPriceGap(kItemInfo);var value=this.IsPriceGap(kItemInfo,preKItemInfo);if(value>0)this.AryPriceGapCache.push({Data:[preKItemInfo,kItemInfo],Type:value});}preKItemInfo=kItemInfo;}this.PtMax=ptMax;this.PtMin=ptMin;};this.DrawAKBar=function(data,dataWidth,isHScreen,coordinateInfo,colorInfo){var barWidth=dataWidth/3;var left=ToFixedRect(coordinateInfo.Left);var aryX=[left,ToFixedRect(left+barWidth),ToFixedRect(left+barWidth*2),ToFixedRect(left+barWidth*3)];var yHigh=coordinateInfo.YHigh,yLow=coordinateInfo.YLow,yOpen=coordinateInfo.YOpen,yClose=coordinateInfo.YClose;if(data.Open<data.Close){this.Canvas.strokeStyle=colorInfo.UpColor;//阳线
|
|
3140
3141
|
this.Canvas.fillStyle=colorInfo.UpColor;}else if(data.Open>data.Close){this.Canvas.strokeStyle=colorInfo.DownColor;//阳线
|
|
3141
3142
|
this.Canvas.fillStyle=colorInfo.DownColor;}else{this.Canvas.strokeStyle=colorInfo.UnchangeColor;//平线
|
|
3142
3143
|
this.Canvas.fillStyle=colorInfo.UnchangeColor;}//最高-最低
|
|
@@ -3144,11 +3145,11 @@ if(isHScreen){if(data.High==data.Low){var yTop=yHigh-barWidth/2;this.Canvas.fill
|
|
|
3144
3145
|
var yTop=yOpen-barWidth/2;if(isHScreen){this.Canvas.fillRect(yTop,aryX[0],barWidth,aryX[1]-aryX[0]);}else{this.Canvas.fillRect(aryX[0],yTop,aryX[1]-aryX[0],barWidth);}//收盘
|
|
3145
3146
|
var yTop=yClose-barWidth/2;if(isHScreen){this.Canvas.fillRect(yTop,aryX[2],barWidth,aryX[3]-aryX[2]);}else{this.Canvas.fillRect(aryX[2],yTop,aryX[3]-aryX[2],barWidth);}};this.DrawCloseArea=function()//收盘价面积图
|
|
3146
3147
|
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;var borderLeft=border.TopEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var borderLeft=border.LeftEx;}var bFirstPoint=true;var firstPoint=null;this.Canvas.beginPath();this.Canvas.strokeStyle=this.CloseLineColor;if(IFrameSplitOperator.IsNumber(this.CloseLineWidth))this.Canvas.lineWidth=this.CloseLineWidth;var ptLast=null;if(this.Data.DataOffset>0)//把最左边的一个点连上
|
|
3147
|
-
{var data=this.Data.Data[this.Data.DataOffset-1];if(data&&IFrameSplitOperator.IsNumber(data.Close)){var x=borderLeft;var yClose=this.GetYFromData(data.Close,false);if(isHScreen){this.Canvas.moveTo(yClose,x);firstPoint={X:yClose,Y:x};}else{this.Canvas.moveTo(x,yClose);firstPoint={X:x,Y:yClose};}bFirstPoint=false;}}this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;if(bFirstPoint){if(isHScreen){this.Canvas.moveTo(yClose,x);firstPoint={X:yClose,Y:x};}else{this.Canvas.moveTo(x,yClose);firstPoint={X:x,Y:yClose};}bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}if(i==this.Data.Data.length-1){ptLast={X:x,Y:yClose,XLeft:left,XRight:right,KItem:data,ChartRight:chartright};}if(this.PriceGap.Enable){var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:
|
|
3148
|
+
{var data=this.Data.Data[this.Data.DataOffset-1];if(data&&IFrameSplitOperator.IsNumber(data.Close)){var x=borderLeft;var yClose=this.GetYFromData(data.Close,false);if(isHScreen){this.Canvas.moveTo(yClose,x);firstPoint={X:yClose,Y:x};}else{this.Canvas.moveTo(x,yClose);firstPoint={X:x,Y:yClose};}bFirstPoint=false;}}this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;if(bFirstPoint){if(isHScreen){this.Canvas.moveTo(yClose,x);firstPoint={X:yClose,Y:x};}else{this.Canvas.moveTo(x,yClose);firstPoint={X:x,Y:yClose};}bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}if(i==this.Data.Data.length-1){ptLast={X:x,Y:yClose,XLeft:left,XRight:right,KItem:data,ChartRight:chartright};}if(this.PriceGap.Enable){var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};if(preKItemInfo){this.CheckPriceGap(kItemInfo);var value=this.IsPriceGap(kItemInfo,preKItemInfo);if(value>0)this.AryPriceGapCache.push({Data:[preKItemInfo,kItemInfo],Type:value});}preKItemInfo=kItemInfo;}}this.DrawLastPointEvent(ptLast);//通知外部绘制最后一个点
|
|
3148
3149
|
if(bFirstPoint)return;this.Canvas.stroke();if(isHScreen){this.Canvas.lineTo(border.Left,x);this.Canvas.lineTo(border.Left,firstPoint.Y);}else{this.Canvas.lineTo(x,border.Bottom);this.Canvas.lineTo(firstPoint.X,border.Bottom);}this.Canvas.closePath();if(Array.isArray(this.CloseLineAreaColor)){if(isHScreen){var gradient=this.Canvas.createLinearGradient(this.ChartBorder.GetRightEx(),this.ChartBorder.GetTop(),this.ChartBorder.GetLeft(),this.ChartBorder.GetTop());gradient.addColorStop(0,this.CloseLineAreaColor[0]);gradient.addColorStop(1,this.CloseLineAreaColor[1]);this.Canvas.fillStyle=gradient;}else{var _gradient=this.Canvas.createLinearGradient(firstPoint.X,this.ChartBorder.GetTopEx(),firstPoint.X,this.ChartBorder.GetBottom());_gradient.addColorStop(0,this.CloseLineAreaColor[0]);_gradient.addColorStop(1,this.CloseLineAreaColor[1]);this.Canvas.fillStyle=_gradient;}}else{this.Canvas.fillStyle=this.CloseLineAreaColor;}this.Canvas.fill();};this.DrawCloseLine=function()//收盘价线
|
|
3149
|
-
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var bFirstPoint=true;this.Canvas.beginPath();this.Canvas.strokeStyle=this.CloseLineColor;if(IFrameSplitOperator.IsNumber(this.CloseLineWidth))this.Canvas.lineWidth=this.CloseLineWidth;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;if(bFirstPoint){if(isHScreen)this.Canvas.moveTo(yClose,x);else this.Canvas.moveTo(x,yClose);bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}if(this.PriceGap.Enable){var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:
|
|
3150
|
+
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;}var bFirstPoint=true;this.Canvas.beginPath();this.Canvas.strokeStyle=this.CloseLineColor;if(IFrameSplitOperator.IsNumber(this.CloseLineWidth))this.Canvas.lineWidth=this.CloseLineWidth;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close,false);this.DrawKRange.End=i;if(bFirstPoint){if(isHScreen)this.Canvas.moveTo(yClose,x);else this.Canvas.moveTo(x,yClose);bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}if(this.PriceGap.Enable){var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};if(preKItemInfo){this.CheckPriceGap(kItemInfo);var value=this.IsPriceGap(kItemInfo,preKItemInfo);if(value>0)this.AryPriceGapCache.push({Data:[preKItemInfo,kItemInfo],Type:value});}preKItemInfo=kItemInfo;}}if(bFirstPoint==false)this.Canvas.stroke();};this.DrawKBar=function()//蜡烛头
|
|
3150
3151
|
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;chartright=border.BottomEx;}var ptMax={X:null,Y:null,Value:null,Align:'left'};var ptMin={X:null,Y:null,Value:null,Align:'left'};var upColor=this.UpColor;var downColor=this.DownColor;var unchagneColor=this.UnchagneColor;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;var ptLast=null;this.DrawKRange.Start=this.Data.DataOffset;var eventUnchangeKLine=null;//定制平盘K线颜色事件
|
|
3151
|
-
if(this.GetEventCallback){eventUnchangeKLine=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_UNCHANGE_KLINE_COLOR);}var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:
|
|
3152
|
+
if(this.GetEventCallback){eventUnchangeKLine=this.GetEventCallback(JSCHART_EVENT_ID.ON_CUSTOM_UNCHANGE_KLINE_COLOR);}var preKItemInfo=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;var kItemInfo={Data:data,Coordinate:{X:x,Low:yLow,High:yHigh,Close:yClose,Open:yOpen,Left:left,Right:right}};this.DrawKRange.End=i;if(ptMax.Value==null||ptMax.Value<data.High)//求最大值
|
|
3152
3153
|
{ptMax.X=x;ptMax.Y=yHigh;ptMax.Value=data.High;ptMax.Align=j<xPointCount/2?'left':'right';}if(ptMin.Value==null||ptMin.Value>data.Low)//求最小值
|
|
3153
3154
|
{ptMin.X=x;ptMin.Y=yLow;ptMin.Value=data.Low;ptMin.Align=j<xPointCount/2?'left':'right';}if(this.ColorData)///五彩K线颜色设置
|
|
3154
3155
|
{if(i<this.ColorData.length)upColor=downColor=unchagneColor=this.ColorData[i]>0?this.UpColor:this.DownColor;else upColor=downColor=unchagneColor=this.DownColor;}var kLineOption=this.GetCustomKLine(data);if(data.IsNonTrade)//非交易日 绘制虚线柱子
|
|
@@ -3160,7 +3161,7 @@ if(this.GetEventCallback){eventUnchangeKLine=this.GetEventCallback(JSCHART_EVENT
|
|
|
3160
3161
|
{yTop=Math.min(yHigh,yTop-5);yBottom=Math.max(yLow,yBottom+5);}if(data.IsNonTrade){yTop=yHigh;yBottom=yLow;}var rect=new Rect(left,yTop,dataWidth,yBottom-yTop);//this.Canvas.fillStyle="rgb(0,0,100)";
|
|
3161
3162
|
//this.Canvas.fillRect(rect.X,rect.Y,rect.Width,rect.Height);
|
|
3162
3163
|
this.TooltipRect.push([i,rect]);//[0]数据索引 [1]数据区域
|
|
3163
|
-
}if(this.Data.DataType==0||this.Data.DataType==1){var infoItem={Xleft:left,XRight:right,XCenter:x,YMax:yHigh,YMin:yLow,DayData:data,Index:j};this.DrawInfo(infoItem);}if(i==this.Data.Data.length-1){ptLast={X:x,Y:yClose,XLeft:left,XRight:right,KItem:data,ChartRight:chartright};}if(this.PriceGap.Enable&&preKItemInfo){this.
|
|
3164
|
+
}if(this.Data.DataType==0||this.Data.DataType==1){var infoItem={Xleft:left,XRight:right,XCenter:x,YMax:yHigh,YMin:yLow,DayData:data,Index:j};this.DrawInfo(infoItem);}if(i==this.Data.Data.length-1){ptLast={X:x,Y:yClose,XLeft:left,XRight:right,KItem:data,ChartRight:chartright};}if(this.PriceGap.Enable&&preKItemInfo){this.CheckPriceGap(kItemInfo);var value=this.IsPriceGap(kItemInfo,preKItemInfo);if(value>0)this.AryPriceGapCache.push({Data:[preKItemInfo,kItemInfo],Type:value});}preKItemInfo=kItemInfo;}this.DrawLastPointEvent(ptLast);//通知外部绘制最后一个点
|
|
3164
3165
|
this.PtMax=ptMax;this.PtMin=ptMin;};this.DrawKBar_Up=function(data,dataWidth,upColor,drawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen)//阳线
|
|
3165
3166
|
{var isEmptyBar=drawType==3||drawType==6;if(dataWidth>=4){if(isEmptyBar){if(dataWidth%2!=0)dataWidth-=1;}this.Canvas.strokeStyle=upColor;if(data.High>data.Close)//上影线
|
|
3166
3167
|
{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(drawType==3?Math.max(yClose,yOpen):yClose),ToFixedPoint(x));}else{if(isEmptyBar){var xFixed=left+dataWidth/2;this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(Math.min(yClose,yOpen)));}else{this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yClose));}}this.Canvas.stroke();y=yClose;}else{y=yClose;}this.Canvas.fillStyle=upColor;if(isHScreen){if(Math.abs(yOpen-y)<1){this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),1,ToFixedRect(dataWidth));//高度小于1,统一使用高度1
|
|
@@ -3563,11 +3564,12 @@ this.DrawPriceGap=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.AryPri
|
|
|
3563
3564
|
{if(isHScreen){rect={Left:start.Coordinate.Low,Right:end.Coordinate.High,Top:start.Coordinate.X,Bottom:border.Bottom};rect.Width=rect.Right-rect.Left;rect.Height=rect.Bottom-rect.Top;rtText={Left:start.Coordinate.Low+2,Top:start.Coordinate.Right+2,Height:textHeight};rtText.Bottom=rtText.Top+rtText.Height;}else{rect={Left:start.Coordinate.X,Right:border.Right,Top:start.Coordinate.Low,Bottom:end.Coordinate.High};rect.Width=rect.Right-rect.Left;rect.Height=rect.Bottom-rect.Top;rtText={Left:start.Coordinate.Right+2,Bottom:rect.Top,Right:rect.Right,Height:textHeight};rtText.Top=rtText.Bottom-rtText.Height;}text=start.Data.Low.toFixed(decNum)+'-'+end.Data.High.toFixed(decNum);}else{continue;}if(!rect)return;this.Canvas.fillStyle=this.PriceGapStyple.Line.Color;this.Canvas.fillRect(rect.Left,rect.Top,rect.Width,rect.Height);if(rtText){var textWidth=this.Canvas.measureText(text).width;rtText.Width=textWidth;rtText.Right=rtText.Left+rtText.Width;this.Canvas.fillStyle=this.PriceGapStyple.Text.Color;if(isHScreen){this.Canvas.save();this.Canvas.translate(rtText.Left,rtText.Top);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,0,0);this.Canvas.restore();}else{if(rtText.Right>rect.Right){rtText.Right=rect.Right;rtText.Left=rtText.Right-rtText.Width;}this.Canvas.fillStyle=this.PriceGapStyple.Text.Color;this.Canvas.fillText(text,rtText.Left,rtText.Bottom);}//this.Canvas.fillStyle="rgb(250,250,250)"
|
|
3564
3565
|
//this.Canvas.fillRect(rtText.Left, rtText.Top, rtText.Width, rtText.Height);
|
|
3565
3566
|
}}};//是否有缺口
|
|
3566
|
-
this.
|
|
3567
|
+
this.IsPriceGap=function(item,preItem){if(!preItem||!item)return 0;if(preItem.Data.Low>item.Data.High)return 2;//下缺口
|
|
3567
3568
|
if(preItem.Data.High<item.Data.Low)return 1;//上缺口
|
|
3568
|
-
return-1;}
|
|
3569
|
-
{
|
|
3570
|
-
{if(kItem.
|
|
3569
|
+
return-1;};//检测缺口是不回补了
|
|
3570
|
+
this.CheckPriceGap=function(kItemInfo){var kItem=kItemInfo.Data;for(var i=0;i<this.AryPriceGapCache.length;++i){var item=this.AryPriceGapCache[i];var start=item.Data[0];var end=item.Data[1];if(item.Type==1)//上缺口
|
|
3571
|
+
{if(kItem.Low<=start.Data.High){this.AryPriceGapCache.splice(i,1);--i;continue;}if(kItem.Low<end.Data.Low)item.Data[1]=kItemInfo;}else if(item.Type==2)//下缺口
|
|
3572
|
+
{if(kItem.High>=start.Data.Low){this.AryPriceGapCache.splice(i,1);--i;continue;}if(kItem.High>end.Data.High)item.Data[1]=kItemInfo;}}};}function ChartColorKline(){this.newMethod=IChartPainting;//派生
|
|
3571
3573
|
this.newMethod();delete this.newMethod;this.ClassName='ChartColorKline';//类名
|
|
3572
3574
|
this.Symbol;//股票代码
|
|
3573
3575
|
this.Color='rgb(0,255,44)';this.IsEmptyBar=false;this.DrawType=0;//0=实心K线柱子 3=空心K线柱子
|
|
@@ -4196,7 +4198,7 @@ this.IsEraseBG=false;//是否每次画的时候需要擦除K线图背景
|
|
|
4196
4198
|
this.DrawAfterTitle=false;//是否在动态标题画完以后再画,防止动态标题覆盖
|
|
4197
4199
|
this.DrawAfterPicture=false;//是否在画图工具以后绘制
|
|
4198
4200
|
this.IsCallbackDraw=false;//在回调函数里绘制, 不在Draw()中绘制
|
|
4199
|
-
|
|
4201
|
+
this.ID=Guid();//上下左右间距
|
|
4200
4202
|
this.Left=5;this.Right=5;this.Top=5;this.Bottom=5;this.Draw=function(){};//设置参数接口
|
|
4201
4203
|
this.SetOption=function(option){};this.GetFontHeight=function(font){return GetFontHeight(this.Canvas,font,"擎");};}//K线Tooltip, 显示在左边或右边
|
|
4202
4204
|
function KLineTooltipPaint(){this.newMethod=IExtendChartPainting;//派生
|
|
@@ -12622,7 +12624,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
12622
12624
|
this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
12623
12625
|
* 版本信息输出
|
|
12624
12626
|
*
|
|
12625
|
-
*/var HQCHART_VERSION="1.1.
|
|
12627
|
+
*/var HQCHART_VERSION="1.1.13000";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();//把给外界调用的方法暴露出来
|
|
12626
12628
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12627
12629
|
// BaseIndex:BaseIndex,
|
|
12628
12630
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -8017,6 +8017,22 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8017
8017
|
this.ExtendChartPaint.splice(data.Index,1);
|
|
8018
8018
|
}
|
|
8019
8019
|
|
|
8020
|
+
//删除扩展画法
|
|
8021
|
+
this.DeleteExtendChartByID=function(id)
|
|
8022
|
+
{
|
|
8023
|
+
for(var i=0;i<this.ExtendChartPaint.length;++i)
|
|
8024
|
+
{
|
|
8025
|
+
var item=this.ExtendChartPaint[i];
|
|
8026
|
+
if (item.ID==id)
|
|
8027
|
+
{
|
|
8028
|
+
this.ExtendChartPaint.splice(i, 1);
|
|
8029
|
+
return true;
|
|
8030
|
+
}
|
|
8031
|
+
}
|
|
8032
|
+
|
|
8033
|
+
return false;
|
|
8034
|
+
}
|
|
8035
|
+
|
|
8020
8036
|
//全屏提示信息 { Title:提示信息, Draw:false/true 是否立即重绘, }
|
|
8021
8037
|
this.EnableSplashScreen=function(enable, option)
|
|
8022
8038
|
{
|
|
@@ -22675,7 +22691,7 @@ function ChartKLine()
|
|
|
22675
22691
|
var yClose=this.GetYFromData(data.Close,false);
|
|
22676
22692
|
this.DrawKRange.End=i;
|
|
22677
22693
|
|
|
22678
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
22694
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
22679
22695
|
|
|
22680
22696
|
if (ptMax.Value==null || ptMax.Value<data.High) //求最大值
|
|
22681
22697
|
{
|
|
@@ -22798,9 +22814,9 @@ function ChartKLine()
|
|
|
22798
22814
|
|
|
22799
22815
|
if (this.PriceGap.Enable && preKItemInfo)
|
|
22800
22816
|
{
|
|
22801
|
-
this.
|
|
22817
|
+
this.CheckPriceGap(kItemInfo);
|
|
22802
22818
|
|
|
22803
|
-
var value=this.
|
|
22819
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
22804
22820
|
if (value>0)
|
|
22805
22821
|
this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
22806
22822
|
}
|
|
@@ -22987,12 +23003,12 @@ function ChartKLine()
|
|
|
22987
23003
|
var yHigh=this.GetYFromData(data.High, false);
|
|
22988
23004
|
var yOpen=this.GetYFromData(data.Open, false);
|
|
22989
23005
|
|
|
22990
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
23006
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
22991
23007
|
|
|
22992
23008
|
if (preKItemInfo)
|
|
22993
23009
|
{
|
|
22994
|
-
this.
|
|
22995
|
-
var value=this.
|
|
23010
|
+
this.CheckPriceGap(kItemInfo);
|
|
23011
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
22996
23012
|
if (value>0) this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
22997
23013
|
}
|
|
22998
23014
|
|
|
@@ -23103,12 +23119,12 @@ function ChartKLine()
|
|
|
23103
23119
|
var yHigh=this.GetYFromData(data.High, false);
|
|
23104
23120
|
var yOpen=this.GetYFromData(data.Open, false);
|
|
23105
23121
|
|
|
23106
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
23122
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
23107
23123
|
|
|
23108
23124
|
if (preKItemInfo)
|
|
23109
23125
|
{
|
|
23110
|
-
this.
|
|
23111
|
-
var value=this.
|
|
23126
|
+
this.CheckPriceGap(kItemInfo);
|
|
23127
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
23112
23128
|
if (value>0) this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
23113
23129
|
}
|
|
23114
23130
|
|
|
@@ -23173,7 +23189,7 @@ function ChartKLine()
|
|
|
23173
23189
|
var yClose=this.GetYFromData(data.Close, false);
|
|
23174
23190
|
var y=yHigh;
|
|
23175
23191
|
|
|
23176
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
23192
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
23177
23193
|
|
|
23178
23194
|
this.DrawKRange.End=i;
|
|
23179
23195
|
if (ptMax.Value==null || ptMax.Value<data.High) //求最大值
|
|
@@ -23281,9 +23297,9 @@ function ChartKLine()
|
|
|
23281
23297
|
|
|
23282
23298
|
if (this.PriceGap.Enable && preKItemInfo)
|
|
23283
23299
|
{
|
|
23284
|
-
this.
|
|
23300
|
+
this.CheckPriceGap(kItemInfo);
|
|
23285
23301
|
|
|
23286
|
-
var value=this.
|
|
23302
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
23287
23303
|
if (value>0)
|
|
23288
23304
|
this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
23289
23305
|
}
|
|
@@ -26915,7 +26931,7 @@ function ChartKLine()
|
|
|
26915
26931
|
}
|
|
26916
26932
|
|
|
26917
26933
|
//是否有缺口
|
|
26918
|
-
this.
|
|
26934
|
+
this.IsPriceGap=function(item, preItem)
|
|
26919
26935
|
{
|
|
26920
26936
|
if (!preItem || !item) return 0;
|
|
26921
26937
|
|
|
@@ -26926,12 +26942,15 @@ function ChartKLine()
|
|
|
26926
26942
|
return -1;
|
|
26927
26943
|
}
|
|
26928
26944
|
|
|
26929
|
-
|
|
26945
|
+
//检测缺口是不回补了
|
|
26946
|
+
this.CheckPriceGap=function(kItemInfo)
|
|
26930
26947
|
{
|
|
26948
|
+
var kItem=kItemInfo.Data;
|
|
26931
26949
|
for(var i=0;i<this.AryPriceGapCache.length;++i)
|
|
26932
26950
|
{
|
|
26933
26951
|
var item=this.AryPriceGapCache[i];
|
|
26934
26952
|
var start=item.Data[0];
|
|
26953
|
+
var end=item.Data[1];
|
|
26935
26954
|
if (item.Type==1) //上缺口
|
|
26936
26955
|
{
|
|
26937
26956
|
if (kItem.Low<=start.Data.High)
|
|
@@ -26940,6 +26959,8 @@ function ChartKLine()
|
|
|
26940
26959
|
--i;
|
|
26941
26960
|
continue;
|
|
26942
26961
|
}
|
|
26962
|
+
|
|
26963
|
+
if (kItem.Low<end.Data.Low) item.Data[1]=kItemInfo;
|
|
26943
26964
|
}
|
|
26944
26965
|
else if (item.Type==2) //下缺口
|
|
26945
26966
|
{
|
|
@@ -26949,6 +26970,8 @@ function ChartKLine()
|
|
|
26949
26970
|
--i;
|
|
26950
26971
|
continue;
|
|
26951
26972
|
}
|
|
26973
|
+
|
|
26974
|
+
if (kItem.High>end.Data.High) item.Data[1]=kItemInfo;
|
|
26952
26975
|
}
|
|
26953
26976
|
}
|
|
26954
26977
|
}
|
|
@@ -38688,6 +38711,7 @@ function IExtendChartPainting()
|
|
|
38688
38711
|
this.DrawAfterTitle=false; //是否在动态标题画完以后再画,防止动态标题覆盖
|
|
38689
38712
|
this.DrawAfterPicture=false; //是否在画图工具以后绘制
|
|
38690
38713
|
this.IsCallbackDraw=false; //在回调函数里绘制, 不在Draw()中绘制
|
|
38714
|
+
this.ID=Guid();
|
|
38691
38715
|
|
|
38692
38716
|
//上下左右间距
|
|
38693
38717
|
this.Left=5;
|
|
@@ -11909,6 +11909,22 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11909
11909
|
this.ExtendChartPaint.splice(data.Index,1);
|
|
11910
11910
|
}
|
|
11911
11911
|
|
|
11912
|
+
//删除扩展画法
|
|
11913
|
+
this.DeleteExtendChartByID=function(id)
|
|
11914
|
+
{
|
|
11915
|
+
for(var i=0;i<this.ExtendChartPaint.length;++i)
|
|
11916
|
+
{
|
|
11917
|
+
var item=this.ExtendChartPaint[i];
|
|
11918
|
+
if (item.ID==id)
|
|
11919
|
+
{
|
|
11920
|
+
this.ExtendChartPaint.splice(i, 1);
|
|
11921
|
+
return true;
|
|
11922
|
+
}
|
|
11923
|
+
}
|
|
11924
|
+
|
|
11925
|
+
return false;
|
|
11926
|
+
}
|
|
11927
|
+
|
|
11912
11928
|
//全屏提示信息 { Title:提示信息, Draw:false/true 是否立即重绘, }
|
|
11913
11929
|
this.EnableSplashScreen=function(enable, option)
|
|
11914
11930
|
{
|
|
@@ -26567,7 +26583,7 @@ function ChartKLine()
|
|
|
26567
26583
|
var yClose=this.GetYFromData(data.Close,false);
|
|
26568
26584
|
this.DrawKRange.End=i;
|
|
26569
26585
|
|
|
26570
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
26586
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
26571
26587
|
|
|
26572
26588
|
if (ptMax.Value==null || ptMax.Value<data.High) //求最大值
|
|
26573
26589
|
{
|
|
@@ -26690,9 +26706,9 @@ function ChartKLine()
|
|
|
26690
26706
|
|
|
26691
26707
|
if (this.PriceGap.Enable && preKItemInfo)
|
|
26692
26708
|
{
|
|
26693
|
-
this.
|
|
26709
|
+
this.CheckPriceGap(kItemInfo);
|
|
26694
26710
|
|
|
26695
|
-
var value=this.
|
|
26711
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
26696
26712
|
if (value>0)
|
|
26697
26713
|
this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
26698
26714
|
}
|
|
@@ -26879,12 +26895,12 @@ function ChartKLine()
|
|
|
26879
26895
|
var yHigh=this.GetYFromData(data.High, false);
|
|
26880
26896
|
var yOpen=this.GetYFromData(data.Open, false);
|
|
26881
26897
|
|
|
26882
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
26898
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
26883
26899
|
|
|
26884
26900
|
if (preKItemInfo)
|
|
26885
26901
|
{
|
|
26886
|
-
this.
|
|
26887
|
-
var value=this.
|
|
26902
|
+
this.CheckPriceGap(kItemInfo);
|
|
26903
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
26888
26904
|
if (value>0) this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
26889
26905
|
}
|
|
26890
26906
|
|
|
@@ -26995,12 +27011,12 @@ function ChartKLine()
|
|
|
26995
27011
|
var yHigh=this.GetYFromData(data.High, false);
|
|
26996
27012
|
var yOpen=this.GetYFromData(data.Open, false);
|
|
26997
27013
|
|
|
26998
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
27014
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
26999
27015
|
|
|
27000
27016
|
if (preKItemInfo)
|
|
27001
27017
|
{
|
|
27002
|
-
this.
|
|
27003
|
-
var value=this.
|
|
27018
|
+
this.CheckPriceGap(kItemInfo);
|
|
27019
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
27004
27020
|
if (value>0) this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
27005
27021
|
}
|
|
27006
27022
|
|
|
@@ -27065,7 +27081,7 @@ function ChartKLine()
|
|
|
27065
27081
|
var yClose=this.GetYFromData(data.Close, false);
|
|
27066
27082
|
var y=yHigh;
|
|
27067
27083
|
|
|
27068
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
27084
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
27069
27085
|
|
|
27070
27086
|
this.DrawKRange.End=i;
|
|
27071
27087
|
if (ptMax.Value==null || ptMax.Value<data.High) //求最大值
|
|
@@ -27173,9 +27189,9 @@ function ChartKLine()
|
|
|
27173
27189
|
|
|
27174
27190
|
if (this.PriceGap.Enable && preKItemInfo)
|
|
27175
27191
|
{
|
|
27176
|
-
this.
|
|
27192
|
+
this.CheckPriceGap(kItemInfo);
|
|
27177
27193
|
|
|
27178
|
-
var value=this.
|
|
27194
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
27179
27195
|
if (value>0)
|
|
27180
27196
|
this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
27181
27197
|
}
|
|
@@ -30807,7 +30823,7 @@ function ChartKLine()
|
|
|
30807
30823
|
}
|
|
30808
30824
|
|
|
30809
30825
|
//是否有缺口
|
|
30810
|
-
this.
|
|
30826
|
+
this.IsPriceGap=function(item, preItem)
|
|
30811
30827
|
{
|
|
30812
30828
|
if (!preItem || !item) return 0;
|
|
30813
30829
|
|
|
@@ -30818,12 +30834,15 @@ function ChartKLine()
|
|
|
30818
30834
|
return -1;
|
|
30819
30835
|
}
|
|
30820
30836
|
|
|
30821
|
-
|
|
30837
|
+
//检测缺口是不回补了
|
|
30838
|
+
this.CheckPriceGap=function(kItemInfo)
|
|
30822
30839
|
{
|
|
30840
|
+
var kItem=kItemInfo.Data;
|
|
30823
30841
|
for(var i=0;i<this.AryPriceGapCache.length;++i)
|
|
30824
30842
|
{
|
|
30825
30843
|
var item=this.AryPriceGapCache[i];
|
|
30826
30844
|
var start=item.Data[0];
|
|
30845
|
+
var end=item.Data[1];
|
|
30827
30846
|
if (item.Type==1) //上缺口
|
|
30828
30847
|
{
|
|
30829
30848
|
if (kItem.Low<=start.Data.High)
|
|
@@ -30832,6 +30851,8 @@ function ChartKLine()
|
|
|
30832
30851
|
--i;
|
|
30833
30852
|
continue;
|
|
30834
30853
|
}
|
|
30854
|
+
|
|
30855
|
+
if (kItem.Low<end.Data.Low) item.Data[1]=kItemInfo;
|
|
30835
30856
|
}
|
|
30836
30857
|
else if (item.Type==2) //下缺口
|
|
30837
30858
|
{
|
|
@@ -30841,6 +30862,8 @@ function ChartKLine()
|
|
|
30841
30862
|
--i;
|
|
30842
30863
|
continue;
|
|
30843
30864
|
}
|
|
30865
|
+
|
|
30866
|
+
if (kItem.High>end.Data.High) item.Data[1]=kItemInfo;
|
|
30844
30867
|
}
|
|
30845
30868
|
}
|
|
30846
30869
|
}
|
|
@@ -42580,6 +42603,7 @@ function IExtendChartPainting()
|
|
|
42580
42603
|
this.DrawAfterTitle=false; //是否在动态标题画完以后再画,防止动态标题覆盖
|
|
42581
42604
|
this.DrawAfterPicture=false; //是否在画图工具以后绘制
|
|
42582
42605
|
this.IsCallbackDraw=false; //在回调函数里绘制, 不在Draw()中绘制
|
|
42606
|
+
this.ID=Guid();
|
|
42583
42607
|
|
|
42584
42608
|
//上下左右间距
|
|
42585
42609
|
this.Left=5;
|
|
@@ -129521,7 +129545,7 @@ function ScrollBarBGChart()
|
|
|
129521
129545
|
|
|
129522
129546
|
|
|
129523
129547
|
|
|
129524
|
-
var HQCHART_VERSION="1.1.
|
|
129548
|
+
var HQCHART_VERSION="1.1.13000";
|
|
129525
129549
|
|
|
129526
129550
|
function PrintHQChartVersion()
|
|
129527
129551
|
{
|
|
@@ -11953,6 +11953,22 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11953
11953
|
this.ExtendChartPaint.splice(data.Index,1);
|
|
11954
11954
|
}
|
|
11955
11955
|
|
|
11956
|
+
//删除扩展画法
|
|
11957
|
+
this.DeleteExtendChartByID=function(id)
|
|
11958
|
+
{
|
|
11959
|
+
for(var i=0;i<this.ExtendChartPaint.length;++i)
|
|
11960
|
+
{
|
|
11961
|
+
var item=this.ExtendChartPaint[i];
|
|
11962
|
+
if (item.ID==id)
|
|
11963
|
+
{
|
|
11964
|
+
this.ExtendChartPaint.splice(i, 1);
|
|
11965
|
+
return true;
|
|
11966
|
+
}
|
|
11967
|
+
}
|
|
11968
|
+
|
|
11969
|
+
return false;
|
|
11970
|
+
}
|
|
11971
|
+
|
|
11956
11972
|
//全屏提示信息 { Title:提示信息, Draw:false/true 是否立即重绘, }
|
|
11957
11973
|
this.EnableSplashScreen=function(enable, option)
|
|
11958
11974
|
{
|
|
@@ -26611,7 +26627,7 @@ function ChartKLine()
|
|
|
26611
26627
|
var yClose=this.GetYFromData(data.Close,false);
|
|
26612
26628
|
this.DrawKRange.End=i;
|
|
26613
26629
|
|
|
26614
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
26630
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
26615
26631
|
|
|
26616
26632
|
if (ptMax.Value==null || ptMax.Value<data.High) //求最大值
|
|
26617
26633
|
{
|
|
@@ -26734,9 +26750,9 @@ function ChartKLine()
|
|
|
26734
26750
|
|
|
26735
26751
|
if (this.PriceGap.Enable && preKItemInfo)
|
|
26736
26752
|
{
|
|
26737
|
-
this.
|
|
26753
|
+
this.CheckPriceGap(kItemInfo);
|
|
26738
26754
|
|
|
26739
|
-
var value=this.
|
|
26755
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
26740
26756
|
if (value>0)
|
|
26741
26757
|
this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
26742
26758
|
}
|
|
@@ -26923,12 +26939,12 @@ function ChartKLine()
|
|
|
26923
26939
|
var yHigh=this.GetYFromData(data.High, false);
|
|
26924
26940
|
var yOpen=this.GetYFromData(data.Open, false);
|
|
26925
26941
|
|
|
26926
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
26942
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
26927
26943
|
|
|
26928
26944
|
if (preKItemInfo)
|
|
26929
26945
|
{
|
|
26930
|
-
this.
|
|
26931
|
-
var value=this.
|
|
26946
|
+
this.CheckPriceGap(kItemInfo);
|
|
26947
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
26932
26948
|
if (value>0) this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
26933
26949
|
}
|
|
26934
26950
|
|
|
@@ -27039,12 +27055,12 @@ function ChartKLine()
|
|
|
27039
27055
|
var yHigh=this.GetYFromData(data.High, false);
|
|
27040
27056
|
var yOpen=this.GetYFromData(data.Open, false);
|
|
27041
27057
|
|
|
27042
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
27058
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
27043
27059
|
|
|
27044
27060
|
if (preKItemInfo)
|
|
27045
27061
|
{
|
|
27046
|
-
this.
|
|
27047
|
-
var value=this.
|
|
27062
|
+
this.CheckPriceGap(kItemInfo);
|
|
27063
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
27048
27064
|
if (value>0) this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
27049
27065
|
}
|
|
27050
27066
|
|
|
@@ -27109,7 +27125,7 @@ function ChartKLine()
|
|
|
27109
27125
|
var yClose=this.GetYFromData(data.Close, false);
|
|
27110
27126
|
var y=yHigh;
|
|
27111
27127
|
|
|
27112
|
-
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:
|
|
27128
|
+
var kItemInfo={ Data:data, Coordinate:{ X:x, Low:yLow, High:yHigh, Close:yClose, Open:yOpen, Left:left, Right:right }};
|
|
27113
27129
|
|
|
27114
27130
|
this.DrawKRange.End=i;
|
|
27115
27131
|
if (ptMax.Value==null || ptMax.Value<data.High) //求最大值
|
|
@@ -27217,9 +27233,9 @@ function ChartKLine()
|
|
|
27217
27233
|
|
|
27218
27234
|
if (this.PriceGap.Enable && preKItemInfo)
|
|
27219
27235
|
{
|
|
27220
|
-
this.
|
|
27236
|
+
this.CheckPriceGap(kItemInfo);
|
|
27221
27237
|
|
|
27222
|
-
var value=this.
|
|
27238
|
+
var value=this.IsPriceGap(kItemInfo,preKItemInfo);
|
|
27223
27239
|
if (value>0)
|
|
27224
27240
|
this.AryPriceGapCache.push({ Data:[preKItemInfo, kItemInfo], Type:value });
|
|
27225
27241
|
}
|
|
@@ -30851,7 +30867,7 @@ function ChartKLine()
|
|
|
30851
30867
|
}
|
|
30852
30868
|
|
|
30853
30869
|
//是否有缺口
|
|
30854
|
-
this.
|
|
30870
|
+
this.IsPriceGap=function(item, preItem)
|
|
30855
30871
|
{
|
|
30856
30872
|
if (!preItem || !item) return 0;
|
|
30857
30873
|
|
|
@@ -30862,12 +30878,15 @@ function ChartKLine()
|
|
|
30862
30878
|
return -1;
|
|
30863
30879
|
}
|
|
30864
30880
|
|
|
30865
|
-
|
|
30881
|
+
//检测缺口是不回补了
|
|
30882
|
+
this.CheckPriceGap=function(kItemInfo)
|
|
30866
30883
|
{
|
|
30884
|
+
var kItem=kItemInfo.Data;
|
|
30867
30885
|
for(var i=0;i<this.AryPriceGapCache.length;++i)
|
|
30868
30886
|
{
|
|
30869
30887
|
var item=this.AryPriceGapCache[i];
|
|
30870
30888
|
var start=item.Data[0];
|
|
30889
|
+
var end=item.Data[1];
|
|
30871
30890
|
if (item.Type==1) //上缺口
|
|
30872
30891
|
{
|
|
30873
30892
|
if (kItem.Low<=start.Data.High)
|
|
@@ -30876,6 +30895,8 @@ function ChartKLine()
|
|
|
30876
30895
|
--i;
|
|
30877
30896
|
continue;
|
|
30878
30897
|
}
|
|
30898
|
+
|
|
30899
|
+
if (kItem.Low<end.Data.Low) item.Data[1]=kItemInfo;
|
|
30879
30900
|
}
|
|
30880
30901
|
else if (item.Type==2) //下缺口
|
|
30881
30902
|
{
|
|
@@ -30885,6 +30906,8 @@ function ChartKLine()
|
|
|
30885
30906
|
--i;
|
|
30886
30907
|
continue;
|
|
30887
30908
|
}
|
|
30909
|
+
|
|
30910
|
+
if (kItem.High>end.Data.High) item.Data[1]=kItemInfo;
|
|
30888
30911
|
}
|
|
30889
30912
|
}
|
|
30890
30913
|
}
|
|
@@ -42624,6 +42647,7 @@ function IExtendChartPainting()
|
|
|
42624
42647
|
this.DrawAfterTitle=false; //是否在动态标题画完以后再画,防止动态标题覆盖
|
|
42625
42648
|
this.DrawAfterPicture=false; //是否在画图工具以后绘制
|
|
42626
42649
|
this.IsCallbackDraw=false; //在回调函数里绘制, 不在Draw()中绘制
|
|
42650
|
+
this.ID=Guid();
|
|
42627
42651
|
|
|
42628
42652
|
//上下左右间距
|
|
42629
42653
|
this.Left=5;
|
|
@@ -129679,7 +129703,7 @@ function HQChartScriptWorker()
|
|
|
129679
129703
|
|
|
129680
129704
|
|
|
129681
129705
|
|
|
129682
|
-
var HQCHART_VERSION="1.1.
|
|
129706
|
+
var HQCHART_VERSION="1.1.13000";
|
|
129683
129707
|
|
|
129684
129708
|
function PrintHQChartVersion()
|
|
129685
129709
|
{
|