hqchart 1.1.11279 → 1.1.11289
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
|
@@ -1565,7 +1565,8 @@ CHANGE_INDEX:4,//换指标
|
|
|
1565
1565
|
CLOSE_INDEX_WINDOW:5,//关闭指标窗口
|
|
1566
1566
|
OVERLAY_INDEX:6,//叠加指标
|
|
1567
1567
|
MODIFY_OVERLAY_INDEX_PARAM:7,//改叠加指标参数
|
|
1568
|
-
CHIP_DEFULT:8,CHIP_LONG:9,CHIP_RECENT:10};var JSCHART_DATA_FIELD_ID={KLINE_ORDERFLOW:99,MINUTE_MULTI_DAY_EXTENDDATA:21
|
|
1568
|
+
CHIP_DEFULT:8,CHIP_LONG:9,CHIP_RECENT:10};var JSCHART_DATA_FIELD_ID={KLINE_ORDERFLOW:99,MINUTE_MULTI_DAY_EXTENDDATA:21,//多日分时图扩展数据序号
|
|
1569
|
+
KLINE_COLOR_DATA:66//K线自定义颜色数据
|
|
1569
1570
|
};function PhoneDBClick(){this.Start=[];this.Clear=function(){this.Start=[];};this.AddTouchStart=function(x,y,time){if(this.Start.length>0){var item=this.Start[this.Start.length-1];var spanTime=time-item.Time;if(spanTime>0&&spanTime<300){this.Start.push({X:x,Y:y,Time:time});}else{this.Start=[];}}else{this.Start.push({X:x,Y:y,Time:time});}};this.IsVaildDBClick=function(){if(this.Start.length==2)return true;return false;};this.AddTouchEnd=function(time){if(this.Start.length<=0)return;var item=this.Start[this.Start.length-1];var spanTime=time-item.Time;if(spanTime>=0&&spanTime<150){}else{this.Start=[];}};}/*
|
|
1570
1571
|
图形控件
|
|
1571
1572
|
*/function JSChartContainer(uielement,OffscreenElement){var _this3=this;this.ClassName='JSChartContainer';var _self=this;this.Frame;//框架画法
|
|
@@ -1754,7 +1755,8 @@ if(option&&option.ParentFunction=='OnMouseMove'&&option.Point){ptPosition=this.F
|
|
|
1754
1755
|
var barrageData=null;for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.ClassName==='BarragePaint'){bCreated=true;barrageData=item.BarrageList;break;}}if(!bCreated){var chart=new BarragePaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);barrageData=chart.BarrageList;}this.EnableAnimation=true;var self=this;window.requestAnimationFrame(function(){self.DrawAnimation();});return barrageData;};this.StopAnimation=function(){this.EnableAnimation=false;this.DrawDynamicInfo();};this.GetChartTooltipData=function(x,y,option){var toolTip=new TooltipData();if(this.ChartInfoPaint){if(this.ChartInfoPaint.GetTooltipData(x,y,toolTip))return toolTip;}if(this.PtInChartPaintTooltip(x,y,toolTip))return toolTip;if(IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)){for(var i=0;i<this.Frame.SubFrame.length;++i){var subFrame=this.Frame.SubFrame[i];for(var j=0;j<subFrame.OverlayIndex.length;++j){var overlayItem=subFrame.OverlayIndex[j];for(var k=0;k<overlayItem.ChartPaint.length;++k){var item=overlayItem.ChartPaint[k];if(item.GetTooltipData(x,y,toolTip))return toolTip;}}}}if(this.PtInOverlayChartPaintTooltip(x,y,toolTip))return toolTip;return null;};this.PtInExtendChartButtons=function(x,y){for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.PtInButtons){var button=item.PtInButtons(x,y);if(button){button.Chart=item;return button;}}}return null;};this.OnMouseMove=function(x,y,e,isPhone){this.LastPoint.X=x;this.LastPoint.Y=y;var mouseStatus=null;//鼠标状态
|
|
1755
1756
|
var frameID=this.Frame.PtInFrame(x,y);if(IFrameSplitOperator.IsNumber(frameID)&&frameID>=0)//在K线内部移动,调整K线索引
|
|
1756
1757
|
this.CursorIndex=this.Frame.GetXData(x);var paint=this.GetRectSelectPaint();if(paint&&paint.GetPointCount()>0){var item=paint.PtInPaint(x,y);if(item){mouseStatus={Cursor:"ew-resize",Name:"DragRectSelect"};JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] drag rect select ",item);}}if(this.EnableBorderDrag&&this.Frame&&!this.CurrentChartDrawPicture){var dragBorder=this.Frame.PtInFrameBorder(x,y);if(dragBorder&&dragBorder.Index>=0){mouseStatus={Cursor:"n-resize",Name:"DragBorder"};JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] drag border ",dragBorder);}}if(this.EnableYDrag&&this.Frame&&!this.CurrentChartDrawPicture){var dragY=this.TryYDrag(x,y);if(dragY){mouseStatus={Cursor:dragY.Position==0?"n-resize":"row-resize",Name:"DragY"};JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] drag y ",dragY);}}if(!this.CurrentChartDrawPicture){var button=this.Frame.PtInButtons(x,y);if(button){mouseStatus={Cursor:"pointer",Name:"FrameButton"};JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] frame button ",button);}else{button=this.PtInExtendChartButtons(x,y);if(button){mouseStatus={Cursor:"pointer",Name:"ExtendChartButton"};JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] extend chart button ",button);}}}if(this.ChartCorssCursor){var crossButton=this.ChartCorssCursor.PtInButton(x,y);if(crossButton){mouseStatus={Cursor:"pointer",Name:"CorssCursorButton"};JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] cross cursor button ",crossButton);}}if(this.ClassName=="KLineChartContainer"&&this.Frame.PtInFrameBottom(x,y)){mouseStatus={Cursor:"ew-resize",Name:"FrameButtom"};JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] frame bottom ");}if(this.SelectedChart.EnableMoveOn&&this.PtInChart&&!this.CurrentChartDrawPicture){var chartInfo=this.PtInChart(x,y);if(chartInfo&&chartInfo.Identify){mouseStatus={Cursor:"pointer",Name:"PtInChart"};this.SelectedChart.MoveOn.Identify=chartInfo.Identify;this.SelectedChart.MoveOn.Identify=null;JSConsole.Chart.Log("[JSChartContainer::OnMouseMove] Point in chart ",chartInfo);}else{this.SelectedChart.MoveOn.Identify=null;}}else{this.SelectedChart.MoveOn.Identify=null;}var bDrawPicture=false;//是否正在画图
|
|
1757
|
-
if(this.CurrentChartDrawPicture){if(this.CurrentChartDrawPicture.Status!=20)mouseStatus={Cursor:"crosshair",Name:"CurrentChartDrawPicture"};
|
|
1758
|
+
if(this.CurrentChartDrawPicture){var index=this.Frame.PtInChartFrame(x,y);if(this.CurrentChartDrawPicture.Status!=20){if(index>=0)mouseStatus={Cursor:"crosshair",Name:"CurrentChartDrawPicture"};else mouseStatus={Cursor:"not-allowed",Name:"CurrentChartDrawPicture"};//不在画图区域
|
|
1759
|
+
}if(this.CurrentChartDrawPicture.SetLastPoint)this.CurrentChartDrawPicture.SetLastPoint({X:x,Y:y});bDrawPicture=true;}else{var drawPictrueData={};drawPictrueData.X=x;drawPictrueData.Y=y;if(this.GetChartDrawPictureByPoint(drawPictrueData)&&drawPictrueData.ChartDrawPicture&&drawPictrueData.ChartDrawPicture.EnableMove==true){if(drawPictrueData.PointIndex===100)this.UIElement.style.cursor="move";else this.UIElement.style.cursor="pointer";bDrawPicture=true;this.MoveOnChartDrawPicture=drawPictrueData.ChartDrawPicture;}else{if(!this.MouseDrag)this.UIElement.style.cursor="default";}}var clientPos=this.PtInClient(x,y);var option={ParentFunction:'OnMouseMove',Point:{X:x,Y:y},IsPhone:isPhone===true,ClientPos:clientPos};if(e&&(e.type=="mouseout"||e.type=="mouseleave")||button)option.Corss=false;//鼠标移开,在按钮上,不显示十字光标
|
|
1758
1760
|
if(this.SetCorssCursorIndex)this.SetCorssCursorIndex(option);this.DrawDynamicInfo(option);if(mouseStatus)this.UIElement.style.cursor=mouseStatus.Cursor;if(this.IsShowTooltip&&bDrawPicture==false){var toolTip=this.GetChartTooltipData(x,y);if(toolTip&&toolTip.Data){if(isPhone===true){var touche=e.touches[0];var xTooltip=touche.clientX-this.UIElement.getBoundingClientRect().left;var yTooltip=touche.clientY-this.UIElement.getBoundingClientRect().top;}else{var xTooltip=e.clientX-this.UIElement.getBoundingClientRect().left;var yTooltip=e.clientY-this.UIElement.getBoundingClientRect().top;}this.ShowTooltip(xTooltip,yTooltip,toolTip);}else{this.HideTooltip();}}};this.OnKeyDown=function(e){if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var keyID=e.keyCode?e.keyCode:e.which;switch(keyID){case 37://left
|
|
1759
1761
|
if(e.ctrlKey&&this.OnCustomKeyDown){if(this.OnCustomKeyDown(keyID,e))break;}if(this.CursorIndex<=0.99999){if(!this.DataMoveLeft()){//左移数据到头了 触发下载新数据
|
|
1760
1762
|
if(this.DragDownloadData)this.DragDownloadData();break;}this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");}else{--this.CursorIndex;this.UpdatePointByCursorIndex();this.DrawDynamicInfo();this.ShowTooltipByKeyDown();}break;case 39://right
|
|
@@ -2566,7 +2568,9 @@ var yValue=frame.GetYData(y);if(frame.YSplitOperator.CoordinateType==1)//百分
|
|
|
2566
2568
|
{var firstOpenPrice=frame.YSplitOperator.GetFirstOpenPrice();outObject.RightYValue=((yValue-firstOpenPrice)/firstOpenPrice*100).toFixed(2)+'%';}return yValue;}};this.PtInFrame=function(x,y)//鼠标哪个指标窗口
|
|
2567
2569
|
{for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];var left=item.Frame.ChartBorder.GetLeft();var top=item.Frame.ChartBorder.GetTop();var width=item.Frame.ChartBorder.GetWidth();var height=item.Frame.ChartBorder.GetHeight();item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(left,top,width,height);if(item.Frame.Canvas.isPointInPath(x,y)){return i;//转成整形
|
|
2568
2570
|
}}var bottom=this.ChartBorder.GetBottom();var chartHeight=this.ChartBorder.GetChartHeight();var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();//底部
|
|
2569
|
-
if(x>=left&&x<=right&&y>bottom&&y<chartHeight)return-3;return-1;};this.
|
|
2571
|
+
if(x>=left&&x<=right&&y>bottom&&y<chartHeight)return-3;return-1;};this.PtInChartFrame=function(x,y)//鼠标在图形区域, 取出上下空白
|
|
2572
|
+
{for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];var left=item.Frame.ChartBorder.GetLeft();var top=item.Frame.ChartBorder.GetTopEx();var width=item.Frame.ChartBorder.GetWidth();var height=item.Frame.ChartBorder.GetHeightEx();item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(left,top,width,height);if(item.Frame.Canvas.isPointInPath(x,y)){return i;//转成整形
|
|
2573
|
+
}}return-1;};this.PtInButtons=function(x,y){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];var button=item.Frame.PtInButtons(x,y);if(button){button.Frame=item.Frame;return button;}for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];var overlayFrame=overlayItem.Frame;if(!overlayFrame||!overlayFrame.PtInButtons)continue;var button=overlayFrame.PtInButtons(x,y);if(button){button.IndexID=overlayItem.Identify;button.FrameID=i;button.OverlayFrame=overlayFrame;button.Frame=item.Frame;return button;}}}return null;};//是否在X轴坐标上
|
|
2570
2574
|
this.PtInFrameBottom=function(x,y){var left=this.ChartBorder.GetLeft();var top=this.ChartBorder.GetBottom();var width=this.ChartBorder.GetWidth();var height=this.ChartBorder.Bottom;this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);if(this.Canvas.isPointInPath(x,y))return true;return false;};this.GetXFromIndex=function(index){return this.SubFrame[0].Frame.GetXFromIndex(index);};this.GetYFromData=function(value){return this.SubFrame[0].Frame.GetYFromData(value);};this.ZoomUp=function(cursorIndex){var result=this.SubFrame[0].Frame.ZoomUp(cursorIndex);this.UpdateAllFrame();return result;};this.ZoomDown=function(cursorIndex){var result=this.SubFrame[0].Frame.ZoomDown(cursorIndex);this.UpdateAllFrame();return result;};this.XCoordinateZoom=function(step,isMoveLeft){var result=this.SubFrame[0].Frame.XCoordinateZoom(step,isMoveLeft);this.UpdateAllFrame();return result;};//设置重新计算刻度坐标
|
|
2571
2575
|
this.ResetXYSplit=function(){for(var _i in this.SubFrame){this.SubFrame[_i].Frame.XYSplit=true;}};this.SetLanguage=function(languageID){for(var _i2 in this.SubFrame){var item=this.SubFrame[_i2];if(item&&item.Frame){if(item.Frame.YSplitOperator)item.Frame.YSplitOperator.LanguageID=languageID;if(item.Frame.XSplitOperator)item.Frame.XSplitOperator.LanguageID=languageID;}}};this.GetCurrentPageSize=function()//获取当前页显示的数据个数
|
|
2572
2576
|
{if(this.SubFrame.length<=0)return null;var item=this.SubFrame[0];if(!item||!item.Frame)return null;return item.Frame.XPointCount;};this.OnSize=function(){var obj={};this.SubFrame[0].Frame.OnSize(obj);this.UpdateAllFrame();return obj;};this.SetDataWidth=function(dataWidth){var obj=this.SubFrame[0].Frame.SetDataWidth(dataWidth);this.UpdateAllFrame();return obj;};this.UpdateAllFrame=function(){var mainFrame=this.SubFrame[0].Frame;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(i>0)//第1个窗口主坐标已经算好了
|
|
@@ -2635,8 +2639,8 @@ this.AFactor;//后复权
|
|
|
2635
2639
|
}//数据复制
|
|
2636
2640
|
HistoryData.Copy=function(data){var newData=new HistoryData();newData.Date=data.Date;if(IFrameSplitOperator.IsNumber(data.Time))newData.Time=data.Time;newData.YClose=data.YClose;newData.Open=data.Open;newData.Close=data.Close;newData.High=data.High;newData.Low=data.Low;newData.Vol=data.Vol;newData.Amount=data.Amount;if(IFrameSplitOperator.IsNumber(data.FlowCapital))newData.FlowCapital=data.FlowCapital;if(IFrameSplitOperator.IsNumber(data.Position))newData.Position=data.Position;if(IFrameSplitOperator.IsNumber(data.YFClose))newData.YFClose=data.YFClose;if(IFrameSplitOperator.IsNumber(data.FClose))newData.FClose=data.FClose;//指数涨停家数
|
|
2637
2641
|
if(IFrameSplitOperator.IsNumber(data.Stop))newData.Stop=data.Stop;if(IFrameSplitOperator.IsNumber(data.Up))newData.Up=data.Up;if(IFrameSplitOperator.IsNumber(data.Down))newData.Down=data.Down;if(IFrameSplitOperator.IsNumber(data.Unchanged))newData.Unchanged=data.Unchanged;//复权因子
|
|
2638
|
-
if(IFrameSplitOperator.IsNumber(data.BFactor))newData.BFactor=data.BFactor;if(IFrameSplitOperator.IsNumber(data.AFactor))newData.AFactor=data.AFactor;if(data.OrderFlow)newData.OrderFlow=data.OrderFlow;return newData;};//把数据 src 复制到 dest中
|
|
2639
|
-
HistoryData.CopyTo=function(dest,src){dest.Date=src.Date;if(IFrameSplitOperator.IsNumber(src.Time))dest.Time=src.Time;dest.YClose=src.YClose;dest.Open=src.Open;dest.Close=src.Close;dest.High=src.High;dest.Low=src.Low;dest.Vol=src.Vol;dest.Amount=src.Amount;if(IFrameSplitOperator.IsNumber(src.FlowCapital))dest.FlowCapital=src.FlowCapital;if(IFrameSplitOperator.IsNumber(src.Position))dest.Position=src.Position;if(IFrameSplitOperator.IsNumber(src.YFClose))dest.YFClose=src.YFClose;if(IFrameSplitOperator.IsNumber(src.FClose))dest.FClose=src.FClose;if(IFrameSplitOperator.IsNumber(src.Stop))dest.Stop=src.Stop;if(IFrameSplitOperator.IsNumber(src.Up))dest.Up=src.Up;if(IFrameSplitOperator.IsNumber(src.Down))dest.Down=src.Down;if(IFrameSplitOperator.IsNumber(src.Unchanged))dest.Unchanged=src.Unchanged;if(IFrameSplitOperator.IsNumber(src.BFactor))dest.BFactor=src.BFactor;if(IFrameSplitOperator.IsNumber(src.AFactor))dest.AFactor=src.AFactor;};//数据复权拷贝
|
|
2642
|
+
if(IFrameSplitOperator.IsNumber(data.BFactor))newData.BFactor=data.BFactor;if(IFrameSplitOperator.IsNumber(data.AFactor))newData.AFactor=data.AFactor;if(data.OrderFlow)newData.OrderFlow=data.OrderFlow;if(data.ColorData)newData.ColorData=data.ColorData;return newData;};//把数据 src 复制到 dest中
|
|
2643
|
+
HistoryData.CopyTo=function(dest,src){dest.Date=src.Date;if(IFrameSplitOperator.IsNumber(src.Time))dest.Time=src.Time;dest.YClose=src.YClose;dest.Open=src.Open;dest.Close=src.Close;dest.High=src.High;dest.Low=src.Low;dest.Vol=src.Vol;dest.Amount=src.Amount;if(IFrameSplitOperator.IsNumber(src.FlowCapital))dest.FlowCapital=src.FlowCapital;if(IFrameSplitOperator.IsNumber(src.Position))dest.Position=src.Position;if(IFrameSplitOperator.IsNumber(src.YFClose))dest.YFClose=src.YFClose;if(IFrameSplitOperator.IsNumber(src.FClose))dest.FClose=src.FClose;if(IFrameSplitOperator.IsNumber(src.Stop))dest.Stop=src.Stop;if(IFrameSplitOperator.IsNumber(src.Up))dest.Up=src.Up;if(IFrameSplitOperator.IsNumber(src.Down))dest.Down=src.Down;if(IFrameSplitOperator.IsNumber(src.Unchanged))dest.Unchanged=src.Unchanged;if(IFrameSplitOperator.IsNumber(src.BFactor))dest.BFactor=src.BFactor;if(IFrameSplitOperator.IsNumber(src.AFactor))dest.AFactor=src.AFactor;if(src.OrderFlow)dest.OrderFlow=src.OrderFlow;if(src.ColorData)dest.ColorData=src.ColorData;};//数据复权拷贝
|
|
2640
2644
|
HistoryData.CopyRight=function(data,seed){var newData=new HistoryData();newData.Date=data.Date;newData.YClose=data.YClose*seed;newData.Open=data.Open*seed;newData.Close=data.Close*seed;newData.High=data.High*seed;newData.Low=data.Low*seed;newData.Vol=data.Vol;newData.Amount=data.Amount;newData.FlowCapital=data.FlowCapital;newData.Position=data.Position;newData.YFClose=data.YFClose;newData.FClose=data.FClose;return newData;};function MinuteData(){this.Close;this.Open;this.High;this.Low;this.Vol;//量
|
|
2641
2645
|
this.Amount;//金额
|
|
2642
2646
|
this.DateTime;this.Increase;//涨幅
|
|
@@ -2868,7 +2872,7 @@ var ZOOM_SEED=
|
|
|
2868
2872
|
function ChartKLine(){this.newMethod=IChartPainting;//派生
|
|
2869
2873
|
this.newMethod();delete this.newMethod;this.ClassName='ChartKLine';//类名
|
|
2870
2874
|
this.Symbol;//股票代码
|
|
2871
|
-
this.DrawType=0;// 0=实心K线柱子 1=收盘价线 2=美国线 3=空心K线柱子 4=收盘价面积图 5=订单流 6=空心K线柱子2(全部空心) 7=订单流样式2 8=订单流样式3
|
|
2875
|
+
this.DrawType=0;// 0=实心K线柱子 1=收盘价线 2=美国线 3=空心K线柱子 4=收盘价面积图 5=订单流 6=空心K线柱子2(全部空心) 7=订单流样式2 8=订单流样式3 9=自定义颜色K线
|
|
2872
2876
|
this.CloseLineColor=g_JSChartResource.CloseLineColor;this.CloseLineAreaColor=g_JSChartResource.CloseLineAreaColor;this.CloseLineWidth=g_JSChartResource.CloseLineWidth;this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.UnchagneColor=g_JSChartResource.UnchagneBarColor;//平盘
|
|
2873
2877
|
this.ColorData;//五彩K线颜色 >0:g_JSChartResource.UpBarColor 其他:g_JSChartResource.DownBarColor
|
|
2874
2878
|
this.TradeData;//交易系统 包含买卖数据{Buy:, Sell:, Name:指标名称 }
|
|
@@ -2919,7 +2923,7 @@ if(bFirstPoint)return;this.Canvas.stroke();if(isHScreen){this.Canvas.lineTo(bord
|
|
|
2919
2923
|
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;chartright=border.BottomEx;}var ptMax={X:null,Y:null,Value:null,Align:'left'};var ptMin={X:null,Y:null,Value:null,Align:'left'};var upColor=this.UpColor;var downColor=this.DownColor;var unchagneColor=this.UnchagneColor;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;var ptLast=null;this.DrawKRange.Start=this.Data.DataOffset;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;this.DrawKRange.End=i;if(ptMax.Value==null||ptMax.Value<data.High)//求最大值
|
|
2920
2924
|
{ptMax.X=x;ptMax.Y=yHigh;ptMax.Value=data.High;ptMax.Align=j<xPointCount/2?'left':'right';}if(ptMin.Value==null||ptMin.Value>data.Low)//求最小值
|
|
2921
2925
|
{ptMin.X=x;ptMin.Y=yLow;ptMin.Value=data.Low;ptMin.Align=j<xPointCount/2?'left':'right';}if(this.ColorData)///五彩K线颜色设置
|
|
2922
|
-
{if(i<this.ColorData.length)upColor=downColor=unchagneColor=this.ColorData[i]>0?this.UpColor:this.DownColor;else upColor=downColor=unchagneColor=this.DownColor;}var kLineOption=this.GetCustomKLine(data);if(kLineOption){var barColor=kLineOption.Color;if(!barColor){if(data.Open<data.Close)barColor=upColor;else if(data.Open>data.Close)barColor=downColor;else barColor=unchagneColor;}var drawType=this.DrawType;if(IFrameSplitOperator.IsNumber(kLineOption.DrawType))drawType=kLineOption.DrawType;this.DrawKBar_Custom(data,dataWidth,barColor,drawType,kLineOption,x,y,left,right,yLow,yHigh,yOpen,yClose,border,isHScreen);}else if(data.Open<data.Close)//阳线
|
|
2926
|
+
{if(i<this.ColorData.length)upColor=downColor=unchagneColor=this.ColorData[i]>0?this.UpColor:this.DownColor;else upColor=downColor=unchagneColor=this.DownColor;}var kLineOption=this.GetCustomKLine(data);if(kLineOption){var barColor=kLineOption.Color;if(!barColor){if(data.Open<data.Close)barColor=upColor;else if(data.Open>data.Close)barColor=downColor;else barColor=unchagneColor;}var drawType=this.DrawType;if(IFrameSplitOperator.IsNumber(kLineOption.DrawType))drawType=kLineOption.DrawType;this.DrawKBar_Custom(data,dataWidth,barColor,drawType,kLineOption,x,y,left,right,yLow,yHigh,yOpen,yClose,border,isHScreen);}else if(this.DrawType==9&&data.ColorData){this.DrawKBarV2(data,data.ColorData,dataWidth,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen);}else if(data.Open<data.Close)//阳线
|
|
2923
2927
|
{this.DrawKBar_Up(data,dataWidth,upColor,this.DrawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen);}else if(data.Open>data.Close)//阴线
|
|
2924
2928
|
{this.DrawKBar_Down(data,dataWidth,downColor,this.DrawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen);}else// 平线
|
|
2925
2929
|
{this.DrawKBar_Unchagne(data,dataWidth,unchagneColor,this.DrawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen);}if(this.IsShowKTooltip&&!isHScreen)//添加tooltip区域
|
|
@@ -2951,7 +2955,31 @@ else this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),ToFixedRect(yClose-y)
|
|
|
2951
2955
|
{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
|
|
2952
2956
|
}else{if(drawType==3)//空心柱
|
|
2953
2957
|
{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)//下影线
|
|
2954
|
-
{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(x),ToFixedPoint(drawType==3?Math.max(yClose,yOpen):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=barColor;this.Canvas.stroke();}};this.
|
|
2958
|
+
{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(x),ToFixedPoint(drawType==3?Math.max(yClose,yOpen):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=barColor;this.Canvas.stroke();}};this.DrawKBarV2=function(data,colorData,dataWidth,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen){var isDrawBorder=false;var isEmptyBar=false;if(colorData.border)isDrawBorder=true;if(colorData.Type===0)isEmptyBar=true;if(dataWidth>=4){if(isDrawBorder){if(dataWidth%2!=0)dataWidth-=1;}if(data.High>data.Close)//上影线
|
|
2959
|
+
{if(colorData.Line){this.Canvas.strokeStyle=colorData.Line.Color;this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(isEmptyBar?Math.max(yClose,yOpen):yClose),ToFixedPoint(x));}else{if(isDrawBorder){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(Math.min(yClose,yOpen)));}}this.Canvas.stroke();}y=yClose;}else{y=yClose;}if(isHScreen){/*
|
|
2960
|
+
if (Math.abs(yOpen-y)<1)
|
|
2961
|
+
{
|
|
2962
|
+
this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),1,ToFixedRect(dataWidth)); //高度小于1,统一使用高度1
|
|
2963
|
+
}
|
|
2964
|
+
else
|
|
2965
|
+
{
|
|
2966
|
+
if (drawType==3) //空心柱
|
|
2967
|
+
{
|
|
2968
|
+
this.Canvas.beginPath();
|
|
2969
|
+
this.Canvas.rect(ToFixedPoint(y),ToFixedPoint(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));
|
|
2970
|
+
this.Canvas.stroke();
|
|
2971
|
+
}
|
|
2972
|
+
else
|
|
2973
|
+
{
|
|
2974
|
+
this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));
|
|
2975
|
+
}
|
|
2976
|
+
}
|
|
2977
|
+
*/}else{//实心
|
|
2978
|
+
if(!isEmptyBar&&colorData.BarColor){this.Canvas.fillStyle=colorData.BarColor;if(Math.abs(yOpen-y)<1){this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(y),ToFixedRect(dataWidth),1);//高度小于1,统一使用高度1
|
|
2979
|
+
}else{this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(Math.min(y,yOpen)),ToFixedRect(dataWidth),ToFixedRect(Math.abs(yOpen-y)));}}if(colorData.Border)//空心
|
|
2980
|
+
{if(Math.abs(yOpen-y)<1){this.Canvas.fillStyle=colorData.Border.Color;this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(y),ToFixedRect(dataWidth),1);//高度小于1,统一使用高度1
|
|
2981
|
+
}else{this.Canvas.strokeStyle=colorData.Border.Color;this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(left),ToFixedPoint(y),ToFixedRect(dataWidth),ToFixedRect(yOpen-y));this.Canvas.stroke();}}}if(data.Open>data.Low)//下影线
|
|
2982
|
+
{if(colorData.Line){this.Canvas.strokeStyle=colorData.Line.Color;this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(ToFixedPoint(isEmptyBar?Math.min(yClose,yOpen):y),ToFixedPoint(x));this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));}else{if(isDrawBorder){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(Math.max(yClose,yOpen)));this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yLow));}}this.Canvas.stroke();}}}else{var lineColor;if(isEmptyBar&&colorData.Border){lineColor=colorData.Border.Color;}else if(!isEmptyBar&&colorData.BarColor){lineColor=colorData.BarColor;}if(lineColor){this.Canvas.strokeStyle=lineColor;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.stroke();}}};this.DrawTrade=function()//交易系统
|
|
2955
2983
|
{if(!this.TradeData)return;var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+2.0;var chartright=this.ChartBorder.GetRight();var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+2.0;chartright=this.ChartBorder.GetBottom();}var sellData=this.TradeData.Sell;var buyData=this.TradeData.Buy;var arrowWidth=dataWidth;if(arrowWidth>10)arrowWidth=10;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var data=this.Data.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var buy=false,sell=false;if(sellData&&i<sellData.length)sell=sellData[i]>0;if(buyData&&i<buyData.length)buy=buyData[i]>0;if(!sell&&!buy)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;if(buy){this.Canvas.fillStyle=this.UpColor;this.Canvas.strokeStyle=this.UnchagneColor;this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(yLow-1,x);this.Canvas.lineTo(yLow-arrowWidth-1,x-arrowWidth/2);this.Canvas.lineTo(yLow-arrowWidth-1,x+arrowWidth/2);}else{this.Canvas.moveTo(x,yLow+1);this.Canvas.lineTo(x-arrowWidth/2,yLow+arrowWidth+1);this.Canvas.lineTo(x+arrowWidth/2,yLow+arrowWidth+1);}this.Canvas.closePath();this.Canvas.fill();this.Canvas.stroke();}if(sell){this.Canvas.fillStyle=this.DownColor;this.Canvas.strokeStyle=this.UnchagneColor;this.Canvas.beginPath();if(isHScreen){this.Canvas.moveTo(yHigh+1,x);this.Canvas.lineTo(yHigh+arrowWidth+1,x-arrowWidth/2);this.Canvas.lineTo(yHigh+arrowWidth+1,x+arrowWidth/2);}else{this.Canvas.moveTo(x,yHigh-1);this.Canvas.lineTo(x-arrowWidth/2,yHigh-arrowWidth-1);this.Canvas.lineTo(x+arrowWidth/2,yHigh-arrowWidth-1);}this.Canvas.closePath();this.Canvas.fill();this.Canvas.stroke();}}};this.DrawTick=function()//分笔图
|
|
2956
2984
|
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+2.0;if(isHScreen)xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+2.0;var chartright=this.ChartBorder.GetRight();if(isHScreen)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;var fontSize=parseInt(dataWidth);if(fontSize<=1)fontSize=2;else if(fontSize>=18)fontSize=18;var bFirstPoint=true;var pixelRatio=GetDevicePixelRatio();var textSize=fontSize*pixelRatio;this.Canvas.beginPath();this.Canvas.font=fontSize*pixelRatio+'px '+this.TickFontName;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.ChartFrame.GetYFromData(data.Close,false);this.DrawKRange.End=i;if(data.Flag===0)this.Canvas.fillStyle=this.UpColor;else if(data.Flag==1)this.Canvas.fillStyle=this.DownColor;else this.Canvas.fillStyle=this.UnchagneColor;this.Canvas.textAlign='center';this.Canvas.textBaseline='middle';if(isHScreen)this.Canvas.fillText(this.TickSymbol,yClose,x);else this.Canvas.fillText(this.TickSymbol,x,yClose);if(this.IsShowKTooltip&&!isHScreen)//添加tooltip区域
|
|
2957
2985
|
{var rect=new Rect(x-textSize/2,yClose-textSize/2,textSize,textSize);//this.Canvas.fillStyle="rgb(0,0,100)";
|
|
@@ -2963,7 +2991,7 @@ this.Canvas.clip();};this.Draw=function(){this.IsShowOrderText=false;this.Toolti
|
|
|
2963
2991
|
this.PtMin={X:null,Y:null,Value:null,Align:'left'};//清空最小
|
|
2964
2992
|
this.DrawKRange={Start:null,End:null};this.ChartFrame.ChartKLine={Max:null,Min:null};//保存K线上 显示最大最小值坐标
|
|
2965
2993
|
if(!this.IsShow)return;if(ChartData.IsTickPeriod(this.Period))//分笔图
|
|
2966
|
-
{this.Canvas.save();if(this.DrawType==1){this.ClipClient(this.ChartFrame.IsHScreen);this.DrawCloseLine();}else if(this.DrawType==4){this.ClipClient(this.ChartFrame.IsHScreen);this.DrawCloseArea();}else{this.ClipTickClient(this.ChartFrame.IsHScreen);this.DrawTick();}this.Canvas.restore();return;}this.Canvas.save();this.ClipClient(this.ChartFrame.IsHScreen);if(this.DrawType==1){this.DrawCloseLine();this.Canvas.restore();return;}else if(this.DrawType==2){this.DrawAKLine();}else if(this.DrawType==4){this.DrawCloseArea();}else if(this.DrawType==5){this.DrawOrderFlow();}else if(this.DrawType==7){this.DrawOrderFlow_Style2();}else if(this.DrawType==8){this.DrawOrderFlow_Style3();}else{this.DrawKBar();}if(this.TradeIcon)this.DrawTradeIcon();else this.DrawTrade();this.Canvas.restore();if(this.IsShowMaxMinPrice)//标注最大值最小值
|
|
2994
|
+
{this.Canvas.save();if(this.DrawType==1){this.ClipClient(this.ChartFrame.IsHScreen);this.DrawCloseLine();}else if(this.DrawType==4){this.ClipClient(this.ChartFrame.IsHScreen);this.DrawCloseArea();}else{this.ClipTickClient(this.ChartFrame.IsHScreen);this.DrawTick();}this.Canvas.restore();return;}this.Canvas.save();this.ClipClient(this.ChartFrame.IsHScreen);if(this.DrawType==1){this.DrawCloseLine();this.Canvas.restore();return;}else if(this.DrawType==2){this.DrawAKLine();}else if(this.DrawType==4){this.DrawCloseArea();}else if(this.DrawType==5){this.DrawOrderFlow();}else if(this.DrawType==7){this.DrawOrderFlow_Style2();}else if(this.DrawType==8){this.DrawOrderFlow_Style3();}else if(this.DrawType==9){this.DrawKBar();}else{this.DrawKBar();}if(this.TradeIcon)this.DrawTradeIcon();else this.DrawTrade();this.Canvas.restore();if(this.IsShowMaxMinPrice)//标注最大值最小值
|
|
2967
2995
|
{if(this.ChartFrame.IsHScreen===true)this.HScreenDrawMaxMinPrice(this.PtMax,this.PtMin);else this.DrawMaxMinPrice(this.PtMax,this.PtMin);}};this.DrawMaxMinPrice=function(ptMax,ptMin){if(ptMax.X==null||ptMax.Y==null||ptMax.Value==null)return;if(ptMin.X==null||ptMin.Y==null||ptMin.Value==null)return;var leftArrow=g_JSChartResource.KLine.MaxMin.LeftArrow;var rightArrow=g_JSChartResource.KLine.MaxMin.RightArrow;var highYOffset=g_JSChartResource.KLine.MaxMin.HighYOffset;var lowYOffset=g_JSChartResource.KLine.MaxMin.LowYOffset;var defaultfloatPrecision=GetfloatPrecision(this.Symbol);this.Canvas.font=this.TextFont;this.Canvas.fillStyle=this.TextColor;var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();var ptTop=ptMax;if(this.ChartFrame.CoordinateType==1)//反转坐标
|
|
2968
2996
|
{if(ptMax.Y<ptMin.Y)ptTop=ptMin;this.Canvas.textBaseline='top';}else{if(ptMax.Y>ptMin.Y)ptTop=ptMin;this.Canvas.textBaseline='bottom';}this.Canvas.textAlign=ptTop.Align;var left=ptTop.Align=='left'?ptTop.X:ptTop.X;if(IFrameSplitOperator.IsNumber(highYOffset))ptTop.Y+=highYOffset;var text=ptTop.Value.toFixed(defaultfloatPrecision);if(ptTop.Align=='left')text=leftArrow+text;else text=text+rightArrow;if(ptTop.Y>top-2){this.Canvas.fillText(text,left,ptTop.Y);this.ChartFrame.ChartKLine.Max={X:left,Y:ptTop.Y,Text:{BaseLine:'bottom'}};}var ptBottom=ptMin;if(this.ChartFrame.CoordinateType==1){if(ptMin.Y>ptMax.Y)ptBottom=ptMax;this.Canvas.textBaseline='bottom';}else{if(ptMax.Y>ptMin.Y)ptTop=ptMin;this.Canvas.textBaseline='top';}this.Canvas.textAlign=ptBottom.Align;var left=ptBottom.Align=='left'?ptBottom.X:ptBottom.X;if(IFrameSplitOperator.IsNumber(lowYOffset))ptBottom.Y+=lowYOffset;var text=ptMin.Value.toFixed(defaultfloatPrecision);if(ptBottom.Align=='left')text=leftArrow+text;else text=text+rightArrow;if(ptBottom.Y<bottom+1){this.Canvas.fillText(text,left,ptBottom.Y);this.ChartFrame.ChartKLine.Min={X:left,Y:ptBottom.Y,Text:{BaseLine:'top'}};}};this.HScreenDrawMaxMinPrice=function(ptMax,ptMin)//横屏模式下显示最大最小值
|
|
2969
2997
|
{if(ptMax.X==null||ptMax.Y==null||ptMax.Value==null)return;if(ptMin.X==null||ptMin.Y==null||ptMin.Value==null)return;var leftArrow=g_JSChartResource.KLine.MaxMin.LeftArrow;var rightArrow=g_JSChartResource.KLine.MaxMin.RightArrow;var highYOffset=g_JSChartResource.KLine.MaxMin.HighYOffset;var lowYOffset=g_JSChartResource.KLine.MaxMin.LowYOffset;var defaultfloatPrecision=GetfloatPrecision(this.Symbol);var xText=ptMax.Y;var yText=ptMax.X;if(IFrameSplitOperator.IsNumber(highYOffset))xText+=highYOffset;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.font=this.TextFont;this.Canvas.fillStyle=this.TextColor;this.Canvas.textAlign=ptMax.Align;this.Canvas.textBaseline='bottom';var text=ptMax.Value.toFixed(defaultfloatPrecision);if(ptMax.Align=='left')text=leftArrow+text;else text=text+rightArrow;this.Canvas.fillText(text,0,0);this.Canvas.restore();var xText=ptMin.Y;var yText=ptMin.X;if(IFrameSplitOperator.IsNumber(lowYOffset))xText+=lowYOffset;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.font=this.TextFont;this.Canvas.fillStyle=this.TextColor;this.Canvas.textAlign=ptMin.Align;this.Canvas.textBaseline='top';var text=ptMin.Value.toFixed(defaultfloatPrecision);if(ptMin.Align=='left')text=leftArrow+text;else text=text+rightArrow;this.Canvas.fillText(text,0,0);this.Canvas.restore();};//画某一天的信息地雷
|
|
@@ -3112,7 +3140,9 @@ if(isHScreen){this.Canvas.moveTo(ToFixedPoint(yOpen),left);this.Canvas.lineTo(To
|
|
|
3112
3140
|
if(isHScreen){this.Canvas.moveTo(ToFixedPoint(yClose),right);this.Canvas.lineTo(ToFixedPoint(yClose),x);}else{this.Canvas.moveTo(right,ToFixedPoint(yClose));this.Canvas.lineTo(x,ToFixedPoint(yClose));}this.Canvas.stroke();}}};this.DrawCloseLine=function(firstOpen)//收盘价线
|
|
3113
3141
|
{var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+2.0;if(isHScreen)xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+2.0;var chartright=this.ChartBorder.GetRight();if(isHScreen)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;var firstOverlayOpen=null;var bFirstPoint=true;this.Canvas.strokeStyle=this.Color;if(IFrameSplitOperator.IsNumber(this.CloseLineWidth))this.Canvas.lineWidth=this.CloseLineWidth;this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.ShowRange.FirstOpen=firstOpen;this.DrawKRange.Start=this.Data.DataOffset;this.Canvas.beginPath();for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;if(firstOverlayOpen==null){firstOverlayOpen=data.Open;this.ShowRange.FirstOverlayOpen=data.Open;}var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yClose=this.GetYFromData(data.Close/firstOverlayOpen*firstOpen,false);this.DrawKRange.End=i;if(bFirstPoint){if(isHScreen)this.Canvas.moveTo(yClose,x);else this.Canvas.moveTo(x,yClose);bFirstPoint=false;}else{if(isHScreen)this.Canvas.lineTo(yClose,x);else this.Canvas.lineTo(x,yClose);}}if(bFirstPoint==false)this.Canvas.stroke();};this.GetFirstOpen=function(){if(!this.MainData||!this.Data)return null;var xPointCount=this.ChartFrame.XPointCount;for(var i=this.Data.DataOffset,j=0;i<this.MainData.Data.length&&j<xPointCount;++i,++j){var data=this.MainData.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;return data.Open;}return null;};this.Draw=function(){this.TooltipRect=[];this.InfoTooltipRect=[];this.DrawKRange={Start:null,End:null};if(!this.MainData||!this.Data)return;var xPointCount=this.ChartFrame.XPointCount;var firstOpen=this.GetFirstOpen();//主线数据第1个开盘价
|
|
3114
3142
|
if(firstOpen==null)return;var drawType=this.DrawType;if(this.CustomDrawType!=null)drawType=this.CustomDrawType;this.Canvas.save();this.ClipClient(this.ChartFrame.IsHScreen);if(drawType==1)this.DrawCloseLine(firstOpen);else if(drawType==2)this.DrawAKLine(firstOpen);else this.DrawKBar(firstOpen);this.Canvas.restore();};this.GetMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={};range.Max=null;range.Min=null;if(!this.MainData||!this.Data)return range;var firstOpen=null;//主线数据第1个收盘价
|
|
3115
|
-
for(var i=this.Data.DataOffset,j=0;i<this.MainData.Data.length&&j<xPointCount;++i,++j){var data=this.MainData.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;firstOpen=data.Close;break;}if(firstOpen==null)return range;var firstOverlayOpen=null;var high,low;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var data=this.Data.Data[i];if(!data||data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;if(firstOverlayOpen==null)firstOverlayOpen=data.Open;high=data.High/firstOverlayOpen*firstOpen;low=data.Low/firstOverlayOpen*firstOpen;if(range.Max==null)range.Max=high;if(range.Min==null)range.Min=low;if(range.Max<high)range.Max=high;if(range.Min>low)range.Min=low;}return range;};this.GetTooltipData=function(x,y,tooltip){for(var i in this.TooltipRect){var rect=this.TooltipRect[i][1];this.Canvas.beginPath();this.Canvas.rect(rect.X,rect.Y,rect.Width,rect.Height);if(this.Canvas.isPointInPath(x,y)){var index=this.TooltipRect[i][0];tooltip.Data=this.Data.Data[index];tooltip.ChartPaint=this;return true;}}return false;};this.PtInChart=function(x,y){
|
|
3143
|
+
for(var i=this.Data.DataOffset,j=0;i<this.MainData.Data.length&&j<xPointCount;++i,++j){var data=this.MainData.Data[i];if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;firstOpen=data.Close;break;}if(firstOpen==null)return range;var firstOverlayOpen=null;var high,low;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var data=this.Data.Data[i];if(!data||data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;if(firstOverlayOpen==null)firstOverlayOpen=data.Open;high=data.High/firstOverlayOpen*firstOpen;low=data.Low/firstOverlayOpen*firstOpen;if(range.Max==null)range.Max=high;if(range.Min==null)range.Min=low;if(range.Max<high)range.Max=high;if(range.Min>low)range.Min=low;}return range;};this.GetTooltipData=function(x,y,tooltip){for(var i in this.TooltipRect){var rect=this.TooltipRect[i][1];this.Canvas.beginPath();this.Canvas.rect(rect.X,rect.Y,rect.Width,rect.Height);if(this.Canvas.isPointInPath(x,y)){var index=this.TooltipRect[i][0];tooltip.Data=this.Data.Data[index];tooltip.ChartPaint=this;return true;}}return false;};this.PtInChart=function(x,y){var drawType=this.DrawType;if(IFrameSplitOperator.IsNumber(this.CustomDrawType))drawType=this.CustomDrawType;if(drawType==1||drawType==4)//线段,面积不支持选中
|
|
3144
|
+
{return null;//return this.PtInLine(x,y, {KLineClose:true});
|
|
3145
|
+
}return this.PtInKBar(x,y,{OverlayKLine:true});};this.DrawSelectedStatus=function(){this.DrawLinePoint({OverlayKLine:true});};}//K线表格
|
|
3116
3146
|
function ChartKLineTable(){this.newMethod=IChartPainting;//派生
|
|
3117
3147
|
this.newMethod();delete this.newMethod;this.ClassName='ChartKlineTable';//类名
|
|
3118
3148
|
this.Data;this.RowName;this.IsShowRowName=false;this.BGColor;//背景色
|
|
@@ -4337,7 +4367,7 @@ var right=this.Frame.ChartBorder.GetRight();if(this.Frame.IsHScreen===true){bott
|
|
|
4337
4367
|
drawLeft=left;left+=textWidth;if(left>right)break;this.Canvas.fillText(text,drawLeft,bottom,textWidth);}if(left>right)break;}}catch(err){_didIteratorError9=true;_iteratorError9=err;}finally{try{if(!_iteratorNormalCompletion9&&_iterator9.return){_iterator9.return();}}finally{if(_didIteratorError9){throw _iteratorError9;}}}};this.HScreenDraw=function(){var border=this.Frame.ChartBorder.GetHScreenBorder();var xText=this.Frame.ChartBorder.GetRightTitle();var yText=border.TopEx;this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);var left=1;var bottom=-this.Frame.ChartBorder.TitleHeight/2;//上下居中显示
|
|
4338
4368
|
var right=this.Frame.ChartBorder.GetHeight();this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.font=this.Font;if(this.Title&&this.IsShowIndexName){var textWidth=this.Canvas.measureText(this.Title).width+2;if(this.IsDrawTitleBG){var spaceSize=GetDevicePixelRatio()*2;this.Canvas.fillStyle=this.BGColor;this.TitleRect={Left:this.Frame.ChartBorder.GetRightTitle(),Top:border.TopEx,Width:this.Frame.ChartBorder.TitleHeight,Height:textWidth};//保存下标题的坐标
|
|
4339
4369
|
var drawRect={Left:left,Top:-this.Frame.ChartBorder.TitleHeight+spaceSize,Width:textWidth,Height:this.Frame.ChartBorder.TitleHeight-spaceSize*2};this.Canvas.fillRect(drawRect.Left,drawRect.Top,drawRect.Width,drawRect.Height);}this.Canvas.fillStyle=this.TitleColor;this.Canvas.fillText(this.Title,left,bottom,textWidth);left+=textWidth;left+=this.TitleSpace;}var isShowLastData=this.IsShowLastData();var lockRect=this.Frame.GetLockRect();if(lockRect)//指标上锁区域不显示动态标题
|
|
4340
|
-
{var index=Math.abs(this.CursorIndex-0.5);if(this.IsKLineFrame)index=this.CursorIndex;var x=this.Frame.GetXFromIndex(index.toFixed(0));if(x>=lockRect.Top)return;if(isShowLastData)return;}for(var i in this.Data){var item=this.Data[i];var outText=this.GetTitleItem(item,isShowLastData);if(!outText)continue;var valueText=outText.Text;var aryText=outText.ArrayText;if(aryText){var text;for(var k=0;k<aryText.length;++k){var titleItem=aryText[k];if(titleItem.Name)text=titleItem.Name+":"+titleItem.Text;else text=titleItem.Text;var space=this.ParamSpace*GetDevicePixelRatio();var textWidth=this.Canvas.measureText(text).width+space;if(left+textWidth>right)break;this.Canvas.fillStyle=titleItem.Color;this.Canvas.fillText(text,left,bottom,textWidth);left+=textWidth;}}else{this.Canvas.fillStyle=item.Color;var text=item.Name+":"+valueText;var space=this.ParamSpace*GetDevicePixelRatio();var textWidth=this.Canvas.measureText(text).width+space;//后空2个像素
|
|
4370
|
+
{var index=Math.abs(this.CursorIndex-0.5);if(this.IsKLineFrame)index=this.CursorIndex;var x=this.Frame.GetXFromIndex(index.toFixed(0));if(x>=lockRect.Top)return;if(isShowLastData)return;}for(var i in this.Data){var item=this.Data[i];var outText=this.GetTitleItem(item,isShowLastData);if(!outText)continue;var valueText=outText.Text;var aryText=outText.ArrayText;if(aryText){var text;for(var k=0;k<aryText.length;++k){var titleItem=aryText[k];if(titleItem.Name)text=titleItem.Name+":"+titleItem.Text;else text=titleItem.Text;var space=this.ParamSpace*GetDevicePixelRatio();var textWidth=this.Canvas.measureText(text).width+space;if(left+textWidth>right)break;this.Canvas.fillStyle=titleItem.Color;this.Canvas.fillText(text,left,bottom,textWidth);left+=textWidth;}}else{this.Canvas.fillStyle=item.Color;var text=valueText;if(item.Name){var dyTitle=this.GetDynamicOutName(item.Name);if(dyTitle)text=dyTitle+":"+valueText;else text=item.Name+":"+valueText;}var space=this.ParamSpace*GetDevicePixelRatio();var textWidth=this.Canvas.measureText(text).width+space;//后空2个像素
|
|
4341
4371
|
if(left+textWidth>right)break;this.Canvas.fillText(text,left,bottom,textWidth);left+=textWidth;}}if(this.Explain)//说明信息
|
|
4342
4372
|
{this.Canvas.fillStyle=this.TitleColor;var text="说明:"+this.Explain;var textWidth=this.Canvas.measureText(text).width+2;if(left+textWidth<right){this.Canvas.fillText(text,left,bottom,textWidth);left+=textWidth;}}if(this.OverlayIndexType.Position==1)this.DrawOverlayIndexSingleLine();else this.DrawOverlayIndex(left+5*GetDevicePixelRatio());//间距都空点 和主指标区分开
|
|
4343
4373
|
};this.OnDrawEventCallback=function(drawData){if(!this.OnDrawEvent||!this.OnDrawEvent.Callback)return;var data={Draw:drawData,Name:'DynamicChartTitlePainting'};this.OnDrawEvent.Callback(this.OnDrawEvent,data,this);};this.GetFontHeight=function(font){return GetFontHeight(this.Canvas,font,"擎");};}//画图工具
|
|
@@ -5678,7 +5708,7 @@ this.UpdateOverlayIndex=function(identify){var overlayIndex=this.GetOverlayIndex
|
|
|
5678
5708
|
this.ChangeWindowIndexParam=function(index){this.WindowIndex[index].Index[0].Param+=1;this.WindowIndex[index].Index[1].Param+=1;this.UpdateWindowIndex(index);};this.OnDoubleClick=function(x,y,e){if(this.EnableYDrag&&(this.EnableYDrag.Left||this.EnableYDrag.Right)&&this.Frame&&this.Frame.PtInFrameY){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var dragY=this.Frame.PtInFrameY(x,y);if(dragY&&dragY.Index>=0&&dragY.IsOverlay==false){this.CancelZoomUpDownFrameY(dragY);}}var selectedChart;//图形选中
|
|
5679
5709
|
if(this.SelectedChart.EnableSelected){selectedChart=this.PtInChart(x,y);}var dbClickInfo={SelectedChart:selectedChart};this.DBClickEvent(dbClickInfo,e);if(!selectedChart&&this.EnableZoomIndexWindow)//双击放大缩小
|
|
5680
5710
|
{var frameId=this.Frame.PtInFrame(x,y);JSConsole.Chart.Log("[KLineChartContainer::OnDoubleClick] frameId",frameId);if(frameId>=this.Frame.ZoomStartWindowIndex){if(this.ZoomIndexWindow(frameId,{X:x,Y:y})){this.Frame.SetSizeChage(true);this.Draw();return true;}}}var event=null;if(this.mapEvent.has(JSCHART_EVENT_ID.DBCLICK_KLINE))event=this.mapEvent.get(JSCHART_EVENT_ID.DBCLICK_KLINE);if(!this.MinuteDialog&&!event)return;var tooltip=new TooltipData();if(!this.PtInChartPaintTooltip(x,y,tooltip))return;if(!tooltip.Data)return;if(event){if(this.ClickChartTimer!=null)//清空单击定时器
|
|
5681
|
-
{clearTimeout(this.ClickChartTimer);this.ClickChartTimer=null;}var data={Tooltip:tooltip,Stock:{Symbol:this.Symbol,Name:this.Name}};event.Callback(event,data,this);}if(this.MinuteDialog){e.data={Chart:this,Tooltip:tooltip};this.MinuteDialog.DoModal(e);}};this.CancelAutoUpdate=function()//关闭停止更新
|
|
5711
|
+
{clearTimeout(this.ClickChartTimer);this.ClickChartTimer=null;}var data={Tooltip:tooltip,Stock:{Symbol:this.Symbol,Name:this.Name},X:e.clientX,Y:e.clientY};event.Callback(event,data,this);}if(this.MinuteDialog){e.data={Chart:this,Tooltip:tooltip};this.MinuteDialog.DoModal(e);}};this.CancelAutoUpdate=function()//关闭停止更新
|
|
5682
5712
|
{if(typeof this.AutoUpdateTimer=='number'){clearTimeout(this.AutoUpdateTimer);this.AutoUpdateTimer=undefined;}};//数据自动更新
|
|
5683
5713
|
this.AutoUpdate=function(waitTime)//waitTime 更新时间
|
|
5684
5714
|
{this.CancelAutoUpdate();if(!this.IsAutoUpdate)return;if(!this.Symbol)return;var self=this;var marketStatus=MARKET_SUFFIX_NAME.GetMarketStatus(this.Symbol);if(marketStatus==0||marketStatus==3)return;//闭市,盘后
|
|
@@ -5755,17 +5785,18 @@ Explain:'成交量分布图下载',Request:{Period:this.Period,Right:this.Right,
|
|
|
5755
5785
|
KLineChartContainer.JsonDataToHistoryData=function(data){var aryDayData=[];if(!data.data)return aryDayData;var upperSymbol=null;if(data.symbol)upperSymbol=data.symbol.toUpperCase();var isFutures=false;//是否是期货
|
|
5756
5786
|
if(upperSymbol)isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);var list=data.data;var date=0,yclose=1,open=2,high=3,low=4,close=5,vol=6,amount=7,position=8;var fclose=9,yfclose=10;//结算价, 前结算价
|
|
5757
5787
|
var bfactor=11,afactor=12;//前, 后复权因子
|
|
5758
|
-
var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;for(var i=0;i<list.length;++i){var item=new HistoryData();var jsData=list[i];item.Date=jsData[date];item.Open=jsData[open];item.YClose=jsData[yclose];item.Close=jsData[close];item.High=jsData[high];item.Low=jsData[low];item.Vol=jsData[vol];//原始单位股
|
|
5788
|
+
var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;var colorData=JSCHART_DATA_FIELD_ID.KLINE_COLOR_DATA;for(var i=0;i<list.length;++i){var item=new HistoryData();var jsData=list[i];item.Date=jsData[date];item.Open=jsData[open];item.YClose=jsData[yclose];item.Close=jsData[close];item.High=jsData[high];item.Low=jsData[low];item.Vol=jsData[vol];//原始单位股
|
|
5759
5789
|
item.Amount=jsData[amount];if(IFrameSplitOperator.IsNumber(jsData[position]))item.Position=jsData[position];//期货持仓
|
|
5760
5790
|
if(IFrameSplitOperator.IsNumber(jsData[fclose]))item.FClose=jsData[fclose];//期货结算价
|
|
5761
5791
|
if(IFrameSplitOperator.IsNumber(jsData[yfclose]))item.YFClose=jsData[yfclose];//期货前结算价
|
|
5762
5792
|
if(IFrameSplitOperator.IsNumber(jsData[bfactor]))item.BFactor=jsData[bfactor];//前复权因子
|
|
5763
5793
|
if(IFrameSplitOperator.IsNumber(jsData[afactor]))item.AFactor=jsData[afactor];//后复权因子
|
|
5764
|
-
if(!IFrameSplitOperator.IsNumber(item.Open))continue;if(jsData[orderFlow])item.OrderFlow=jsData[orderFlow];aryDayData.push(item);}return aryDayData;};KLineChartContainer.JsonDataToRealtimeData=function(data,symbol){if(!data.stock)return null;var stock;for(var i in data.stock)//查找对应的股票数据
|
|
5794
|
+
if(!IFrameSplitOperator.IsNumber(item.Open))continue;if(jsData[orderFlow])item.OrderFlow=jsData[orderFlow];if(jsData[colorData])item.ColorData=jsData[colorData];aryDayData.push(item);}return aryDayData;};KLineChartContainer.JsonDataToRealtimeData=function(data,symbol){if(!data.stock)return null;var stock;for(var i in data.stock)//查找对应的股票数据
|
|
5765
5795
|
{var stockItem=data.stock[i];if(stockItem&&stockItem.symbol==symbol){stock=stockItem;break;}}if(!stock)return null;var upperSymbol=symbol.toUpperCase();var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var item=new HistoryData();item.Date=stock.date;item.Open=stock.open;item.YClose=stock.yclose;item.High=stock.high;item.Low=stock.low;item.Vol=stock.vol;//股
|
|
5766
5796
|
item.Amount=stock.amount;item.Close=stock.price;if(IFrameSplitOperator.IsNumber(stock.position))item.Position=stock.position;//持仓量
|
|
5767
5797
|
if(IFrameSplitOperator.IsNumber(stock.bfactor))item.BFactor=stock.bfactor;//前复权因子
|
|
5768
5798
|
if(IFrameSplitOperator.IsNumber(stock.afactor))item.AFactor=stock.afactor;//后复权因子
|
|
5799
|
+
if(stock.colordata)item.ColorData=stock.colordata;//自定义颜色
|
|
5769
5800
|
return item;};KLineChartContainer.JsonDataToMinuteRealtimeData=function(data,symbol){if(!data.stock)return null;var stock;for(var i in data.stock)//查找对应的股票数据
|
|
5770
5801
|
{var stockItem=data.stock[i];if(stockItem&&stockItem.symbol==symbol){stock=stockItem;break;}}if(!stock)return null;var upperSymbol=symbol.toUpperCase();var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);var aryMinuteData=new Array();var preClose=stock.yclose;//前一个数据价格
|
|
5771
5802
|
var date=stock.date;if(isFutures&&stock.yclearing)preClose=stock.yclearing;//期货使用昨结算价
|
|
@@ -5777,13 +5808,13 @@ if(!IFrameSplitOperator.IsNumber(item.Open))item.Open=null;if(!IFrameSplitOperat
|
|
|
5777
5808
|
if(IFrameSplitOperator.IsNumber(jsData.price))preClose=jsData.price;aryMinuteData[i]=item;}return aryMinuteData;};//分钟K线叠加数据增量更新v2版本
|
|
5778
5809
|
KLineChartContainer.JsonDataToMinuteRealtimeDataV2=function(data,symbol){if(!data||!data.overlay||!symbol)return null;var overlayData=null;for(var i=0;i<data.overlay.length;++i)//overlay={ symbol:, name:, data:[] }
|
|
5779
5810
|
{var item=data.overlay[i];if(item.symbol==symbol){overlayData=item;break;}}if(!overlayData)return null;var upperSymbol=symbol.toUpperCase();var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);//是否是期货
|
|
5780
|
-
var date=0,yclose=1,open=2,high=3,low=4,close=5,vol=6,amount=7,time=8,position=9
|
|
5811
|
+
var date=0,yclose=1,open=2,high=3,low=4,close=5,vol=6,amount=7,time=8,position=9;var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;var yClose=null;for(var i=0;i<overlayData.data.length;++i){var item=new HistoryData();var jsData=overlayData.data[i];item.Date=jsData[date];item.Open=jsData[open];item.YClose=jsData[yclose];item.Close=jsData[close];item.High=jsData[high];item.Low=jsData[low];item.Vol=jsData[vol];//股
|
|
5781
5812
|
item.Amount=jsData[amount];item.Time=jsData[time];if(IFrameSplitOperator.IsNumber(jsData[position]))item.Position=jsData[position];//期货持仓
|
|
5782
5813
|
if(!IFrameSplitOperator.IsNumber(item.YClose)){if(IFrameSplitOperator.IsNumber(yClose))item.YClose=yClose;}if(IFrameSplitOperator.IsNumber(item.Close))yClose=item.Close;if(jsData[orderFlow])item.OrderFlow=jsData[orderFlow];aryMinuteData.push(item);}return aryMinuteData;};//API 返回数据 转化为array[]
|
|
5783
5814
|
KLineChartContainer.JsonDataToMinuteHistoryData=function(data){var upperSymbol=null;if(data.symbol)upperSymbol=data.symbol.toUpperCase();var isSHSZ=false;if(upperSymbol)isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var isFutures=false;//是否是期货
|
|
5784
|
-
if(upperSymbol)isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);var list=data.data;var aryDayData=new Array();var date=0,yclose=1,open=2,high=3,low=4,close=5,vol=6,amount=7,time=8,position=9
|
|
5815
|
+
if(upperSymbol)isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);var list=data.data;var aryDayData=new Array();var date=0,yclose=1,open=2,high=3,low=4,close=5,vol=6,amount=7,time=8,position=9;var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;var colorData=JSCHART_DATA_FIELD_ID.KLINE_COLOR_DATA;var yClose=null;for(var i=0;i<list.length;++i){var item=new HistoryData();var jsData=list[i];item.Date=jsData[date];item.Open=jsData[open];item.YClose=jsData[yclose];item.Close=jsData[close];item.High=jsData[high];item.Low=jsData[low];item.Vol=jsData[vol];//股
|
|
5785
5816
|
item.Amount=jsData[amount];item.Time=jsData[time];if(IFrameSplitOperator.IsNumber(jsData[position]))item.Position=jsData[position];//期货持仓
|
|
5786
|
-
if(!IFrameSplitOperator.IsNumber(item.YClose)){if(IFrameSplitOperator.IsNumber(yClose))item.YClose=yClose;}if(IFrameSplitOperator.IsNumber(item.Close))yClose=item.Close;if(jsData[orderFlow])item.OrderFlow=jsData[orderFlow];aryDayData.push(item);}/* 内部不处理无效数据, 确保外部传过来的数据是对的.
|
|
5817
|
+
if(!IFrameSplitOperator.IsNumber(item.YClose)){if(IFrameSplitOperator.IsNumber(yClose))item.YClose=yClose;}if(IFrameSplitOperator.IsNumber(item.Close))yClose=item.Close;if(jsData[orderFlow])item.OrderFlow=jsData[orderFlow];if(jsData[colorData])item.ColorData=jsData[colorData];aryDayData.push(item);}/* 内部不处理无效数据, 确保外部传过来的数据是对的.
|
|
5787
5818
|
// 无效数据处理
|
|
5788
5819
|
for(var i = 0; i < aryDayData.length; ++i)
|
|
5789
5820
|
{
|
package/package.json
CHANGED
|
@@ -6262,6 +6262,7 @@ var JSCHART_DATA_FIELD_ID=
|
|
|
6262
6262
|
{
|
|
6263
6263
|
KLINE_ORDERFLOW:99,
|
|
6264
6264
|
MINUTE_MULTI_DAY_EXTENDDATA:21, //多日分时图扩展数据序号
|
|
6265
|
+
KLINE_COLOR_DATA:66, //K线自定义颜色数据
|
|
6265
6266
|
}
|
|
6266
6267
|
|
|
6267
6268
|
|
|
@@ -8840,7 +8841,15 @@ function JSChartContainer(uielement, OffscreenElement)
|
|
|
8840
8841
|
var bDrawPicture=false; //是否正在画图
|
|
8841
8842
|
if (this.CurrentChartDrawPicture)
|
|
8842
8843
|
{
|
|
8843
|
-
|
|
8844
|
+
var index=this.Frame.PtInChartFrame(x,y);
|
|
8845
|
+
if (this.CurrentChartDrawPicture.Status!=20)
|
|
8846
|
+
{
|
|
8847
|
+
if (index>=0)
|
|
8848
|
+
mouseStatus={ Cursor:"crosshair", Name:"CurrentChartDrawPicture"};
|
|
8849
|
+
else
|
|
8850
|
+
mouseStatus={ Cursor:"not-allowed", Name:"CurrentChartDrawPicture"}; //不在画图区域
|
|
8851
|
+
}
|
|
8852
|
+
|
|
8844
8853
|
if (this.CurrentChartDrawPicture.SetLastPoint) this.CurrentChartDrawPicture.SetLastPoint({X:x,Y:y});
|
|
8845
8854
|
bDrawPicture=true;
|
|
8846
8855
|
}
|
|
@@ -18054,6 +18063,27 @@ function HQTradeFrame()
|
|
|
18054
18063
|
return -1;
|
|
18055
18064
|
}
|
|
18056
18065
|
|
|
18066
|
+
this.PtInChartFrame=function(x,y) //鼠标在图形区域, 取出上下空白
|
|
18067
|
+
{
|
|
18068
|
+
for(var i=0; i<this.SubFrame.length; ++i)
|
|
18069
|
+
{
|
|
18070
|
+
var item=this.SubFrame[i];
|
|
18071
|
+
var left=item.Frame.ChartBorder.GetLeft();
|
|
18072
|
+
var top=item.Frame.ChartBorder.GetTopEx();
|
|
18073
|
+
var width=item.Frame.ChartBorder.GetWidth();
|
|
18074
|
+
var height=item.Frame.ChartBorder.GetHeightEx();
|
|
18075
|
+
|
|
18076
|
+
item.Frame.Canvas.beginPath();
|
|
18077
|
+
item.Frame.Canvas.rect(left,top,width,height);
|
|
18078
|
+
if (item.Frame.Canvas.isPointInPath(x,y))
|
|
18079
|
+
{
|
|
18080
|
+
return i; //转成整形
|
|
18081
|
+
}
|
|
18082
|
+
}
|
|
18083
|
+
|
|
18084
|
+
return -1;
|
|
18085
|
+
}
|
|
18086
|
+
|
|
18057
18087
|
this.PtInButtons=function(x,y)
|
|
18058
18088
|
{
|
|
18059
18089
|
for(var i=0; i<this.SubFrame.length; ++i)
|
|
@@ -18794,6 +18824,7 @@ HistoryData.Copy=function(data)
|
|
|
18794
18824
|
if (IFrameSplitOperator.IsNumber(data.AFactor)) newData.AFactor=data.AFactor;
|
|
18795
18825
|
|
|
18796
18826
|
if (data.OrderFlow) newData.OrderFlow=data.OrderFlow;
|
|
18827
|
+
if (data.ColorData) newData.ColorData=data.ColorData;
|
|
18797
18828
|
|
|
18798
18829
|
return newData;
|
|
18799
18830
|
}
|
|
@@ -18824,6 +18855,9 @@ HistoryData.CopyTo=function(dest,src)
|
|
|
18824
18855
|
|
|
18825
18856
|
if (IFrameSplitOperator.IsNumber(src.BFactor)) dest.BFactor=src.BFactor;
|
|
18826
18857
|
if (IFrameSplitOperator.IsNumber(src.AFactor)) dest.AFactor=src.AFactor;
|
|
18858
|
+
|
|
18859
|
+
if (src.OrderFlow) dest.OrderFlow=src.OrderFlow;
|
|
18860
|
+
if (src.ColorData) dest.ColorData=src.ColorData;
|
|
18827
18861
|
}
|
|
18828
18862
|
|
|
18829
18863
|
//数据复权拷贝
|
|
@@ -22105,7 +22139,7 @@ function ChartKLine()
|
|
|
22105
22139
|
|
|
22106
22140
|
this.ClassName='ChartKLine'; //类名
|
|
22107
22141
|
this.Symbol; //股票代码
|
|
22108
|
-
this.DrawType=0; // 0=实心K线柱子 1=收盘价线 2=美国线 3=空心K线柱子 4=收盘价面积图 5=订单流 6=空心K线柱子2(全部空心) 7=订单流样式2 8=订单流样式3
|
|
22142
|
+
this.DrawType=0; // 0=实心K线柱子 1=收盘价线 2=美国线 3=空心K线柱子 4=收盘价面积图 5=订单流 6=空心K线柱子2(全部空心) 7=订单流样式2 8=订单流样式3 9=自定义颜色K线
|
|
22109
22143
|
this.CloseLineColor=g_JSChartResource.CloseLineColor;
|
|
22110
22144
|
this.CloseLineAreaColor=g_JSChartResource.CloseLineAreaColor;
|
|
22111
22145
|
this.CloseLineWidth=g_JSChartResource.CloseLineWidth;
|
|
@@ -22646,6 +22680,10 @@ function ChartKLine()
|
|
|
22646
22680
|
|
|
22647
22681
|
this.DrawKBar_Custom(data, dataWidth, barColor, drawType, kLineOption, x, y, left, right, yLow, yHigh, yOpen, yClose, border, isHScreen);
|
|
22648
22682
|
}
|
|
22683
|
+
else if (this.DrawType==9 && data.ColorData)
|
|
22684
|
+
{
|
|
22685
|
+
this.DrawKBarV2(data, data.ColorData, dataWidth, x, y, left, right, yLow, yHigh, yOpen, yClose, isHScreen);
|
|
22686
|
+
}
|
|
22649
22687
|
else if (data.Open<data.Close) //阳线
|
|
22650
22688
|
{
|
|
22651
22689
|
this.DrawKBar_Up(data, dataWidth, upColor, this.DrawType, x, y, left, right, yLow, yHigh, yOpen, yClose, isHScreen);
|
|
@@ -23131,6 +23169,171 @@ function ChartKLine()
|
|
|
23131
23169
|
}
|
|
23132
23170
|
}
|
|
23133
23171
|
|
|
23172
|
+
this.DrawKBarV2=function(data, colorData, dataWidth, x, y, left, right, yLow, yHigh, yOpen, yClose, isHScreen)
|
|
23173
|
+
{
|
|
23174
|
+
var isDrawBorder=false;
|
|
23175
|
+
var isEmptyBar=false;
|
|
23176
|
+
if (colorData.border) isDrawBorder=true;
|
|
23177
|
+
if (colorData.Type===0) isEmptyBar=true;
|
|
23178
|
+
|
|
23179
|
+
if (dataWidth>=4)
|
|
23180
|
+
{
|
|
23181
|
+
if (isDrawBorder)
|
|
23182
|
+
{
|
|
23183
|
+
if ((dataWidth%2)!=0) dataWidth-=1;
|
|
23184
|
+
}
|
|
23185
|
+
|
|
23186
|
+
if (data.High>data.Close) //上影线
|
|
23187
|
+
{
|
|
23188
|
+
if (colorData.Line)
|
|
23189
|
+
{
|
|
23190
|
+
this.Canvas.strokeStyle=colorData.Line.Color;
|
|
23191
|
+
this.Canvas.beginPath();
|
|
23192
|
+
if (isHScreen)
|
|
23193
|
+
{
|
|
23194
|
+
this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));
|
|
23195
|
+
this.Canvas.lineTo(ToFixedPoint(isEmptyBar?Math.max(yClose,yOpen):yClose),ToFixedPoint(x));
|
|
23196
|
+
}
|
|
23197
|
+
else
|
|
23198
|
+
{
|
|
23199
|
+
if (isDrawBorder)
|
|
23200
|
+
{
|
|
23201
|
+
var xFixed=left+dataWidth/2;
|
|
23202
|
+
this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(y));
|
|
23203
|
+
this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(Math.min(yClose,yOpen)));
|
|
23204
|
+
}
|
|
23205
|
+
else
|
|
23206
|
+
{
|
|
23207
|
+
this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));
|
|
23208
|
+
this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(Math.min(yClose,yOpen)));
|
|
23209
|
+
}
|
|
23210
|
+
}
|
|
23211
|
+
this.Canvas.stroke();
|
|
23212
|
+
}
|
|
23213
|
+
|
|
23214
|
+
y=yClose;
|
|
23215
|
+
}
|
|
23216
|
+
else
|
|
23217
|
+
{
|
|
23218
|
+
y=yClose;
|
|
23219
|
+
}
|
|
23220
|
+
|
|
23221
|
+
if (isHScreen)
|
|
23222
|
+
{
|
|
23223
|
+
/*
|
|
23224
|
+
if (Math.abs(yOpen-y)<1)
|
|
23225
|
+
{
|
|
23226
|
+
this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),1,ToFixedRect(dataWidth)); //高度小于1,统一使用高度1
|
|
23227
|
+
}
|
|
23228
|
+
else
|
|
23229
|
+
{
|
|
23230
|
+
if (drawType==3) //空心柱
|
|
23231
|
+
{
|
|
23232
|
+
this.Canvas.beginPath();
|
|
23233
|
+
this.Canvas.rect(ToFixedPoint(y),ToFixedPoint(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));
|
|
23234
|
+
this.Canvas.stroke();
|
|
23235
|
+
}
|
|
23236
|
+
else
|
|
23237
|
+
{
|
|
23238
|
+
this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));
|
|
23239
|
+
}
|
|
23240
|
+
}
|
|
23241
|
+
*/
|
|
23242
|
+
}
|
|
23243
|
+
else
|
|
23244
|
+
{
|
|
23245
|
+
|
|
23246
|
+
//实心
|
|
23247
|
+
if (!isEmptyBar && colorData.BarColor)
|
|
23248
|
+
{
|
|
23249
|
+
this.Canvas.fillStyle=colorData.BarColor;
|
|
23250
|
+
if (Math.abs(yOpen-y)<1)
|
|
23251
|
+
{
|
|
23252
|
+
this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(y),ToFixedRect(dataWidth),1); //高度小于1,统一使用高度1
|
|
23253
|
+
}
|
|
23254
|
+
else
|
|
23255
|
+
{
|
|
23256
|
+
this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(Math.min(y,yOpen)),ToFixedRect(dataWidth),ToFixedRect(Math.abs(yOpen-y)));
|
|
23257
|
+
}
|
|
23258
|
+
}
|
|
23259
|
+
|
|
23260
|
+
if (colorData.Border) //空心
|
|
23261
|
+
{
|
|
23262
|
+
if (Math.abs(yOpen-y)<1)
|
|
23263
|
+
{
|
|
23264
|
+
this.Canvas.fillStyle=colorData.Border.Color;
|
|
23265
|
+
this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(y),ToFixedRect(dataWidth),1); //高度小于1,统一使用高度1
|
|
23266
|
+
}
|
|
23267
|
+
else
|
|
23268
|
+
{
|
|
23269
|
+
this.Canvas.strokeStyle=colorData.Border.Color;
|
|
23270
|
+
this.Canvas.beginPath();
|
|
23271
|
+
this.Canvas.rect(ToFixedPoint(left),ToFixedPoint(y),ToFixedRect(dataWidth),ToFixedRect(yOpen-y));
|
|
23272
|
+
this.Canvas.stroke();
|
|
23273
|
+
}
|
|
23274
|
+
}
|
|
23275
|
+
}
|
|
23276
|
+
|
|
23277
|
+
if (data.Open>data.Low) //下影线
|
|
23278
|
+
{
|
|
23279
|
+
if (colorData.Line)
|
|
23280
|
+
{
|
|
23281
|
+
this.Canvas.strokeStyle=colorData.Line.Color;
|
|
23282
|
+
this.Canvas.beginPath();
|
|
23283
|
+
if (isHScreen)
|
|
23284
|
+
{
|
|
23285
|
+
this.Canvas.moveTo(ToFixedPoint(isEmptyBar?Math.min(yClose,yOpen):y),ToFixedPoint(x));
|
|
23286
|
+
this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));
|
|
23287
|
+
}
|
|
23288
|
+
else
|
|
23289
|
+
{
|
|
23290
|
+
if (isDrawBorder)
|
|
23291
|
+
{
|
|
23292
|
+
var xFixed=left+dataWidth/2;
|
|
23293
|
+
this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(Math.max(yClose,yOpen)));
|
|
23294
|
+
this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(yLow));
|
|
23295
|
+
}
|
|
23296
|
+
else
|
|
23297
|
+
{
|
|
23298
|
+
this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(Math.max(yClose,yOpen)));
|
|
23299
|
+
this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yLow));
|
|
23300
|
+
}
|
|
23301
|
+
}
|
|
23302
|
+
this.Canvas.stroke();
|
|
23303
|
+
}
|
|
23304
|
+
}
|
|
23305
|
+
}
|
|
23306
|
+
else
|
|
23307
|
+
{
|
|
23308
|
+
var lineColor;
|
|
23309
|
+
if (isEmptyBar && colorData.Border)
|
|
23310
|
+
{
|
|
23311
|
+
lineColor=colorData.Border.Color;
|
|
23312
|
+
}
|
|
23313
|
+
else if (!isEmptyBar && colorData.BarColor)
|
|
23314
|
+
{
|
|
23315
|
+
lineColor=colorData.BarColor;
|
|
23316
|
+
}
|
|
23317
|
+
|
|
23318
|
+
if (lineColor)
|
|
23319
|
+
{
|
|
23320
|
+
this.Canvas.strokeStyle=lineColor;
|
|
23321
|
+
this.Canvas.beginPath();
|
|
23322
|
+
if (isHScreen)
|
|
23323
|
+
{
|
|
23324
|
+
this.Canvas.moveTo(yHigh,ToFixedPoint(x));
|
|
23325
|
+
this.Canvas.lineTo(yLow,ToFixedPoint(x));
|
|
23326
|
+
}
|
|
23327
|
+
else
|
|
23328
|
+
{
|
|
23329
|
+
this.Canvas.moveTo(ToFixedPoint(x),yHigh);
|
|
23330
|
+
this.Canvas.lineTo(ToFixedPoint(x),yLow);
|
|
23331
|
+
}
|
|
23332
|
+
this.Canvas.stroke();
|
|
23333
|
+
}
|
|
23334
|
+
}
|
|
23335
|
+
}
|
|
23336
|
+
|
|
23134
23337
|
this.DrawTrade=function() //交易系统
|
|
23135
23338
|
{
|
|
23136
23339
|
if (!this.TradeData) return;
|
|
@@ -23392,6 +23595,10 @@ function ChartKLine()
|
|
|
23392
23595
|
{
|
|
23393
23596
|
this.DrawOrderFlow_Style3();
|
|
23394
23597
|
}
|
|
23598
|
+
else if (this.DrawType==9)
|
|
23599
|
+
{
|
|
23600
|
+
this.DrawKBar();
|
|
23601
|
+
}
|
|
23395
23602
|
else
|
|
23396
23603
|
{
|
|
23397
23604
|
this.DrawKBar();
|
|
@@ -25946,10 +26153,13 @@ function ChartOverlayKLine()
|
|
|
25946
26153
|
|
|
25947
26154
|
this.PtInChart=function(x,y)
|
|
25948
26155
|
{
|
|
25949
|
-
|
|
26156
|
+
var drawType=this.DrawType;
|
|
26157
|
+
if (IFrameSplitOperator.IsNumber(this.CustomDrawType)) drawType=this.CustomDrawType;
|
|
26158
|
+
|
|
26159
|
+
if (drawType==1 || drawType==4) //线段,面积不支持选中
|
|
25950
26160
|
{
|
|
25951
26161
|
return null;
|
|
25952
|
-
return this.PtInLine(x,y, {KLineClose:true});
|
|
26162
|
+
//return this.PtInLine(x,y, {KLineClose:true});
|
|
25953
26163
|
}
|
|
25954
26164
|
|
|
25955
26165
|
return this.PtInKBar(x,y, {OverlayKLine:true});
|
|
@@ -44800,7 +45010,14 @@ function DynamicChartTitlePainting()
|
|
|
44800
45010
|
else
|
|
44801
45011
|
{
|
|
44802
45012
|
this.Canvas.fillStyle=item.Color;
|
|
44803
|
-
var text=
|
|
45013
|
+
var text=valueText;
|
|
45014
|
+
if (item.Name)
|
|
45015
|
+
{
|
|
45016
|
+
var dyTitle=this.GetDynamicOutName(item.Name);
|
|
45017
|
+
if (dyTitle) text=dyTitle+":"+valueText;
|
|
45018
|
+
else text=item.Name+":"+valueText;
|
|
45019
|
+
}
|
|
45020
|
+
|
|
44804
45021
|
var space=this.ParamSpace*GetDevicePixelRatio();
|
|
44805
45022
|
var textWidth=this.Canvas.measureText(text).width+space; //后空2个像素
|
|
44806
45023
|
if ((left+textWidth)>right) break;
|
|
@@ -58727,7 +58944,7 @@ function KLineChartContainer(uielement,OffscreenElement)
|
|
|
58727
58944
|
this.ClickChartTimer=null;
|
|
58728
58945
|
}
|
|
58729
58946
|
|
|
58730
|
-
var data={ Tooltip:tooltip, Stock:{Symbol:this.Symbol, Name:this.Name } }
|
|
58947
|
+
var data={ Tooltip:tooltip, Stock:{Symbol:this.Symbol, Name:this.Name }, X:e.clientX, Y:e.clientY };
|
|
58731
58948
|
event.Callback(event,data,this);
|
|
58732
58949
|
}
|
|
58733
58950
|
|
|
@@ -59452,6 +59669,7 @@ KLineChartContainer.JsonDataToHistoryData=function(data)
|
|
|
59452
59669
|
var fclose=9, yfclose=10; //结算价, 前结算价
|
|
59453
59670
|
var bfactor=11, afactor=12; //前, 后复权因子
|
|
59454
59671
|
var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
|
|
59672
|
+
var colorData=JSCHART_DATA_FIELD_ID.KLINE_COLOR_DATA;
|
|
59455
59673
|
for (var i = 0; i < list.length; ++i)
|
|
59456
59674
|
{
|
|
59457
59675
|
var item = new HistoryData();
|
|
@@ -59475,6 +59693,7 @@ KLineChartContainer.JsonDataToHistoryData=function(data)
|
|
|
59475
59693
|
if (!IFrameSplitOperator.IsNumber(item.Open)) continue;
|
|
59476
59694
|
|
|
59477
59695
|
if (jsData[orderFlow]) item.OrderFlow=jsData[orderFlow];
|
|
59696
|
+
if (jsData[colorData]) item.ColorData=jsData[colorData];
|
|
59478
59697
|
|
|
59479
59698
|
aryDayData.push(item);
|
|
59480
59699
|
}
|
|
@@ -59514,6 +59733,7 @@ KLineChartContainer.JsonDataToRealtimeData=function(data, symbol)
|
|
|
59514
59733
|
|
|
59515
59734
|
if (IFrameSplitOperator.IsNumber(stock.bfactor)) item.BFactor=stock.bfactor; //前复权因子
|
|
59516
59735
|
if (IFrameSplitOperator.IsNumber(stock.afactor)) item.AFactor=stock.afactor; //后复权因子
|
|
59736
|
+
if (stock.colordata) item.ColorData=stock.colordata; //自定义颜色
|
|
59517
59737
|
return item;
|
|
59518
59738
|
}
|
|
59519
59739
|
|
|
@@ -59601,7 +59821,8 @@ KLineChartContainer.JsonDataToMinuteRealtimeDataV2=function(data,symbol)
|
|
|
59601
59821
|
var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);
|
|
59602
59822
|
var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol); //是否是期货
|
|
59603
59823
|
|
|
59604
|
-
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9
|
|
59824
|
+
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9;
|
|
59825
|
+
var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
|
|
59605
59826
|
var yClose=null;
|
|
59606
59827
|
|
|
59607
59828
|
for (var i = 0; i < overlayData.data.length; ++i)
|
|
@@ -59645,7 +59866,9 @@ KLineChartContainer.JsonDataToMinuteHistoryData=function(data)
|
|
|
59645
59866
|
if (upperSymbol) isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);
|
|
59646
59867
|
var list = data.data;
|
|
59647
59868
|
var aryDayData=new Array();
|
|
59648
|
-
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9
|
|
59869
|
+
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9;
|
|
59870
|
+
var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
|
|
59871
|
+
var colorData=JSCHART_DATA_FIELD_ID.KLINE_COLOR_DATA;
|
|
59649
59872
|
var yClose=null;
|
|
59650
59873
|
for (var i = 0; i < list.length; ++i)
|
|
59651
59874
|
{
|
|
@@ -59670,6 +59893,7 @@ KLineChartContainer.JsonDataToMinuteHistoryData=function(data)
|
|
|
59670
59893
|
if (IFrameSplitOperator.IsNumber(item.Close)) yClose=item.Close;
|
|
59671
59894
|
|
|
59672
59895
|
if (jsData[orderFlow]) item.OrderFlow=jsData[orderFlow];
|
|
59896
|
+
if (jsData[colorData]) item.ColorData=jsData[colorData];
|
|
59673
59897
|
|
|
59674
59898
|
aryDayData.push(item);
|
|
59675
59899
|
}
|
|
@@ -6306,6 +6306,7 @@ var JSCHART_DATA_FIELD_ID=
|
|
|
6306
6306
|
{
|
|
6307
6307
|
KLINE_ORDERFLOW:99,
|
|
6308
6308
|
MINUTE_MULTI_DAY_EXTENDDATA:21, //多日分时图扩展数据序号
|
|
6309
|
+
KLINE_COLOR_DATA:66, //K线自定义颜色数据
|
|
6309
6310
|
}
|
|
6310
6311
|
|
|
6311
6312
|
|
|
@@ -8884,7 +8885,15 @@ function JSChartContainer(uielement, OffscreenElement)
|
|
|
8884
8885
|
var bDrawPicture=false; //是否正在画图
|
|
8885
8886
|
if (this.CurrentChartDrawPicture)
|
|
8886
8887
|
{
|
|
8887
|
-
|
|
8888
|
+
var index=this.Frame.PtInChartFrame(x,y);
|
|
8889
|
+
if (this.CurrentChartDrawPicture.Status!=20)
|
|
8890
|
+
{
|
|
8891
|
+
if (index>=0)
|
|
8892
|
+
mouseStatus={ Cursor:"crosshair", Name:"CurrentChartDrawPicture"};
|
|
8893
|
+
else
|
|
8894
|
+
mouseStatus={ Cursor:"not-allowed", Name:"CurrentChartDrawPicture"}; //不在画图区域
|
|
8895
|
+
}
|
|
8896
|
+
|
|
8888
8897
|
if (this.CurrentChartDrawPicture.SetLastPoint) this.CurrentChartDrawPicture.SetLastPoint({X:x,Y:y});
|
|
8889
8898
|
bDrawPicture=true;
|
|
8890
8899
|
}
|
|
@@ -18098,6 +18107,27 @@ function HQTradeFrame()
|
|
|
18098
18107
|
return -1;
|
|
18099
18108
|
}
|
|
18100
18109
|
|
|
18110
|
+
this.PtInChartFrame=function(x,y) //鼠标在图形区域, 取出上下空白
|
|
18111
|
+
{
|
|
18112
|
+
for(var i=0; i<this.SubFrame.length; ++i)
|
|
18113
|
+
{
|
|
18114
|
+
var item=this.SubFrame[i];
|
|
18115
|
+
var left=item.Frame.ChartBorder.GetLeft();
|
|
18116
|
+
var top=item.Frame.ChartBorder.GetTopEx();
|
|
18117
|
+
var width=item.Frame.ChartBorder.GetWidth();
|
|
18118
|
+
var height=item.Frame.ChartBorder.GetHeightEx();
|
|
18119
|
+
|
|
18120
|
+
item.Frame.Canvas.beginPath();
|
|
18121
|
+
item.Frame.Canvas.rect(left,top,width,height);
|
|
18122
|
+
if (item.Frame.Canvas.isPointInPath(x,y))
|
|
18123
|
+
{
|
|
18124
|
+
return i; //转成整形
|
|
18125
|
+
}
|
|
18126
|
+
}
|
|
18127
|
+
|
|
18128
|
+
return -1;
|
|
18129
|
+
}
|
|
18130
|
+
|
|
18101
18131
|
this.PtInButtons=function(x,y)
|
|
18102
18132
|
{
|
|
18103
18133
|
for(var i=0; i<this.SubFrame.length; ++i)
|
|
@@ -18838,6 +18868,7 @@ HistoryData.Copy=function(data)
|
|
|
18838
18868
|
if (IFrameSplitOperator.IsNumber(data.AFactor)) newData.AFactor=data.AFactor;
|
|
18839
18869
|
|
|
18840
18870
|
if (data.OrderFlow) newData.OrderFlow=data.OrderFlow;
|
|
18871
|
+
if (data.ColorData) newData.ColorData=data.ColorData;
|
|
18841
18872
|
|
|
18842
18873
|
return newData;
|
|
18843
18874
|
}
|
|
@@ -18868,6 +18899,9 @@ HistoryData.CopyTo=function(dest,src)
|
|
|
18868
18899
|
|
|
18869
18900
|
if (IFrameSplitOperator.IsNumber(src.BFactor)) dest.BFactor=src.BFactor;
|
|
18870
18901
|
if (IFrameSplitOperator.IsNumber(src.AFactor)) dest.AFactor=src.AFactor;
|
|
18902
|
+
|
|
18903
|
+
if (src.OrderFlow) dest.OrderFlow=src.OrderFlow;
|
|
18904
|
+
if (src.ColorData) dest.ColorData=src.ColorData;
|
|
18871
18905
|
}
|
|
18872
18906
|
|
|
18873
18907
|
//数据复权拷贝
|
|
@@ -22149,7 +22183,7 @@ function ChartKLine()
|
|
|
22149
22183
|
|
|
22150
22184
|
this.ClassName='ChartKLine'; //类名
|
|
22151
22185
|
this.Symbol; //股票代码
|
|
22152
|
-
this.DrawType=0; // 0=实心K线柱子 1=收盘价线 2=美国线 3=空心K线柱子 4=收盘价面积图 5=订单流 6=空心K线柱子2(全部空心) 7=订单流样式2 8=订单流样式3
|
|
22186
|
+
this.DrawType=0; // 0=实心K线柱子 1=收盘价线 2=美国线 3=空心K线柱子 4=收盘价面积图 5=订单流 6=空心K线柱子2(全部空心) 7=订单流样式2 8=订单流样式3 9=自定义颜色K线
|
|
22153
22187
|
this.CloseLineColor=g_JSChartResource.CloseLineColor;
|
|
22154
22188
|
this.CloseLineAreaColor=g_JSChartResource.CloseLineAreaColor;
|
|
22155
22189
|
this.CloseLineWidth=g_JSChartResource.CloseLineWidth;
|
|
@@ -22690,6 +22724,10 @@ function ChartKLine()
|
|
|
22690
22724
|
|
|
22691
22725
|
this.DrawKBar_Custom(data, dataWidth, barColor, drawType, kLineOption, x, y, left, right, yLow, yHigh, yOpen, yClose, border, isHScreen);
|
|
22692
22726
|
}
|
|
22727
|
+
else if (this.DrawType==9 && data.ColorData)
|
|
22728
|
+
{
|
|
22729
|
+
this.DrawKBarV2(data, data.ColorData, dataWidth, x, y, left, right, yLow, yHigh, yOpen, yClose, isHScreen);
|
|
22730
|
+
}
|
|
22693
22731
|
else if (data.Open<data.Close) //阳线
|
|
22694
22732
|
{
|
|
22695
22733
|
this.DrawKBar_Up(data, dataWidth, upColor, this.DrawType, x, y, left, right, yLow, yHigh, yOpen, yClose, isHScreen);
|
|
@@ -23175,6 +23213,171 @@ function ChartKLine()
|
|
|
23175
23213
|
}
|
|
23176
23214
|
}
|
|
23177
23215
|
|
|
23216
|
+
this.DrawKBarV2=function(data, colorData, dataWidth, x, y, left, right, yLow, yHigh, yOpen, yClose, isHScreen)
|
|
23217
|
+
{
|
|
23218
|
+
var isDrawBorder=false;
|
|
23219
|
+
var isEmptyBar=false;
|
|
23220
|
+
if (colorData.border) isDrawBorder=true;
|
|
23221
|
+
if (colorData.Type===0) isEmptyBar=true;
|
|
23222
|
+
|
|
23223
|
+
if (dataWidth>=4)
|
|
23224
|
+
{
|
|
23225
|
+
if (isDrawBorder)
|
|
23226
|
+
{
|
|
23227
|
+
if ((dataWidth%2)!=0) dataWidth-=1;
|
|
23228
|
+
}
|
|
23229
|
+
|
|
23230
|
+
if (data.High>data.Close) //上影线
|
|
23231
|
+
{
|
|
23232
|
+
if (colorData.Line)
|
|
23233
|
+
{
|
|
23234
|
+
this.Canvas.strokeStyle=colorData.Line.Color;
|
|
23235
|
+
this.Canvas.beginPath();
|
|
23236
|
+
if (isHScreen)
|
|
23237
|
+
{
|
|
23238
|
+
this.Canvas.moveTo(ToFixedPoint(y),ToFixedPoint(x));
|
|
23239
|
+
this.Canvas.lineTo(ToFixedPoint(isEmptyBar?Math.max(yClose,yOpen):yClose),ToFixedPoint(x));
|
|
23240
|
+
}
|
|
23241
|
+
else
|
|
23242
|
+
{
|
|
23243
|
+
if (isDrawBorder)
|
|
23244
|
+
{
|
|
23245
|
+
var xFixed=left+dataWidth/2;
|
|
23246
|
+
this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(y));
|
|
23247
|
+
this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(Math.min(yClose,yOpen)));
|
|
23248
|
+
}
|
|
23249
|
+
else
|
|
23250
|
+
{
|
|
23251
|
+
this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(y));
|
|
23252
|
+
this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(Math.min(yClose,yOpen)));
|
|
23253
|
+
}
|
|
23254
|
+
}
|
|
23255
|
+
this.Canvas.stroke();
|
|
23256
|
+
}
|
|
23257
|
+
|
|
23258
|
+
y=yClose;
|
|
23259
|
+
}
|
|
23260
|
+
else
|
|
23261
|
+
{
|
|
23262
|
+
y=yClose;
|
|
23263
|
+
}
|
|
23264
|
+
|
|
23265
|
+
if (isHScreen)
|
|
23266
|
+
{
|
|
23267
|
+
/*
|
|
23268
|
+
if (Math.abs(yOpen-y)<1)
|
|
23269
|
+
{
|
|
23270
|
+
this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),1,ToFixedRect(dataWidth)); //高度小于1,统一使用高度1
|
|
23271
|
+
}
|
|
23272
|
+
else
|
|
23273
|
+
{
|
|
23274
|
+
if (drawType==3) //空心柱
|
|
23275
|
+
{
|
|
23276
|
+
this.Canvas.beginPath();
|
|
23277
|
+
this.Canvas.rect(ToFixedPoint(y),ToFixedPoint(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));
|
|
23278
|
+
this.Canvas.stroke();
|
|
23279
|
+
}
|
|
23280
|
+
else
|
|
23281
|
+
{
|
|
23282
|
+
this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));
|
|
23283
|
+
}
|
|
23284
|
+
}
|
|
23285
|
+
*/
|
|
23286
|
+
}
|
|
23287
|
+
else
|
|
23288
|
+
{
|
|
23289
|
+
|
|
23290
|
+
//实心
|
|
23291
|
+
if (!isEmptyBar && colorData.BarColor)
|
|
23292
|
+
{
|
|
23293
|
+
this.Canvas.fillStyle=colorData.BarColor;
|
|
23294
|
+
if (Math.abs(yOpen-y)<1)
|
|
23295
|
+
{
|
|
23296
|
+
this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(y),ToFixedRect(dataWidth),1); //高度小于1,统一使用高度1
|
|
23297
|
+
}
|
|
23298
|
+
else
|
|
23299
|
+
{
|
|
23300
|
+
this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(Math.min(y,yOpen)),ToFixedRect(dataWidth),ToFixedRect(Math.abs(yOpen-y)));
|
|
23301
|
+
}
|
|
23302
|
+
}
|
|
23303
|
+
|
|
23304
|
+
if (colorData.Border) //空心
|
|
23305
|
+
{
|
|
23306
|
+
if (Math.abs(yOpen-y)<1)
|
|
23307
|
+
{
|
|
23308
|
+
this.Canvas.fillStyle=colorData.Border.Color;
|
|
23309
|
+
this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(y),ToFixedRect(dataWidth),1); //高度小于1,统一使用高度1
|
|
23310
|
+
}
|
|
23311
|
+
else
|
|
23312
|
+
{
|
|
23313
|
+
this.Canvas.strokeStyle=colorData.Border.Color;
|
|
23314
|
+
this.Canvas.beginPath();
|
|
23315
|
+
this.Canvas.rect(ToFixedPoint(left),ToFixedPoint(y),ToFixedRect(dataWidth),ToFixedRect(yOpen-y));
|
|
23316
|
+
this.Canvas.stroke();
|
|
23317
|
+
}
|
|
23318
|
+
}
|
|
23319
|
+
}
|
|
23320
|
+
|
|
23321
|
+
if (data.Open>data.Low) //下影线
|
|
23322
|
+
{
|
|
23323
|
+
if (colorData.Line)
|
|
23324
|
+
{
|
|
23325
|
+
this.Canvas.strokeStyle=colorData.Line.Color;
|
|
23326
|
+
this.Canvas.beginPath();
|
|
23327
|
+
if (isHScreen)
|
|
23328
|
+
{
|
|
23329
|
+
this.Canvas.moveTo(ToFixedPoint(isEmptyBar?Math.min(yClose,yOpen):y),ToFixedPoint(x));
|
|
23330
|
+
this.Canvas.lineTo(ToFixedPoint(yLow),ToFixedPoint(x));
|
|
23331
|
+
}
|
|
23332
|
+
else
|
|
23333
|
+
{
|
|
23334
|
+
if (isDrawBorder)
|
|
23335
|
+
{
|
|
23336
|
+
var xFixed=left+dataWidth/2;
|
|
23337
|
+
this.Canvas.moveTo(ToFixedPoint(xFixed),ToFixedPoint(Math.max(yClose,yOpen)));
|
|
23338
|
+
this.Canvas.lineTo(ToFixedPoint(xFixed),ToFixedPoint(yLow));
|
|
23339
|
+
}
|
|
23340
|
+
else
|
|
23341
|
+
{
|
|
23342
|
+
this.Canvas.moveTo(ToFixedPoint(x),ToFixedPoint(Math.max(yClose,yOpen)));
|
|
23343
|
+
this.Canvas.lineTo(ToFixedPoint(x),ToFixedPoint(yLow));
|
|
23344
|
+
}
|
|
23345
|
+
}
|
|
23346
|
+
this.Canvas.stroke();
|
|
23347
|
+
}
|
|
23348
|
+
}
|
|
23349
|
+
}
|
|
23350
|
+
else
|
|
23351
|
+
{
|
|
23352
|
+
var lineColor;
|
|
23353
|
+
if (isEmptyBar && colorData.Border)
|
|
23354
|
+
{
|
|
23355
|
+
lineColor=colorData.Border.Color;
|
|
23356
|
+
}
|
|
23357
|
+
else if (!isEmptyBar && colorData.BarColor)
|
|
23358
|
+
{
|
|
23359
|
+
lineColor=colorData.BarColor;
|
|
23360
|
+
}
|
|
23361
|
+
|
|
23362
|
+
if (lineColor)
|
|
23363
|
+
{
|
|
23364
|
+
this.Canvas.strokeStyle=lineColor;
|
|
23365
|
+
this.Canvas.beginPath();
|
|
23366
|
+
if (isHScreen)
|
|
23367
|
+
{
|
|
23368
|
+
this.Canvas.moveTo(yHigh,ToFixedPoint(x));
|
|
23369
|
+
this.Canvas.lineTo(yLow,ToFixedPoint(x));
|
|
23370
|
+
}
|
|
23371
|
+
else
|
|
23372
|
+
{
|
|
23373
|
+
this.Canvas.moveTo(ToFixedPoint(x),yHigh);
|
|
23374
|
+
this.Canvas.lineTo(ToFixedPoint(x),yLow);
|
|
23375
|
+
}
|
|
23376
|
+
this.Canvas.stroke();
|
|
23377
|
+
}
|
|
23378
|
+
}
|
|
23379
|
+
}
|
|
23380
|
+
|
|
23178
23381
|
this.DrawTrade=function() //交易系统
|
|
23179
23382
|
{
|
|
23180
23383
|
if (!this.TradeData) return;
|
|
@@ -23436,6 +23639,10 @@ function ChartKLine()
|
|
|
23436
23639
|
{
|
|
23437
23640
|
this.DrawOrderFlow_Style3();
|
|
23438
23641
|
}
|
|
23642
|
+
else if (this.DrawType==9)
|
|
23643
|
+
{
|
|
23644
|
+
this.DrawKBar();
|
|
23645
|
+
}
|
|
23439
23646
|
else
|
|
23440
23647
|
{
|
|
23441
23648
|
this.DrawKBar();
|
|
@@ -25990,10 +26197,13 @@ function ChartOverlayKLine()
|
|
|
25990
26197
|
|
|
25991
26198
|
this.PtInChart=function(x,y)
|
|
25992
26199
|
{
|
|
25993
|
-
|
|
26200
|
+
var drawType=this.DrawType;
|
|
26201
|
+
if (IFrameSplitOperator.IsNumber(this.CustomDrawType)) drawType=this.CustomDrawType;
|
|
26202
|
+
|
|
26203
|
+
if (drawType==1 || drawType==4) //线段,面积不支持选中
|
|
25994
26204
|
{
|
|
25995
26205
|
return null;
|
|
25996
|
-
return this.PtInLine(x,y, {KLineClose:true});
|
|
26206
|
+
//return this.PtInLine(x,y, {KLineClose:true});
|
|
25997
26207
|
}
|
|
25998
26208
|
|
|
25999
26209
|
return this.PtInKBar(x,y, {OverlayKLine:true});
|
|
@@ -44844,7 +45054,14 @@ function DynamicChartTitlePainting()
|
|
|
44844
45054
|
else
|
|
44845
45055
|
{
|
|
44846
45056
|
this.Canvas.fillStyle=item.Color;
|
|
44847
|
-
var text=
|
|
45057
|
+
var text=valueText;
|
|
45058
|
+
if (item.Name)
|
|
45059
|
+
{
|
|
45060
|
+
var dyTitle=this.GetDynamicOutName(item.Name);
|
|
45061
|
+
if (dyTitle) text=dyTitle+":"+valueText;
|
|
45062
|
+
else text=item.Name+":"+valueText;
|
|
45063
|
+
}
|
|
45064
|
+
|
|
44848
45065
|
var space=this.ParamSpace*GetDevicePixelRatio();
|
|
44849
45066
|
var textWidth=this.Canvas.measureText(text).width+space; //后空2个像素
|
|
44850
45067
|
if ((left+textWidth)>right) break;
|
|
@@ -58771,7 +58988,7 @@ function KLineChartContainer(uielement,OffscreenElement)
|
|
|
58771
58988
|
this.ClickChartTimer=null;
|
|
58772
58989
|
}
|
|
58773
58990
|
|
|
58774
|
-
var data={ Tooltip:tooltip, Stock:{Symbol:this.Symbol, Name:this.Name } }
|
|
58991
|
+
var data={ Tooltip:tooltip, Stock:{Symbol:this.Symbol, Name:this.Name }, X:e.clientX, Y:e.clientY };
|
|
58775
58992
|
event.Callback(event,data,this);
|
|
58776
58993
|
}
|
|
58777
58994
|
|
|
@@ -59496,6 +59713,7 @@ KLineChartContainer.JsonDataToHistoryData=function(data)
|
|
|
59496
59713
|
var fclose=9, yfclose=10; //结算价, 前结算价
|
|
59497
59714
|
var bfactor=11, afactor=12; //前, 后复权因子
|
|
59498
59715
|
var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
|
|
59716
|
+
var colorData=JSCHART_DATA_FIELD_ID.KLINE_COLOR_DATA;
|
|
59499
59717
|
for (var i = 0; i < list.length; ++i)
|
|
59500
59718
|
{
|
|
59501
59719
|
var item = new HistoryData();
|
|
@@ -59519,6 +59737,7 @@ KLineChartContainer.JsonDataToHistoryData=function(data)
|
|
|
59519
59737
|
if (!IFrameSplitOperator.IsNumber(item.Open)) continue;
|
|
59520
59738
|
|
|
59521
59739
|
if (jsData[orderFlow]) item.OrderFlow=jsData[orderFlow];
|
|
59740
|
+
if (jsData[colorData]) item.ColorData=jsData[colorData];
|
|
59522
59741
|
|
|
59523
59742
|
aryDayData.push(item);
|
|
59524
59743
|
}
|
|
@@ -59558,6 +59777,7 @@ KLineChartContainer.JsonDataToRealtimeData=function(data, symbol)
|
|
|
59558
59777
|
|
|
59559
59778
|
if (IFrameSplitOperator.IsNumber(stock.bfactor)) item.BFactor=stock.bfactor; //前复权因子
|
|
59560
59779
|
if (IFrameSplitOperator.IsNumber(stock.afactor)) item.AFactor=stock.afactor; //后复权因子
|
|
59780
|
+
if (stock.colordata) item.ColorData=stock.colordata; //自定义颜色
|
|
59561
59781
|
return item;
|
|
59562
59782
|
}
|
|
59563
59783
|
|
|
@@ -59645,7 +59865,8 @@ KLineChartContainer.JsonDataToMinuteRealtimeDataV2=function(data,symbol)
|
|
|
59645
59865
|
var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);
|
|
59646
59866
|
var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol); //是否是期货
|
|
59647
59867
|
|
|
59648
|
-
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9
|
|
59868
|
+
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9;
|
|
59869
|
+
var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
|
|
59649
59870
|
var yClose=null;
|
|
59650
59871
|
|
|
59651
59872
|
for (var i = 0; i < overlayData.data.length; ++i)
|
|
@@ -59689,7 +59910,9 @@ KLineChartContainer.JsonDataToMinuteHistoryData=function(data)
|
|
|
59689
59910
|
if (upperSymbol) isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);
|
|
59690
59911
|
var list = data.data;
|
|
59691
59912
|
var aryDayData=new Array();
|
|
59692
|
-
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9
|
|
59913
|
+
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9;
|
|
59914
|
+
var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
|
|
59915
|
+
var colorData=JSCHART_DATA_FIELD_ID.KLINE_COLOR_DATA;
|
|
59693
59916
|
var yClose=null;
|
|
59694
59917
|
for (var i = 0; i < list.length; ++i)
|
|
59695
59918
|
{
|
|
@@ -59714,6 +59937,7 @@ KLineChartContainer.JsonDataToMinuteHistoryData=function(data)
|
|
|
59714
59937
|
if (IFrameSplitOperator.IsNumber(item.Close)) yClose=item.Close;
|
|
59715
59938
|
|
|
59716
59939
|
if (jsData[orderFlow]) item.OrderFlow=jsData[orderFlow];
|
|
59940
|
+
if (jsData[colorData]) item.ColorData=jsData[colorData];
|
|
59717
59941
|
|
|
59718
59942
|
aryDayData.push(item);
|
|
59719
59943
|
}
|