hqchart 1.1.10521 → 1.1.10538
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
|
@@ -1889,6 +1889,7 @@ this.IsShowYText=[true,true];//是否显示Y轴坐标坐标 [0=左侧] [1=右侧
|
|
|
1889
1889
|
this.XBottomOffset=g_JSChartResource.Frame.XBottomOffset;//X轴文字显示向下偏移
|
|
1890
1890
|
this.YTextTopOffset=g_JSChartResource.Frame.YTopOffset;//Y轴顶部文字向下偏移
|
|
1891
1891
|
this.YTextPosition=[0,0],//是坐标否强制画在内部 [0=左侧] [1=右侧] 1=OUT" , 2=INSIDE
|
|
1892
|
+
this.YTextPadding=[g_JSChartResource.Frame.YTextPadding[0],g_JSChartResource.Frame.YTextPadding[1]],//Y轴文字和边框间距 [0=左侧] [1=右侧]
|
|
1892
1893
|
this.IsShowXLine=true;//是否显示X轴刻度线
|
|
1893
1894
|
this.IsShowYLine=true;this.YInsideOffset=0;this.YTextBaseline=0;//0=居中 1=上部 (目前就支持内部刻度)
|
|
1894
1895
|
this.MultiTextFormat=0;//多行刻度信息显示模式 0=显示第1行 1=价格/百分比 2=显示2行
|
|
@@ -1904,11 +1905,11 @@ this.Canvas.beginPath();this.Canvas.moveTo(left,yFixed);this.Canvas.lineTo(right
|
|
|
1904
1905
|
{}else if(item.LineType==8||item.LineType==9)//集合竞价不画线
|
|
1905
1906
|
{}else if(item.LineType>0){if(g_JSChartResource.FrameYLineDash){this.Canvas.setLineDash(g_JSChartResource.FrameYLineDash);//虚线
|
|
1906
1907
|
this.Canvas.beginPath();this.Canvas.moveTo(left,yFixed);this.Canvas.lineTo(right,yFixed);this.Canvas.stroke();this.Canvas.setLineDash([]);}else{this.Canvas.beginPath();this.Canvas.moveTo(left,yFixed);this.Canvas.lineTo(right,yFixed);this.Canvas.stroke();}}}var yText=y;if(y>=bottom-2){this.Canvas.textBaseline='bottom';}else if(y<=top+2){this.Canvas.textBaseline='top';yText+=this.YTextTopOffset;}else{this.Canvas.textBaseline="middle";}//坐标信息 左边 间距小于10 不画坐标
|
|
1907
|
-
this.Canvas.strokeStyle=item.TextColor;this.Canvas.fillStyle=item.TextColor;if(item.Message[0]!=null&&isDrawLeft){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.textAlign="right";this.Canvas.fillText(item.Message[0],left-
|
|
1908
|
+
this.Canvas.strokeStyle=item.TextColor;this.Canvas.fillStyle=item.TextColor;if(item.Message[0]!=null&&isDrawLeft){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.textAlign="right";this.Canvas.fillText(item.Message[0],left-this.YTextPadding[0],yText);}//坐标信息 右边 间距小于10 不画坐标
|
|
1908
1909
|
if(item.Message[1]!=null&&isDrawRight){if(item.Font!=null)this.Canvas.font=item.Font;var xText=right;if(item.LineType==3){var lineLength=this.ShortYLineLength*GetDevicePixelRatio();this.Canvas.beginPath();this.Canvas.moveTo(xText,yFixed);this.Canvas.lineTo(xText+lineLength,yFixed);this.Canvas.stroke();xText+=lineLength;}this.Canvas.textAlign="left";if(Array.isArray(item.Message[1])){if(this.MultiTextFormat==1)//显示1行 格式:价格/百分比
|
|
1909
1910
|
{if(item.ExtendData){if(item.ExtendData.Font)this.Canvas.font=item.ExtendData.Font;}var textData={Text:[{Text:item.Message[1][0],Width:this.Canvas.measureText(item.Message[1][0]).width},{Text:item.Message[1][1],Width:this.Canvas.measureText(item.Message[1][1]).width}],X:xText+2,Y:yText,TextBaseline:this.Canvas.textBaseline,Item:item};aryMultiText.push(textData);}else if(this.MultiTextFormat==2)//显示2行
|
|
1910
|
-
{this.Canvas.fillText(item.Message[1][0],xText+
|
|
1911
|
-
{this.Canvas.fillText(item.Message[1][0],xText+
|
|
1911
|
+
{this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);var lineHeight=this.Canvas.measureText('M').width;if(itemHeight>lineHeight*2)this.Canvas.fillText(item.Message[1][1],xText+this.YTextPadding[1],yText+lineHeight);}else//显示第1行
|
|
1912
|
+
{this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);}}else{this.Canvas.fillText(item.Message[1],xText+this.YTextPadding[1],yText);}}yPrev=y;}if(IFrameSplitOperator.IsNonEmptyArray(aryMultiText)&&this.MultiTextFormat==1)this.DrawHorizontalMuText(aryMultiText);};this.DrawHorizontalMuText=function(aryText){var maxWidth=[null,null];for(var i=0;i<aryText.length;++i){var item=aryText[i];var width=item.Text[0].Width;if(!IFrameSplitOperator.IsNumber(maxWidth[0]))maxWidth[0]=width;else if(maxWidth[0]<width)maxWidth[0]=width;width=item.Text[1].Width;if(!IFrameSplitOperator.IsNumber(maxWidth[1]))maxWidth[1]=width;else if(maxWidth[1]<width)maxWidth[1]=width;}for(var i=0;i<aryText.length;++i){var item=aryText[i];var message=item.Item;this.Canvas.textBaseline=message.TextBaseline;if(message.ExtendData&&message.ExtendData.Font)this.Canvas.font=message.ExtendData.Font;else if(message.Font)this.Canvas.font=message.Font;if(message.ExtendData&&message.ExtendData.PriceColor)this.Canvas.fillStyle=message.ExtendData.PriceColor;else this.Canvas.fillStyle=message.TextColor;this.Canvas.textAlign="right";var x=item.X+maxWidth[1];this.Canvas.fillText(item.Text[1].Text,x,item.Y);if(message.ExtendData&&message.ExtendData.SplitColor)this.Canvas.fillStyle=message.ExtendData.SplitColor;else this.Canvas.fillStyle=message.TextColor;this.Canvas.textAlign="left";var splitWidth=this.Canvas.measureText('/').width;this.Canvas.fillText('/',x,item.Y);if(message.ExtendData&&message.ExtendData.PercentageColor)this.Canvas.fillStyle=message.ExtendData.PercentageColor;else this.Canvas.fillStyle=message.TextColor;this.Canvas.textAlign="right";var x=item.X+maxWidth[1]+maxWidth[0]+splitWidth;this.Canvas.fillText(item.Text[0].Text,x,item.Y);var textWidth=maxWidth[1]+maxWidth[0]+splitWidth*4;if(this.RightTextMaxWidth<textWidth)this.RightTextMaxWidth=textWidth;}};//画Y轴Message[2,3]两个内部刻度
|
|
1912
1913
|
this.DrawInsideClientHorizontal=function(){var border=this.GetBorder();if(border.DayBorder&&IFrameSplitOperator.IsNonEmptyArray(border.DayBorder)){var item=border.DayBorder[0];var left=item.LeftEx;var item=border.DayBorder[border.DayBorder.length-1];var right=item.RightEx;var bottom=border.Bottom;var top=border.TopTitle;}else{var left=border.LeftEx;var right=border.RightEx;var bottom=border.Bottom;var top=border.TopTitle;}var pixelTatio=GetDevicePixelRatio();var yPrev=null;//上一个坐标y的值
|
|
1913
1914
|
var yInsideText=null;for(var i=this.HorizontalInfo.length-1;i>=0;--i)//从上往下画分割线
|
|
1914
1915
|
{var item=this.HorizontalInfo[i];var y=this.GetYFromData(item.Value);if(y!=null&&yPrev!=null&&Math.abs(y-yPrev)<this.MinYDistance)continue;//两个坐标在近了 就不画了
|
|
@@ -1946,7 +1947,7 @@ if(this.IsHScreen){var borderTop=this.ChartBorder.Top;var borderBottom=this.Char
|
|
|
1946
1947
|
{if(item.ExtendData){if(item.ExtendData.Font)this.Canvas.font=item.ExtendData.Font;var width1=this.Canvas.measureText(item.Message[1][0]).width;var width2=this.Canvas.measureText(item.Message[1][1]).width;var width3=this.Canvas.measureText('/').width;textWidth=width1+width3;if(rightExtendWidth<width2)rightExtendWidth=width2;//JSConsole.Chart.Log(`[ChartData::GetScaleTextWidth] ${item.Message[1][1]}/${item.Message[1][0]} ${textWidth}, ${rightExtendWidth}`);
|
|
1947
1948
|
}}else if(this.MultiTextFormat==2)//显示2行
|
|
1948
1949
|
{textWidth=this.Canvas.measureText(item.Message[1][0]).width;var textWidth2=this.Canvas.measureText(item.Message[1][1]).width;if(textWidth<textWidth2)textWidth=textWidth2;}else//显示第1行
|
|
1949
|
-
{textWidth=this.Canvas.measureText(item.Message[1][0]).width;}}else{textWidth=this.Canvas.measureText(item.Message[1]).width;}if(width.Right==null||width.Right<textWidth)width.Right=textWidth;}}if(IFrameSplitOperator.IsNumber(width.Right))width.Right+=rightExtendWidth;return{TextWidth:width};};this.ClearToolbar=function(){if(!this.ToolbarID)return;var divToolbar=document.getElementById(this.ToolbarID);if(!divToolbar)return;this.ChartBorder.UIElement.parentNode.removeChild(divToolbar);this.ToolbarRect=null;};this.HideToolbar=function(){if(!this.ToolbarID)return;this.ToolbarRect=null;var divToolbar=document.getElementById(this.ToolbarID);if(!divToolbar)return;if(divToolbar.style.display!='none')divToolbar.style.display='none';};}function MinuteFrame(){this.newMethod=AverageWidthFrame;//派生
|
|
1950
|
+
{textWidth=this.Canvas.measureText(item.Message[1][0]).width;}}else{textWidth=this.Canvas.measureText(item.Message[1]).width;}if(width.Right==null||width.Right<textWidth)width.Right=textWidth;}}if(IFrameSplitOperator.IsNumber(width.Right))width.Right+=rightExtendWidth;if(IFrameSplitOperator.IsNumber(width.Left))width.Left+=this.YTextPadding[0];if(IFrameSplitOperator.IsNumber(width.Right))width.Right+=this.YTextPadding[1];return{TextWidth:width};};this.ClearToolbar=function(){if(!this.ToolbarID)return;var divToolbar=document.getElementById(this.ToolbarID);if(!divToolbar)return;this.ChartBorder.UIElement.parentNode.removeChild(divToolbar);this.ToolbarRect=null;};this.HideToolbar=function(){if(!this.ToolbarID)return;this.ToolbarRect=null;var divToolbar=document.getElementById(this.ToolbarID);if(!divToolbar)return;if(divToolbar.style.display!='none')divToolbar.style.display='none';};}function MinuteFrame(){this.newMethod=AverageWidthFrame;//派生
|
|
1950
1951
|
this.newMethod();delete this.newMethod;this.ClassName="MinuteFrame";this.DataWidth=1*GetDevicePixelRatio();this.DistanceWidth=1*GetDevicePixelRatio();this.MinuteCount=243;//每天的分钟个数
|
|
1951
1952
|
this.BeforeBGColor=g_JSChartResource.Minute.Before.BGColor;//集合竞价背景
|
|
1952
1953
|
this.MultiDayBorderPen=g_JSChartResource.FrameBorderPen;this.CustomHorizontalInfo=[];this.RightFrame=null;//右侧多重坐标
|
|
@@ -2669,7 +2670,7 @@ var ZOOM_SEED=
|
|
|
2669
2670
|
//[0.3,0.06], [0.2,0.04], [0.1,0.02]
|
|
2670
2671
|
];
|
|
2671
2672
|
*/var ZOOM_SEED=//0=柱子宽度 1=间距
|
|
2672
|
-
[[48,10],[44,10],[40,9],[36,9],[32,8],[28,8],[24,7],[20,7],[18,6],[16,6],[
|
|
2673
|
+
[[48,10],[44,10],[40,9],[36,9],[32,8],[28,8],[24,7],[20,7],[18,6],[16,6],[15,5],[13,5],[9,4],[7,4],[5,4],[3,3],[3,1],[2,1],[1,1],[1,0]];//K线画法 支持横屏
|
|
2673
2674
|
function ChartKLine(){this.newMethod=IChartPainting;//派生
|
|
2674
2675
|
this.newMethod();delete this.newMethod;this.ClassName='ChartKLine';//类名
|
|
2675
2676
|
this.Symbol;//股票代码
|
|
@@ -2727,21 +2728,21 @@ if(bFirstPoint)return;this.Canvas.stroke();if(isHScreen){this.Canvas.lineTo(bord
|
|
|
2727
2728
|
this.TooltipRect.push([i,rect]);//[0]数据索引 [1]数据区域
|
|
2728
2729
|
}if(this.Data.DataType==0){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};}}this.DrawLastPointEvent(ptLast);//通知外部绘制最后一个点
|
|
2729
2730
|
this.PtMax=ptMax;this.PtMin=ptMin;};this.DrawKBar_Up=function(data,dataWidth,upColor,drawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen)//阳线
|
|
2730
|
-
{if(dataWidth>=4){this.Canvas.strokeStyle=upColor;if(data.High>data.Close)//上影线
|
|
2731
|
-
{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{this.Canvas.moveTo(ToFixedPoint(
|
|
2731
|
+
{if(dataWidth>=4){if(drawType==3){if(dataWidth%2!=0)dataWidth-=1;}this.Canvas.strokeStyle=upColor;if(data.High>data.Close)//上影线
|
|
2732
|
+
{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(drawType==3){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
|
|
2732
2733
|
}else{if(drawType==3)//空心柱
|
|
2733
2734
|
{this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(y),ToFixedPoint(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));this.Canvas.stroke();}else{this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));}}}else{if(Math.abs(yOpen-y)<1){this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(y),ToFixedRect(dataWidth),1);//高度小于1,统一使用高度1
|
|
2734
2735
|
}else{if(drawType==3)//空心柱
|
|
2735
2736
|
{this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(left),ToFixedPoint(y),ToFixedRect(dataWidth),ToFixedRect(yOpen-y));this.Canvas.stroke();}else{this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(Math.min(y,yOpen)),ToFixedRect(dataWidth),ToFixedRect(Math.abs(yOpen-y)));}}}if(data.Open>data.Low)//下影线
|
|
2736
|
-
{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(ToFixedPoint(drawType==3?Math.min(yClose,yOpen):y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(
|
|
2737
|
+
{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(ToFixedPoint(drawType==3?Math.min(yClose,yOpen):y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));}else{if(drawType==3){var xFixed=left+dataWidth/2;this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(Math.max(yClose,yOpen)));this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(yLow));}else{this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yLow));}}this.Canvas.stroke();}}else{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(yHigh,ToFixedPoint(x));this.Canvas.lineTo(yLow,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yHigh);this.Canvas.lineTo(ToFixedPoint(x),yLow);}this.Canvas.strokeStyle=upColor;this.Canvas.stroke();}};this.DrawKBar_Down=function(data,dataWidth,downColor,drawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen)//阴线
|
|
2737
2738
|
{if(dataWidth>=4){this.Canvas.strokeStyle=downColor;if(data.High>data.Close)//上影线
|
|
2738
2739
|
{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yOpen),ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yOpen));}this.Canvas.stroke();y=yOpen;}else{y=yOpen;}this.Canvas.fillStyle=downColor;if(isHScreen){if(Math.abs(yClose-y)<1)this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),1,ToFixedRect(dataWidth));//高度小于1,统一使用高度1
|
|
2739
2740
|
else this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),ToFixedRect(yClose-y),ToFixedRect(dataWidth));}else{if(Math.abs(yClose-y)<1)this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(y),ToFixedRect(dataWidth),1);//高度小于1,统一使用高度1
|
|
2740
2741
|
else this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(Math.min(y,yClose)),ToFixedRect(dataWidth),ToFixedRect(Math.abs(yClose-y)));}if(data.Open>data.Low)//下影线
|
|
2741
2742
|
{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yLow));}this.Canvas.stroke();}}else{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(yHigh,ToFixedPoint(x));this.Canvas.lineTo(yLow,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yHigh);this.Canvas.lineTo(ToFixedPoint(x),yLow);}this.Canvas.strokeStyle=downColor;this.Canvas.stroke();}};this.DrawKBar_Unchagne=function(data,dataWidth,unchagneColor,drawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen)//平线
|
|
2742
|
-
{if(dataWidth>=4){this.Canvas.strokeStyle=unchagneColor;this.Canvas.beginPath();if(data.High>data.Close)//上影线
|
|
2743
|
-
{if(isHScreen){this.Canvas.moveTo(y,ToFixedPoint(x));this.Canvas.lineTo(yOpen,ToFixedPoint(x));}else{this.Canvas.moveTo(
|
|
2744
|
-
{if(isHScreen){this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));}else{this.Canvas.moveTo(
|
|
2743
|
+
{if(dataWidth>=4){if(dataWidth%2!=0)dataWidth-=1;this.Canvas.strokeStyle=unchagneColor;this.Canvas.beginPath();if(data.High>data.Close)//上影线
|
|
2744
|
+
{if(isHScreen){this.Canvas.moveTo(y,ToFixedPoint(x));this.Canvas.lineTo(yOpen,ToFixedPoint(x));}else{var xFixed=ToFixedPoint(left+dataWidth/2);this.Canvas.moveTo(xFixed,y);this.Canvas.lineTo(xFixed,yOpen);}y=yOpen;}else{y=yOpen;}if(isHScreen){this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(left));this.Canvas.lineTo(ToFixedPoint(y),ToFixedPoint(right));}else{this.Canvas.moveTo(ToFixedPoint(left),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(left+dataWidth),ToFixedPoint(y));}if(data.Open>data.Low)//下影线
|
|
2745
|
+
{if(isHScreen){this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));}else{var xFixed=ToFixedPoint(left+dataWidth/2);this.Canvas.moveTo(xFixed,ToFixedPoint(y));this.Canvas.lineTo(xFixed,ToFixedPoint(yLow));}}this.Canvas.stroke();}else{this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(yHigh,ToFixedPoint(x));this.Canvas.lineTo(yLow,ToFixedPoint(x));}else{this.Canvas.moveTo(ToFixedPoint(x),yHigh);this.Canvas.lineTo(ToFixedPoint(x),yLow);}this.Canvas.strokeStyle=unchagneColor;this.Canvas.stroke();}};this.DrawKBar_Custom=function(data,dataWidth,barColor,drawType,option,x,y,left,right,yLow,yHigh,yOpen,yClose,border,isHScreen){if(option.BGColor)//画背景色
|
|
2745
2746
|
{this.Canvas.fillStyle=option.BGColor;var distanceWidth=this.ChartFrame.DistanceWidth;if(isHScreen){var yLeft=left-distanceWidth/2;var yRight=right+distanceWidth/2;var xTop=border.RightEx;var xBottom=border.LeftEx;this.Canvas.fillRect(ToFixedRect(xBottom),ToFixedRect(yLeft),ToFixedRect(xTop-xBottom),ToFixedRect(yRight-yLeft));}else{var xLeft=left-distanceWidth/2;var xRight=right+distanceWidth/2;var yTop=border.TopEx;var yBottom=border.BottomEx;this.Canvas.fillRect(ToFixedRect(xLeft),ToFixedRect(yTop),ToFixedRect(xRight-xLeft),ToFixedRect(yBottom-yTop));}}if(dataWidth>=4){this.Canvas.strokeStyle=barColor;if(data.High>data.Close)//上影线
|
|
2746
2747
|
{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{this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(drawType==3?Math.min(yClose,yOpen):yClose));}this.Canvas.stroke();y=yClose;}else{y=yClose;}this.Canvas.fillStyle=barColor;if(isHScreen){if(Math.abs(yOpen-y)<1){this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),1,ToFixedRect(dataWidth));//高度小于1,统一使用高度1
|
|
2747
2748
|
}else{if(drawType==3)//空心柱
|
|
@@ -4357,8 +4358,8 @@ this.FrameSplitTextColor="rgb(117,125,129)";//刻度文字颜色
|
|
|
4357
4358
|
this.FrameSplitTextFont=14*GetDevicePixelRatio()+"px 微软雅黑";//坐标刻度文字字体
|
|
4358
4359
|
this.FrameTitleBGColor="rgb(246,251,253)";//标题栏背景色
|
|
4359
4360
|
this.Frame={XBottomOffset:1*GetDevicePixelRatio(),//X轴文字向下偏移
|
|
4360
|
-
YTopOffset:2*GetDevicePixelRatio()
|
|
4361
|
-
};//百分比坐标文字颜色
|
|
4361
|
+
YTopOffset:2*GetDevicePixelRatio(),//Y轴顶部文字向下偏移
|
|
4362
|
+
YTextPadding:[2,2]};//百分比坐标文字颜色
|
|
4362
4363
|
this.Frame.PercentageText={PriceColor:'rgb(117,125,129)',PercentageColor:"rgb(117,125,129)",SplitColor:"rgb(117,125,129)",Font:14*GetDevicePixelRatio()+"px 微软雅黑"};//对数坐标
|
|
4363
4364
|
this.FrameLogarithmic={OpenPriceFont:"bold "+14*GetDevicePixelRatio()+"px 微软雅黑",//开盘价刻度文字字体
|
|
4364
4365
|
MinInterval:45*GetDevicePixelRatio()//刻度最小间距
|
|
@@ -6409,6 +6410,7 @@ var choicedText=(0,_jquery2.default)(this).closest(".fontSizeSelect").find('.cho
|
|
|
6409
6410
|
//
|
|
6410
6411
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
6411
6412
|
var MARKET_SUFFIX_NAME={SH:'.SH',SZ:'.SZ',SHSZ_C_Index:'.CI',//自定义指数
|
|
6413
|
+
BJ:".BJ",//北交所 BeiJing stock exchange
|
|
6412
6414
|
SHO:'.SHO',//上海交易所 股票期权
|
|
6413
6415
|
HK:'.HK',//港股
|
|
6414
6416
|
FHK:'.FHK',//港股期货
|
|
@@ -6433,7 +6435,7 @@ ET:'.ET',//其他未知的品种
|
|
|
6433
6435
|
IsET:function IsET(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.ET)>0;},IsETShowAvPrice:function IsETShowAvPrice(upperSymbol)//是否显示均价
|
|
6434
6436
|
{return false;},IsNYMEX:function IsNYMEX(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.NYMEX)>0;},IsCOMEX:function IsCOMEX(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.COMEX)>0;},IsNYBOT:function IsNYBOT(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.NYBOT)>0;},IsCBOT:function IsCBOT(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.CBOT)>0;},IsLME:function IsLME(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.LME)>0;},IsTOCOM:function IsTOCOM(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.TOCOM)>0;},IsIPE:function IsIPE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.IPE)>0;},IsForeignExchange:function IsForeignExchange(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.FOREX)>0;},IsFTSE:function IsFTSE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.FTSE)>0;},IsFHK:function IsFHK(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.FHK)>0;},IsBIT:function IsBIT(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.BIT)>0)return true;if(upperSymbol.indexOf(this.BIZ)>0)return true;return false;},IsUSA:function IsUSA(upperSymbol)//是否是美股
|
|
6435
6437
|
{if(!upperSymbol)return false;return upperSymbol.indexOf(this.USA)>0;},IsSH:function IsSH(upperSymbol){//需要精确匹配最后3位
|
|
6436
|
-
var pos=upperSymbol.length-this.SH.length;var find=upperSymbol.indexOf(this.SH);return find==pos;},IsSZ:function IsSZ(upperSymbol){var pos=upperSymbol.length-this.SZ.length;var find=upperSymbol.indexOf(this.SZ);return find==pos;},//自定义指数
|
|
6438
|
+
var pos=upperSymbol.length-this.SH.length;var find=upperSymbol.indexOf(this.SH);return find==pos;},IsSZ:function IsSZ(upperSymbol){var pos=upperSymbol.length-this.SZ.length;var find=upperSymbol.indexOf(this.SZ);return find==pos;},IsBJ:function IsBJ(upperSymbol){var pos=upperSymbol.length-this.BJ.length;var find=upperSymbol.indexOf(this.BJ);return find==pos;},//自定义指数
|
|
6437
6439
|
IsSHSZCustomIndex:function IsSHSZCustomIndex(upperSymbol){var pos=upperSymbol.length-this.SHSZ_C_Index.length;var find=upperSymbol.indexOf(this.SHSZ_C_Index);return find==pos;},IsSHO:function IsSHO(upperSymbol){var pos=upperSymbol.length-this.SHO.length;var find=upperSymbol.indexOf(this.SHO);return find==pos;},IsHK:function IsHK(upperSymbol){var pos=upperSymbol.length-this.HK.length;var find=upperSymbol.indexOf(this.HK);return find==pos;},IsSHFE:function IsSHFE(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.SHFE)>0)return true;if(upperSymbol.indexOf(this.SHFE2)>0)return true;return false;},IsCFFEX:function IsCFFEX(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.CFFEX)>0)return true;return false;},IsDCE:function IsDCE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.DCE)>0;},IsCZCE:function IsCZCE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.CZCE)>0;},IsChinaFutures:function IsChinaFutures(upperSymbol)//是否是国内期货 /期权
|
|
6438
6440
|
{return this.IsSHO(upperSymbol)||this.IsCFFEX(upperSymbol)||this.IsCZCE(upperSymbol)||this.IsDCE(upperSymbol)||this.IsSHFE(upperSymbol);},IsFutures:function IsFutures(upperSymbol)//是否是期货 包含国外的
|
|
6439
6441
|
{return this.IsChinaFutures(upperSymbol)||this.IsNYMEX(upperSymbol)||this.IsCOMEX(upperSymbol)||this.IsNYBOT(upperSymbol)||this.IsCBOT(upperSymbol)||this.IsLME(upperSymbol)||this.IsTOCOM(upperSymbol);},IsSHSZ:function IsSHSZ(upperSymbol)//是否是沪深的股票
|
|
@@ -6445,7 +6447,8 @@ IsSHSZCustomIndex:function IsSHSZCustomIndex(upperSymbol){var pos=upperSymbol.le
|
|
|
6445
6447
|
{return true;}return false;},IsSHSZStockA:function IsSHSZStockA(symbol)//是否是沪深A股
|
|
6446
6448
|
{if(!symbol)return false;var upperSymbol=symbol.toUpperCase();if(this.IsSH(upperSymbol)){var temp=upperSymbol.replace('.SH','');if(upperSymbol.charAt(0)=='6')return true;}else if(this.IsSZ(upperSymbol)){if(upperSymbol.charAt(0)=='0'){if(upperSymbol.charAt(1)=='0'&&upperSymbol.charAt(2)=='2')return true;//002 中小板
|
|
6447
6449
|
if(upperSymbol.charAt(1)!='7'&&upperSymbol.charAt(1)!='8')return true;}else if(upperSymbol.charAt(0)=='3'){if(upperSymbol.charAt(1)=='0'&&upperSymbol.charAt(2)=='0')return true;//创业板 300XXX.sz
|
|
6448
|
-
}}return false;},
|
|
6450
|
+
}}return false;},IsBJStock:function IsBJStock(symbol)//北交所股票
|
|
6451
|
+
{if(!symbol)return false;var upperSymbol=symbol.toUpperCase();if(!this.IsBJ(upperSymbol))return false;var value=upperSymbol.charAt(0);if(value=='4'||value=='8')return true;return false;},IsSHStockSTAR:function IsSHStockSTAR(symbol)// 是否是科创板 Sci-Tech innovAtion boaRd (STAR Market)
|
|
6449
6452
|
{if(!symbol)return false;var upperSymbol=symbol.toUpperCase();if(!this.IsSH(upperSymbol))return false;if(upperSymbol.charAt(0)=='6'&&upperSymbol.charAt(1)=='8'&&upperSymbol.charAt(2)=='8')return true;return false;},GetMarketStatus:function GetMarketStatus(symbol)//获取市场状态 0=闭市 1=盘前 2=盘中 3=盘后
|
|
6450
6453
|
{if(!symbol)return 0;var upperSymbol=symbol.toUpperCase();var nowDate=new Date();var day=nowDate.getDay();var time=nowDate.getHours()*100+nowDate.getMinutes();if(this.IsUSA(upperSymbol)){var usaDate=GetLocalTime(-4);var day=usaDate.getDay();var time=usaDate.getHours()*100+usaDate.getMinutes();if(day==6||day==0)return 0;//周末
|
|
6451
6454
|
//9:30 - 16:00 考虑夏令时间时间增加1小时 9:30 - 17:00
|
|
@@ -6477,11 +6480,11 @@ return 2;},GetNYMEXMarketStatus:function GetNYMEXMarketStatus(symbol){return g_N
|
|
|
6477
6480
|
return false;},IsShowMinutePostionLine:function IsShowMinutePostionLine(upperSymbol)//分时图 成交量图中是否显示持仓线
|
|
6478
6481
|
{if(MARKET_SUFFIX_NAME.IsFutures(upperSymbol)||MARKET_SUFFIX_NAME.IsSHO(upperSymbol))return true;return false;},IsShowMinuteColorVolBar:function IsShowMinuteColorVolBar(symobl)//是否分时图成绩量柱子使用彩色柱
|
|
6479
6482
|
{if(g_JSChartResource.Minute.VolBarColor)return true;return false;},IsEnableRight:function IsEnableRight(period,symbol)//是否支持复权
|
|
6480
|
-
{if(!MARKET_SUFFIX_NAME.IsSHSZStockA(symbol))return false;if(ChartData.IsTickPeriod(period))return false;//分笔没有复权
|
|
6483
|
+
{if(!MARKET_SUFFIX_NAME.IsSHSZStockA(symbol)||!MARKET_SUFFIX_NAME.IsBJStock(symbol))return false;if(ChartData.IsTickPeriod(period))return false;//分笔没有复权
|
|
6481
6484
|
if(ChartData.IsMinutePeriod(period,true))return false;//内置分钟K线不支持复权
|
|
6482
6485
|
return true;}//走势图分钟数据对应的时间
|
|
6483
6486
|
};function MinuteTimeStringData(){this.SHSZ=null;//上海深证交易所时间
|
|
6484
|
-
this.SHO=null;//上海股票期权交易时间
|
|
6487
|
+
this.BJ=null;this.SHO=null;//上海股票期权交易时间
|
|
6485
6488
|
this.HK=null;//香港交易所时间
|
|
6486
6489
|
this.Futures=new _map2.default();//期货交易时间 key=时间名称 Value=数据
|
|
6487
6490
|
this.USA=null;//美股交易时间
|
|
@@ -6494,7 +6497,7 @@ this.Initialize=function()//初始化 默认只初始化沪深的 其他市场
|
|
|
6494
6497
|
//this.HK = this.CreateHKData();
|
|
6495
6498
|
};this.GetET=function(upperSymbol)//当天所有的分钟
|
|
6496
6499
|
{throw{Name:'MinuteTimeStringData::GetET',Error:'not implement'};};this.GetSHSZ=function(upperSymbol)//动态创建
|
|
6497
|
-
{if(!this.SHSZ)this.SHSZ=this.CreateSHSZData();return this.SHSZ;};this.GetSHO=function(){if(!this.SHO)this.SHO=this.CreateSHOData();return this.SHO;};this.GetHK=function(){if(!this.HK)this.HK=this.CreateHKData();return this.HK;};this.GetFutures=function(splitData){if(!this.Futures.has(splitData.Name)){var data=this.CreateTimeData(splitData.Data);this.Futures.set(splitData.Name,data);}return this.Futures.get(splitData.Name);};this.GetUSA=function(){if(!this.USA)this.USA=this.CreateUSAData(0);return this.USA;};this.GetFTSE=function(){if(!this.FTSE)this.FTSE=this.CreateFTSEData();return this.FTSE;};this.GetFHK=function(){if(!this.FHK)this.FHK=this.CreateFHKData();return this.FHK;};this.GetForeignExchange=function(){if(!this.ForeEx)this.ForeEx=this.CreateForeignExchangeData();return this.ForeEx;};this.GetBIT=function(upperSymbol){if(!this.BIT)this.BIT=this.CreateBITData();return this.BIT;};this.CreateSHSZData=function(){var TIME_SPLIT=[{Start:925,End:925},{Start:930,End:1130},{Start:1300,End:1500}];return this.CreateTimeData(TIME_SPLIT);};this.CreateSHOData=function(){var TIME_SPLIT=[{Start:930,End:1129},{Start:1300,End:1500}];return this.CreateTimeData(TIME_SPLIT);};this.CreateHKData=function(){var TIME_SPLIT=[{Start:930,End:1200},{Start:1300,End:1600}];return this.CreateTimeData(TIME_SPLIT);};this.CreateFTSEData=function(){var TIME_SPLIT=[{Start:1700,End:2359},{Start:0,End:445},{Start:900,End:1630}];return this.CreateTimeData(TIME_SPLIT);};this.CreateFHKData=function(){//港股指数期货 9:15-12:00 13:00-16:30 17:15-03:00
|
|
6500
|
+
{if(!this.SHSZ)this.SHSZ=this.CreateSHSZData();return this.SHSZ;};this.GetBJ=function(upperSymbol){if(!this.BJ)this.BJ=this.CreateBJData();return this.BJ;};this.GetSHO=function(){if(!this.SHO)this.SHO=this.CreateSHOData();return this.SHO;};this.GetHK=function(){if(!this.HK)this.HK=this.CreateHKData();return this.HK;};this.GetFutures=function(splitData){if(!this.Futures.has(splitData.Name)){var data=this.CreateTimeData(splitData.Data);this.Futures.set(splitData.Name,data);}return this.Futures.get(splitData.Name);};this.GetUSA=function(){if(!this.USA)this.USA=this.CreateUSAData(0);return this.USA;};this.GetFTSE=function(){if(!this.FTSE)this.FTSE=this.CreateFTSEData();return this.FTSE;};this.GetFHK=function(){if(!this.FHK)this.FHK=this.CreateFHKData();return this.FHK;};this.GetForeignExchange=function(){if(!this.ForeEx)this.ForeEx=this.CreateForeignExchangeData();return this.ForeEx;};this.GetBIT=function(upperSymbol){if(!this.BIT)this.BIT=this.CreateBITData();return this.BIT;};this.CreateSHSZData=function(){var TIME_SPLIT=[{Start:925,End:925},{Start:930,End:1130},{Start:1300,End:1500}];return this.CreateTimeData(TIME_SPLIT);};this.CreateBJData=function(){var TIME_SPLIT=[{Start:925,End:925},{Start:930,End:1130},{Start:1300,End:1500}];return this.CreateTimeData(TIME_SPLIT);};this.CreateSHOData=function(){var TIME_SPLIT=[{Start:930,End:1129},{Start:1300,End:1500}];return this.CreateTimeData(TIME_SPLIT);};this.CreateHKData=function(){var TIME_SPLIT=[{Start:930,End:1200},{Start:1300,End:1600}];return this.CreateTimeData(TIME_SPLIT);};this.CreateFTSEData=function(){var TIME_SPLIT=[{Start:1700,End:2359},{Start:0,End:445},{Start:900,End:1630}];return this.CreateTimeData(TIME_SPLIT);};this.CreateFHKData=function(){//港股指数期货 9:15-12:00 13:00-16:30 17:15-03:00
|
|
6498
6501
|
var TIME_SPLIT=[{Start:1715,End:2359},{Start:0,End:300},{Start:915,End:1200},{Start:1300,End:1630}];return this.CreateTimeData(TIME_SPLIT);};this.CreateUSAData=function(type){if(type==1)//美国夏令时
|
|
6499
6502
|
{var TIME_SPLIT=[{Start:2130,End:2359},{Start:0,End:400}];return this.CreateTimeData(TIME_SPLIT);}else if(type==2)//非夏令时
|
|
6500
6503
|
{var _TIME_SPLIT=[{Start:2230,End:2359},{Start:0,End:500}];return this.CreateTimeData(_TIME_SPLIT);}else//使用美国本地时间
|
|
@@ -6503,7 +6506,7 @@ var TIME_SPLIT=[{Start:1715,End:2359},{Start:0,End:300},{Start:915,End:1200},{St
|
|
|
6503
6506
|
var TIME_SPLIT=[{Start:600,End:2359},{Start:0,End:559}];return this.CreateTimeData(TIME_SPLIT);};this.CreateBITData=function(){//数字货币 7:00 - 6:59
|
|
6504
6507
|
var TIME_SPLIT=[{Start:600,End:2359},{Start:0,End:559}];return this.CreateTimeData(TIME_SPLIT);};this.CreateTimeData=function(timeSplit){var data=[];for(var i in timeSplit){var item=timeSplit[i];for(var j=item.Start;j<=item.End;++j){if(j%100>=60)continue;//大于60分钟的数据去掉
|
|
6505
6508
|
data.push(j);}}return data;};this.GetTimeData=function(symbol){if(!symbol)return this.SHSZ;var upperSymbol=symbol.toLocaleUpperCase();//转成大写
|
|
6506
|
-
if(MARKET_SUFFIX_NAME.IsSH(upperSymbol)||MARKET_SUFFIX_NAME.IsSZ(upperSymbol))return this.GetSHSZ(upperSymbol);if(MARKET_SUFFIX_NAME.IsSHO(upperSymbol))return this.GetSHO();if(MARKET_SUFFIX_NAME.IsHK(upperSymbol))return this.GetHK();if(MARKET_SUFFIX_NAME.IsUSA(upperSymbol))return this.GetUSA(true);if(MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol)||MARKET_SUFFIX_NAME.IsCZCE(upperSymbol)||MARKET_SUFFIX_NAME.IsDCE(upperSymbol)||MARKET_SUFFIX_NAME.IsSHFE(upperSymbol)){var splitData=g_FuturesTimeData.GetSplitData(upperSymbol);if(!splitData)return null;return this.GetFutures(splitData);}if(MARKET_SUFFIX_NAME.IsFTSE(upperSymbol))return this.GetFTSE();if(MARKET_SUFFIX_NAME.IsFHK(upperSymbol))return this.GetFHK();if(MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol))return this.GetForeignExchange();if(MARKET_SUFFIX_NAME.IsET(upperSymbol))return this.GetET(upperSymbol);if(MARKET_SUFFIX_NAME.IsBIT(upperSymbol))return this.GetBIT(upperSymbol);if(MARKET_SUFFIX_NAME.IsNYMEX(upperSymbol))//纽约期货交易所
|
|
6509
|
+
if(MARKET_SUFFIX_NAME.IsSH(upperSymbol)||MARKET_SUFFIX_NAME.IsSZ(upperSymbol))return this.GetSHSZ(upperSymbol);if(MARKET_SUFFIX_NAME.IsBJ(upperSymbol))return this.GetBJ(upperSymbol);if(MARKET_SUFFIX_NAME.IsSHO(upperSymbol))return this.GetSHO();if(MARKET_SUFFIX_NAME.IsHK(upperSymbol))return this.GetHK();if(MARKET_SUFFIX_NAME.IsUSA(upperSymbol))return this.GetUSA(true);if(MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol)||MARKET_SUFFIX_NAME.IsCZCE(upperSymbol)||MARKET_SUFFIX_NAME.IsDCE(upperSymbol)||MARKET_SUFFIX_NAME.IsSHFE(upperSymbol)){var splitData=g_FuturesTimeData.GetSplitData(upperSymbol);if(!splitData)return null;return this.GetFutures(splitData);}if(MARKET_SUFFIX_NAME.IsFTSE(upperSymbol))return this.GetFTSE();if(MARKET_SUFFIX_NAME.IsFHK(upperSymbol))return this.GetFHK();if(MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol))return this.GetForeignExchange();if(MARKET_SUFFIX_NAME.IsET(upperSymbol))return this.GetET(upperSymbol);if(MARKET_SUFFIX_NAME.IsBIT(upperSymbol))return this.GetBIT(upperSymbol);if(MARKET_SUFFIX_NAME.IsNYMEX(upperSymbol))//纽约期货交易所
|
|
6507
6510
|
{var splitData=g_NYMEXTimeData.GetSplitData(upperSymbol);if(!splitData)return null;return this.GetFutures(splitData);}if(MARKET_SUFFIX_NAME.IsCOMEX(upperSymbol))//纽约期货交易所
|
|
6508
6511
|
{var splitData=g_COMEXTimeData.GetSplitData(upperSymbol);if(!splitData)return null;return this.GetFutures(splitData);}if(MARKET_SUFFIX_NAME.IsNYBOT(upperSymbol))//纽约期货交易所
|
|
6509
6512
|
{var splitData=g_NYBOTTimeData.GetSplitData(upperSymbol);if(!splitData)return null;return this.GetFutures(splitData);}if(MARKET_SUFFIX_NAME.IsCBOT(upperSymbol))//芝商所
|
|
@@ -6589,8 +6592,8 @@ var FTSE_MINUTE_X_COORDINATE={Full://完整模式
|
|
|
6589
6592
|
[[0,1,"RGB(200,200,200)","06:00"],[240,1,"RGB(200,200,200)","10:00"],[480,0,"RGB(200,200,200)","14:00"],[720,1,"RGB(200,200,200)","18:00"],[960,1,"RGB(200,200,200)","22:00"],[1200,1,"RGB(200,200,200)","02:00"]],Min://最小模式
|
|
6590
6593
|
[[0,1,"RGB(200,200,200)","06:00"],[480,0,"RGB(200,200,200)","14:00"],[960,1,"RGB(200,200,200)","22:00"]],Count:1440,MiddleCount:600,GetData:function GetData(width){if(width<200)return this.Min;else if(width<450)return this.Simple;return this.Full;}};this.GetCoordinateData=function(symbol,width){var data=null;if(!symbol){data=SHZE_MINUTE_X_COORDINATE;//默认沪深股票
|
|
6591
6594
|
}else{var upperSymbol=symbol.toLocaleUpperCase();//转成大写
|
|
6592
|
-
if(MARKET_SUFFIX_NAME.IsSH(upperSymbol)||MARKET_SUFFIX_NAME.IsSZ(upperSymbol)||MARKET_SUFFIX_NAME.IsSHSZIndex(upperSymbol))data=this.GetSHSZData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsSHO(upperSymbol))data=this.GetSHOData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsHK(upperSymbol))data=this.GetHKData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol)||MARKET_SUFFIX_NAME.IsCZCE(upperSymbol)||MARKET_SUFFIX_NAME.IsDCE(upperSymbol)||MARKET_SUFFIX_NAME.IsSHFE(upperSymbol))return this.GetChinatFuturesData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsUSA(upperSymbol))data=this.GetUSAData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsFTSE(upperSymbol))data=this.GetFTSEData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsFHK(upperSymbol))data=this.GetFHKData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol))data=this.GetForeignExchangeData(upperSymbol);else if(MARKET_SUFFIX_NAME.IsBIT(upperSymbol,width))data=this.GetBITData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsET(upperSymbol))data=this.GetETData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsNYMEX(upperSymbol))return data=this.GetNYMEXData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsCOMEX(upperSymbol))return data=this.GetCOMEXData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsNYBOT(upperSymbol))return data=this.GetNYBOTData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsCBOT(upperSymbol))return data=this.GetCBOTData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsLME(upperSymbol))return data=this.GetLMEData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsTOCOM(upperSymbol))return data=this.GetTOCOMData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsIPE(upperSymbol))return data=this.GetIPEData(upperSymbol,width);}//JSConsole.Chart.Log('[MiuteCoordinateData]', width);
|
|
6593
|
-
var result={Count:data.Count,MiddleCount:data.MiddleCount,Data:data.GetData(width)};return result;};this.GetSHSZData=function(upperSymbol,width){var result=SHZE_MINUTE_X_COORDINATE;return result;};this.GetUSAData=function(upperSymbol,width){var result=USA_MINUTE_X_COORDINATE;return result;};this.GetHKData=function(upperSymbol,width){var result=HK_MINUTE_X_COORDINATE;return result;};this.GetSHOData=function(upperSymbol,width){var result=SHO_MINUTE_X_COORDINATE;return result;};this.GetFuturesData=function(upperSymbol,width,timeData){var splitData=timeData.GetSplitData(upperSymbol);if(!splitData)return null;var stringData=g_MinuteTimeStringData.GetFutures(splitData);if(!stringData)return null;var result={Count:stringData.length};var coordinate=null;var minWidth=200,simpleWidth=480;/*
|
|
6595
|
+
if(MARKET_SUFFIX_NAME.IsSH(upperSymbol)||MARKET_SUFFIX_NAME.IsSZ(upperSymbol)||MARKET_SUFFIX_NAME.IsSHSZIndex(upperSymbol))data=this.GetSHSZData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsBJ(upperSymbol))data=this.GetBJData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsSHO(upperSymbol))data=this.GetSHOData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsHK(upperSymbol))data=this.GetHKData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol)||MARKET_SUFFIX_NAME.IsCZCE(upperSymbol)||MARKET_SUFFIX_NAME.IsDCE(upperSymbol)||MARKET_SUFFIX_NAME.IsSHFE(upperSymbol))return this.GetChinatFuturesData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsUSA(upperSymbol))data=this.GetUSAData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsFTSE(upperSymbol))data=this.GetFTSEData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsFHK(upperSymbol))data=this.GetFHKData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol))data=this.GetForeignExchangeData(upperSymbol);else if(MARKET_SUFFIX_NAME.IsBIT(upperSymbol,width))data=this.GetBITData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsET(upperSymbol))data=this.GetETData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsNYMEX(upperSymbol))return data=this.GetNYMEXData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsCOMEX(upperSymbol))return data=this.GetCOMEXData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsNYBOT(upperSymbol))return data=this.GetNYBOTData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsCBOT(upperSymbol))return data=this.GetCBOTData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsLME(upperSymbol))return data=this.GetLMEData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsTOCOM(upperSymbol))return data=this.GetTOCOMData(upperSymbol,width);else if(MARKET_SUFFIX_NAME.IsIPE(upperSymbol))return data=this.GetIPEData(upperSymbol,width);}//JSConsole.Chart.Log('[MiuteCoordinateData]', width);
|
|
6596
|
+
var result={Count:data.Count,MiddleCount:data.MiddleCount,Data:data.GetData(width)};return result;};this.GetSHSZData=function(upperSymbol,width){var result=SHZE_MINUTE_X_COORDINATE;return result;};this.GetBJData=function(upperSymbol,width){var result=SHZE_MINUTE_X_COORDINATE;return result;};this.GetUSAData=function(upperSymbol,width){var result=USA_MINUTE_X_COORDINATE;return result;};this.GetHKData=function(upperSymbol,width){var result=HK_MINUTE_X_COORDINATE;return result;};this.GetSHOData=function(upperSymbol,width){var result=SHO_MINUTE_X_COORDINATE;return result;};this.GetFuturesData=function(upperSymbol,width,timeData){var splitData=timeData.GetSplitData(upperSymbol);if(!splitData)return null;var stringData=g_MinuteTimeStringData.GetFutures(splitData);if(!stringData)return null;var result={Count:stringData.length};var coordinate=null;var minWidth=200,simpleWidth=480;/*
|
|
6594
6597
|
if (splitData.Name =='21:00-1:00,9:00-10:15,10:30-11:30,13:30-15:00')
|
|
6595
6598
|
{
|
|
6596
6599
|
minWidth=250;
|
package/package.json
CHANGED
|
@@ -10537,6 +10537,7 @@ function AverageWidthFrame()
|
|
|
10537
10537
|
this.XBottomOffset=g_JSChartResource.Frame.XBottomOffset; //X轴文字显示向下偏移
|
|
10538
10538
|
this.YTextTopOffset=g_JSChartResource.Frame.YTopOffset; //Y轴顶部文字向下偏移
|
|
10539
10539
|
this.YTextPosition=[0,0], //是坐标否强制画在内部 [0=左侧] [1=右侧] 1=OUT" , 2=INSIDE
|
|
10540
|
+
this.YTextPadding=[g_JSChartResource.Frame.YTextPadding[0], g_JSChartResource.Frame.YTextPadding[1]], //Y轴文字和边框间距 [0=左侧] [1=右侧]
|
|
10540
10541
|
this.IsShowXLine=true; //是否显示X轴刻度线
|
|
10541
10542
|
this.IsShowYLine=true;
|
|
10542
10543
|
this.YInsideOffset=0;
|
|
@@ -10697,7 +10698,7 @@ function AverageWidthFrame()
|
|
|
10697
10698
|
if (item.Font!=null) this.Canvas.font=item.Font;
|
|
10698
10699
|
|
|
10699
10700
|
this.Canvas.textAlign="right";
|
|
10700
|
-
this.Canvas.fillText(item.Message[0],left-
|
|
10701
|
+
this.Canvas.fillText(item.Message[0],left-this.YTextPadding[0],yText);
|
|
10701
10702
|
}
|
|
10702
10703
|
|
|
10703
10704
|
//坐标信息 右边 间距小于10 不画坐标
|
|
@@ -10743,18 +10744,18 @@ function AverageWidthFrame()
|
|
|
10743
10744
|
}
|
|
10744
10745
|
else if (this.MultiTextFormat==2) //显示2行
|
|
10745
10746
|
{
|
|
10746
|
-
this.Canvas.fillText(item.Message[1][0],xText+
|
|
10747
|
+
this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);
|
|
10747
10748
|
var lineHeight=this.Canvas.measureText('M').width;
|
|
10748
|
-
if (itemHeight>lineHeight*2) this.Canvas.fillText(item.Message[1][1],xText+
|
|
10749
|
+
if (itemHeight>lineHeight*2) this.Canvas.fillText(item.Message[1][1],xText+this.YTextPadding[1],yText+lineHeight);
|
|
10749
10750
|
}
|
|
10750
10751
|
else //显示第1行
|
|
10751
10752
|
{
|
|
10752
|
-
this.Canvas.fillText(item.Message[1][0],xText+
|
|
10753
|
+
this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);
|
|
10753
10754
|
}
|
|
10754
10755
|
}
|
|
10755
10756
|
else
|
|
10756
10757
|
{
|
|
10757
|
-
this.Canvas.fillText(item.Message[1],xText+
|
|
10758
|
+
this.Canvas.fillText(item.Message[1],xText+this.YTextPadding[1],yText);
|
|
10758
10759
|
}
|
|
10759
10760
|
|
|
10760
10761
|
}
|
|
@@ -11594,6 +11595,9 @@ function AverageWidthFrame()
|
|
|
11594
11595
|
}
|
|
11595
11596
|
|
|
11596
11597
|
if (IFrameSplitOperator.IsNumber(width.Right)) width.Right+=rightExtendWidth;
|
|
11598
|
+
|
|
11599
|
+
if (IFrameSplitOperator.IsNumber(width.Left)) width.Left+=this.YTextPadding[0];
|
|
11600
|
+
if (IFrameSplitOperator.IsNumber(width.Right)) width.Right+=this.YTextPadding[1];
|
|
11597
11601
|
|
|
11598
11602
|
return { TextWidth:width };
|
|
11599
11603
|
}
|
|
@@ -19125,8 +19129,8 @@ var ZOOM_SEED= //0=柱子宽度 1=间距
|
|
|
19125
19129
|
[32,8], [28,8],
|
|
19126
19130
|
[24,7], [20,7],
|
|
19127
19131
|
[18,6], [16,6],
|
|
19128
|
-
[
|
|
19129
|
-
[
|
|
19132
|
+
[15,5], [13,5],
|
|
19133
|
+
[9,4], [7,4], [5,4],
|
|
19130
19134
|
|
|
19131
19135
|
[3,3],
|
|
19132
19136
|
[3,1], [2,1], [1,1], [1,0],
|
|
@@ -19650,6 +19654,11 @@ function ChartKLine()
|
|
|
19650
19654
|
{
|
|
19651
19655
|
if (dataWidth>=4)
|
|
19652
19656
|
{
|
|
19657
|
+
if (drawType==3)
|
|
19658
|
+
{
|
|
19659
|
+
if ((dataWidth%2)!=0) dataWidth-=1;
|
|
19660
|
+
}
|
|
19661
|
+
|
|
19653
19662
|
this.Canvas.strokeStyle=upColor;
|
|
19654
19663
|
if (data.High>data.Close) //上影线
|
|
19655
19664
|
{
|
|
@@ -19661,8 +19670,18 @@ function ChartKLine()
|
|
|
19661
19670
|
}
|
|
19662
19671
|
else
|
|
19663
19672
|
{
|
|
19664
|
-
|
|
19665
|
-
|
|
19673
|
+
if (drawType==3)
|
|
19674
|
+
{
|
|
19675
|
+
var xFixed=left+dataWidth/2;
|
|
19676
|
+
this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(y));
|
|
19677
|
+
this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(Math.min(yClose,yOpen)));
|
|
19678
|
+
}
|
|
19679
|
+
else
|
|
19680
|
+
{
|
|
19681
|
+
this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));
|
|
19682
|
+
this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yClose));
|
|
19683
|
+
}
|
|
19684
|
+
|
|
19666
19685
|
}
|
|
19667
19686
|
this.Canvas.stroke();
|
|
19668
19687
|
y=yClose;
|
|
@@ -19724,8 +19743,18 @@ function ChartKLine()
|
|
|
19724
19743
|
}
|
|
19725
19744
|
else
|
|
19726
19745
|
{
|
|
19727
|
-
|
|
19728
|
-
|
|
19746
|
+
if (drawType==3)
|
|
19747
|
+
{
|
|
19748
|
+
var xFixed=left+dataWidth/2;
|
|
19749
|
+
this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(Math.max(yClose,yOpen)));
|
|
19750
|
+
this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(yLow));
|
|
19751
|
+
}
|
|
19752
|
+
else
|
|
19753
|
+
{
|
|
19754
|
+
this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));
|
|
19755
|
+
this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yLow));
|
|
19756
|
+
}
|
|
19757
|
+
|
|
19729
19758
|
}
|
|
19730
19759
|
this.Canvas.stroke();
|
|
19731
19760
|
}
|
|
@@ -19824,6 +19853,7 @@ function ChartKLine()
|
|
|
19824
19853
|
{
|
|
19825
19854
|
if (dataWidth>=4)
|
|
19826
19855
|
{
|
|
19856
|
+
if ((dataWidth%2)!=0) dataWidth-=1;
|
|
19827
19857
|
this.Canvas.strokeStyle=unchagneColor;
|
|
19828
19858
|
this.Canvas.beginPath();
|
|
19829
19859
|
if (data.High>data.Close) //上影线
|
|
@@ -19835,8 +19865,9 @@ function ChartKLine()
|
|
|
19835
19865
|
}
|
|
19836
19866
|
else
|
|
19837
19867
|
{
|
|
19838
|
-
|
|
19839
|
-
this.Canvas.
|
|
19868
|
+
var xFixed=ToFixedPoint(left+dataWidth/2);
|
|
19869
|
+
this.Canvas.moveTo(xFixed,y);
|
|
19870
|
+
this.Canvas.lineTo(xFixed,yOpen);
|
|
19840
19871
|
}
|
|
19841
19872
|
y=yOpen;
|
|
19842
19873
|
}
|
|
@@ -19853,7 +19884,7 @@ function ChartKLine()
|
|
|
19853
19884
|
else
|
|
19854
19885
|
{
|
|
19855
19886
|
this.Canvas.moveTo(ToFixedPoint(left),ToFixedPoint(y));
|
|
19856
|
-
this.Canvas.lineTo(ToFixedPoint(
|
|
19887
|
+
this.Canvas.lineTo(ToFixedPoint(left+dataWidth),ToFixedPoint(y));
|
|
19857
19888
|
}
|
|
19858
19889
|
|
|
19859
19890
|
if (data.Open>data.Low) //下影线
|
|
@@ -19865,8 +19896,9 @@ function ChartKLine()
|
|
|
19865
19896
|
}
|
|
19866
19897
|
else
|
|
19867
19898
|
{
|
|
19868
|
-
|
|
19869
|
-
this.Canvas.
|
|
19899
|
+
var xFixed=ToFixedPoint(left+dataWidth/2);
|
|
19900
|
+
this.Canvas.moveTo(xFixed,ToFixedPoint(y));
|
|
19901
|
+
this.Canvas.lineTo(xFixed,ToFixedPoint(yLow));
|
|
19870
19902
|
}
|
|
19871
19903
|
}
|
|
19872
19904
|
|
|
@@ -43397,7 +43429,8 @@ function JSChartResource()
|
|
|
43397
43429
|
this.FrameTitleBGColor="rgb(246,251,253)"; //标题栏背景色
|
|
43398
43430
|
this.Frame={
|
|
43399
43431
|
XBottomOffset:1*GetDevicePixelRatio(), //X轴文字向下偏移
|
|
43400
|
-
YTopOffset:2*GetDevicePixelRatio() //Y轴顶部文字向下偏移
|
|
43432
|
+
YTopOffset:2*GetDevicePixelRatio(), //Y轴顶部文字向下偏移
|
|
43433
|
+
YTextPadding:[2,2]
|
|
43401
43434
|
};
|
|
43402
43435
|
|
|
43403
43436
|
//百分比坐标文字颜色
|
|
@@ -62088,6 +62121,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
62088
62121
|
SH:'.SH',
|
|
62089
62122
|
SZ:'.SZ',
|
|
62090
62123
|
SHSZ_C_Index:'.CI', //自定义指数
|
|
62124
|
+
BJ:".BJ", //北交所 BeiJing stock exchange
|
|
62091
62125
|
|
|
62092
62126
|
SHO:'.SHO', //上海交易所 股票期权
|
|
62093
62127
|
HK:'.HK', //港股
|
|
@@ -62216,6 +62250,13 @@ var MARKET_SUFFIX_NAME=
|
|
|
62216
62250
|
return find == pos;
|
|
62217
62251
|
},
|
|
62218
62252
|
|
|
62253
|
+
IsBJ:function(upperSymbol)
|
|
62254
|
+
{
|
|
62255
|
+
var pos = upperSymbol.length - this.BJ.length;
|
|
62256
|
+
var find = upperSymbol.indexOf(this.BJ);
|
|
62257
|
+
return find == pos;
|
|
62258
|
+
},
|
|
62259
|
+
|
|
62219
62260
|
//自定义指数
|
|
62220
62261
|
IsSHSZCustomIndex:function(upperSymbol)
|
|
62221
62262
|
{
|
|
@@ -62348,6 +62389,19 @@ var MARKET_SUFFIX_NAME=
|
|
|
62348
62389
|
return false;
|
|
62349
62390
|
},
|
|
62350
62391
|
|
|
62392
|
+
IsBJStock:function(symbol) //北交所股票
|
|
62393
|
+
{
|
|
62394
|
+
if (!symbol) return false;
|
|
62395
|
+
var upperSymbol=symbol.toUpperCase();
|
|
62396
|
+
if (!this.IsBJ(upperSymbol)) return false;
|
|
62397
|
+
|
|
62398
|
+
var value=upperSymbol.charAt(0);
|
|
62399
|
+
|
|
62400
|
+
if (value=='4' || value=='8') return true;
|
|
62401
|
+
|
|
62402
|
+
return false;
|
|
62403
|
+
},
|
|
62404
|
+
|
|
62351
62405
|
IsSHStockSTAR:function(symbol) // 是否是科创板 Sci-Tech innovAtion boaRd (STAR Market)
|
|
62352
62406
|
{
|
|
62353
62407
|
if (!symbol) return false;
|
|
@@ -62606,7 +62660,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
62606
62660
|
|
|
62607
62661
|
IsEnableRight:function(period, symbol) //是否支持复权
|
|
62608
62662
|
{
|
|
62609
|
-
if (!MARKET_SUFFIX_NAME.IsSHSZStockA(symbol)) return false;
|
|
62663
|
+
if (!MARKET_SUFFIX_NAME.IsSHSZStockA(symbol) || !MARKET_SUFFIX_NAME.IsBJStock(symbol)) return false;
|
|
62610
62664
|
if (ChartData.IsTickPeriod(period)) return false; //分笔没有复权
|
|
62611
62665
|
if (ChartData.IsMinutePeriod(period,true)) return false; //内置分钟K线不支持复权
|
|
62612
62666
|
|
|
@@ -62619,6 +62673,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
62619
62673
|
function MinuteTimeStringData()
|
|
62620
62674
|
{
|
|
62621
62675
|
this.SHSZ = null; //上海深证交易所时间
|
|
62676
|
+
this.BJ=null;
|
|
62622
62677
|
this.SHO=null; //上海股票期权交易时间
|
|
62623
62678
|
this.HK = null; //香港交易所时间
|
|
62624
62679
|
this.Futures=new Map(); //期货交易时间 key=时间名称 Value=数据
|
|
@@ -62645,6 +62700,12 @@ function MinuteTimeStringData()
|
|
|
62645
62700
|
return this.SHSZ;
|
|
62646
62701
|
}
|
|
62647
62702
|
|
|
62703
|
+
this.GetBJ=function(upperSymbol)
|
|
62704
|
+
{
|
|
62705
|
+
if (!this.BJ) this.BJ=this.CreateBJData();
|
|
62706
|
+
return this.BJ;
|
|
62707
|
+
}
|
|
62708
|
+
|
|
62648
62709
|
this.GetSHO=function()
|
|
62649
62710
|
{
|
|
62650
62711
|
if (!this.SHO) this.SHO=this.CreateSHOData();
|
|
@@ -62710,6 +62771,18 @@ function MinuteTimeStringData()
|
|
|
62710
62771
|
return this.CreateTimeData(TIME_SPLIT);
|
|
62711
62772
|
}
|
|
62712
62773
|
|
|
62774
|
+
this.CreateBJData=function()
|
|
62775
|
+
{
|
|
62776
|
+
const TIME_SPLIT =
|
|
62777
|
+
[
|
|
62778
|
+
{ Start: 925, End: 925 },
|
|
62779
|
+
{ Start: 930, End: 1130 },
|
|
62780
|
+
{ Start: 1300, End: 1500 }
|
|
62781
|
+
];
|
|
62782
|
+
|
|
62783
|
+
return this.CreateTimeData(TIME_SPLIT);
|
|
62784
|
+
}
|
|
62785
|
+
|
|
62713
62786
|
this.CreateSHOData=function()
|
|
62714
62787
|
{
|
|
62715
62788
|
const TIME_SPLIT =
|
|
@@ -62836,6 +62909,7 @@ function MinuteTimeStringData()
|
|
|
62836
62909
|
|
|
62837
62910
|
var upperSymbol = symbol.toLocaleUpperCase(); //转成大写
|
|
62838
62911
|
if (MARKET_SUFFIX_NAME.IsSH(upperSymbol) || MARKET_SUFFIX_NAME.IsSZ(upperSymbol)) return this.GetSHSZ(upperSymbol);
|
|
62912
|
+
if (MARKET_SUFFIX_NAME.IsBJ(upperSymbol)) return this.GetBJ(upperSymbol);
|
|
62839
62913
|
if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol)) return this.GetSHO();
|
|
62840
62914
|
if (MARKET_SUFFIX_NAME.IsHK(upperSymbol)) return this.GetHK();
|
|
62841
62915
|
if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol)) return this.GetUSA(true);
|
|
@@ -63271,6 +63345,8 @@ function MinuteCoordinateData()
|
|
|
63271
63345
|
var upperSymbol = symbol.toLocaleUpperCase(); //转成大写
|
|
63272
63346
|
if (MARKET_SUFFIX_NAME.IsSH(upperSymbol) || MARKET_SUFFIX_NAME.IsSZ(upperSymbol) || MARKET_SUFFIX_NAME.IsSHSZIndex(upperSymbol))
|
|
63273
63347
|
data = this.GetSHSZData(upperSymbol,width);
|
|
63348
|
+
else if (MARKET_SUFFIX_NAME.IsBJ(upperSymbol))
|
|
63349
|
+
data=this.GetBJData(upperSymbol,width);
|
|
63274
63350
|
else if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol))
|
|
63275
63351
|
data=this.GetSHOData(upperSymbol,width);
|
|
63276
63352
|
else if (MARKET_SUFFIX_NAME.IsHK(upperSymbol))
|
|
@@ -63317,10 +63393,15 @@ function MinuteCoordinateData()
|
|
|
63317
63393
|
return result;
|
|
63318
63394
|
}
|
|
63319
63395
|
|
|
63396
|
+
this.GetBJData=function(upperSymbol,width)
|
|
63397
|
+
{
|
|
63398
|
+
var result=SHZE_MINUTE_X_COORDINATE;
|
|
63399
|
+
return result;
|
|
63400
|
+
}
|
|
63401
|
+
|
|
63320
63402
|
this.GetUSAData=function(upperSymbol,width)
|
|
63321
63403
|
{
|
|
63322
63404
|
var result=USA_MINUTE_X_COORDINATE;
|
|
63323
|
-
|
|
63324
63405
|
return result;
|
|
63325
63406
|
}
|
|
63326
63407
|
|
|
@@ -10581,6 +10581,7 @@ function AverageWidthFrame()
|
|
|
10581
10581
|
this.XBottomOffset=g_JSChartResource.Frame.XBottomOffset; //X轴文字显示向下偏移
|
|
10582
10582
|
this.YTextTopOffset=g_JSChartResource.Frame.YTopOffset; //Y轴顶部文字向下偏移
|
|
10583
10583
|
this.YTextPosition=[0,0], //是坐标否强制画在内部 [0=左侧] [1=右侧] 1=OUT" , 2=INSIDE
|
|
10584
|
+
this.YTextPadding=[g_JSChartResource.Frame.YTextPadding[0], g_JSChartResource.Frame.YTextPadding[1]], //Y轴文字和边框间距 [0=左侧] [1=右侧]
|
|
10584
10585
|
this.IsShowXLine=true; //是否显示X轴刻度线
|
|
10585
10586
|
this.IsShowYLine=true;
|
|
10586
10587
|
this.YInsideOffset=0;
|
|
@@ -10741,7 +10742,7 @@ function AverageWidthFrame()
|
|
|
10741
10742
|
if (item.Font!=null) this.Canvas.font=item.Font;
|
|
10742
10743
|
|
|
10743
10744
|
this.Canvas.textAlign="right";
|
|
10744
|
-
this.Canvas.fillText(item.Message[0],left-
|
|
10745
|
+
this.Canvas.fillText(item.Message[0],left-this.YTextPadding[0],yText);
|
|
10745
10746
|
}
|
|
10746
10747
|
|
|
10747
10748
|
//坐标信息 右边 间距小于10 不画坐标
|
|
@@ -10787,18 +10788,18 @@ function AverageWidthFrame()
|
|
|
10787
10788
|
}
|
|
10788
10789
|
else if (this.MultiTextFormat==2) //显示2行
|
|
10789
10790
|
{
|
|
10790
|
-
this.Canvas.fillText(item.Message[1][0],xText+
|
|
10791
|
+
this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);
|
|
10791
10792
|
var lineHeight=this.Canvas.measureText('M').width;
|
|
10792
|
-
if (itemHeight>lineHeight*2) this.Canvas.fillText(item.Message[1][1],xText+
|
|
10793
|
+
if (itemHeight>lineHeight*2) this.Canvas.fillText(item.Message[1][1],xText+this.YTextPadding[1],yText+lineHeight);
|
|
10793
10794
|
}
|
|
10794
10795
|
else //显示第1行
|
|
10795
10796
|
{
|
|
10796
|
-
this.Canvas.fillText(item.Message[1][0],xText+
|
|
10797
|
+
this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);
|
|
10797
10798
|
}
|
|
10798
10799
|
}
|
|
10799
10800
|
else
|
|
10800
10801
|
{
|
|
10801
|
-
this.Canvas.fillText(item.Message[1],xText+
|
|
10802
|
+
this.Canvas.fillText(item.Message[1],xText+this.YTextPadding[1],yText);
|
|
10802
10803
|
}
|
|
10803
10804
|
|
|
10804
10805
|
}
|
|
@@ -11638,6 +11639,9 @@ function AverageWidthFrame()
|
|
|
11638
11639
|
}
|
|
11639
11640
|
|
|
11640
11641
|
if (IFrameSplitOperator.IsNumber(width.Right)) width.Right+=rightExtendWidth;
|
|
11642
|
+
|
|
11643
|
+
if (IFrameSplitOperator.IsNumber(width.Left)) width.Left+=this.YTextPadding[0];
|
|
11644
|
+
if (IFrameSplitOperator.IsNumber(width.Right)) width.Right+=this.YTextPadding[1];
|
|
11641
11645
|
|
|
11642
11646
|
return { TextWidth:width };
|
|
11643
11647
|
}
|
|
@@ -19169,8 +19173,8 @@ var ZOOM_SEED= //0=柱子宽度 1=间距
|
|
|
19169
19173
|
[32,8], [28,8],
|
|
19170
19174
|
[24,7], [20,7],
|
|
19171
19175
|
[18,6], [16,6],
|
|
19172
|
-
[
|
|
19173
|
-
[
|
|
19176
|
+
[15,5], [13,5],
|
|
19177
|
+
[9,4], [7,4], [5,4],
|
|
19174
19178
|
|
|
19175
19179
|
[3,3],
|
|
19176
19180
|
[3,1], [2,1], [1,1], [1,0],
|
|
@@ -19694,6 +19698,11 @@ function ChartKLine()
|
|
|
19694
19698
|
{
|
|
19695
19699
|
if (dataWidth>=4)
|
|
19696
19700
|
{
|
|
19701
|
+
if (drawType==3)
|
|
19702
|
+
{
|
|
19703
|
+
if ((dataWidth%2)!=0) dataWidth-=1;
|
|
19704
|
+
}
|
|
19705
|
+
|
|
19697
19706
|
this.Canvas.strokeStyle=upColor;
|
|
19698
19707
|
if (data.High>data.Close) //上影线
|
|
19699
19708
|
{
|
|
@@ -19705,8 +19714,18 @@ function ChartKLine()
|
|
|
19705
19714
|
}
|
|
19706
19715
|
else
|
|
19707
19716
|
{
|
|
19708
|
-
|
|
19709
|
-
|
|
19717
|
+
if (drawType==3)
|
|
19718
|
+
{
|
|
19719
|
+
var xFixed=left+dataWidth/2;
|
|
19720
|
+
this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(y));
|
|
19721
|
+
this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(Math.min(yClose,yOpen)));
|
|
19722
|
+
}
|
|
19723
|
+
else
|
|
19724
|
+
{
|
|
19725
|
+
this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));
|
|
19726
|
+
this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yClose));
|
|
19727
|
+
}
|
|
19728
|
+
|
|
19710
19729
|
}
|
|
19711
19730
|
this.Canvas.stroke();
|
|
19712
19731
|
y=yClose;
|
|
@@ -19768,8 +19787,18 @@ function ChartKLine()
|
|
|
19768
19787
|
}
|
|
19769
19788
|
else
|
|
19770
19789
|
{
|
|
19771
|
-
|
|
19772
|
-
|
|
19790
|
+
if (drawType==3)
|
|
19791
|
+
{
|
|
19792
|
+
var xFixed=left+dataWidth/2;
|
|
19793
|
+
this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(Math.max(yClose,yOpen)));
|
|
19794
|
+
this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(yLow));
|
|
19795
|
+
}
|
|
19796
|
+
else
|
|
19797
|
+
{
|
|
19798
|
+
this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));
|
|
19799
|
+
this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yLow));
|
|
19800
|
+
}
|
|
19801
|
+
|
|
19773
19802
|
}
|
|
19774
19803
|
this.Canvas.stroke();
|
|
19775
19804
|
}
|
|
@@ -19868,6 +19897,7 @@ function ChartKLine()
|
|
|
19868
19897
|
{
|
|
19869
19898
|
if (dataWidth>=4)
|
|
19870
19899
|
{
|
|
19900
|
+
if ((dataWidth%2)!=0) dataWidth-=1;
|
|
19871
19901
|
this.Canvas.strokeStyle=unchagneColor;
|
|
19872
19902
|
this.Canvas.beginPath();
|
|
19873
19903
|
if (data.High>data.Close) //上影线
|
|
@@ -19879,8 +19909,9 @@ function ChartKLine()
|
|
|
19879
19909
|
}
|
|
19880
19910
|
else
|
|
19881
19911
|
{
|
|
19882
|
-
|
|
19883
|
-
this.Canvas.
|
|
19912
|
+
var xFixed=ToFixedPoint(left+dataWidth/2);
|
|
19913
|
+
this.Canvas.moveTo(xFixed,y);
|
|
19914
|
+
this.Canvas.lineTo(xFixed,yOpen);
|
|
19884
19915
|
}
|
|
19885
19916
|
y=yOpen;
|
|
19886
19917
|
}
|
|
@@ -19897,7 +19928,7 @@ function ChartKLine()
|
|
|
19897
19928
|
else
|
|
19898
19929
|
{
|
|
19899
19930
|
this.Canvas.moveTo(ToFixedPoint(left),ToFixedPoint(y));
|
|
19900
|
-
this.Canvas.lineTo(ToFixedPoint(
|
|
19931
|
+
this.Canvas.lineTo(ToFixedPoint(left+dataWidth),ToFixedPoint(y));
|
|
19901
19932
|
}
|
|
19902
19933
|
|
|
19903
19934
|
if (data.Open>data.Low) //下影线
|
|
@@ -19909,8 +19940,9 @@ function ChartKLine()
|
|
|
19909
19940
|
}
|
|
19910
19941
|
else
|
|
19911
19942
|
{
|
|
19912
|
-
|
|
19913
|
-
this.Canvas.
|
|
19943
|
+
var xFixed=ToFixedPoint(left+dataWidth/2);
|
|
19944
|
+
this.Canvas.moveTo(xFixed,ToFixedPoint(y));
|
|
19945
|
+
this.Canvas.lineTo(xFixed,ToFixedPoint(yLow));
|
|
19914
19946
|
}
|
|
19915
19947
|
}
|
|
19916
19948
|
|
|
@@ -43441,7 +43473,8 @@ function JSChartResource()
|
|
|
43441
43473
|
this.FrameTitleBGColor="rgb(246,251,253)"; //标题栏背景色
|
|
43442
43474
|
this.Frame={
|
|
43443
43475
|
XBottomOffset:1*GetDevicePixelRatio(), //X轴文字向下偏移
|
|
43444
|
-
YTopOffset:2*GetDevicePixelRatio() //Y轴顶部文字向下偏移
|
|
43476
|
+
YTopOffset:2*GetDevicePixelRatio(), //Y轴顶部文字向下偏移
|
|
43477
|
+
YTextPadding:[2,2]
|
|
43445
43478
|
};
|
|
43446
43479
|
|
|
43447
43480
|
//百分比坐标文字颜色
|
|
@@ -62132,6 +62165,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
62132
62165
|
SH:'.SH',
|
|
62133
62166
|
SZ:'.SZ',
|
|
62134
62167
|
SHSZ_C_Index:'.CI', //自定义指数
|
|
62168
|
+
BJ:".BJ", //北交所 BeiJing stock exchange
|
|
62135
62169
|
|
|
62136
62170
|
SHO:'.SHO', //上海交易所 股票期权
|
|
62137
62171
|
HK:'.HK', //港股
|
|
@@ -62260,6 +62294,13 @@ var MARKET_SUFFIX_NAME=
|
|
|
62260
62294
|
return find == pos;
|
|
62261
62295
|
},
|
|
62262
62296
|
|
|
62297
|
+
IsBJ:function(upperSymbol)
|
|
62298
|
+
{
|
|
62299
|
+
var pos = upperSymbol.length - this.BJ.length;
|
|
62300
|
+
var find = upperSymbol.indexOf(this.BJ);
|
|
62301
|
+
return find == pos;
|
|
62302
|
+
},
|
|
62303
|
+
|
|
62263
62304
|
//自定义指数
|
|
62264
62305
|
IsSHSZCustomIndex:function(upperSymbol)
|
|
62265
62306
|
{
|
|
@@ -62392,6 +62433,19 @@ var MARKET_SUFFIX_NAME=
|
|
|
62392
62433
|
return false;
|
|
62393
62434
|
},
|
|
62394
62435
|
|
|
62436
|
+
IsBJStock:function(symbol) //北交所股票
|
|
62437
|
+
{
|
|
62438
|
+
if (!symbol) return false;
|
|
62439
|
+
var upperSymbol=symbol.toUpperCase();
|
|
62440
|
+
if (!this.IsBJ(upperSymbol)) return false;
|
|
62441
|
+
|
|
62442
|
+
var value=upperSymbol.charAt(0);
|
|
62443
|
+
|
|
62444
|
+
if (value=='4' || value=='8') return true;
|
|
62445
|
+
|
|
62446
|
+
return false;
|
|
62447
|
+
},
|
|
62448
|
+
|
|
62395
62449
|
IsSHStockSTAR:function(symbol) // 是否是科创板 Sci-Tech innovAtion boaRd (STAR Market)
|
|
62396
62450
|
{
|
|
62397
62451
|
if (!symbol) return false;
|
|
@@ -62650,7 +62704,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
62650
62704
|
|
|
62651
62705
|
IsEnableRight:function(period, symbol) //是否支持复权
|
|
62652
62706
|
{
|
|
62653
|
-
if (!MARKET_SUFFIX_NAME.IsSHSZStockA(symbol)) return false;
|
|
62707
|
+
if (!MARKET_SUFFIX_NAME.IsSHSZStockA(symbol) || !MARKET_SUFFIX_NAME.IsBJStock(symbol)) return false;
|
|
62654
62708
|
if (ChartData.IsTickPeriod(period)) return false; //分笔没有复权
|
|
62655
62709
|
if (ChartData.IsMinutePeriod(period,true)) return false; //内置分钟K线不支持复权
|
|
62656
62710
|
|
|
@@ -62663,6 +62717,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
62663
62717
|
function MinuteTimeStringData()
|
|
62664
62718
|
{
|
|
62665
62719
|
this.SHSZ = null; //上海深证交易所时间
|
|
62720
|
+
this.BJ=null;
|
|
62666
62721
|
this.SHO=null; //上海股票期权交易时间
|
|
62667
62722
|
this.HK = null; //香港交易所时间
|
|
62668
62723
|
this.Futures=new Map(); //期货交易时间 key=时间名称 Value=数据
|
|
@@ -62689,6 +62744,12 @@ function MinuteTimeStringData()
|
|
|
62689
62744
|
return this.SHSZ;
|
|
62690
62745
|
}
|
|
62691
62746
|
|
|
62747
|
+
this.GetBJ=function(upperSymbol)
|
|
62748
|
+
{
|
|
62749
|
+
if (!this.BJ) this.BJ=this.CreateBJData();
|
|
62750
|
+
return this.BJ;
|
|
62751
|
+
}
|
|
62752
|
+
|
|
62692
62753
|
this.GetSHO=function()
|
|
62693
62754
|
{
|
|
62694
62755
|
if (!this.SHO) this.SHO=this.CreateSHOData();
|
|
@@ -62754,6 +62815,18 @@ function MinuteTimeStringData()
|
|
|
62754
62815
|
return this.CreateTimeData(TIME_SPLIT);
|
|
62755
62816
|
}
|
|
62756
62817
|
|
|
62818
|
+
this.CreateBJData=function()
|
|
62819
|
+
{
|
|
62820
|
+
const TIME_SPLIT =
|
|
62821
|
+
[
|
|
62822
|
+
{ Start: 925, End: 925 },
|
|
62823
|
+
{ Start: 930, End: 1130 },
|
|
62824
|
+
{ Start: 1300, End: 1500 }
|
|
62825
|
+
];
|
|
62826
|
+
|
|
62827
|
+
return this.CreateTimeData(TIME_SPLIT);
|
|
62828
|
+
}
|
|
62829
|
+
|
|
62757
62830
|
this.CreateSHOData=function()
|
|
62758
62831
|
{
|
|
62759
62832
|
const TIME_SPLIT =
|
|
@@ -62880,6 +62953,7 @@ function MinuteTimeStringData()
|
|
|
62880
62953
|
|
|
62881
62954
|
var upperSymbol = symbol.toLocaleUpperCase(); //转成大写
|
|
62882
62955
|
if (MARKET_SUFFIX_NAME.IsSH(upperSymbol) || MARKET_SUFFIX_NAME.IsSZ(upperSymbol)) return this.GetSHSZ(upperSymbol);
|
|
62956
|
+
if (MARKET_SUFFIX_NAME.IsBJ(upperSymbol)) return this.GetBJ(upperSymbol);
|
|
62883
62957
|
if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol)) return this.GetSHO();
|
|
62884
62958
|
if (MARKET_SUFFIX_NAME.IsHK(upperSymbol)) return this.GetHK();
|
|
62885
62959
|
if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol)) return this.GetUSA(true);
|
|
@@ -63315,6 +63389,8 @@ function MinuteCoordinateData()
|
|
|
63315
63389
|
var upperSymbol = symbol.toLocaleUpperCase(); //转成大写
|
|
63316
63390
|
if (MARKET_SUFFIX_NAME.IsSH(upperSymbol) || MARKET_SUFFIX_NAME.IsSZ(upperSymbol) || MARKET_SUFFIX_NAME.IsSHSZIndex(upperSymbol))
|
|
63317
63391
|
data = this.GetSHSZData(upperSymbol,width);
|
|
63392
|
+
else if (MARKET_SUFFIX_NAME.IsBJ(upperSymbol))
|
|
63393
|
+
data=this.GetBJData(upperSymbol,width);
|
|
63318
63394
|
else if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol))
|
|
63319
63395
|
data=this.GetSHOData(upperSymbol,width);
|
|
63320
63396
|
else if (MARKET_SUFFIX_NAME.IsHK(upperSymbol))
|
|
@@ -63361,10 +63437,15 @@ function MinuteCoordinateData()
|
|
|
63361
63437
|
return result;
|
|
63362
63438
|
}
|
|
63363
63439
|
|
|
63440
|
+
this.GetBJData=function(upperSymbol,width)
|
|
63441
|
+
{
|
|
63442
|
+
var result=SHZE_MINUTE_X_COORDINATE;
|
|
63443
|
+
return result;
|
|
63444
|
+
}
|
|
63445
|
+
|
|
63364
63446
|
this.GetUSAData=function(upperSymbol,width)
|
|
63365
63447
|
{
|
|
63366
63448
|
var result=USA_MINUTE_X_COORDINATE;
|
|
63367
|
-
|
|
63368
63449
|
return result;
|
|
63369
63450
|
}
|
|
63370
63451
|
|