hqchart 1.1.13138 → 1.1.13140
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
|
@@ -1779,13 +1779,15 @@ this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.To
|
|
|
1779
1779
|
{var left=x;var top=y;var format=g_DivTooltipDataForamt.Create('ChartDrawSVGDataStringFormat');format.Value=toolTip;format.Symbol=this.Symbol;format.Period=this.Period;format.LanguageID=this.LanguageID;if(!format.Operator())return;var width=format.Width;this.Tooltip.className='jchart-chartdrawsvg-tooltip';//ChartDrawSVG指标数据
|
|
1780
1780
|
this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.Tooltip.style.top=top+xMove+"px";this.Tooltip.style.width=width+"px";this.Tooltip.style.height=null;this.Tooltip.innerHTML=format.Text;this.Tooltip.style.display="block";}};this.UpdateDOMTooltip=function(toolTipType,data){var _this12=this;if(!this.TooltipCache.IsShow)return;if(this.TooltipCache.Type!=toolTipType)return;if(!this.TooltipCache.Data)return;if(this.TooltipCache.Type===0){if(!data||!IFrameSplitOperator.IsNonEmptyArray(data.Data))return;var lastItem=data.Data[data.Data.length-1];if(lastItem.Date!=this.TooltipCache.Data.Date)return;if(IFrameSplitOperator.IsNumber(lastItem.Time)&&lastItem.Time!=this.TooltipCache.Data.Time)return;var klinePaint=this.ChartPaint[0];var format=g_DivTooltipDataForamt.Create('HistoryDataStringFormat');format.Value={Data:lastItem,ChartPaint:klinePaint,Type:this.TooltipCache.Type};format.Symbol=this.Symbol;format.LanguageID=this.LanguageID;format.GetEventCallback=function(id){return _this12.GetEventCallback(id);};if(!format.Operator())return;if(format.Text==this.TooltipCache.InnerHTML)return;this.Tooltip.innerHTML=format.Text;this.TooltipCache.InnerHTML=format.Text;}};this.HideTooltip=function(){this.TooltipCache.IsShow=false;this.TooltipCache.Type=null;this.TooltipCache.InnerHTML=null;this.TooltipCache.Data=null;if(this.Tooltip.style.display!="none")this.Tooltip.style.display="none";};this.ShowSelectRect=function(x,y,x2,y2){var left=x;var top=y;var border=this.Frame.ChartBorder.GetBorder();var borderRight=border.Right;var borderLeft=border.Left;if(x>borderRight)x=borderRight;if(x2>borderRight)x2=borderRight;if(x<borderLeft)x=borderLeft;if(x2<borderLeft)x2=borderLeft;if(x>x2)left=x2;if(y>y2)top=y2;var width=Math.abs(x-x2);var height=Math.abs(y-y2);this.SelectRect.style.width=width+"px";this.SelectRect.style.height=height+"px";this.SelectRect.style.position="absolute";this.SelectRect.style.left=left+"px";this.SelectRect.style.top=top+"px";this.SelectRect.style.display="block";};this.UpdateSelectRect=function(start,end){if(!this.ChartPaint[0].Data)return;var paint=this.GetRectSelectPaint();if(!paint)return;var data=this.ChartPaint[0].Data;var startItem=data.Data[start];var endItem=data.Data[end];JSConsole.Chart.Log('[JSChartContainer::UpdateSelectRect]',startItem,endItem);paint.SetPoint(startItem,{Index:0,DataIndex:start});paint.SetPoint(endItem,{Index:1,DataIndex:end});this.Draw();};this.HideSelectRect=function(){this.SelectRect.style.display="none";};this.ResetFrameXYSplit=function(){if(typeof this.Frame.ResetXYSplit=='function')this.Frame.ResetXYSplit();};this.ResetFrameXSplit=function(){if(typeof this.Frame.ResetXSplit=='function')this.Frame.ResetXSplit();};this.UpdateFrameMaxMinV2=function(){var mapFrame=new _map2.default();//key=frameid, value:{ ChartPaint:[] }
|
|
1781
1781
|
for(var i=0;i<this.Frame.SubFrame.length;++i){var subItem=this.Frame.SubFrame[i];if(!subItem||!subItem.Frame)continue;var frame=subItem.Frame;var key=frame.Identify;var item={ID:key,Frame:frame,ChartPaint:[],Max:null,Min:null,OverlayFrame:[],//共享坐标
|
|
1782
|
-
SingleOverlay:[]
|
|
1783
|
-
|
|
1782
|
+
SingleOverlay:[],//独立坐标
|
|
1783
|
+
MainOverlayFrame:[null,null]//叠加坐标在主坐标显示[0]=left [1]=right
|
|
1784
|
+
};for(var j=0;j<subItem.OverlayIndex.length;++j){var overlayItem=subItem.OverlayIndex[j];var overlayFrame=overlayItem.Frame;if(overlayFrame.IsShowMainFrame===1)item.MainOverlayFrame[0]=overlayFrame;else if(overlayFrame.IsShowMainFrame===2)item.MainOverlayFrame[1]=overlayFrame;if(overlayFrame.IsShareY){if(!overlayFrame.MainFrame)continue;if(overlayFrame.IsCalculateYMaxMin===false)continue;//叠加坐标Y轴不调整
|
|
1784
1785
|
item.OverlayFrame.push(overlayFrame);for(var k=0;k<overlayItem.ChartPaint.length;++k){var chart=overlayItem.ChartPaint[k];item.ChartPaint.push(chart);}}else{item.SingleOverlay.push(overlayItem);}}mapFrame.set(key,item);}for(var i=0;i<this.ChartPaint.length;++i){var chart=this.ChartPaint[i];var key=chart.ChartFrame.Identify;if(!mapFrame.has(key))continue;var finder=mapFrame.get(key);finder.ChartPaint.push(chart);}for(var i=0;i<this.OverlayChartPaint.length;++i){var chart=this.OverlayChartPaint[i];if(!chart.ChartFrame)continue;var key=chart.ChartFrame.Identify;if(!mapFrame.has(key))continue;var finder=mapFrame.get(key);finder.ChartPaint.push(chart);}var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=(0,_getIterator3.default)(mapFrame),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var mapItem=_step3.value;var item=mapItem[1];var frame=item.Frame;//计算主框架最大最小
|
|
1785
1786
|
for(var i=0;i<item.ChartPaint.length;++i){var chart=item.ChartPaint[i];if(chart.IsShow==false)continue;//隐藏的图形不计算
|
|
1786
1787
|
if(chart.NotSupportMessage)continue;if(!chart.ChartFrame)continue;if(chart.IsExcludeYValue===true)continue;var range=chart.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;if(item.Max==null||item.Max<range.Max)item.Max=range.Max;if(item.Min==null||item.Min>range.Min)item.Min=range.Min;}if(item.Frame.YSpecificMaxMin)//固定坐标
|
|
1787
1788
|
{item.Min=item.Frame.YSpecificMaxMin.Max;item.Max=item.Frame.YSpecificMaxMin.Min;}if(!IFrameSplitOperator.IsNumber(frame.YMaxMin.Max)||frame.YMaxMin.Max!=item.Max){frame.YMaxMin.Max=item.Max;frame.XYSplit=true;}if(!IFrameSplitOperator.IsNumber(frame.YMaxMin.Min)||frame.YMaxMin.Min!=item.Min){frame.YMaxMin.Min=item.Min;frame.XYSplit=true;}if(frame.XYSplit){var max=10,min=0;if(item.Max!=null)max=item.Max;if(item.Min!=null)min=item.Min;frame.HorizontalMax=max;frame.HorizontalMin=min;}else{frame.XSplit=true;}//共享Y轴叠加指标同步下坐标
|
|
1788
|
-
for(var j=0;j<item.OverlayFrame.length;++j){item.OverlayFrame[j].XYSplit=true;}
|
|
1789
|
+
for(var j=0;j<item.OverlayFrame.length;++j){item.OverlayFrame[j].XYSplit=true;}//叠加坐标显示在主图坐标 需要同步
|
|
1790
|
+
for(var i=0;i<item.MainOverlayFrame.length;++i){var subItem=item.MainOverlayFrame[i];if(subItem)subItem.XYSplit=true;}//独立坐标叠加指标
|
|
1789
1791
|
for(var i=0;i<item.SingleOverlay.length;++i){var overlayItem=item.SingleOverlay[i];overlayItem.UpdateFrameMaxMin();}}}catch(err){_didIteratorError3=true;_iteratorError3=err;}finally{try{if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return();}}finally{if(_didIteratorError3){throw _iteratorError3;}}}};this.UpdateFrameMaxMin=function(){this.UpdateFrameMaxMinV2();return;var frameMaxMinData=new Array();var chartPaint=new Array();for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsShow==false)continue;//隐藏的图形不计算
|
|
1790
1792
|
chartPaint.push(this.ChartPaint[i]);}for(var i=0;i<this.OverlayChartPaint.length;++i){chartPaint.push(this.OverlayChartPaint[i]);}var aryNotSupport=[];for(var i=0;i<chartPaint.length;++i){var paint=chartPaint[i];if(paint.NotSupportMessage){aryNotSupport.push(paint);continue;}var range=paint.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;var frameItem=null;for(var j=0;j<frameMaxMinData.length;++j){if(frameMaxMinData[j].Frame==paint.ChartFrame){frameItem=frameMaxMinData[j];break;}}if(frameItem){if(frameItem.Range.Max<range.Max)frameItem.Range.Max=range.Max;if(frameItem.Range.Min>range.Min)frameItem.Range.Min=range.Min;}else{frameItem={OverlayFrame:[]};frameItem.Frame=paint.ChartFrame;frameItem.Range=range;frameMaxMinData.push(frameItem);}}//当前计算
|
|
1791
1793
|
for(var i=0;i<aryNotSupport.length;++i){var paint=aryNotSupport[i];var range={Max:10,Min:1};var frameItem=null;for(var j=0;j<frameMaxMinData.length;++j){if(frameMaxMinData[j].Frame==paint.ChartFrame){frameItem=frameMaxMinData[j];break;}}if(frameItem)continue;frameItem={OverlayFrame:[]};frameItem.Frame=paint.ChartFrame;frameItem.Range=range;frameMaxMinData.push(frameItem);}var mapFrame=new _map2.default();for(var i=0;i<frameMaxMinData.length;++i){var item=frameMaxMinData[i];mapFrame.set(item.Frame.Identify,item);}//叠加坐标Y轴使用主图指标, 最大最小值
|
|
@@ -2095,6 +2097,7 @@ this.YTextExtend;//[0]=左 [1]=右 { Align:0=默认 1=左对齐 2=右对齐
|
|
|
2095
2097
|
this.YRightTextInfo;//X轴延长线
|
|
2096
2098
|
this.XTextExtend;//[0]=底部 { Align:0=默认(居中), 1=左对齐 }
|
|
2097
2099
|
this.XLineExtend;//[0]=底部 { Mode:1, Color: } Mode=1 分割线 Mode=2短线
|
|
2100
|
+
this.FrameData={SubFrameItem:null};//窗口框架信息
|
|
2098
2101
|
//画图工具刻度
|
|
2099
2102
|
this.DrawPicture={BGColor:g_JSChartResource.DrawPicture.XYCoordinate.BGColor,TextBGColor:g_JSChartResource.DrawPicture.XYCoordinate.TextBGColor,TextColor:g_JSChartResource.DrawPicture.XYCoordinate.TextColor,Font:g_JSChartResource.DrawPicture.XYCoordinate.Font};this.IChartFramePainting_ReloadResource=this.ReloadResource;this.ReloadResource=function(resource){this.IChartFramePainting_ReloadResource(resource);if(!resource){this.ToolbarButtonStyle=g_JSChartResource.ToolbarButtonStyle;this.CloseWindowButton=CloneData(g_JSChartResource.Buttons.CloseWindow);this.OverlayIndexButton=CloneData(g_JSChartResource.Buttons.OverlayIndex);this.ChangeIndexButton=CloneData(g_JSChartResource.Buttons.ChangeIndex);this.ModifyIndexParamButton=CloneData(g_JSChartResource.Buttons.ModifyIndexParam);this.MaxMinWindowButton=CloneData(g_JSChartResource.Buttons.MaxMinWindow);this.TitleWindowButton=CloneData(g_JSChartResource.Buttons.TitleWindow);this.ButtonTooltip=CloneData(g_JSChartResource.Buttons.Tooltip);}};this.DrawFrame=function(){if(this.XPointCount>0){var dInterval=this.ChartBorder.GetWidth()/(6*this.XPointCount);//分6份, 数据4 间距2
|
|
2100
2103
|
this.DistanceWidth=2*dInterval;this.DataWidth=4*dInterval;}this.DrawHorizontal();this.DrawVertical();};this.DrawTitleButton=function(aryButton,moveonPoint,mouseStatus){var border=this.GetBorder();if(this.IsHScreen){var y=border.Bottom-3;var x=border.RightTitle+this.ChartBorder.TitleHeight/2;this.Canvas.save();this.Canvas.translate(x,y);this.Canvas.rotate(90*Math.PI/180);//底部开始画
|
|
@@ -2173,7 +2176,7 @@ if(this.YSplitOperator&&this.YSplitOperator.CoordinateType==1)isYPercentage=true
|
|
|
2173
2176
|
{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}`);
|
|
2174
2177
|
}}else if(this.MultiTextFormat==2)//显示2行
|
|
2175
2178
|
{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 if(this.MultiTextFormat==3){textWidth=this.GetMulitTextMaxWidth(item.Message[0]);}else//显示第1行
|
|
2176
|
-
{textWidth=this.Canvas.measureText(item.Message[1][0]).width;if(isYPercentage){var perTextWidth=this.Canvas.measureText("-00.00%").width;if(perTextWidth>textWidth)textWidth=perTextWidth;}}}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]+leftExtendLineWidth;if(IFrameSplitOperator.IsNumber(width.Right))width.Right+=this.YTextPadding[1]+rightExtendLineWidth;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;//派生
|
|
2179
|
+
{textWidth=this.Canvas.measureText(item.Message[1][0]).width;if(isYPercentage){var perTextWidth=this.Canvas.measureText("-00.00%").width;if(perTextWidth>textWidth)textWidth=perTextWidth;}}}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]+leftExtendLineWidth;if(IFrameSplitOperator.IsNumber(width.Right))width.Right+=this.YTextPadding[1]+rightExtendLineWidth;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';};this.GetMainOverlayFrame=function(){if(!this.FrameData||!this.FrameData.SubFrameItem)return null;var subFrame=this.FrameData.SubFrameItem;var leftFrame=null,rightFrame=null;for(var i=0;i<subFrame.OverlayIndex.length;++i){var item=subFrame.OverlayIndex[i];var overlayFrame=item.Frame;if(overlayFrame.IsShowMainFrame==2)rightFrame=overlayFrame;else if(overlayFrame.IsShowMainFrame==1)leftFrame=overlayFrame;}if(!leftFrame&&!rightFrame)return null;return[leftFrame,rightFrame];};}function MinuteFrame(){this.newMethod=AverageWidthFrame;//派生
|
|
2177
2180
|
this.newMethod();delete this.newMethod;this.ClassName="MinuteFrame";this.DataWidth=1*GetDevicePixelRatio();this.DistanceWidth=1*GetDevicePixelRatio();this.MinuteCount=243;//每天的分钟个数
|
|
2178
2181
|
this.BeforeBGColor=g_JSChartResource.Minute.Before.BGColor;//集合竞价背景
|
|
2179
2182
|
this.AfterBGColor=g_JSChartResource.Minute.After.BGColor;this.MultiDayBorderPen=g_JSChartResource.MultiDayBorderPen;this.CustomHorizontalInfo=[];this.RightFrame=null;//右侧多重坐标
|
|
@@ -2274,7 +2277,7 @@ this.IsShareY=false;//使用和主框架公用Y轴
|
|
|
2274
2277
|
this.IsCalculateYMaxMin=true;//是否计算Y最大最小值
|
|
2275
2278
|
this.Draw=function(){this.SplitXYCoordinate();if(this.IsShow){}this.SizeChange=false;this.XYSplit=false;};this.DrawToolbar=function(){return;};this.GetScaleTextWidth=function(){return{TextWidth:0};};//分割x,y轴坐标信息
|
|
2276
2279
|
this.SplitXYCoordinate=function(){if(this.XYSplit==false)return;if(this.IsShareY)//和主图指标共享Y轴坐标
|
|
2277
|
-
{this.HorizontalMax=this.MainFrame.HorizontalMax;this.HorizontalMin=this.MainFrame.HorizontalMin;this.HorizontalInfo=[];for(var i
|
|
2280
|
+
{this.HorizontalMax=this.MainFrame.HorizontalMax;this.HorizontalMin=this.MainFrame.HorizontalMin;this.HorizontalInfo=[];for(var i=0;i<this.MainFrame.HorizontalInfo.length;++i){var item=this.MainFrame.HorizontalInfo[i];this.HorizontalInfo.push(item);}}else//独立Y轴坐标
|
|
2278
2281
|
{if(this.YSplitOperator!=null)this.YSplitOperator.Operator();}// if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
|
|
2279
2282
|
};}function OverlayMinuteHScreenFrame(){this.newMethod=MinuteHScreenFrame;//派生
|
|
2280
2283
|
this.newMethod();delete this.newMethod;this.ClassName="OverlayMinuteHScreenFrame";this.IsShow=true;//坐标是否显示
|
|
@@ -2388,6 +2391,7 @@ this.Canvas.strokeStyle=item.Data.Line.Color;this.Canvas.beginPath();if(item.IsH
|
|
|
2388
2391
|
this.GetVerticalXCache=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.VerticalInfo))return null;var dataWidth=this.DataWidth;var distanceWidth=this.DistanceWidth;var xPointCount=this.XPointCount;var setIndex=new _set2.default();for(var i=0;i<this.VerticalInfo.length;++i){var item=this.VerticalInfo[i];setIndex.add(item.Value);}if(this.IsHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}var mapX=new _map2.default();for(var i=0;i<xPointCount;++i,xOffset+=dataWidth+distanceWidth){var left=xOffset;var right=xOffset+dataWidth;var x=left+(right-left)/2;if(setIndex.has(i)){mapX.set(i,x);}}return mapX;};}function OverlayKLineFrame(){this.newMethod=KLineFrame;//派生
|
|
2389
2392
|
this.newMethod();delete this.newMethod;this.ClassName='OverlayKLineFrame';this.MainFrame=null;//主框架
|
|
2390
2393
|
this.IsShareY=false;//使用和主框架公用Y轴
|
|
2394
|
+
this.IsShowMainFrame=0;//是否显示在主框架坐标上 1=左边 2=右边
|
|
2391
2395
|
this.IsCalculateYMaxMin=true;//是否计算Y最大最小值
|
|
2392
2396
|
this.RightOffset=50;this.PenBorder=g_JSChartResource.OverlayFrame.BolderPen;//'rgb(0,0,0)'
|
|
2393
2397
|
this.IsShow=g_JSChartResource.KLineToolbar.IsShowOverlayFrame;//坐标是否显示
|
|
@@ -2403,8 +2407,7 @@ if(this.IsHScreen){var borderBottom=this.ChartBorder.Bottom;var isDrawRight=bord
|
|
|
2403
2407
|
this.SyncMainHorizontalInfo=function(){if(!this.MainFrame)return false;if(this.MainFrame.YMaxMin){this.YMaxMin.Max=this.MainFrame.YMaxMin.Max;this.YMaxMin.Min=this.MainFrame.YMaxMin.Min;}this.HorizontalMax=this.MainFrame.HorizontalMax;this.HorizontalMin=this.MainFrame.HorizontalMin;this.HorizontalInfo=[];for(var i=0;i<this.MainFrame.HorizontalInfo.length;++i){var item=this.MainFrame.HorizontalInfo[i];this.HorizontalInfo.push(item);}this.CoordinateType=this.MainFrame.CoordinateType;return true;};//分割x,y轴坐标信息
|
|
2404
2408
|
this.SplitXYCoordinate=function(){if(this.XYSplit==false)return;if(this.IsShareY)//和主图指标共享Y轴坐标
|
|
2405
2409
|
{this.SyncMainHorizontalInfo();}else//独立Y轴坐标
|
|
2406
|
-
{if(this.YSplitOperator!=null)this.YSplitOperator.Operator();}
|
|
2407
|
-
};//画Y轴
|
|
2410
|
+
{if(this.YSplitOperator!=null)this.YSplitOperator.Operator();}};//画Y轴
|
|
2408
2411
|
this.DrawHorizontal=function(){var border=this.ChartBorder.GetBorder();var left=border.Left;var right=border.Right;var bottom=border.Bottom;var top=this.ChartBorder.GetTopTitle();var borderRight=this.ChartBorder.Right;right+=this.RightOffset;var xLine=this.GetXHorizontal();if(IFrameSplitOperator.IsNumber(this.BlankWidth))right+=this.BlankWidth;var rightExtendText=null;//右侧文字设置
|
|
2409
2412
|
if(IFrameSplitOperator.IsNonEmptyArray(this.YTextExtend)){rightExtendText=this.YTextExtend[1];}var leftLine=null,rightLine=null;if(IFrameSplitOperator.IsNonEmptyArray(this.YLineExtend)){rightLine=this.YLineExtend[1];leftLine=this.YLineExtend[0];}var rightWidth=this.GetHorizontalWidth();//右侧宽度
|
|
2410
2413
|
var yPrev=null;//上一个坐标y的值
|
|
@@ -5035,12 +5038,13 @@ this.IsEnableDragY=function(){return true;};this.Reset=function()//重置
|
|
|
5035
5038
|
coordinate.Message[1]=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}coordinate.Message[0]=coordinate.Message[1];if(this.IsShowLeftText==false)this.Frame.HorizontalInfo[i].Message[0]=null;if(this.IsShowRightText==false)this.Frame.HorizontalInfo[i].Message[1]=null;this.Frame.HorizontalInfo.push(coordinate);}}else{for(var i=0,value=splitData.Min;i<splitData.Count;++i,value+=splitData.Interval){var coordinate=new CoordinateInfo();this.Frame.HorizontalInfo[i]=coordinate;coordinate.Value=value;if(IFrameSplitOperator.IsNumber(this.LineType))coordinate.LineType=this.LineType;var text=this.FormatValueString(value);this.Frame.HorizontalInfo[i].Message[0]=this.Frame.HorizontalInfo[i].Message[1]=text;if(this.IsShowLeftText==false)this.Frame.HorizontalInfo[i].Message[0]=null;if(this.IsShowRightText==false)this.Frame.HorizontalInfo[i].Message[1]=null;//this.Frame.HorizontalInfo[i].Font="14px 微软雅黑";
|
|
5036
5039
|
//this.Frame.HorizontalInfo[i].TextColor="rgb(100,0,200)";
|
|
5037
5040
|
//this.Frame.HorizontalInfo[i].LineColor="rgb(220,220,220)";
|
|
5038
|
-
}}this.FilterIgnoreYValue();this.CustomCoordinate();if(this.SplitType!=1)this.Frame.HorizontalInfo=this.Filter(this.Frame.HorizontalInfo,splitData.Max>0&&splitData.Min<0);this.RightFrameSplitY();this.
|
|
5041
|
+
}}this.FilterIgnoreYValue();this.CustomCoordinate();if(this.SplitType!=1)this.Frame.HorizontalInfo=this.Filter(this.Frame.HorizontalInfo,splitData.Max>0&&splitData.Min<0);this.RightFrameSplitY();this.MainOverlayFrameSplitY();//主图Y轴绑定叠加Y轴坐标
|
|
5042
|
+
this.CallAcutionSplitY(this.SplitCount,splitData);if(this.EnableRemoveZero)this.RemoveZero(this.Frame.HorizontalInfo);this.DynamicMessageText();this.Frame.HorizontalMax=splitData.Max;this.Frame.HorizontalMin=splitData.Min;if(this.EnableZoomUpDown==true&&!this.FixedYMaxMin)this.FixedYMaxMin={Max:splitData.Max,Min:splitData.Min};if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};if(this.OverlayIdentify)data.OverlayIdentify=this.OverlayIdentify;event.Callback(event,data,this);}}};this.FormatValueString=function(value){var text;if(this.StringFormat==1)//手机端格式 如果有万,亿单位了 去掉小数
|
|
5039
5043
|
{var floatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(value)&&Math.abs(value)>1000)floatPrecision=0;text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}else if(this.StringFormat==2)//原始数据输出
|
|
5040
5044
|
{text=''+value.toFixed(this.FloatPrecision);}else{var absValue=Math.abs(value);if(absValue<0.0000000001){text=0;}else if(absValue<this.FLOATPRECISION_RANGE[this.FLOATPRECISION_RANGE.length-1]){text=value.toExponential(2).toString();}else{var floatPrecision=this.GetFloatPrecision(absValue,this.FloatPrecision);//数据比小数位数还小, 调整小数位数
|
|
5041
5045
|
text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}}return text;};this.FilterIgnoreYValue=function(){if(!this.IgnoreYValue||this.IgnoreYValue.length<=0)return;var setValue=new _set2.default(this.IgnoreYValue);this.Frame.HorizontalInfo=this.Frame.HorizontalInfo.filter(function(item){return!setValue.has(item.Value);});};this.DynamicMessageText=function(){if(this.SplitType==2){for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];if(item.Message[0])item.Message[0]+='%';if(item.Message[1])item.Message[1]+='%';}}};this.CallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var aryCallAcution=this.GetCallAcutionSplitY(count,splitData);if(!aryCallAcution)return;for(var i=0;i<this.Frame.HorizontalInfo.length;++i)//把显示的数据迁移到 Message[2] Message[3]
|
|
5042
5046
|
{var item=this.Frame.HorizontalInfo[i];if(aryCallAcution.IsBeforeData){item.Message[2]=item.Message[0];item.Message[0]=null;}if(aryCallAcution.IsAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){item.Message[3]=item.Message[1];item.Message[1]=null;}}//集合竞价的坐标插入最后
|
|
5043
|
-
for(var i=0;i<aryCallAcution.HorizontalInfo.length;++i){var item=aryCallAcution.HorizontalInfo[i];this.Frame.HorizontalInfo.push(item);}};this.GetCallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var isBeforeData=this.IsBeforeData==true&&this.BeforeOpenData&&(this.BeforeOpenData.Ver==2.0||this.BeforeOpenData.Ver==3.0);var isAfterData=this.IsAfterData==true&&this.AfterCloseData&&(this.AfterCloseData.Ver==2.0||this.AfterCloseData.Ver==3.0);if(isBeforeData||isAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);if(isBeforeData)var intervalLeft=(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)/(count-1);if(isAfterData)var intervalRight=(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=8;if(isBeforeData){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);}if(isAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);}aryHorizontalInfo.push(item);}return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isBeforeData,IsAfterData:isAfterData};}var isMultiDayBeforeData=false;var intervalLeft=null;if(this.MultiDayBeforeOpenData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)){isMultiDayBeforeData=true;var firstDayData=this.MultiDayBeforeOpenData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalLeft=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}var isMultiDayAfterData=false;var intervalRight=null;if(this.MultiDayAfterCloseData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)){isMultiDayAfterData=true;var firstDayData=this.MultiDayAfterCloseData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalRight=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}if(isMultiDayBeforeData||isMultiDayAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=9;var isVaild=false;if(intervalLeft!=null){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);isVaild=true;}if(intervalRight!=null&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);isVaild=true;}if(isVaild)aryHorizontalInfo.push(item);}if(IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isMultiDayBeforeData,IsAfterData:isMultiDayAfterData};}return null;};this.RightFrameSplitY=function(){if(!this.Frame.RightFrame)return;var rightFrame=this.Frame.RightFrame;if(rightFrame.YSplitOperator)rightFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);item.Message[1]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}};this.CustomCoordinate=function(){this.Frame.CustomHorizontalInfo=[];var data=this.InvokeCustomYCoordinateCallback();if(data&&data.PreventDefault==true)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Custom))return;for(var i=0;i<this.Custom.length;++i){var item=this.Custom[i];if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.PAGE_LAST_INDEX_VALUE_ID)//当前屏最后一个数据
|
|
5047
|
+
for(var i=0;i<aryCallAcution.HorizontalInfo.length;++i){var item=aryCallAcution.HorizontalInfo[i];this.Frame.HorizontalInfo.push(item);}};this.GetCallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var isBeforeData=this.IsBeforeData==true&&this.BeforeOpenData&&(this.BeforeOpenData.Ver==2.0||this.BeforeOpenData.Ver==3.0);var isAfterData=this.IsAfterData==true&&this.AfterCloseData&&(this.AfterCloseData.Ver==2.0||this.AfterCloseData.Ver==3.0);if(isBeforeData||isAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);if(isBeforeData)var intervalLeft=(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)/(count-1);if(isAfterData)var intervalRight=(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=8;if(isBeforeData){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);}if(isAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);}aryHorizontalInfo.push(item);}return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isBeforeData,IsAfterData:isAfterData};}var isMultiDayBeforeData=false;var intervalLeft=null;if(this.MultiDayBeforeOpenData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)){isMultiDayBeforeData=true;var firstDayData=this.MultiDayBeforeOpenData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalLeft=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}var isMultiDayAfterData=false;var intervalRight=null;if(this.MultiDayAfterCloseData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)){isMultiDayAfterData=true;var firstDayData=this.MultiDayAfterCloseData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalRight=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}if(isMultiDayBeforeData||isMultiDayAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=9;var isVaild=false;if(intervalLeft!=null){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);isVaild=true;}if(intervalRight!=null&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);isVaild=true;}if(isVaild)aryHorizontalInfo.push(item);}if(IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isMultiDayBeforeData,IsAfterData:isMultiDayAfterData};}return null;};this.RightFrameSplitY=function(){if(!this.Frame.RightFrame)return;var rightFrame=this.Frame.RightFrame;if(rightFrame.YSplitOperator)rightFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);item.Message[1]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}};this.MainOverlayFrameSplitY=function(){if(!this.Frame.GetMainOverlayFrame)return;var aryOverlayFrame=this.Frame.GetMainOverlayFrame();if(!aryOverlayFrame)return;if(aryOverlayFrame[1]){var rightFrame=aryOverlayFrame[1];if(rightFrame.YSplitOperator)rightFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);item.Message[1]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}}if(aryOverlayFrame[0]){var leftFrame=aryOverlayFrame[0];if(leftFrame.YSplitOperator)leftFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=leftFrame.GetYData(y);item.Message[0]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}}};this.CustomCoordinate=function(){this.Frame.CustomHorizontalInfo=[];var data=this.InvokeCustomYCoordinateCallback();if(data&&data.PreventDefault==true)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Custom))return;for(var i=0;i<this.Custom.length;++i){var item=this.Custom[i];if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.PAGE_LAST_INDEX_VALUE_ID)//当前屏最后一个数据
|
|
5044
5048
|
{this.CustomLatestIndexDataCoordinate(item);}else if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.FIXED_VALUE_ID)//自定义刻度
|
|
5045
5049
|
{this.CustomFixedCoordinate(item);}else if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.PAGE_LAST_OVERLAY_INDEX_VALUE_ID)//叠加指标当前屏最后一个数据
|
|
5046
5050
|
{this.CustomLatestOverlayIndexDataCoordinate(item);}}};this.CustomFixedCoordinate=function(option)//固定坐标刻度
|
|
@@ -6629,7 +6633,7 @@ LANGUAGE_TRADITIONAL_CHINESE_ID:2//繁体中文 TC
|
|
|
6629
6633
|
指标列表 指标信息都在这里,不够后面再加字段
|
|
6630
6634
|
*/function JSIndexMap(){}JSIndexMap.Get=function(id){var indexMap=new _map2.default([['CJL',{IsMainIndex:false,Create:function Create(){return new JSIndex_CJL();}}],//期货指标
|
|
6631
6635
|
["OX",{IsMainIndex:false,Create:function Create(){return new JSIndex_OX();}}],["可视范围成交量分布图",{IsMainIndex:true,Create:function Create(option){return new VolProfileVisibleRangeIndex(option);}}]]);return indexMap.get(id);};// 定制K线计算
|
|
6632
|
-
function KLineCustomCalulate(){this.DataMap=new _map2.default([["RenkoCalculate",{Create:function Create(){return new RenkoCalculate();}}],["HeikinAshiCalculate",{Create:function Create(){return new HeikinAshiCalculate();}}],["LineBreakCalcuate",{Create:function Create(){return new LineBreakCalcuate();}}],["KagiCalculate",{Create:function Create(){return new
|
|
6636
|
+
function KLineCustomCalulate(){this.DataMap=new _map2.default([["RenkoCalculate",{Create:function Create(){return new RenkoCalculate();}}],["HeikinAshiCalculate",{Create:function Create(){return new HeikinAshiCalculate();}}],["LineBreakCalcuate",{Create:function Create(){return new LineBreakCalcuate();}}],["KagiCalculate",{Create:function Create(){return new KagiCalculate();}}]]);this.Create=function(name){if(!this.DataMap.has(name))return null;var item=this.DataMap.get(name);return item.Create();};}var g_KLineCustomCalulate=new KLineCustomCalulate();///////////////////////////////////////////////////////////////////
|
|
6633
6637
|
// renko candle
|
|
6634
6638
|
//
|
|
6635
6639
|
function RenkoCalculate(){this.BrickSize=0.05;//固定大小
|
|
@@ -6646,7 +6650,10 @@ this.CalculateATR=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.Source
|
|
|
6646
6650
|
var total=0;for(var i=0;i<aryData.length;++i){total+=aryData[i];}var brickSize=total/aryData.length;var value=brickSize.toFixed(this.FloatPrecision);this.ATR.BrickSize=parseFloat(value);};}/////////////////////////////////////////////////////////////////////////
|
|
6647
6651
|
//kagi candle
|
|
6648
6652
|
//
|
|
6649
|
-
function KagiCalculate(){
|
|
6653
|
+
function KagiCalculate(){this.Symbol;this.SourceData;this.FloatPrecision=2;//品种小数位数
|
|
6654
|
+
this.ATR={Count:14};//使用ATR计算砖块大小
|
|
6655
|
+
this.RecvHistoryData=function(sourceData,option)//历史日线数据
|
|
6656
|
+
{this.Symbol=option.Symbol;this.SourceData=sourceData;this.FloatPrecision=GetfloatPrecision(this.Symbol);return this.Calculate(sourceData);};this.Calculate=function(sourceData){var bindData=new ChartData();bindData.Data=[];bindData.Right=sourceData.Right;bindData.Period=sourceData.Period;bindData.DataType=sourceData.DataType;bindData.Symbol=sourceData.symbol;if(!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data))return bindData;var periodCount=this.ATR.Count;var kItem=sourceData.Data[0];this.LastData=HistoryData.Copy(kItem);for(var i=1;i<sourceData.Data.length;){}};}//////////////////////////////////////////////////////////////////
|
|
6650
6657
|
// HeikinAshi
|
|
6651
6658
|
//
|
|
6652
6659
|
function HeikinAshiCalculate(){this.SourceData;this.Symbol;this.FloatPrecision=2;//品种小数位数
|
|
@@ -6822,10 +6829,10 @@ frame.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.
|
|
|
6822
6829
|
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this19.GetKLineChart();};frame.YSplitOperator.HQChart=this;var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
6823
6830
|
border.BottomSpace=15*pixelTatio;//主图上下留空间
|
|
6824
6831
|
border.TopSpace=15*pixelTatio;frame.GetEventCallback=function(id){return _this19.GetEventCallback(id);};}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this19.GetKLineChart();};frame.YSplitOperator.HQChart=this;//frame.IsLocked = true;
|
|
6825
|
-
}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.LanguageID=this.LanguageID;frame.XSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}};this.CreateSubFrameItem=function(id){var _this20=this;var border=new ChartBorder();border.UIElement=this.UIElement;var frameClassName="KLineFrame";if(this.ClassName=="KLineChartHScreenContainer")frameClassName="KLineHScreenFrame";var frame=g_ChartFrameFactory.Create(frameClassName,{ID:id});frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=id;//窗口序号
|
|
6832
|
+
}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.LanguageID=this.LanguageID;frame.XSplitOperator.GetEventCallback=function(id){return _this19.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}};this.CreateSubFrameItem=function(id){var _this20=this;var border=new ChartBorder();border.UIElement=this.UIElement;var frameClassName="KLineFrame";if(this.ClassName=="KLineChartHScreenContainer")frameClassName="KLineHScreenFrame";var frame=g_ChartFrameFactory.Create(frameClassName,{ID:id});frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=id;//窗口序号
|
|
6826
6833
|
frame.GetEventCallback=function(id){return _this20.GetEventCallback(id);};frame.GlobalOption=this.GlobalOption;if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
|
|
6827
6834
|
if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.ShowText=false;frame.XSplitOperator.GetEventCallback=function(id){return _this20.GetEventCallback(id);};frame.YSplitOperator.GetEventCallback=function(id){return _this20.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this20.GetKLineChart();};frame.YSplitOperator.HQChart=this;frame.XSplitOperator.Symbol=this.Symbol;frame.XSplitOperator.Period=this.Period;//K线数据绑定
|
|
6828
|
-
var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};//创建主图K线画法
|
|
6835
|
+
var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};//创建主图K线画法
|
|
6829
6836
|
this.CreateMainKLine=function(){var _this21=this;var kline=g_ChartPaintFactory.Create("ChartKLine");kline.Canvas=this.Canvas;kline.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;kline.ChartFrame=this.Frame.SubFrame[0].Frame;kline.Name="Main-KLine";kline.DrawType=this.KLineDrawType;kline.Identify="Main-KLine";kline.GetEventCallback=function(id){return _this21.GetEventCallback(id);};this.ChartPaint[0]=kline;this.TitlePaint[0]=new DynamicKLineTitlePainting();this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;this.TitlePaint[0].Canvas=this.Canvas;this.TitlePaint[0].OverlayChartPaint=this.OverlayChartPaint;//绑定叠加
|
|
6830
6837
|
this.TitlePaint[0].LanguageID=this.LanguageID;this.TitlePaint[0].HQChart=this;this.TitlePaint[0].GetEventCallback=function(id){return _this21.GetEventCallback(id);};};//绑定主图K线数据
|
|
6831
6838
|
this.BindMainData=function(hisData,showCount){this.ChartPaint[0].Data=hisData;this.ChartPaint[0].Symbol=this.Symbol;if(this.KLineSize){if(!IFrameSplitOperator.IsNumber(this.KLineSize.DataWidth)){showCount=this.Frame.SubFrame[0].Frame.XPointCount-this.RightSpaceCount;}else{var obj=this.Frame.SetDataWidth(this.KLineSize.DataWidth);showCount=obj.XPointCount-this.RightSpaceCount;this.KLineSize.DataWidth=null;}}for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;item.XPointCount=showCount+this.RightSpaceCount;item.Data=this.ChartPaint[0].Data;item.XSplitOperator.Symbol=this.Symbol;item.XSplitOperator.Period=this.Period;}this.TitlePaint[0].Data=this.ChartPaint[0].Data;//动态标题
|
|
@@ -7192,7 +7199,7 @@ if(!indexInfo){indexCustom=JSIndexMap.Get(indexName);//定制指标
|
|
|
7192
7199
|
if(!indexCustom){console.warn('[KLineChartContainer::CreateOverlayIndex] can not find index['+indexName+']');return null;}}}var subFrame=this.Frame.SubFrame[windowIndex];var overlayFrame=new OverlayIndexItem();if(obj.Identify)overlayFrame.Identify=obj.Identify;//由外部指定id
|
|
7193
7200
|
//var frame= this.ClassName==='KLineChartHScreenContainer' ? new OverlayKLineHScreenFrame() : new OverlayKLineFrame();
|
|
7194
7201
|
var frame=this.CreateOverlayFrame();frame.Canvas=this.Canvas;frame.MainFrame=subFrame.Frame;frame.ChartBorder=subFrame.Frame.ChartBorder;frame.GetEventCallback=function(id){return _this22.GetEventCallback(id);};if(obj.ShowRightText===true)frame.IsShow=true;else if(obj.ShowRightText===false)frame.IsShow=false;if(IFrameSplitOperator.IsBool(obj.ShowToolbar))frame.IsShowToolbar=obj.ShowToolbar;//废弃
|
|
7195
|
-
if(IFrameSplitOperator.IsBool(obj.IsShareY))frame.IsShareY=obj.IsShareY;//if (IFrameSplitOperator.IsBool(obj.IsShowIndexTitle)) frame.IsShowIndexTitle=obj.IsShowIndexTitle;
|
|
7202
|
+
if(IFrameSplitOperator.IsBool(obj.IsShareY))frame.IsShareY=obj.IsShareY;if(IFrameSplitOperator.IsNumber(obj.IsShowMainFrame))frame.IsShowMainFrame=obj.IsShowMainFrame;//if (IFrameSplitOperator.IsBool(obj.IsShowIndexTitle)) frame.IsShowIndexTitle=obj.IsShowIndexTitle;
|
|
7196
7203
|
if(IFrameSplitOperator.IsBool(obj.IsCalculateYMaxMin))frame.IsCalculateYMaxMin=obj.IsCalculateYMaxMin;//是否计算Y最大最小值
|
|
7197
7204
|
frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=frame.ChartBorder;frame.YSplitOperator.SplitCount=subFrame.Frame.YSplitOperator.SplitCount;frame.YSplitOperator.GetEventCallback=function(id){return _this22.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this22.GetKLineChart();};frame.YSplitOperator.OverlayIndex=overlayFrame;frame.YSplitOperator.HQChart=this;frame.YSplitOperator.OverlayIdentify=overlayFrame.Identify;if(obj.Frame){var item=obj.Frame;if(item.Custom)frame.YSplitOperator.Custom=item.Custom;if(IFrameSplitOperator.IsBool(item.IsYDrawMainFrame))frame.IsYDrawMainFrame=item.IsYDrawMainFrame;//自定义刻度绘制在主图上
|
|
7198
7205
|
if(IFrameSplitOperator.IsBool(item.IsShowToolbar))frame.IsShowToolbar=item.IsShowToolbar;//是否显示工具栏
|
|
@@ -13046,7 +13053,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
13046
13053
|
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);};}/********************************************************************************
|
|
13047
13054
|
* 版本信息输出
|
|
13048
13055
|
*
|
|
13049
|
-
*/var HQCHART_VERSION="1.1.
|
|
13056
|
+
*/var HQCHART_VERSION="1.1.13139";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();//把给外界调用的方法暴露出来
|
|
13050
13057
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
13051
13058
|
// BaseIndex:BaseIndex,
|
|
13052
13059
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -6870,13 +6870,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6870
6870
|
{
|
|
6871
6871
|
ID:key, Frame:frame, ChartPaint:[] , Max:null, Min:null,
|
|
6872
6872
|
OverlayFrame:[], //共享坐标
|
|
6873
|
-
SingleOverlay:[]
|
|
6873
|
+
SingleOverlay:[], //独立坐标
|
|
6874
|
+
MainOverlayFrame:[null, null], //叠加坐标在主坐标显示[0]=left [1]=right
|
|
6874
6875
|
};
|
|
6875
6876
|
|
|
6876
6877
|
for(var j=0;j<subItem.OverlayIndex.length;++j)
|
|
6877
6878
|
{
|
|
6878
6879
|
var overlayItem=subItem.OverlayIndex[j];
|
|
6879
6880
|
var overlayFrame=overlayItem.Frame;
|
|
6881
|
+
|
|
6882
|
+
if (overlayFrame.IsShowMainFrame===1) item.MainOverlayFrame[0]= overlayFrame;
|
|
6883
|
+
else if (overlayFrame.IsShowMainFrame===2) item.MainOverlayFrame[1]= overlayFrame;
|
|
6884
|
+
|
|
6880
6885
|
if (overlayFrame.IsShareY)
|
|
6881
6886
|
{
|
|
6882
6887
|
if (!overlayFrame.MainFrame) continue;
|
|
@@ -6892,7 +6897,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6892
6897
|
{
|
|
6893
6898
|
item.SingleOverlay.push(overlayItem);
|
|
6894
6899
|
}
|
|
6895
|
-
|
|
6896
6900
|
}
|
|
6897
6901
|
|
|
6898
6902
|
mapFrame.set(key, item);
|
|
@@ -6977,6 +6981,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
6977
6981
|
item.OverlayFrame[j].XYSplit=true;
|
|
6978
6982
|
}
|
|
6979
6983
|
|
|
6984
|
+
//叠加坐标显示在主图坐标 需要同步
|
|
6985
|
+
for(var i=0;i<item.MainOverlayFrame.length;++i)
|
|
6986
|
+
{
|
|
6987
|
+
var subItem=item.MainOverlayFrame[i];
|
|
6988
|
+
if (subItem) subItem.XYSplit=true;
|
|
6989
|
+
}
|
|
6990
|
+
|
|
6980
6991
|
//独立坐标叠加指标
|
|
6981
6992
|
for(var i=0;i<item.SingleOverlay.length;++i)
|
|
6982
6993
|
{
|
|
@@ -9959,6 +9970,8 @@ function AverageWidthFrame()
|
|
|
9959
9970
|
this.XTextExtend; //[0]=底部 { Align:0=默认(居中), 1=左对齐 }
|
|
9960
9971
|
this.XLineExtend; //[0]=底部 { Mode:1, Color: } Mode=1 分割线 Mode=2短线
|
|
9961
9972
|
|
|
9973
|
+
this.FrameData={ SubFrameItem:null }; //窗口框架信息
|
|
9974
|
+
|
|
9962
9975
|
//画图工具刻度
|
|
9963
9976
|
|
|
9964
9977
|
this.DrawPicture={
|
|
@@ -11908,6 +11921,25 @@ function AverageWidthFrame()
|
|
|
11908
11921
|
|
|
11909
11922
|
if (divToolbar.style.display!='none') divToolbar.style.display='none';
|
|
11910
11923
|
}
|
|
11924
|
+
|
|
11925
|
+
this.GetMainOverlayFrame=function()
|
|
11926
|
+
{
|
|
11927
|
+
if (!this.FrameData || !this.FrameData.SubFrameItem) return null;
|
|
11928
|
+
|
|
11929
|
+
var subFrame=this.FrameData.SubFrameItem;
|
|
11930
|
+
var leftFrame=null, rightFrame=null;
|
|
11931
|
+
for(var i=0;i<subFrame.OverlayIndex.length;++i)
|
|
11932
|
+
{
|
|
11933
|
+
var item=subFrame.OverlayIndex[i];
|
|
11934
|
+
var overlayFrame=item.Frame;
|
|
11935
|
+
if (overlayFrame.IsShowMainFrame==2) rightFrame=overlayFrame;
|
|
11936
|
+
else if (overlayFrame.IsShowMainFrame==1) leftFrame=overlayFrame;
|
|
11937
|
+
}
|
|
11938
|
+
|
|
11939
|
+
if (!leftFrame && !rightFrame) return null;
|
|
11940
|
+
|
|
11941
|
+
return [leftFrame, rightFrame];
|
|
11942
|
+
}
|
|
11911
11943
|
}
|
|
11912
11944
|
|
|
11913
11945
|
function MinuteFrame()
|
|
@@ -14017,7 +14049,7 @@ function OverlayMinuteFrame()
|
|
|
14017
14049
|
this.HorizontalMax=this.MainFrame.HorizontalMax;
|
|
14018
14050
|
this.HorizontalMin=this.MainFrame.HorizontalMin;
|
|
14019
14051
|
this.HorizontalInfo=[];
|
|
14020
|
-
for(var i
|
|
14052
|
+
for(var i=0; i<this.MainFrame.HorizontalInfo.length; ++i)
|
|
14021
14053
|
{
|
|
14022
14054
|
var item=this.MainFrame.HorizontalInfo[i];
|
|
14023
14055
|
this.HorizontalInfo.push(item);
|
|
@@ -14027,7 +14059,7 @@ function OverlayMinuteFrame()
|
|
|
14027
14059
|
{
|
|
14028
14060
|
if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
|
|
14029
14061
|
}
|
|
14030
|
-
|
|
14062
|
+
|
|
14031
14063
|
// if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
|
|
14032
14064
|
}
|
|
14033
14065
|
}
|
|
@@ -15361,6 +15393,7 @@ function OverlayKLineFrame()
|
|
|
15361
15393
|
|
|
15362
15394
|
this.MainFrame=null; //主框架
|
|
15363
15395
|
this.IsShareY=false; //使用和主框架公用Y轴
|
|
15396
|
+
this.IsShowMainFrame=0; //是否显示在主框架坐标上 1=左边 2=右边
|
|
15364
15397
|
this.IsCalculateYMaxMin=true; //是否计算Y最大最小值
|
|
15365
15398
|
this.RightOffset=50;
|
|
15366
15399
|
this.PenBorder=g_JSChartResource.OverlayFrame.BolderPen; //'rgb(0,0,0)'
|
|
@@ -15571,8 +15604,6 @@ function OverlayKLineFrame()
|
|
|
15571
15604
|
{
|
|
15572
15605
|
if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
|
|
15573
15606
|
}
|
|
15574
|
-
|
|
15575
|
-
// if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
|
|
15576
15607
|
}
|
|
15577
15608
|
|
|
15578
15609
|
//画Y轴
|
|
@@ -45753,6 +45784,7 @@ function FrameSplitY()
|
|
|
45753
45784
|
if (this.SplitType!=1) this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0));
|
|
45754
45785
|
|
|
45755
45786
|
this.RightFrameSplitY();
|
|
45787
|
+
this.MainOverlayFrameSplitY(); //主图Y轴绑定叠加Y轴坐标
|
|
45756
45788
|
this.CallAcutionSplitY(this.SplitCount,splitData);
|
|
45757
45789
|
|
|
45758
45790
|
if (this.EnableRemoveZero) this.RemoveZero(this.Frame.HorizontalInfo);
|
|
@@ -45973,6 +46005,41 @@ function FrameSplitY()
|
|
|
45973
46005
|
}
|
|
45974
46006
|
}
|
|
45975
46007
|
|
|
46008
|
+
this.MainOverlayFrameSplitY=function()
|
|
46009
|
+
{
|
|
46010
|
+
if (!this.Frame.GetMainOverlayFrame) return;
|
|
46011
|
+
var aryOverlayFrame=this.Frame.GetMainOverlayFrame();
|
|
46012
|
+
if (!aryOverlayFrame ) return;
|
|
46013
|
+
|
|
46014
|
+
if (aryOverlayFrame[1])
|
|
46015
|
+
{
|
|
46016
|
+
var rightFrame=aryOverlayFrame[1];
|
|
46017
|
+
if (rightFrame.YSplitOperator) rightFrame.YSplitOperator.Operator();
|
|
46018
|
+
|
|
46019
|
+
for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
|
|
46020
|
+
{
|
|
46021
|
+
var item=this.Frame.HorizontalInfo[i];
|
|
46022
|
+
var y=this.Frame.GetYFromData(item.Value);
|
|
46023
|
+
var yValue=rightFrame.GetYData(y);
|
|
46024
|
+
item.Message[1] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
|
|
46025
|
+
}
|
|
46026
|
+
}
|
|
46027
|
+
|
|
46028
|
+
if (aryOverlayFrame[0])
|
|
46029
|
+
{
|
|
46030
|
+
var leftFrame=aryOverlayFrame[0];
|
|
46031
|
+
if (leftFrame.YSplitOperator) leftFrame.YSplitOperator.Operator();
|
|
46032
|
+
|
|
46033
|
+
for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
|
|
46034
|
+
{
|
|
46035
|
+
var item=this.Frame.HorizontalInfo[i];
|
|
46036
|
+
var y=this.Frame.GetYFromData(item.Value);
|
|
46037
|
+
var yValue=leftFrame.GetYData(y);
|
|
46038
|
+
item.Message[0] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
|
|
46039
|
+
}
|
|
46040
|
+
}
|
|
46041
|
+
}
|
|
46042
|
+
|
|
45976
46043
|
this.CustomCoordinate=function()
|
|
45977
46044
|
{
|
|
45978
46045
|
this.Frame.CustomHorizontalInfo=[];
|
|
@@ -65483,7 +65550,7 @@ function KLineCustomCalulate()
|
|
|
65483
65550
|
["RenkoCalculate", { Create:function() { return new RenkoCalculate(); } }],
|
|
65484
65551
|
["HeikinAshiCalculate", { Create:function() { return new HeikinAshiCalculate(); } }],
|
|
65485
65552
|
["LineBreakCalcuate", { Create:function() { return new LineBreakCalcuate(); } }],
|
|
65486
|
-
["KagiCalculate", { Create:function(){ return new
|
|
65553
|
+
["KagiCalculate", { Create:function(){ return new KagiCalculate(); } }]
|
|
65487
65554
|
]
|
|
65488
65555
|
);
|
|
65489
65556
|
|
|
@@ -65666,7 +65733,38 @@ function RenkoCalculate()
|
|
|
65666
65733
|
//
|
|
65667
65734
|
function KagiCalculate()
|
|
65668
65735
|
{
|
|
65736
|
+
this.Symbol;
|
|
65737
|
+
this.SourceData;
|
|
65738
|
+
this.FloatPrecision=2; //品种小数位数
|
|
65739
|
+
this.ATR={ Count:14 }; //使用ATR计算砖块大小
|
|
65740
|
+
|
|
65741
|
+
this.RecvHistoryData=function(sourceData, option) //历史日线数据
|
|
65742
|
+
{
|
|
65743
|
+
this.Symbol=option.Symbol;
|
|
65744
|
+
this.SourceData=sourceData;
|
|
65745
|
+
this.FloatPrecision=GetfloatPrecision(this.Symbol);
|
|
65746
|
+
return this.Calculate(sourceData);
|
|
65747
|
+
}
|
|
65748
|
+
|
|
65749
|
+
this.Calculate=function(sourceData)
|
|
65750
|
+
{
|
|
65751
|
+
var bindData=new ChartData();
|
|
65752
|
+
bindData.Data=[]
|
|
65753
|
+
bindData.Right=sourceData.Right;
|
|
65754
|
+
bindData.Period=sourceData.Period;
|
|
65755
|
+
bindData.DataType=sourceData.DataType;
|
|
65756
|
+
bindData.Symbol=sourceData.symbol;
|
|
65669
65757
|
|
|
65758
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data)) return bindData;
|
|
65759
|
+
|
|
65760
|
+
var periodCount=this.ATR.Count;
|
|
65761
|
+
|
|
65762
|
+
var kItem=sourceData.Data[0];
|
|
65763
|
+
this.LastData=HistoryData.Copy(kItem);
|
|
65764
|
+
for(var i=1; i<sourceData.Data.length; )
|
|
65765
|
+
{
|
|
65766
|
+
}
|
|
65767
|
+
}
|
|
65670
65768
|
}
|
|
65671
65769
|
|
|
65672
65770
|
//////////////////////////////////////////////////////////////////
|
|
@@ -67046,6 +67144,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
67046
67144
|
}
|
|
67047
67145
|
|
|
67048
67146
|
var subFrame=new SubFrameItem();
|
|
67147
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
67049
67148
|
subFrame.Frame=frame;
|
|
67050
67149
|
if (i==0)
|
|
67051
67150
|
subFrame.Height=20;
|
|
@@ -67112,6 +67211,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
67112
67211
|
}
|
|
67113
67212
|
|
|
67114
67213
|
var subFrame=new SubFrameItem();
|
|
67214
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
67115
67215
|
subFrame.Frame=frame;
|
|
67116
67216
|
subFrame.Height=10;
|
|
67117
67217
|
|
|
@@ -69631,6 +69731,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
69631
69731
|
else if (obj.ShowRightText===false) frame.IsShow=false;
|
|
69632
69732
|
if (IFrameSplitOperator.IsBool(obj.ShowToolbar)) frame.IsShowToolbar=obj.ShowToolbar; //废弃
|
|
69633
69733
|
if (IFrameSplitOperator.IsBool(obj.IsShareY)) frame.IsShareY=obj.IsShareY;
|
|
69734
|
+
if (IFrameSplitOperator.IsNumber(obj.IsShowMainFrame)) frame.IsShowMainFrame=obj.IsShowMainFrame;
|
|
69634
69735
|
//if (IFrameSplitOperator.IsBool(obj.IsShowIndexTitle)) frame.IsShowIndexTitle=obj.IsShowIndexTitle;
|
|
69635
69736
|
if (IFrameSplitOperator.IsBool(obj.IsCalculateYMaxMin)) frame.IsCalculateYMaxMin=obj.IsCalculateYMaxMin; //是否计算Y最大最小值
|
|
69636
69737
|
|
|
@@ -10762,13 +10762,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10762
10762
|
{
|
|
10763
10763
|
ID:key, Frame:frame, ChartPaint:[] , Max:null, Min:null,
|
|
10764
10764
|
OverlayFrame:[], //共享坐标
|
|
10765
|
-
SingleOverlay:[]
|
|
10765
|
+
SingleOverlay:[], //独立坐标
|
|
10766
|
+
MainOverlayFrame:[null, null], //叠加坐标在主坐标显示[0]=left [1]=right
|
|
10766
10767
|
};
|
|
10767
10768
|
|
|
10768
10769
|
for(var j=0;j<subItem.OverlayIndex.length;++j)
|
|
10769
10770
|
{
|
|
10770
10771
|
var overlayItem=subItem.OverlayIndex[j];
|
|
10771
10772
|
var overlayFrame=overlayItem.Frame;
|
|
10773
|
+
|
|
10774
|
+
if (overlayFrame.IsShowMainFrame===1) item.MainOverlayFrame[0]= overlayFrame;
|
|
10775
|
+
else if (overlayFrame.IsShowMainFrame===2) item.MainOverlayFrame[1]= overlayFrame;
|
|
10776
|
+
|
|
10772
10777
|
if (overlayFrame.IsShareY)
|
|
10773
10778
|
{
|
|
10774
10779
|
if (!overlayFrame.MainFrame) continue;
|
|
@@ -10784,7 +10789,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10784
10789
|
{
|
|
10785
10790
|
item.SingleOverlay.push(overlayItem);
|
|
10786
10791
|
}
|
|
10787
|
-
|
|
10788
10792
|
}
|
|
10789
10793
|
|
|
10790
10794
|
mapFrame.set(key, item);
|
|
@@ -10869,6 +10873,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10869
10873
|
item.OverlayFrame[j].XYSplit=true;
|
|
10870
10874
|
}
|
|
10871
10875
|
|
|
10876
|
+
//叠加坐标显示在主图坐标 需要同步
|
|
10877
|
+
for(var i=0;i<item.MainOverlayFrame.length;++i)
|
|
10878
|
+
{
|
|
10879
|
+
var subItem=item.MainOverlayFrame[i];
|
|
10880
|
+
if (subItem) subItem.XYSplit=true;
|
|
10881
|
+
}
|
|
10882
|
+
|
|
10872
10883
|
//独立坐标叠加指标
|
|
10873
10884
|
for(var i=0;i<item.SingleOverlay.length;++i)
|
|
10874
10885
|
{
|
|
@@ -13851,6 +13862,8 @@ function AverageWidthFrame()
|
|
|
13851
13862
|
this.XTextExtend; //[0]=底部 { Align:0=默认(居中), 1=左对齐 }
|
|
13852
13863
|
this.XLineExtend; //[0]=底部 { Mode:1, Color: } Mode=1 分割线 Mode=2短线
|
|
13853
13864
|
|
|
13865
|
+
this.FrameData={ SubFrameItem:null }; //窗口框架信息
|
|
13866
|
+
|
|
13854
13867
|
//画图工具刻度
|
|
13855
13868
|
|
|
13856
13869
|
this.DrawPicture={
|
|
@@ -15800,6 +15813,25 @@ function AverageWidthFrame()
|
|
|
15800
15813
|
|
|
15801
15814
|
if (divToolbar.style.display!='none') divToolbar.style.display='none';
|
|
15802
15815
|
}
|
|
15816
|
+
|
|
15817
|
+
this.GetMainOverlayFrame=function()
|
|
15818
|
+
{
|
|
15819
|
+
if (!this.FrameData || !this.FrameData.SubFrameItem) return null;
|
|
15820
|
+
|
|
15821
|
+
var subFrame=this.FrameData.SubFrameItem;
|
|
15822
|
+
var leftFrame=null, rightFrame=null;
|
|
15823
|
+
for(var i=0;i<subFrame.OverlayIndex.length;++i)
|
|
15824
|
+
{
|
|
15825
|
+
var item=subFrame.OverlayIndex[i];
|
|
15826
|
+
var overlayFrame=item.Frame;
|
|
15827
|
+
if (overlayFrame.IsShowMainFrame==2) rightFrame=overlayFrame;
|
|
15828
|
+
else if (overlayFrame.IsShowMainFrame==1) leftFrame=overlayFrame;
|
|
15829
|
+
}
|
|
15830
|
+
|
|
15831
|
+
if (!leftFrame && !rightFrame) return null;
|
|
15832
|
+
|
|
15833
|
+
return [leftFrame, rightFrame];
|
|
15834
|
+
}
|
|
15803
15835
|
}
|
|
15804
15836
|
|
|
15805
15837
|
function MinuteFrame()
|
|
@@ -17909,7 +17941,7 @@ function OverlayMinuteFrame()
|
|
|
17909
17941
|
this.HorizontalMax=this.MainFrame.HorizontalMax;
|
|
17910
17942
|
this.HorizontalMin=this.MainFrame.HorizontalMin;
|
|
17911
17943
|
this.HorizontalInfo=[];
|
|
17912
|
-
for(var i
|
|
17944
|
+
for(var i=0; i<this.MainFrame.HorizontalInfo.length; ++i)
|
|
17913
17945
|
{
|
|
17914
17946
|
var item=this.MainFrame.HorizontalInfo[i];
|
|
17915
17947
|
this.HorizontalInfo.push(item);
|
|
@@ -17919,7 +17951,7 @@ function OverlayMinuteFrame()
|
|
|
17919
17951
|
{
|
|
17920
17952
|
if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
|
|
17921
17953
|
}
|
|
17922
|
-
|
|
17954
|
+
|
|
17923
17955
|
// if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
|
|
17924
17956
|
}
|
|
17925
17957
|
}
|
|
@@ -19253,6 +19285,7 @@ function OverlayKLineFrame()
|
|
|
19253
19285
|
|
|
19254
19286
|
this.MainFrame=null; //主框架
|
|
19255
19287
|
this.IsShareY=false; //使用和主框架公用Y轴
|
|
19288
|
+
this.IsShowMainFrame=0; //是否显示在主框架坐标上 1=左边 2=右边
|
|
19256
19289
|
this.IsCalculateYMaxMin=true; //是否计算Y最大最小值
|
|
19257
19290
|
this.RightOffset=50;
|
|
19258
19291
|
this.PenBorder=g_JSChartResource.OverlayFrame.BolderPen; //'rgb(0,0,0)'
|
|
@@ -19463,8 +19496,6 @@ function OverlayKLineFrame()
|
|
|
19463
19496
|
{
|
|
19464
19497
|
if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
|
|
19465
19498
|
}
|
|
19466
|
-
|
|
19467
|
-
// if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
|
|
19468
19499
|
}
|
|
19469
19500
|
|
|
19470
19501
|
//画Y轴
|
|
@@ -49645,6 +49676,7 @@ function FrameSplitY()
|
|
|
49645
49676
|
if (this.SplitType!=1) this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0));
|
|
49646
49677
|
|
|
49647
49678
|
this.RightFrameSplitY();
|
|
49679
|
+
this.MainOverlayFrameSplitY(); //主图Y轴绑定叠加Y轴坐标
|
|
49648
49680
|
this.CallAcutionSplitY(this.SplitCount,splitData);
|
|
49649
49681
|
|
|
49650
49682
|
if (this.EnableRemoveZero) this.RemoveZero(this.Frame.HorizontalInfo);
|
|
@@ -49865,6 +49897,41 @@ function FrameSplitY()
|
|
|
49865
49897
|
}
|
|
49866
49898
|
}
|
|
49867
49899
|
|
|
49900
|
+
this.MainOverlayFrameSplitY=function()
|
|
49901
|
+
{
|
|
49902
|
+
if (!this.Frame.GetMainOverlayFrame) return;
|
|
49903
|
+
var aryOverlayFrame=this.Frame.GetMainOverlayFrame();
|
|
49904
|
+
if (!aryOverlayFrame ) return;
|
|
49905
|
+
|
|
49906
|
+
if (aryOverlayFrame[1])
|
|
49907
|
+
{
|
|
49908
|
+
var rightFrame=aryOverlayFrame[1];
|
|
49909
|
+
if (rightFrame.YSplitOperator) rightFrame.YSplitOperator.Operator();
|
|
49910
|
+
|
|
49911
|
+
for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
|
|
49912
|
+
{
|
|
49913
|
+
var item=this.Frame.HorizontalInfo[i];
|
|
49914
|
+
var y=this.Frame.GetYFromData(item.Value);
|
|
49915
|
+
var yValue=rightFrame.GetYData(y);
|
|
49916
|
+
item.Message[1] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
|
|
49917
|
+
}
|
|
49918
|
+
}
|
|
49919
|
+
|
|
49920
|
+
if (aryOverlayFrame[0])
|
|
49921
|
+
{
|
|
49922
|
+
var leftFrame=aryOverlayFrame[0];
|
|
49923
|
+
if (leftFrame.YSplitOperator) leftFrame.YSplitOperator.Operator();
|
|
49924
|
+
|
|
49925
|
+
for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
|
|
49926
|
+
{
|
|
49927
|
+
var item=this.Frame.HorizontalInfo[i];
|
|
49928
|
+
var y=this.Frame.GetYFromData(item.Value);
|
|
49929
|
+
var yValue=leftFrame.GetYData(y);
|
|
49930
|
+
item.Message[0] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
|
|
49931
|
+
}
|
|
49932
|
+
}
|
|
49933
|
+
}
|
|
49934
|
+
|
|
49868
49935
|
this.CustomCoordinate=function()
|
|
49869
49936
|
{
|
|
49870
49937
|
this.Frame.CustomHorizontalInfo=[];
|
|
@@ -69375,7 +69442,7 @@ function KLineCustomCalulate()
|
|
|
69375
69442
|
["RenkoCalculate", { Create:function() { return new RenkoCalculate(); } }],
|
|
69376
69443
|
["HeikinAshiCalculate", { Create:function() { return new HeikinAshiCalculate(); } }],
|
|
69377
69444
|
["LineBreakCalcuate", { Create:function() { return new LineBreakCalcuate(); } }],
|
|
69378
|
-
["KagiCalculate", { Create:function(){ return new
|
|
69445
|
+
["KagiCalculate", { Create:function(){ return new KagiCalculate(); } }]
|
|
69379
69446
|
]
|
|
69380
69447
|
);
|
|
69381
69448
|
|
|
@@ -69558,7 +69625,38 @@ function RenkoCalculate()
|
|
|
69558
69625
|
//
|
|
69559
69626
|
function KagiCalculate()
|
|
69560
69627
|
{
|
|
69628
|
+
this.Symbol;
|
|
69629
|
+
this.SourceData;
|
|
69630
|
+
this.FloatPrecision=2; //品种小数位数
|
|
69631
|
+
this.ATR={ Count:14 }; //使用ATR计算砖块大小
|
|
69632
|
+
|
|
69633
|
+
this.RecvHistoryData=function(sourceData, option) //历史日线数据
|
|
69634
|
+
{
|
|
69635
|
+
this.Symbol=option.Symbol;
|
|
69636
|
+
this.SourceData=sourceData;
|
|
69637
|
+
this.FloatPrecision=GetfloatPrecision(this.Symbol);
|
|
69638
|
+
return this.Calculate(sourceData);
|
|
69639
|
+
}
|
|
69640
|
+
|
|
69641
|
+
this.Calculate=function(sourceData)
|
|
69642
|
+
{
|
|
69643
|
+
var bindData=new ChartData();
|
|
69644
|
+
bindData.Data=[]
|
|
69645
|
+
bindData.Right=sourceData.Right;
|
|
69646
|
+
bindData.Period=sourceData.Period;
|
|
69647
|
+
bindData.DataType=sourceData.DataType;
|
|
69648
|
+
bindData.Symbol=sourceData.symbol;
|
|
69561
69649
|
|
|
69650
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data)) return bindData;
|
|
69651
|
+
|
|
69652
|
+
var periodCount=this.ATR.Count;
|
|
69653
|
+
|
|
69654
|
+
var kItem=sourceData.Data[0];
|
|
69655
|
+
this.LastData=HistoryData.Copy(kItem);
|
|
69656
|
+
for(var i=1; i<sourceData.Data.length; )
|
|
69657
|
+
{
|
|
69658
|
+
}
|
|
69659
|
+
}
|
|
69562
69660
|
}
|
|
69563
69661
|
|
|
69564
69662
|
//////////////////////////////////////////////////////////////////
|
|
@@ -70938,6 +71036,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
70938
71036
|
}
|
|
70939
71037
|
|
|
70940
71038
|
var subFrame=new SubFrameItem();
|
|
71039
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
70941
71040
|
subFrame.Frame=frame;
|
|
70942
71041
|
if (i==0)
|
|
70943
71042
|
subFrame.Height=20;
|
|
@@ -71004,6 +71103,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71004
71103
|
}
|
|
71005
71104
|
|
|
71006
71105
|
var subFrame=new SubFrameItem();
|
|
71106
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
71007
71107
|
subFrame.Frame=frame;
|
|
71008
71108
|
subFrame.Height=10;
|
|
71009
71109
|
|
|
@@ -73523,6 +73623,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73523
73623
|
else if (obj.ShowRightText===false) frame.IsShow=false;
|
|
73524
73624
|
if (IFrameSplitOperator.IsBool(obj.ShowToolbar)) frame.IsShowToolbar=obj.ShowToolbar; //废弃
|
|
73525
73625
|
if (IFrameSplitOperator.IsBool(obj.IsShareY)) frame.IsShareY=obj.IsShareY;
|
|
73626
|
+
if (IFrameSplitOperator.IsNumber(obj.IsShowMainFrame)) frame.IsShowMainFrame=obj.IsShowMainFrame;
|
|
73526
73627
|
//if (IFrameSplitOperator.IsBool(obj.IsShowIndexTitle)) frame.IsShowIndexTitle=obj.IsShowIndexTitle;
|
|
73527
73628
|
if (IFrameSplitOperator.IsBool(obj.IsCalculateYMaxMin)) frame.IsCalculateYMaxMin=obj.IsCalculateYMaxMin; //是否计算Y最大最小值
|
|
73528
73629
|
|
|
@@ -131655,7 +131756,7 @@ function ScrollBarBGChart()
|
|
|
131655
131756
|
|
|
131656
131757
|
|
|
131657
131758
|
|
|
131658
|
-
var HQCHART_VERSION="1.1.
|
|
131759
|
+
var HQCHART_VERSION="1.1.13139";
|
|
131659
131760
|
|
|
131660
131761
|
function PrintHQChartVersion()
|
|
131661
131762
|
{
|
|
@@ -10806,13 +10806,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10806
10806
|
{
|
|
10807
10807
|
ID:key, Frame:frame, ChartPaint:[] , Max:null, Min:null,
|
|
10808
10808
|
OverlayFrame:[], //共享坐标
|
|
10809
|
-
SingleOverlay:[]
|
|
10809
|
+
SingleOverlay:[], //独立坐标
|
|
10810
|
+
MainOverlayFrame:[null, null], //叠加坐标在主坐标显示[0]=left [1]=right
|
|
10810
10811
|
};
|
|
10811
10812
|
|
|
10812
10813
|
for(var j=0;j<subItem.OverlayIndex.length;++j)
|
|
10813
10814
|
{
|
|
10814
10815
|
var overlayItem=subItem.OverlayIndex[j];
|
|
10815
10816
|
var overlayFrame=overlayItem.Frame;
|
|
10817
|
+
|
|
10818
|
+
if (overlayFrame.IsShowMainFrame===1) item.MainOverlayFrame[0]= overlayFrame;
|
|
10819
|
+
else if (overlayFrame.IsShowMainFrame===2) item.MainOverlayFrame[1]= overlayFrame;
|
|
10820
|
+
|
|
10816
10821
|
if (overlayFrame.IsShareY)
|
|
10817
10822
|
{
|
|
10818
10823
|
if (!overlayFrame.MainFrame) continue;
|
|
@@ -10828,7 +10833,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10828
10833
|
{
|
|
10829
10834
|
item.SingleOverlay.push(overlayItem);
|
|
10830
10835
|
}
|
|
10831
|
-
|
|
10832
10836
|
}
|
|
10833
10837
|
|
|
10834
10838
|
mapFrame.set(key, item);
|
|
@@ -10913,6 +10917,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10913
10917
|
item.OverlayFrame[j].XYSplit=true;
|
|
10914
10918
|
}
|
|
10915
10919
|
|
|
10920
|
+
//叠加坐标显示在主图坐标 需要同步
|
|
10921
|
+
for(var i=0;i<item.MainOverlayFrame.length;++i)
|
|
10922
|
+
{
|
|
10923
|
+
var subItem=item.MainOverlayFrame[i];
|
|
10924
|
+
if (subItem) subItem.XYSplit=true;
|
|
10925
|
+
}
|
|
10926
|
+
|
|
10916
10927
|
//独立坐标叠加指标
|
|
10917
10928
|
for(var i=0;i<item.SingleOverlay.length;++i)
|
|
10918
10929
|
{
|
|
@@ -13895,6 +13906,8 @@ function AverageWidthFrame()
|
|
|
13895
13906
|
this.XTextExtend; //[0]=底部 { Align:0=默认(居中), 1=左对齐 }
|
|
13896
13907
|
this.XLineExtend; //[0]=底部 { Mode:1, Color: } Mode=1 分割线 Mode=2短线
|
|
13897
13908
|
|
|
13909
|
+
this.FrameData={ SubFrameItem:null }; //窗口框架信息
|
|
13910
|
+
|
|
13898
13911
|
//画图工具刻度
|
|
13899
13912
|
|
|
13900
13913
|
this.DrawPicture={
|
|
@@ -15844,6 +15857,25 @@ function AverageWidthFrame()
|
|
|
15844
15857
|
|
|
15845
15858
|
if (divToolbar.style.display!='none') divToolbar.style.display='none';
|
|
15846
15859
|
}
|
|
15860
|
+
|
|
15861
|
+
this.GetMainOverlayFrame=function()
|
|
15862
|
+
{
|
|
15863
|
+
if (!this.FrameData || !this.FrameData.SubFrameItem) return null;
|
|
15864
|
+
|
|
15865
|
+
var subFrame=this.FrameData.SubFrameItem;
|
|
15866
|
+
var leftFrame=null, rightFrame=null;
|
|
15867
|
+
for(var i=0;i<subFrame.OverlayIndex.length;++i)
|
|
15868
|
+
{
|
|
15869
|
+
var item=subFrame.OverlayIndex[i];
|
|
15870
|
+
var overlayFrame=item.Frame;
|
|
15871
|
+
if (overlayFrame.IsShowMainFrame==2) rightFrame=overlayFrame;
|
|
15872
|
+
else if (overlayFrame.IsShowMainFrame==1) leftFrame=overlayFrame;
|
|
15873
|
+
}
|
|
15874
|
+
|
|
15875
|
+
if (!leftFrame && !rightFrame) return null;
|
|
15876
|
+
|
|
15877
|
+
return [leftFrame, rightFrame];
|
|
15878
|
+
}
|
|
15847
15879
|
}
|
|
15848
15880
|
|
|
15849
15881
|
function MinuteFrame()
|
|
@@ -17953,7 +17985,7 @@ function OverlayMinuteFrame()
|
|
|
17953
17985
|
this.HorizontalMax=this.MainFrame.HorizontalMax;
|
|
17954
17986
|
this.HorizontalMin=this.MainFrame.HorizontalMin;
|
|
17955
17987
|
this.HorizontalInfo=[];
|
|
17956
|
-
for(var i
|
|
17988
|
+
for(var i=0; i<this.MainFrame.HorizontalInfo.length; ++i)
|
|
17957
17989
|
{
|
|
17958
17990
|
var item=this.MainFrame.HorizontalInfo[i];
|
|
17959
17991
|
this.HorizontalInfo.push(item);
|
|
@@ -17963,7 +17995,7 @@ function OverlayMinuteFrame()
|
|
|
17963
17995
|
{
|
|
17964
17996
|
if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
|
|
17965
17997
|
}
|
|
17966
|
-
|
|
17998
|
+
|
|
17967
17999
|
// if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
|
|
17968
18000
|
}
|
|
17969
18001
|
}
|
|
@@ -19297,6 +19329,7 @@ function OverlayKLineFrame()
|
|
|
19297
19329
|
|
|
19298
19330
|
this.MainFrame=null; //主框架
|
|
19299
19331
|
this.IsShareY=false; //使用和主框架公用Y轴
|
|
19332
|
+
this.IsShowMainFrame=0; //是否显示在主框架坐标上 1=左边 2=右边
|
|
19300
19333
|
this.IsCalculateYMaxMin=true; //是否计算Y最大最小值
|
|
19301
19334
|
this.RightOffset=50;
|
|
19302
19335
|
this.PenBorder=g_JSChartResource.OverlayFrame.BolderPen; //'rgb(0,0,0)'
|
|
@@ -19507,8 +19540,6 @@ function OverlayKLineFrame()
|
|
|
19507
19540
|
{
|
|
19508
19541
|
if (this.YSplitOperator!=null) this.YSplitOperator.Operator();
|
|
19509
19542
|
}
|
|
19510
|
-
|
|
19511
|
-
// if (this.XSplitOperator!=null) this.XSplitOperator.Operator(); 子坐标和主坐标X轴一致 所以不用计算
|
|
19512
19543
|
}
|
|
19513
19544
|
|
|
19514
19545
|
//画Y轴
|
|
@@ -49689,6 +49720,7 @@ function FrameSplitY()
|
|
|
49689
49720
|
if (this.SplitType!=1) this.Frame.HorizontalInfo = this.Filter(this.Frame.HorizontalInfo,(splitData.Max>0 && splitData.Min<0));
|
|
49690
49721
|
|
|
49691
49722
|
this.RightFrameSplitY();
|
|
49723
|
+
this.MainOverlayFrameSplitY(); //主图Y轴绑定叠加Y轴坐标
|
|
49692
49724
|
this.CallAcutionSplitY(this.SplitCount,splitData);
|
|
49693
49725
|
|
|
49694
49726
|
if (this.EnableRemoveZero) this.RemoveZero(this.Frame.HorizontalInfo);
|
|
@@ -49909,6 +49941,41 @@ function FrameSplitY()
|
|
|
49909
49941
|
}
|
|
49910
49942
|
}
|
|
49911
49943
|
|
|
49944
|
+
this.MainOverlayFrameSplitY=function()
|
|
49945
|
+
{
|
|
49946
|
+
if (!this.Frame.GetMainOverlayFrame) return;
|
|
49947
|
+
var aryOverlayFrame=this.Frame.GetMainOverlayFrame();
|
|
49948
|
+
if (!aryOverlayFrame ) return;
|
|
49949
|
+
|
|
49950
|
+
if (aryOverlayFrame[1])
|
|
49951
|
+
{
|
|
49952
|
+
var rightFrame=aryOverlayFrame[1];
|
|
49953
|
+
if (rightFrame.YSplitOperator) rightFrame.YSplitOperator.Operator();
|
|
49954
|
+
|
|
49955
|
+
for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
|
|
49956
|
+
{
|
|
49957
|
+
var item=this.Frame.HorizontalInfo[i];
|
|
49958
|
+
var y=this.Frame.GetYFromData(item.Value);
|
|
49959
|
+
var yValue=rightFrame.GetYData(y);
|
|
49960
|
+
item.Message[1] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
|
|
49961
|
+
}
|
|
49962
|
+
}
|
|
49963
|
+
|
|
49964
|
+
if (aryOverlayFrame[0])
|
|
49965
|
+
{
|
|
49966
|
+
var leftFrame=aryOverlayFrame[0];
|
|
49967
|
+
if (leftFrame.YSplitOperator) leftFrame.YSplitOperator.Operator();
|
|
49968
|
+
|
|
49969
|
+
for(var i=0;i<this.Frame.HorizontalInfo.length;++i)
|
|
49970
|
+
{
|
|
49971
|
+
var item=this.Frame.HorizontalInfo[i];
|
|
49972
|
+
var y=this.Frame.GetYFromData(item.Value);
|
|
49973
|
+
var yValue=leftFrame.GetYData(y);
|
|
49974
|
+
item.Message[0] = IFrameSplitOperator.FormatValueString(yValue, this.FloatPrecision,this.LanguageID);
|
|
49975
|
+
}
|
|
49976
|
+
}
|
|
49977
|
+
}
|
|
49978
|
+
|
|
49912
49979
|
this.CustomCoordinate=function()
|
|
49913
49980
|
{
|
|
49914
49981
|
this.Frame.CustomHorizontalInfo=[];
|
|
@@ -69419,7 +69486,7 @@ function KLineCustomCalulate()
|
|
|
69419
69486
|
["RenkoCalculate", { Create:function() { return new RenkoCalculate(); } }],
|
|
69420
69487
|
["HeikinAshiCalculate", { Create:function() { return new HeikinAshiCalculate(); } }],
|
|
69421
69488
|
["LineBreakCalcuate", { Create:function() { return new LineBreakCalcuate(); } }],
|
|
69422
|
-
["KagiCalculate", { Create:function(){ return new
|
|
69489
|
+
["KagiCalculate", { Create:function(){ return new KagiCalculate(); } }]
|
|
69423
69490
|
]
|
|
69424
69491
|
);
|
|
69425
69492
|
|
|
@@ -69602,7 +69669,38 @@ function RenkoCalculate()
|
|
|
69602
69669
|
//
|
|
69603
69670
|
function KagiCalculate()
|
|
69604
69671
|
{
|
|
69672
|
+
this.Symbol;
|
|
69673
|
+
this.SourceData;
|
|
69674
|
+
this.FloatPrecision=2; //品种小数位数
|
|
69675
|
+
this.ATR={ Count:14 }; //使用ATR计算砖块大小
|
|
69676
|
+
|
|
69677
|
+
this.RecvHistoryData=function(sourceData, option) //历史日线数据
|
|
69678
|
+
{
|
|
69679
|
+
this.Symbol=option.Symbol;
|
|
69680
|
+
this.SourceData=sourceData;
|
|
69681
|
+
this.FloatPrecision=GetfloatPrecision(this.Symbol);
|
|
69682
|
+
return this.Calculate(sourceData);
|
|
69683
|
+
}
|
|
69684
|
+
|
|
69685
|
+
this.Calculate=function(sourceData)
|
|
69686
|
+
{
|
|
69687
|
+
var bindData=new ChartData();
|
|
69688
|
+
bindData.Data=[]
|
|
69689
|
+
bindData.Right=sourceData.Right;
|
|
69690
|
+
bindData.Period=sourceData.Period;
|
|
69691
|
+
bindData.DataType=sourceData.DataType;
|
|
69692
|
+
bindData.Symbol=sourceData.symbol;
|
|
69605
69693
|
|
|
69694
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data)) return bindData;
|
|
69695
|
+
|
|
69696
|
+
var periodCount=this.ATR.Count;
|
|
69697
|
+
|
|
69698
|
+
var kItem=sourceData.Data[0];
|
|
69699
|
+
this.LastData=HistoryData.Copy(kItem);
|
|
69700
|
+
for(var i=1; i<sourceData.Data.length; )
|
|
69701
|
+
{
|
|
69702
|
+
}
|
|
69703
|
+
}
|
|
69606
69704
|
}
|
|
69607
69705
|
|
|
69608
69706
|
//////////////////////////////////////////////////////////////////
|
|
@@ -70982,6 +71080,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
70982
71080
|
}
|
|
70983
71081
|
|
|
70984
71082
|
var subFrame=new SubFrameItem();
|
|
71083
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
70985
71084
|
subFrame.Frame=frame;
|
|
70986
71085
|
if (i==0)
|
|
70987
71086
|
subFrame.Height=20;
|
|
@@ -71048,6 +71147,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71048
71147
|
}
|
|
71049
71148
|
|
|
71050
71149
|
var subFrame=new SubFrameItem();
|
|
71150
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
71051
71151
|
subFrame.Frame=frame;
|
|
71052
71152
|
subFrame.Height=10;
|
|
71053
71153
|
|
|
@@ -73567,6 +73667,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73567
73667
|
else if (obj.ShowRightText===false) frame.IsShow=false;
|
|
73568
73668
|
if (IFrameSplitOperator.IsBool(obj.ShowToolbar)) frame.IsShowToolbar=obj.ShowToolbar; //废弃
|
|
73569
73669
|
if (IFrameSplitOperator.IsBool(obj.IsShareY)) frame.IsShareY=obj.IsShareY;
|
|
73670
|
+
if (IFrameSplitOperator.IsNumber(obj.IsShowMainFrame)) frame.IsShowMainFrame=obj.IsShowMainFrame;
|
|
73570
73671
|
//if (IFrameSplitOperator.IsBool(obj.IsShowIndexTitle)) frame.IsShowIndexTitle=obj.IsShowIndexTitle;
|
|
73571
73672
|
if (IFrameSplitOperator.IsBool(obj.IsCalculateYMaxMin)) frame.IsCalculateYMaxMin=obj.IsCalculateYMaxMin; //是否计算Y最大最小值
|
|
73572
73673
|
|
|
@@ -134219,7 +134320,7 @@ function HQChartScriptWorker()
|
|
|
134219
134320
|
|
|
134220
134321
|
|
|
134221
134322
|
|
|
134222
|
-
var HQCHART_VERSION="1.1.
|
|
134323
|
+
var HQCHART_VERSION="1.1.13139";
|
|
134223
134324
|
|
|
134224
134325
|
function PrintHQChartVersion()
|
|
134225
134326
|
{
|