hqchart 1.1.11273 → 1.1.11285
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
|
@@ -1545,7 +1545,8 @@ ON_CLICK_REPORT_FIXEDROW:59,//点击报价列表点击固定行
|
|
|
1545
1545
|
ON_RCLICK_REPORT_FIXEDROW:60,//点击报价列表右键点击固定行
|
|
1546
1546
|
ON_KEYDOWN_SELECT_RECT_FIRST:61,//区间选择第1个位置事件
|
|
1547
1547
|
ON_CLICK_FRAME_TOOLBAR:62,//指标标题工具栏
|
|
1548
|
-
ON_REPORT_DRAG_ROW:63
|
|
1548
|
+
ON_REPORT_DRAG_ROW:63,//自选股行拖拽
|
|
1549
|
+
ON_MOUSE_MOVE:64//鼠标移动
|
|
1549
1550
|
};var JSCHART_OPERATOR_ID={OP_SCROLL_LEFT:1,//往左移动
|
|
1550
1551
|
OP_SCROLL_RIGHT:2,//往右移动
|
|
1551
1552
|
OP_ZOOM_OUT:3,//缩小
|
|
@@ -1564,7 +1565,8 @@ CHANGE_INDEX:4,//换指标
|
|
|
1564
1565
|
CLOSE_INDEX_WINDOW:5,//关闭指标窗口
|
|
1565
1566
|
OVERLAY_INDEX:6,//叠加指标
|
|
1566
1567
|
MODIFY_OVERLAY_INDEX_PARAM:7,//改叠加指标参数
|
|
1567
|
-
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线自定义颜色数据
|
|
1568
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=[];}};}/*
|
|
1569
1571
|
图形控件
|
|
1570
1572
|
*/function JSChartContainer(uielement,OffscreenElement){var _this3=this;this.ClassName='JSChartContainer';var _self=this;this.Frame;//框架画法
|
|
@@ -1645,8 +1647,7 @@ this.MoveOnChartDrawPicture=null;if(this.ChartSplashPaint&&this.ChartSplashPaint
|
|
|
1645
1647
|
}
|
|
1646
1648
|
*///保存最后一次鼠标移动信息
|
|
1647
1649
|
var MoveStatus={X:x,Y:y,IsInClient:this.IsMouseOnClient(x,y)};this.LastMouseStatus.OnMouseMove=MoveStatus;this.LastMouseStatus.MoveOnPoint={X:x,Y:y};//鼠标移动的位置
|
|
1648
|
-
|
|
1649
|
-
this.MoveOnPoint={X:x,Y:y};this.OnMouseMove(x,y,e);this.LastMouseStatus.MoveOnPoint=null;};this.IsMouseOnClient=function(x,y){var isInClient=false;this.Canvas.beginPath();this.Canvas.rect(this.Frame.ChartBorder.GetLeft(),this.Frame.ChartBorder.GetTop(),this.Frame.ChartBorder.GetWidth(),this.Frame.ChartBorder.GetHeight());isInClient=this.Canvas.isPointInPath(x,y);return isInClient;};this.UIOnContextMenu=function(e){if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var x=e.clientX-this.UIElement.getBoundingClientRect().left;var y=e.clientY-this.UIElement.getBoundingClientRect().top;if(typeof this.OnRightMenu=='function')this.OnRightMenu(x,y,e);//右键菜单事件
|
|
1650
|
+
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);var titleChart=this.TitlePaint[0];if(event&&titleChart)titleChart.OnMouseMoveEvent=event;this.MoveOnPoint={X:x,Y:y};this.OnMouseMove(x,y,e);this.LastMouseStatus.MoveOnPoint=null;if(titleChart)titleChart.OnMouseMoveEvent=null;};this.IsMouseOnClient=function(x,y){var isInClient=false;this.Canvas.beginPath();this.Canvas.rect(this.Frame.ChartBorder.GetLeft(),this.Frame.ChartBorder.GetTop(),this.Frame.ChartBorder.GetWidth(),this.Frame.ChartBorder.GetHeight());isInClient=this.Canvas.isPointInPath(x,y);return isInClient;};this.UIOnContextMenu=function(e){if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var x=e.clientX-this.UIElement.getBoundingClientRect().left;var y=e.clientY-this.UIElement.getBoundingClientRect().top;if(typeof this.OnRightMenu=='function')this.OnRightMenu(x,y,e);//右键菜单事件
|
|
1650
1651
|
return false;};this.UIOnDblClick=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;this.OnDoubleClick(x,y,e);};//是否在拖拽Y轴上
|
|
1651
1652
|
this.TryYDrag=function(x,y){if(!this.EnableYDrag)return null;if(!this.EnableYDrag.Left&&!this.EnableYDrag.Right)return null;if(!this.Frame||!this.Frame.PtInFrameY)return null;var dragY=this.Frame.PtInFrameY(x,y);if(!dragY||dragY.Index<0||dragY.IsOverlay==true)return null;if(dragY.Left&&this.EnableYDrag.Left&&this.Frame.IsEnableDragY(dragY.Index)){return dragY;}if(dragY.Right&&this.EnableYDrag.Right&&this.Frame.IsEnableDragY(dragY.Index)){return dragY;}return null;};//是否可以上下拖拽
|
|
1652
1653
|
this.TryUpDownDrag=function(x,y){var windowIndex=this.Frame.PtInFrame(x,y);if(windowIndex<0)return null;var item=this.Frame.SubFrame[windowIndex];if(!item||!item.Frame)return null;var frame=item.Frame;if(!frame.YSplitOperator||!frame.YSplitOperator.FixedYMaxMin)return null;return{Index:windowIndex,X:x,Y:y};};this.TryRectSelectDrag=function(x,y){var paint=this.GetRectSelectPaint();if(!paint)return null;if(paint.GetPointCount()<=0)return null;var item=paint.PtInPaint(x,y);return{Item:item,X:x,Y:y};};this.TryClickCrossCursor=function(x,y,e){if(!this.ChartCorssCursor)return;var button=this.ChartCorssCursor.PtInButton(x,y);if(!button)return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_CROSSCURSOR_RIGHT);if(event&&event.Callback){var sendData={Button:button,e:e};event.Callback(event,sendData,this);}return true;};this.UIOnMouseDown=function(e){var _this4=this;this.MoveOnChartDrawPicture=null;if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;this.ClickDownPoint={X:e.clientX,Y:e.clientY};this.IsOnTouch=true;this.BorderDrag=null;this.YDrag=null;this.UpDownDrag=null;this.RectSelectDrag=null;this.IndexChartDrag=null;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var button=this.Frame.PtInButtons(x,y);if(button&&this.ClickFrameButton){this.ClickFrameButton(button,e);return;}else{button=this.PtInExtendChartButtons(x,y);if(button&&this.ClickExtendChartButton){this.ClickExtendChartButton(button,e);return;}}if(this.TryClickCrossCursor(x,y,e)){return;}if(this.TryClickLock){//JSConsole.Chart.Log('[uielement.onmousedown] left, top ',e.clientX, e.clientY, this.getBoundingClientRect().left,this.getBoundingClientRect().top);
|
|
@@ -2635,8 +2636,8 @@ this.AFactor;//后复权
|
|
|
2635
2636
|
}//数据复制
|
|
2636
2637
|
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
2638
|
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;};//数据复权拷贝
|
|
2639
|
+
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中
|
|
2640
|
+
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
2641
|
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
2642
|
this.Amount;//金额
|
|
2642
2643
|
this.DateTime;this.Increase;//涨幅
|
|
@@ -2868,7 +2869,7 @@ var ZOOM_SEED=
|
|
|
2868
2869
|
function ChartKLine(){this.newMethod=IChartPainting;//派生
|
|
2869
2870
|
this.newMethod();delete this.newMethod;this.ClassName='ChartKLine';//类名
|
|
2870
2871
|
this.Symbol;//股票代码
|
|
2871
|
-
this.DrawType=0;// 0=实心K线柱子 1=收盘价线 2=美国线 3=空心K线柱子 4=收盘价面积图 5=订单流 6=空心K线柱子2(全部空心) 7=订单流样式2 8=订单流样式3
|
|
2872
|
+
this.DrawType=0;// 0=实心K线柱子 1=收盘价线 2=美国线 3=空心K线柱子 4=收盘价面积图 5=订单流 6=空心K线柱子2(全部空心) 7=订单流样式2 8=订单流样式3 9=自定义颜色K线
|
|
2872
2873
|
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
2874
|
this.ColorData;//五彩K线颜色 >0:g_JSChartResource.UpBarColor 其他:g_JSChartResource.DownBarColor
|
|
2874
2875
|
this.TradeData;//交易系统 包含买卖数据{Buy:, Sell:, Name:指标名称 }
|
|
@@ -2919,7 +2920,7 @@ if(bFirstPoint)return;this.Canvas.stroke();if(isHScreen){this.Canvas.lineTo(bord
|
|
|
2919
2920
|
{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
2921
|
{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
2922
|
{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)//阳线
|
|
2923
|
+
{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
2924
|
{this.DrawKBar_Up(data,dataWidth,upColor,this.DrawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen);}else if(data.Open>data.Close)//阴线
|
|
2924
2925
|
{this.DrawKBar_Down(data,dataWidth,downColor,this.DrawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen);}else// 平线
|
|
2925
2926
|
{this.DrawKBar_Unchagne(data,dataWidth,unchagneColor,this.DrawType,x,y,left,right,yLow,yHigh,yOpen,yClose,isHScreen);}if(this.IsShowKTooltip&&!isHScreen)//添加tooltip区域
|
|
@@ -2951,7 +2952,31 @@ else this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),ToFixedRect(yClose-y)
|
|
|
2951
2952
|
{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
2953
|
}else{if(drawType==3)//空心柱
|
|
2953
2954
|
{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.
|
|
2955
|
+
{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)//上影线
|
|
2956
|
+
{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){/*
|
|
2957
|
+
if (Math.abs(yOpen-y)<1)
|
|
2958
|
+
{
|
|
2959
|
+
this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),1,ToFixedRect(dataWidth)); //高度小于1,统一使用高度1
|
|
2960
|
+
}
|
|
2961
|
+
else
|
|
2962
|
+
{
|
|
2963
|
+
if (drawType==3) //空心柱
|
|
2964
|
+
{
|
|
2965
|
+
this.Canvas.beginPath();
|
|
2966
|
+
this.Canvas.rect(ToFixedPoint(y),ToFixedPoint(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));
|
|
2967
|
+
this.Canvas.stroke();
|
|
2968
|
+
}
|
|
2969
|
+
else
|
|
2970
|
+
{
|
|
2971
|
+
this.Canvas.fillRect(ToFixedRect(y),ToFixedRect(left),ToFixedRect(yOpen-y),ToFixedRect(dataWidth));
|
|
2972
|
+
}
|
|
2973
|
+
}
|
|
2974
|
+
*/}else{//实心
|
|
2975
|
+
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
|
|
2976
|
+
}else{this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(Math.min(y,yOpen)),ToFixedRect(dataWidth),ToFixedRect(Math.abs(yOpen-y)));}}if(colorData.Border)//空心
|
|
2977
|
+
{if(Math.abs(yOpen-y)<1){this.Canvas.fillStyle=colorData.Border.Color;this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(y),ToFixedRect(dataWidth),1);//高度小于1,统一使用高度1
|
|
2978
|
+
}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)//下影线
|
|
2979
|
+
{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
2980
|
{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
2981
|
{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
2982
|
{var rect=new Rect(x-textSize/2,yClose-textSize/2,textSize,textSize);//this.Canvas.fillStyle="rgb(0,0,100)";
|
|
@@ -2963,7 +2988,7 @@ this.Canvas.clip();};this.Draw=function(){this.IsShowOrderText=false;this.Toolti
|
|
|
2963
2988
|
this.PtMin={X:null,Y:null,Value:null,Align:'left'};//清空最小
|
|
2964
2989
|
this.DrawKRange={Start:null,End:null};this.ChartFrame.ChartKLine={Max:null,Min:null};//保存K线上 显示最大最小值坐标
|
|
2965
2990
|
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)//标注最大值最小值
|
|
2991
|
+
{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
2992
|
{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
2993
|
{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
2994
|
{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 +3137,9 @@ if(isHScreen){this.Canvas.moveTo(ToFixedPoint(yOpen),left);this.Canvas.lineTo(To
|
|
|
3112
3137
|
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
3138
|
{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
3139
|
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){
|
|
3140
|
+
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)//线段,面积不支持选中
|
|
3141
|
+
{return null;//return this.PtInLine(x,y, {KLineClose:true});
|
|
3142
|
+
}return this.PtInKBar(x,y,{OverlayKLine:true});};this.DrawSelectedStatus=function(){this.DrawLinePoint({OverlayKLine:true});};}//K线表格
|
|
3116
3143
|
function ChartKLineTable(){this.newMethod=IChartPainting;//派生
|
|
3117
3144
|
this.newMethod();delete this.newMethod;this.ClassName='ChartKlineTable';//类名
|
|
3118
3145
|
this.Data;this.RowName;this.IsShowRowName=false;this.BGColor;//背景色
|
|
@@ -3498,7 +3525,7 @@ this.BarPosition=1;//柱子方向 0=左边 1=右边
|
|
|
3498
3525
|
this.BarWidthRate=0.3;this.VolFont;this.HQChart;this.IsDestroy=false;this.Data=null;this.MaxVol;this.MaxVolPrice;this.VolLineColor=g_JSChartResource.ChartVolProfileVisibleRange.VolLineColor;this.VolLineFont=g_JSChartResource.ChartVolProfileVisibleRange.VolLineFont;this.VolLineTextColor=g_JSChartResource.ChartVolProfileVisibleRange.VolLineTextColor;//value Area
|
|
3499
3526
|
this.VAHLineColor=g_JSChartResource.ChartVolProfileVisibleRange.VAHLineColor;this.VAHTextColor=g_JSChartResource.ChartVolProfileVisibleRange.VAHTextColor;this.VALLineColor=g_JSChartResource.ChartVolProfileVisibleRange.VALLineColor;this.VALTextColor=g_JSChartResource.ChartVolProfileVisibleRange.VALTextColor;this.VAFont=g_JSChartResource.ChartVolProfileVisibleRange.VAFont;this.TextConfig=(0,_defineProperty3.default)({Color:g_JSChartResource.ChartVolProfileVisibleRange.Text.Color,Family:g_JSChartResource.ChartVolProfileVisibleRange.Text.Family,FontMaxSize:g_JSChartResource.ChartVolProfileVisibleRange.Text.FontMaxSize,FontMinSize:g_JSChartResource.ChartVolProfileVisibleRange.Text.FontMinSize},'Color',g_JSChartResource.ChartVolProfileVisibleRange.Text.Color);this.BarColor=[g_JSChartResource.ChartVolProfileVisibleRange.UpVolColor,g_JSChartResource.ChartVolProfileVisibleRange.DownVolColor,g_JSChartResource.ChartVolProfileVisibleRange.AreaUpColor,g_JSChartResource.ChartVolProfileVisibleRange.AreaDonwColor];this.MaxVolLine;this.OnDestroy=function(){this.IsDestroy=true;};this.SetOption=function(option){if(!option)return;if(IFrameSplitOperator.IsBool(option.IsShowText))this.IsShowText=option.IsShowText;if(IFrameSplitOperator.IsNumber(option.VolType))this.IsShowText=option.VolType;if(IFrameSplitOperator.IsNumber(option.BarPosition))this.BarPosition=option.BarPosition;if(IFrameSplitOperator.IsNumber(option.BarWidthRate))this.IsShowText=option.BarWidthRate;};this.PtInChart=function(x,y){if(this.MaxVolLine){if(x>=this.MaxVolLine.Start.X&&x<=this.MaxVolLine.End.X&&y>=this.MaxVolLine.Start.Y-5&&y<this.MaxVolLine.Start.Y+5)return{Identify:this.Identify,Chart:this};}return null;};this.SetSelectedStatus=function(status){if(status==0)this.IsDrawFirst=true;else this.IsDrawFirst=false;};this.DrawSelectedStatus=function(){var radius=this.SelectedRadius;var pixelRatio=GetDevicePixelRatio();this.Canvas.save();if(this.MaxVolLine){this.Canvas.lineWidth=this.SelectedLineWidth*pixelRatio;this.Canvas.strokeStyle=this.SelectedLineColor;if(this.SelectedBGColor)this.Canvas.fillStyle=this.SelectedBGColor;var space=(this.MaxVolLine.End.X-this.MaxVolLine.Start.X)/6;var aryPoint=[];for(var x=this.MaxVolLine.Start.X+space;x<this.MaxVolLine.End.X;x+=space){aryPoint.push({X:x,Y:this.MaxVolLine.Start.Y});}for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];this.Canvas.beginPath();this.Canvas.arc(item.X,item.Y,radius,0,360,false);this.Canvas.closePath();if(this.SelectedBGColor)this.Canvas.fill();this.Canvas.stroke();}}this.Canvas.restore();};this.Draw=function(){this.VolFont=null;this.MaxVolLine=null;this.IsHScreen=this.ChartFrame.IsHScreen===true;if(this.ChartFrame.IsMinSize)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;this.Canvas.save();this.DrawVolBar();this.Canvas.restore();};this.DrawPriceLine=function(){var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var pixelTatio=GetDevicePixelRatio();var aryPrice=[];var maxVolPrice=this.MaxVolPrice;if(IFrameSplitOperator.IsNumber(this.Data.MaxVolPrice))maxVolPrice=this.Data.MaxVolPrice;if(maxVolPrice>=this.ChartFrame.HorizontalMin&&maxVolPrice<=this.ChartFrame.HorizontalMax)aryPrice.push({Price:maxVolPrice,Font:this.VolLineFont,LineColor:this.VolLineColor,LineWidth:2,TextColor:this.VolLineTextColor,Type:1});if(IFrameSplitOperator.IsNumber(this.Data.VAHPrice)&&this.Data.VAHPrice>=this.ChartFrame.HorizontalMin&&this.Data.VAHPrice<=this.ChartFrame.HorizontalMax)aryPrice.push({Price:this.Data.VAHPrice,Font:this.VAFont,LineColor:this.VAHLineColor,LineWidth:2,TextColor:this.VAHTextColor,Type:2});if(IFrameSplitOperator.IsNumber(this.Data.VALPrice)&&this.Data.VALPrice>=this.ChartFrame.HorizontalMin&&this.Data.VALPrice<=this.ChartFrame.HorizontalMax)aryPrice.push({Price:this.Data.VALPrice,Font:this.VAFont,LineColor:this.VALLineColor,LineWidth:2,TextColor:this.VALTextColor,Type:3});for(var i=0;i<aryPrice.length;++i){var item=aryPrice[i];var yLine=ToFixedPoint2(item.LineWidth,this.ChartFrame.GetYFromData(item.Price,false));this.Canvas.lineWidth=item.LineWidth;this.Canvas.strokeStyle=item.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(left,yLine);this.Canvas.lineTo(right,yLine);this.Canvas.stroke();if(item.Type==1)this.MaxVolLine={Start:{X:left,Y:yLine},End:{X:right,Y:yLine}};if(this.ChartBorder.Right>10)//刻度文字
|
|
3500
3527
|
{var defaultfloatPrecision=GetfloatPrecision(this.HQChart.Symbol);//价格小数位数
|
|
3501
|
-
var text=item.Price.toFixed(defaultfloatPrecision);this.Canvas.font=item.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";var fontHeight=this.GetFontHeight();var textWidth=this.Canvas.measureText(text).width+2*pixelTatio;this.Canvas.fillStyle=item.LineColor;this.Canvas.fillRect(right,yLine-fontHeight/2,textWidth,fontHeight);this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(text,right+1*pixelTatio,yLine);}}};this.DrawVolBar=function(){var cellHeight=this.GetPriceYOffset(this.Data.PriceOffset);var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var top=this.ChartFrame.GetYFromData(this.Data.MaxPrice)-cellHeight/2;var bottom=this.ChartFrame.GetYFromData(this.Data.MinPrice)+cellHeight/2;var width=right-left;var height=bottom-top;var maxBarWidth=width*this.BarWidthRate;if(this.IsShowText){this.VolFont=this.GetDynamicVolTextFont(cellHeight,maxBarWidth);if(this.VolFont)this.Canvas.font=this.VolFont;}for(var i=0,j=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(item.Price<this.ChartFrame.HorizontalMin||item.Price>this.ChartFrame.HorizontalMax)continue;this.DrawVolBarItem(item,left,right,maxBarWidth,cellHeight);}this.DrawPriceLine();};this.DrawVolBarItem=function(item,left,right,maxBarWidth,cellHeight){var barLeft=left;var barRight=right;var barTop=this.ChartFrame.GetYFromData(item.Price)-cellHeight/2;if(this.VolType==1){if(!item.TotalVol)return;if(!IFrameSplitOperator.IsNumber(item.TotalVol.Value))return;var barWidth=item.TotalVol.Value*maxBarWidth/this.MaxVol;var color;if(IFrameSplitOperator.IsNumber(item.TotalVol.ColorID))color=this.BarColor[item.TotalVol.ColorID];else if(item.TotalVol.Color)color=item.TotalVol.Color;this.Canvas.fillStyle=color;if(this.BarPosition==1){this.Canvas.fillRect(barRight,ToFixedRect(barTop),-barWidth,ToFixedRect(
|
|
3528
|
+
var text=item.Price.toFixed(defaultfloatPrecision);this.Canvas.font=item.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";var fontHeight=this.GetFontHeight();var textWidth=this.Canvas.measureText(text).width+2*pixelTatio;this.Canvas.fillStyle=item.LineColor;this.Canvas.fillRect(right,yLine-fontHeight/2,textWidth,fontHeight);this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(text,right+1*pixelTatio,yLine);}}};this.DrawVolBar=function(){var cellHeight=this.GetPriceYOffset(this.Data.PriceOffset);var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var top=this.ChartFrame.GetYFromData(this.Data.MaxPrice)-cellHeight/2;var bottom=this.ChartFrame.GetYFromData(this.Data.MinPrice)+cellHeight/2;var width=right-left;var height=bottom-top;var maxBarWidth=width*this.BarWidthRate;if(this.IsShowText){this.VolFont=this.GetDynamicVolTextFont(cellHeight,maxBarWidth);if(this.VolFont)this.Canvas.font=this.VolFont;}for(var i=0,j=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(item.Price<this.ChartFrame.HorizontalMin||item.Price>this.ChartFrame.HorizontalMax)continue;this.DrawVolBarItem(item,left,right,maxBarWidth,cellHeight);}this.DrawPriceLine();};this.DrawVolBarItem=function(item,left,right,maxBarWidth,cellHeight){var barLeft=left;var barRight=right;var barTop=this.ChartFrame.GetYFromData(item.Price)-cellHeight/2;var barHeight=cellHeight-1;if(barHeight<1)barHeight=1;if(this.VolType==1){if(!item.TotalVol)return;if(!IFrameSplitOperator.IsNumber(item.TotalVol.Value))return;var barWidth=item.TotalVol.Value*maxBarWidth/this.MaxVol;var color;if(IFrameSplitOperator.IsNumber(item.TotalVol.ColorID))color=this.BarColor[item.TotalVol.ColorID];else if(item.TotalVol.Color)color=item.TotalVol.Color;this.Canvas.fillStyle=color;if(this.BarPosition==1){this.Canvas.fillRect(barRight,ToFixedRect(barTop),-barWidth,ToFixedRect(barHeight));}else{this.Canvas.fillRect(barLeft,ToFixedRect(barTop),barWidth,ToFixedRect(barHeight));}if(this.IsShowText&&this.VolFont){var text=IFrameSplitOperator.FormatVolString(item.TotalVol.Value,this.HQChart.LanguageID);this.Canvas.textBaseline='middle';this.Canvas.fillStyle=this.TextConfig.Color;if(this.BarPosition==1){this.Canvas.textAlign='right';this.Canvas.fillText(text,right-5,barTop+cellHeight/2);}else{this.Canvas.textAlign='left';this.Canvas.fillText(text,left+5,barTop+cellHeight/2);}}}else{var text="";for(var i=0;i<item.Vol.length;++i){var volItem=item.Vol[i];if(!IFrameSplitOperator.IsNumber(volItem.Value))continue;var color;if(IFrameSplitOperator.IsNumber(volItem.ColorID))color=this.BarColor[volItem.ColorID];else if(volItem.Color)color=volItem.Color;if(!color)continue;var barWidth=volItem.Value*maxBarWidth/this.MaxVol;this.Canvas.fillStyle=color;if(this.BarPosition==1){this.Canvas.fillRect(barRight,ToFixedRect(barTop),-barWidth,ToFixedRect(barHeight));barRight-=barWidth;}else{this.Canvas.fillRect(barLeft,ToFixedRect(barTop),barWidth,ToFixedRect(barHeight));barLeft+=barWidth;}var volText=IFrameSplitOperator.FormatVolString(volItem.Value,this.HQChart.LanguageID);if(text.length>0)text+="x";text+=volText;}if(this.IsShowText&&this.VolFont){this.Canvas.textBaseline='middle';this.Canvas.fillStyle=this.TextConfig.Color;if(this.BarPosition==1){this.Canvas.textAlign='right';this.Canvas.fillText(text,right-5,barTop+cellHeight/2);}else{this.Canvas.textAlign='left';this.Canvas.fillText(text,left+5,barTop+cellHeight/2);}}}};this.GetPriceYOffset=function(value){var frame=this.ChartFrame;var y=frame.ChartBorder.GetHeightEx()*value/(frame.HorizontalMax-frame.HorizontalMin);return y;};this.GetDynamicVolTextFont=function(cellHeight,width,fontOption){var fontSize=parseInt(cellHeight)-2;if(cellHeight<5)fontSize=parseInt(cellHeight);//高度太小了就不要上下间距了
|
|
3502
3529
|
if(fontSize>this.TextConfig.FontMaxSize)fontSize=this.TextConfig.FontMaxSize;else if(fontSize<=0)fontSize=1;if(fontSize<this.TextConfig.FontMinSize)return null;var font=this.FormatFontString(fontSize,this.TextConfig.Family,fontOption);return font;};this.FormatFontString=function(fontSize,family,option){var font;if(!option){font=fontSize+'px '+family;}else{if(option.Weight)font=option.Weight+' '+fontSize+'px '+family;}return font;};this.GetMaxMin=function(){var range={Min:null,Max:null};return range;};}//堆积柱状图
|
|
3503
3530
|
function ChartStackedBar(){this.newMethod=IChartPainting;//派生
|
|
3504
3531
|
this.newMethod();delete this.newMethod;this.ClassName="ChartStackedBar";this.Data;//{ Data:[ [bar1, bar2], [bar1,bar2 ] ] };
|
|
@@ -4222,7 +4249,7 @@ this.OverlayChartPaint;//叠加画法
|
|
|
4222
4249
|
this.IsShowName=true;//是否显示股票名称
|
|
4223
4250
|
this.IsShowSettingInfo=true;//是否显示设置信息(周期 复权)
|
|
4224
4251
|
this.IsShowDateTime=true;//是否显示日期
|
|
4225
|
-
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;this.OnDrawEvent;this.ReloadResource=function(){this.Font=g_JSChartResource.TitleFont;this.TitleColor=g_JSChartResource.DefaultTextColor;this.UpColor=g_JSChartResource.UpTextColor;this.DownColor=g_JSChartResource.DownTextColor;this.UnchagneColor=g_JSChartResource.UnchagneTextColor;this.VolColor=g_JSChartResource.Title.VolColor;this.AmountColor=g_JSChartResource.Title.AmountColor;this.DateTimeColor=g_JSChartResource.Title.DateTimeColor;this.NameColor=g_JSChartResource.Title.NameColor;this.SettingColor=g_JSChartResource.Title.SettingColor;this.TurnoverRateColor=g_JSChartResource.Title.TurnoverRateColor;//换手率
|
|
4252
|
+
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;this.OnDrawEvent;this.OnMouseMoveEvent;this.ReloadResource=function(){this.Font=g_JSChartResource.TitleFont;this.TitleColor=g_JSChartResource.DefaultTextColor;this.UpColor=g_JSChartResource.UpTextColor;this.DownColor=g_JSChartResource.DownTextColor;this.UnchagneColor=g_JSChartResource.UnchagneTextColor;this.VolColor=g_JSChartResource.Title.VolColor;this.AmountColor=g_JSChartResource.Title.AmountColor;this.DateTimeColor=g_JSChartResource.Title.DateTimeColor;this.NameColor=g_JSChartResource.Title.NameColor;this.SettingColor=g_JSChartResource.Title.SettingColor;this.TurnoverRateColor=g_JSChartResource.Title.TurnoverRateColor;//换手率
|
|
4226
4253
|
this.PositionColor=g_JSChartResource.Title.PositionColor;//持仓
|
|
4227
4254
|
};this.GetCurrentKLineData=function()//获取当天鼠标位置所在的K线数据
|
|
4228
4255
|
{if(this.CursorIndex==null||!this.Data)return null;if(this.Data.length<=0)return null;var index=this.CursorIndex;index=parseInt(index.toFixed(0));var dataIndex=this.Data.DataOffset+index;if(dataIndex>=this.Data.Data.length)dataIndex=this.Data.Data.length-1;if(dataIndex<0)return null;var item=this.Data.Data[dataIndex];return item;};this.DrawItem=function(item){var isHScreen=this.Frame.IsHScreen===true;var left=this.Frame.ChartBorder.GetLeft();var bottom=this.Frame.ChartBorder.GetTop()-this.Frame.ChartBorder.Top/2;var right=this.Frame.ChartBorder.GetRight();var defaultfloatPrecision=GetfloatPrecision(this.Symbol);//价格小数位数
|
|
@@ -4233,8 +4260,8 @@ var text=g_JSChartLocalization.GetText('KTitle-Vol',this.LanguageID)+IFrameSplit
|
|
|
4233
4260
|
{var value=item.Vol/item.FlowCapital*100;//成交量/流通A股*100
|
|
4234
4261
|
var text=g_JSChartLocalization.GetText('KTitle-Exchange',this.LanguageID)+IFrameSplitOperator.FormatValueString(value,2,this.LanguageID)+'%';if(!this.DrawText(text,this.TurnoverRateColor,position))return;}if(MARKET_SUFFIX_NAME.IsFutures(upperSymbol)&&IFrameSplitOperator.IsNumber(item.Position))//持仓量
|
|
4235
4262
|
{var text=g_JSChartLocalization.GetText('KTitle-Position',this.LanguageID)+item.Position;if(!this.DrawText(text,this.PositionColor,position))return;}//叠加股票的名字
|
|
4236
|
-
for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];if(!item.Symbol||!item.Title)continue;var name=item.Title;var clrText=item.Color;var text='['+name+']';if(!this.DrawText(text,clrText,position))return;}};this.Draw=function(){if(!this.IsShow)return;if(this.CursorIndex==null||!this.Data||this.Data.length<=0){this.OnDrawEventCallback(null);return;}this.Canvas.font=this.Font;this.SpaceWidth=this.Canvas.measureText('0').width;var index=this.CursorIndex;index=parseInt(index.toFixed(0));var dataIndex=this.Data.DataOffset+index;if(dataIndex>=this.Data.Data.length)dataIndex=this.Data.Data.length-1;if(dataIndex<0){this.OnDrawEventCallback(null);return;}var item=this.Data.Data[dataIndex];this.OnDrawEventCallback(item);this.Canvas.save();this.DrawItem(item);this.Canvas.restore();};this.OnDrawEventCallback=function(drawData){
|
|
4237
|
-
if(IFrameSplitOperator.IsNonEmptyArray(this.OverlayChartPaint)){data.OverlayStock=[];for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Symbol||!item.Title)continue;data.OverlayStock.push({Symbol:item.Symbol,Name:item.Title});}}this.OnDrawEvent.Callback(this.OnDrawEvent,data,this);};this.GetColor=function(price,yclse){if(price>yclse)return this.UpColor;else if(price<yclse)return this.DownColor;else return this.UnchagneColor;};this.DrawText=function(title,color,position){if(!title)return true;var isHScreen=this.Frame.IsHScreen===true;var right=this.Frame.ChartBorder.GetRight();if(isHScreen)right=this.Frame.ChartBorder.GetHeight();this.Canvas.fillStyle=color;var textWidth=this.Canvas.measureText(title).width;if(position.Left+textWidth>right)return false;if(this.IsShow)this.Canvas.fillText(title,position.Left,position.Bottom,textWidth);position.Left+=textWidth+this.SpaceWidth;return true;};}function DynamicMinuteTitlePainting(){this.newMethod=DynamicKLineTitlePainting;//派生
|
|
4263
|
+
for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];if(!item.Symbol||!item.Title)continue;var name=item.Title;var clrText=item.Color;var text='['+name+']';if(!this.DrawText(text,clrText,position))return;}};this.Draw=function(){if(!this.IsShow)return;if(this.CursorIndex==null||!this.Data||this.Data.length<=0){this.OnDrawEventCallback(null);return;}this.Canvas.font=this.Font;this.SpaceWidth=this.Canvas.measureText('0').width;var index=this.CursorIndex;index=parseInt(index.toFixed(0));var dataIndex=this.Data.DataOffset+index;if(dataIndex>=this.Data.Data.length)dataIndex=this.Data.Data.length-1;if(dataIndex<0){this.OnDrawEventCallback(null);return;}var item=this.Data.Data[dataIndex];this.OnDrawEventCallback(item);this.Canvas.save();this.DrawItem(item);this.Canvas.restore();};this.OnDrawEventCallback=function(drawData){var bDrawEvent=this.OnDrawEvent&&this.OnDrawEvent.Callback;var bMouseMoveEvent=this.OnMouseMoveEvent&&this.OnMouseMoveEvent.Callback;if(!bDrawEvent&&!bMouseMoveEvent)return;var data={Draw:drawData,Name:this.ClassName};if(this.Data&&this.Data.Data){var index=Math.abs(this.CursorIndex);index=parseInt(index.toFixed(0));var dataIndex=this.Data.DataOffset+index;var dataCount=this.Data.Data.length;data.DataIndex=dataIndex;data.DataCount=dataCount;}//叠加股票
|
|
4264
|
+
if(IFrameSplitOperator.IsNonEmptyArray(this.OverlayChartPaint)){data.OverlayStock=[];for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Symbol||!item.Title)continue;data.OverlayStock.push({Symbol:item.Symbol,Name:item.Title});}}if(bDrawEvent)this.OnDrawEvent.Callback(this.OnDrawEvent,data,this);if(bMouseMoveEvent)this.OnMouseMoveEvent.Callback(this.OnMouseMoveEvent,data,this);};this.GetColor=function(price,yclse){if(price>yclse)return this.UpColor;else if(price<yclse)return this.DownColor;else return this.UnchagneColor;};this.DrawText=function(title,color,position){if(!title)return true;var isHScreen=this.Frame.IsHScreen===true;var right=this.Frame.ChartBorder.GetRight();if(isHScreen)right=this.Frame.ChartBorder.GetHeight();this.Canvas.fillStyle=color;var textWidth=this.Canvas.measureText(title).width;if(position.Left+textWidth>right)return false;if(this.IsShow)this.Canvas.fillText(title,position.Left,position.Bottom,textWidth);position.Left+=textWidth+this.SpaceWidth;return true;};}function DynamicMinuteTitlePainting(){this.newMethod=DynamicKLineTitlePainting;//派生
|
|
4238
4265
|
this.newMethod();delete this.newMethod;this.ClassName='DynamicMinuteTitlePainting';this.SpaceWidth=1*GetDevicePixelRatio();this.YClose;this.IsShowDate=false;//标题是否显示日期
|
|
4239
4266
|
this.IsShowTime=true;//标题是否显示时间
|
|
4240
4267
|
this.IsShowName=true;//标题是否显示股票名字
|
|
@@ -4263,8 +4290,8 @@ var xText=border.ChartWidth;var yText=border.Top;this.Canvas.translate(xText,yTe
|
|
|
4263
4290
|
if(bDraw&&item&&IFrameSplitOperator.IsNumber(item.Price)){var color=this.GetColor(item.Price,this.YClose);var filedName='MTitle-AC-Price';if(this.BeforeOpenData&&this.BeforeOpenData.Ver==1.0)filedName="MTitle-Close";var text=g_JSChartLocalization.GetText(filedName,this.LanguageID)+item.Price.toFixed(defaultfloatPrecision);if(!this.DrawText(text,color,position))return;}//竞价涨幅
|
|
4264
4291
|
if(bDraw&&item&&IFrameSplitOperator.IsPlusNumber(this.YClose)&&IFrameSplitOperator.IsNumber(item.Price)){var value=(item.Price-this.YClose)/this.YClose*100;var color=this.GetColor(value,0);var filedName='MTitle-AC-Increase';if(this.BeforeOpenData&&this.BeforeOpenData.Ver==1.0)filedName="MTitle-Increase";var text=g_JSChartLocalization.GetText(filedName,this.LanguageID)+value.toFixed(2)+"%";if(!this.DrawText(text,color,position))return;}if(dataVersion==3.0){if(bDraw&&item&&IFrameSplitOperator.IsNumber(item.AvPrice)){var color=this.GetColor(item.Price,this.YClose);var text=g_JSChartLocalization.GetText('MTitle-AC-AvPrice',this.LanguageID)+item.AvPrice.toFixed(defaultfloatPrecision);if(!this.DrawText(text,color,position))return;}}//匹配量
|
|
4265
4292
|
if(bDraw&&IFrameSplitOperator.IsNumber(item.Vol[0])){var filedName='MTitle-AC-Vol';if(this.BeforeOpenData&&this.BeforeOpenData.Ver==1.0)filedName="MTitle-Vol";var text=g_JSChartLocalization.GetText(filedName,this.LanguageID)+IFrameSplitOperator.FromatIntegerString(item.Vol[0],2);if(!this.DrawText(text,this.VolColor,position))return;}//未匹配量
|
|
4266
|
-
if(bDraw&&IFrameSplitOperator.IsNumber(item.Vol[1])){var text=g_JSChartLocalization.GetText('MTitle-AC-NotMatchVol',this.LanguageID)+IFrameSplitOperator.FromatIntegerString(item.Vol[1],2);if(!this.DrawText(text,this.VolColor,position))return;}this.OnDrawCallAuctionEventCallback(callbackData);};this.OnDrawCallAuctionEventCallback=function(drawData){if(
|
|
4267
|
-
|
|
4293
|
+
if(bDraw&&IFrameSplitOperator.IsNumber(item.Vol[1])){var text=g_JSChartLocalization.GetText('MTitle-AC-NotMatchVol',this.LanguageID)+IFrameSplitOperator.FromatIntegerString(item.Vol[1],2);if(!this.DrawText(text,this.VolColor,position))return;}this.OnDrawCallAuctionEventCallback(callbackData);};this.OnDrawCallAuctionEventCallback=function(drawData){if(this.OnDrawEvent&&this.OnDrawEvent.Callback){var data={Draw:drawData,Name:this.ClassName};this.OnDrawEvent.Callback(this.OnDrawEvent,data,this);}if(this.OnMouseMoveEvent&&this.OnMouseMoveEvent.Callback){var data={Draw:drawData,Name:this.ClassName};this.OnMouseMoveEvent.Callback(this.OnDrawEvent,data,this);}};this.Draw=function(){this.LastShowData=null;if(!this.IsShow){//隐藏标题 并且没有回调事件
|
|
4294
|
+
var bEvent=this.OnDrawEvent&&this.OnDrawEvent.Callback||this.OnMouseMoveEvent&&this.OnMouseMoveEvent.Callback;if(!bEvent)return;}if(this.PointInfo&&(this.PointInfo.ClientPos==2||this.PointInfo.ClientPos==3||this.PointInfo.ClientPos>=200&&this.PointInfo.ClientPos<=299||this.PointInfo.ClientPos>=300&&this.PointInfo.ClientPos<=399)){//集合竞价区域
|
|
4268
4295
|
this.Canvas.save();this.DrawCallAuction();this.Canvas.restore();return;}if(this.CursorIndex==null||!this.Data||!this.Data.Data||this.Data.Data.length<=0){this.OnDrawEventCallback(null);if(this.IsAlwaysShowLastData){this.Canvas.save();this.DrawLastDataItem();this.Canvas.restore();}return;}this.Canvas.font=this.Font;this.SpaceWidth=this.Canvas.measureText('0').width;var isShowLastData=false;if(this.DrawStatus&&this.DrawStatus.IsTitleShowLatestData){var status=this.DrawStatus;if(!IFrameSplitOperator.IsNumber(status.FrameID)||status.FrameID<0)isShowLastData=true;else if(status.CorssCursorTouchEnd&&status.IsOnTouch==false)isShowLastData=true;}var isLastOne=false;if(isShowLastData){var item=null;var lastItem=this.GetLatestKLineData(false);if(lastItem&&lastItem.Type==0)item=lastItem.Data;isLastOne=true;}else{//var index=Math.abs(this.CursorIndex-0.5);
|
|
4269
4296
|
var index=this.CursorIndex;index=parseInt(index.toFixed(0));var dataIndex=index+this.Data.DataOffset;if(dataIndex>=this.Data.Data.length)dataIndex=this.Data.Data.length-1;var item=this.Data.Data[dataIndex];if(dataIndex==this.Data.Data.length-1)isLastOne=true;}this.LastShowData=item;this.Canvas.save();this.OnDrawEventCallback(item);if(this.IsAlwaysShowLastData){this.DrawLastDataItem();}else{this.DrawItem(item,isLastOne);}this.Canvas.restore();};this.DrawCallAuctionItem=function(callAuctionItem,isLastOne){if(!callAuctionItem)return;var item=callAuctionItem.Data;var dataVersion=callAuctionItem.Ver;var isHScreen=this.Frame.IsHScreen===true;var border=this.Frame.GetBorder();var left=border.Left;var bottom=border.Top-this.Frame.ChartBorder.Top/2;var defaultfloatPrecision=GetfloatPrecision(this.Symbol);//价格小数位数
|
|
4270
4297
|
var bDraw=true;if(isHScreen){var left=2;var bottom=this.Frame.ChartBorder.Right/2;//上下居中显示
|
|
@@ -4337,7 +4364,7 @@ var right=this.Frame.ChartBorder.GetRight();if(this.Frame.IsHScreen===true){bott
|
|
|
4337
4364
|
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
4365
|
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
4366
|
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个像素
|
|
4367
|
+
{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
4368
|
if(left+textWidth>right)break;this.Canvas.fillText(text,left,bottom,textWidth);left+=textWidth;}}if(this.Explain)//说明信息
|
|
4342
4369
|
{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
4370
|
};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,"擎");};}//画图工具
|
|
@@ -4722,7 +4749,7 @@ if(this.Status==10){if(this.DataStatus==0)this.DrawLineBorder(ptStart,ptEnd);}el
|
|
|
4722
4749
|
this.Canvas.restore();};this.MainDraw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;if(this.DataStatus!=1)return;if(this.Status!=10)return;this.ClipFrame();var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});this.DrawVolBar();this.Canvas.restore();};this.DrawLineBorder=function(ptStart,ptEnd){this.Canvas.strokeStyle=this.LineColor;var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();this.Canvas.beginPath();this.Canvas.moveTo(ptStart.X,ptStart.Y);this.Canvas.lineTo(ptEnd.X,ptEnd.Y);this.Canvas.moveTo(ptStart.X,top);this.Canvas.lineTo(ptStart.X,bottom);this.Canvas.moveTo(ptEnd.X,top);this.Canvas.lineTo(ptEnd.X,bottom);this.Canvas.stroke();};this.DrawVolBar=function(){var start=this.Value[0],end=this.Value[1];if(start.XValue>end.XValue){start=this.Value[1];end=this.Value[0];}var dataOffset=this.GetKDataOffset();var cellHeight=this.GetPriceYOffset(this.Data.PriceOffset);var left=this.Frame.GetXFromIndex(start.XValue-dataOffset,false);var right=this.Frame.GetXFromIndex(end.XValue-dataOffset,false);var top=this.Frame.GetYFromData(this.Data.MaxPrice)-cellHeight/2;var bottom=this.Frame.GetYFromData(this.Data.MinPrice)+cellHeight/2;var width=right-left;var height=bottom-top;var maxBarWidth=width*this.BarWidthRate;this.Canvas.fillStyle=this.BGColor;//JSConsole.Chart.Log('[ChartDrawVolProfile::DrawVolBar] BGColor ', this.BGColor);
|
|
4723
4750
|
this.Canvas.fillRect(left,top,width,height);//背景
|
|
4724
4751
|
if(this.MaxVolPrice>=this.Frame.HorizontalMin&&this.MaxVolPrice<=this.Frame.HorizontalMax){var lineWidth=2;var yLine=ToFixedPoint2(lineWidth,this.Frame.GetYFromData(this.MaxVolPrice,false));this.Canvas.lineWidth=lineWidth;this.Canvas.strokeStyle=this.VolLineColor;this.Canvas.beginPath();this.Canvas.moveTo(left,yLine);this.Canvas.lineTo(right,yLine);this.Canvas.stroke();var linePoint={Start:{X:left,Y:yLine},End:{X:right,Y:yLine}};this.LinePoint.push(linePoint);}if(this.IsShowText){this.VolFont=this.GetDynamicVolTextFont(cellHeight,maxBarWidth);if(this.VolFont)this.Canvas.font=this.VolFont;}//this.Canvas.lineWidth=1;
|
|
4725
|
-
for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(item.Price<this.Frame.HorizontalMin||item.Price>this.Frame.HorizontalMax)continue;this.DrawVolBarItem(item,left,right,maxBarWidth,cellHeight);}};this.DrawVolBarItem=function(item,left,right,maxBarWidth,cellHeight){var barLeft=left;var barRight=right;var barTop=this.Frame.GetYFromData(item.Price)-cellHeight/2;if(this.VolType==1){if(!item.TotalVol)return;if(!IFrameSplitOperator.IsNumber(item.TotalVol.Value))return;var barWidth=item.TotalVol.Value*maxBarWidth/this.MaxVol;var color;if(IFrameSplitOperator.IsNumber(item.TotalVol.ColorID))color=this.BarColor[item.TotalVol.ColorID];else if(item.TotalVol.Color)color=item.TotalVol.Color;this.Canvas.fillStyle=color;if(this.BarPosition==1){this.Canvas.fillRect(barRight,ToFixedRect(barTop),-barWidth,ToFixedRect(
|
|
4752
|
+
for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(item.Price<this.Frame.HorizontalMin||item.Price>this.Frame.HorizontalMax)continue;this.DrawVolBarItem(item,left,right,maxBarWidth,cellHeight);}};this.DrawVolBarItem=function(item,left,right,maxBarWidth,cellHeight){var barLeft=left;var barRight=right;var barTop=this.Frame.GetYFromData(item.Price)-cellHeight/2;var barHeight=cellHeight-1;if(barHeight<1)barHeight=1;if(this.VolType==1){if(!item.TotalVol)return;if(!IFrameSplitOperator.IsNumber(item.TotalVol.Value))return;var barWidth=item.TotalVol.Value*maxBarWidth/this.MaxVol;var color;if(IFrameSplitOperator.IsNumber(item.TotalVol.ColorID))color=this.BarColor[item.TotalVol.ColorID];else if(item.TotalVol.Color)color=item.TotalVol.Color;this.Canvas.fillStyle=color;if(this.BarPosition==1){this.Canvas.fillRect(barRight,ToFixedRect(barTop),-barWidth,ToFixedRect(barHeight));}else{this.Canvas.fillRect(barLeft,ToFixedRect(barTop),barWidth,ToFixedRect(barHeight));}if(this.IsShowText&&this.VolFont){var text=IFrameSplitOperator.FormatVolString(item.TotalVol.Value,this.HQChart.LanguageID);this.Canvas.textBaseline='middle';this.Canvas.fillStyle=this.TextConfig.Color;if(this.BarPosition==1){this.Canvas.textAlign='right';this.Canvas.fillText(text,right-5,barTop+cellHeight/2);}else{this.Canvas.textAlign='left';this.Canvas.fillText(text,left+5,barTop+cellHeight/2);}}}else{var text="";for(var i=0;i<item.Vol.length;++i){var volItem=item.Vol[i];if(!IFrameSplitOperator.IsNumber(volItem.Value))continue;var color;if(IFrameSplitOperator.IsNumber(volItem.ColorID))color=this.BarColor[volItem.ColorID];else if(volItem.Color)color=volItem.Color;if(!color)continue;var barWidth=volItem.Value*maxBarWidth/this.MaxVol;this.Canvas.fillStyle=color;if(this.BarPosition==1){this.Canvas.fillRect(barRight,ToFixedRect(barTop),-barWidth,ToFixedRect(barHeight));barRight-=barWidth;}else{this.Canvas.fillRect(barLeft,ToFixedRect(barTop),barWidth,ToFixedRect(barHeight));barLeft+=barWidth;}var volText=IFrameSplitOperator.FormatVolString(volItem.Value,this.HQChart.LanguageID);if(text.length>0)text+="x";text+=volText;}if(this.IsShowText&&this.VolFont){this.Canvas.textBaseline='middle';this.Canvas.fillStyle=this.TextConfig.Color;if(this.BarPosition==1){this.Canvas.textAlign='right';this.Canvas.fillText(text,right-5,barTop+cellHeight/2);}else{this.Canvas.textAlign='left';this.Canvas.fillText(text,left+5,barTop+cellHeight/2);}}}};this.GetKDataOffset=function(){var kData=this.HQChart.ChartPaint[0].Data;return kData.DataOffset;};this.GetPriceYOffset=function(value){var frame=this.Frame;var y=frame.ChartBorder.GetHeightEx()*value/(frame.HorizontalMax-frame.HorizontalMin);return y;};this.GetDynamicVolTextFont=function(cellHeight,width,fontOption){var fontSize=parseInt(cellHeight)-2;if(cellHeight<5)fontSize=parseInt(cellHeight);//高度太小了就不要上下间距了
|
|
4726
4753
|
if(fontSize>this.TextConfig.FontMaxSize)fontSize=this.TextConfig.FontMaxSize;else if(fontSize<=0)fontSize=1;if(fontSize<this.TextConfig.FontMinSize)return null;var font=this.FormatFontString(fontSize,this.TextConfig.Family,fontOption);return font;};this.FormatFontString=function(fontSize,family,option){var font;if(!option){font=fontSize+'px '+family;}else{if(option.Weight)font=option.Weight+' '+fontSize+'px '+family;}return font;};}function ChartDrawStorage(){this.DrawData=new _map2.default();//画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{Guid, Symbol, Period, ClassName, Value}
|
|
4727
4754
|
this.StorageKey;this.GetEventCallback;//事件回调
|
|
4728
4755
|
this.Load=function(key)//从本地读取画图工具
|
|
@@ -5755,17 +5782,18 @@ Explain:'成交量分布图下载',Request:{Period:this.Period,Right:this.Right,
|
|
|
5755
5782
|
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
5783
|
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
5784
|
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];//原始单位股
|
|
5785
|
+
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
5786
|
item.Amount=jsData[amount];if(IFrameSplitOperator.IsNumber(jsData[position]))item.Position=jsData[position];//期货持仓
|
|
5760
5787
|
if(IFrameSplitOperator.IsNumber(jsData[fclose]))item.FClose=jsData[fclose];//期货结算价
|
|
5761
5788
|
if(IFrameSplitOperator.IsNumber(jsData[yfclose]))item.YFClose=jsData[yfclose];//期货前结算价
|
|
5762
5789
|
if(IFrameSplitOperator.IsNumber(jsData[bfactor]))item.BFactor=jsData[bfactor];//前复权因子
|
|
5763
5790
|
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)//查找对应的股票数据
|
|
5791
|
+
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
5792
|
{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
5793
|
item.Amount=stock.amount;item.Close=stock.price;if(IFrameSplitOperator.IsNumber(stock.position))item.Position=stock.position;//持仓量
|
|
5767
5794
|
if(IFrameSplitOperator.IsNumber(stock.bfactor))item.BFactor=stock.bfactor;//前复权因子
|
|
5768
5795
|
if(IFrameSplitOperator.IsNumber(stock.afactor))item.AFactor=stock.afactor;//后复权因子
|
|
5796
|
+
if(stock.colordata)item.ColorData=stock.colordata;//自定义颜色
|
|
5769
5797
|
return item;};KLineChartContainer.JsonDataToMinuteRealtimeData=function(data,symbol){if(!data.stock)return null;var stock;for(var i in data.stock)//查找对应的股票数据
|
|
5770
5798
|
{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
5799
|
var date=stock.date;if(isFutures&&stock.yclearing)preClose=stock.yclearing;//期货使用昨结算价
|
|
@@ -5777,13 +5805,13 @@ if(!IFrameSplitOperator.IsNumber(item.Open))item.Open=null;if(!IFrameSplitOperat
|
|
|
5777
5805
|
if(IFrameSplitOperator.IsNumber(jsData.price))preClose=jsData.price;aryMinuteData[i]=item;}return aryMinuteData;};//分钟K线叠加数据增量更新v2版本
|
|
5778
5806
|
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
5807
|
{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
|
|
5808
|
+
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
5809
|
item.Amount=jsData[amount];item.Time=jsData[time];if(IFrameSplitOperator.IsNumber(jsData[position]))item.Position=jsData[position];//期货持仓
|
|
5782
5810
|
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
5811
|
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
|
|
5812
|
+
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
5813
|
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);}/* 内部不处理无效数据, 确保外部传过来的数据是对的.
|
|
5814
|
+
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
5815
|
// 无效数据处理
|
|
5788
5816
|
for(var i = 0; i < aryDayData.length; ++i)
|
|
5789
5817
|
{
|