hqchart 1.1.13142 → 1.1.13152

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.
@@ -2706,7 +2706,9 @@ if(this.ChartBorder.UIElement){this.Position={X:this.ChartBorder.UIElement.offse
2706
2706
  this.Snapshot=function(){this.ScreenImageData=this.Canvas.getImageData(0,0,this.ChartBorder.GetChartWidth(),this.ChartBorder.GetChartHeight());};this.GetXData=function(x){return this.SubFrame[0].Frame.GetXData(x);};this.GetYData=function(y,outObject)//outObject 可以保存返回的额外数据
2707
2707
  {var frame;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(left,y)){frame=item.Frame;if(outObject)outObject.FrameID=i;break;}}if(frame!=null){if(frame.RightFrame)outObject.RightYValue=frame.RightFrame.GetYData(y);//右侧子坐标
2708
2708
  var yValue=frame.GetYData(y);if(frame.YSplitOperator.CoordinateType==1)//百分比坐标 右边显示百分比信息
2709
- {var firstOpenPrice=frame.YSplitOperator.GetFirstOpenPrice();outObject.RightYValue=((yValue-firstOpenPrice)/firstOpenPrice*100).toFixed(2)+'%';}return yValue;}};this.PtInFrame=function(x,y)//鼠标哪个指标窗口
2709
+ {var firstOpenPrice=frame.YSplitOperator.GetFirstOpenPrice();outObject.RightYValue=((yValue-firstOpenPrice)/firstOpenPrice*100).toFixed(2)+'%';}if(frame.GetMainOverlayFrame){var aryOverlayFrame=frame.GetMainOverlayFrame();if(aryOverlayFrame){if(aryOverlayFrame[0])//左侧
2710
+ {var leftFrame=aryOverlayFrame[0];var value=leftFrame.GetYData(y);outObject.RightYValue=yValue;yValue=value;}if(aryOverlayFrame[1])//右侧
2711
+ {var rightFrame=aryOverlayFrame[1];var value=rightFrame.GetYData(y);outObject.RightYValue=value;}}}return yValue;}};this.PtInFrame=function(x,y)//鼠标哪个指标窗口
2710
2712
  {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;//转成整形
2711
2713
  }}var bottom=this.ChartBorder.GetBottom();var chartHeight=this.ChartBorder.GetChartHeight();var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();//底部
2712
2714
  if(x>=left&&x<=right&&y>bottom&&y<chartHeight)return-3;return-1;};this.PtInChartFrame=function(x,y)//鼠标在图形区域, 取出上下空白
@@ -2725,7 +2727,9 @@ this.SetMultiDayMinuteWidth=function(obj){if(!obj)return;if(IFrameSplitOperator.
2725
2727
  function HQTradeHScreenFrame(){this.newMethod=HQTradeFrame;//派生
2726
2728
  this.newMethod();delete this.newMethod;this.IsHScreen=true;//是否是横屏
2727
2729
  this.CalculateChartBorder=function()//计算每个子框架的边框信息
2728
- {if(this.SubFrame.length<=0)return;var border=this.ChartBorder.GetHScreenBorder();var right=this.ChartBorder.Right;var left=border.Right;var width=border.Right-border.Left;var totalHeight=0;var totalTitleHeight=0;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];var frame=item.Frame;if(frame&&frame.ChartBorder&&frame.ChartBorder.IsShowTitleOnly&&item.Height>0)totalTitleHeight+=frame.ChartBorder.TitleHeight;else totalHeight+=item.Height;}width-=totalTitleHeight;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];var frame=item.Frame;item.Frame.ChartBorder.Top=this.ChartBorder.Top;item.Frame.ChartBorder.Bottom=this.ChartBorder.Bottom;item.Frame.ChartBorder.LeftExtendWidth=this.ChartBorder.LeftExtendWidth;item.Frame.ChartBorder.RightExtendWidth=this.ChartBorder.RightExtendWidth;if(frame&&frame.ChartBorder&&frame.ChartBorder.IsShowTitleOnly&&item.Height>0){var frameWidth=frame.ChartBorder.TitleHeight;item.Frame.ChartBorder.Right=right;item.Frame.ChartBorder.Left=left-frameWidth;right+=frameWidth;left-=frameWidth;}else{var frameWidth=width*(item.Height/totalHeight);item.Frame.ChartBorder.Right=right;item.Frame.ChartBorder.Left=left-frameWidth;right+=frameWidth;left-=frameWidth;}}};this.GetYData=function(x,outObject){var frame;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];var left=item.Frame.ChartBorder.GetLeftEx();var top=item.Frame.ChartBorder.GetTop();var width=item.Frame.ChartBorder.GetWidthEx();var height=item.Frame.ChartBorder.GetHeight();item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(left,top,width,height);if(item.Frame.Canvas.isPointInPath(x,top)){frame=item.Frame;if(outObject)outObject.FrameID=i;break;}}if(frame!=null)return frame.GetYData(x);};}//深度图框架
2730
+ {if(this.SubFrame.length<=0)return;var border=this.ChartBorder.GetHScreenBorder();var right=this.ChartBorder.Right;var left=border.Right;var width=border.Right-border.Left;var totalHeight=0;var totalTitleHeight=0;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];var frame=item.Frame;if(frame&&frame.ChartBorder&&frame.ChartBorder.IsShowTitleOnly&&item.Height>0)totalTitleHeight+=frame.ChartBorder.TitleHeight;else totalHeight+=item.Height;}width-=totalTitleHeight;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];var frame=item.Frame;item.Frame.ChartBorder.Top=this.ChartBorder.Top;item.Frame.ChartBorder.Bottom=this.ChartBorder.Bottom;item.Frame.ChartBorder.LeftExtendWidth=this.ChartBorder.LeftExtendWidth;item.Frame.ChartBorder.RightExtendWidth=this.ChartBorder.RightExtendWidth;if(frame&&frame.ChartBorder&&frame.ChartBorder.IsShowTitleOnly&&item.Height>0){var frameWidth=frame.ChartBorder.TitleHeight;item.Frame.ChartBorder.Right=right;item.Frame.ChartBorder.Left=left-frameWidth;right+=frameWidth;left-=frameWidth;}else{var frameWidth=width*(item.Height/totalHeight);item.Frame.ChartBorder.Right=right;item.Frame.ChartBorder.Left=left-frameWidth;right+=frameWidth;left-=frameWidth;}}};this.GetYData=function(x,outObject){var frame;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];var left=item.Frame.ChartBorder.GetLeftEx();var top=item.Frame.ChartBorder.GetTop();var width=item.Frame.ChartBorder.GetWidthEx();var height=item.Frame.ChartBorder.GetHeight();item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(left,top,width,height);if(item.Frame.Canvas.isPointInPath(x,top)){frame=item.Frame;if(outObject)outObject.FrameID=i;break;}}if(frame!=null){var xValue=frame.GetYData(x);if(frame.GetMainOverlayFrame){var aryOverlayFrame=frame.GetMainOverlayFrame();if(aryOverlayFrame){if(aryOverlayFrame[0])//左侧
2731
+ {var leftFrame=aryOverlayFrame[0];var value=leftFrame.GetYData(x);outObject.RightYValue=xValue;xValue=value;}if(aryOverlayFrame[1])//右侧
2732
+ {var rightFrame=aryOverlayFrame[1];var value=rightFrame.GetYData(x);outObject.RightYValue=value;}}}return xValue;}};}//深度图框架
2729
2733
  function DepthChartFrame(){this.newMethod=AverageWidthFrame;//派生
2730
2734
  this.newMethod();delete this.newMethod;this.ScreenImageData;//截图
2731
2735
  this.Position;//画布的位置
@@ -3454,7 +3458,39 @@ this.Canvas.fillStyle=this.DownColor;}if(dataWidth>=4){if(isHScreen){this.Canvas
3454
3458
  {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)//求最小值
3455
3459
  {ptMin.X=x;ptMin.Y=yLow;ptMin.Value=data.Low;ptMin.Align=j<xPointCount/2?'left':'right';}if(data.YClose<data.Close){this.Canvas.strokeStyle=this.UpColor;//阳线
3456
3460
  this.Canvas.fillStyle=this.UpColor;}else if(data.YClose>data.Close){this.Canvas.strokeStyle=this.DownColor;//阴线
3457
- this.Canvas.fillStyle=this.DownColor;}if(dataWidth>=4){if(isHScreen){this.Canvas.fillRect(ToFixedRect(yLow),ToFixedRect(left),ToFixedRect(Math.abs(yLow-yHigh)),ToFixedRect(dataWidth+distanceWidth));}else{this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(yHigh),ToFixedRect(dataWidth+distanceWidth),ToFixedRect(Math.abs(yLow-yHigh)));}}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.stroke();}}this.PtMax=ptMax;this.PtMin=ptMin;};this.DrawTrade=function()//交易系统
3461
+ this.Canvas.fillStyle=this.DownColor;}if(dataWidth>=4){if(isHScreen){this.Canvas.fillRect(ToFixedRect(yLow),ToFixedRect(left),ToFixedRect(Math.abs(yLow-yHigh)),ToFixedRect(dataWidth+distanceWidth));}else{this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(yHigh),ToFixedRect(dataWidth+distanceWidth),ToFixedRect(Math.abs(yLow-yHigh)));}}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.stroke();}}this.PtMax=ptMax;this.PtMin=ptMin;};this.DrawKagi=function()//卡吉图
3462
+ {var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;if(isHScreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;var left=border.TopEx+g_JSChartResource.FrameLeftMargin;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var left=border.Left+g_JSChartResource.FrameLeftMargin;}var ptMax={X:null,Y:null,Value:null,Align:'left'};var ptMin={X:null,Y:null,Value:null,Align:'left'};this.ShowRange.Start=this.Data.DataOffset;this.ShowRange.End=this.ShowRange.Start;this.ShowRange.DataCount=0;this.ShowRange.ShowCount=xPointCount;this.DrawKRange.Start=this.Data.DataOffset;var lineWidth=2*GetDevicePixelRatio();this.Canvas.lineWidth=lineWidth;var preItem={Item:null,X:left,Y:null};var index=this.Data.DataOffset-1;if(index>=0&&index<this.Data.Data.length){var item=this.Data.Data[index];preItem.Item=item;if(item.Direction==1)//上
3463
+ {preItem.Y=this.GetYFromData(item.High,false);}else if(item.Direction==2){preItem.Y=this.GetYFromData(item.Low,false);}}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);this.DrawKRange.End=i;if(ptMax.Value==null||ptMax.Value<data.High)//求最大值
3464
+ {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)//求最小值
3465
+ {ptMin.X=x;ptMin.Y=yLow;ptMin.Value=data.Low;ptMin.Align=j<xPointCount/2?'left':'right';}var xFixed=ToFixedPoint2(lineWidth,x);if(preItem.Item){this.Canvas.beginPath();var yFixed=ToFixedPoint2(lineWidth,preItem.Y);this.Canvas.moveTo(preItem.X,yFixed);this.Canvas.lineTo(xFixed,yFixed);var prePrice=null;if(preItem.Item.Direction==1)prePrice=preItem.Item.Low;else if(preItem.Item.Direction==2)prePrice=preItem.Item.High;if(data.Direction==1){if(data.High<prePrice){this.Canvas.lineTo(xFixed,yHigh);this.Canvas.strokeStyle=this.DownColor;this.Canvas.stroke();}else{var yPrePrice=this.GetYFromData(prePrice,false);this.Canvas.lineTo(xFixed,yPrePrice);this.Canvas.strokeStyle=this.DownColor;this.Canvas.stroke();this.Canvas.beginPath();this.Canvas.moveTo(xFixed,yPrePrice);this.Canvas.lineTo(xFixed,yHigh);this.Canvas.strokeStyle=this.UpColor;this.Canvas.stroke();}}else if(data.Direction==2){if(data.Low>prePrice){this.Canvas.lineTo(xFixed,yLow);this.Canvas.strokeStyle=this.DownColor;//阳线
3466
+ this.Canvas.stroke();}else{var yPrePrice=this.GetYFromData(prePrice,false);this.Canvas.lineTo(xFixed,yPrePrice);this.Canvas.strokeStyle=this.DownColor;//阳线
3467
+ this.Canvas.stroke();this.Canvas.beginPath();this.Canvas.moveTo(xFixed,yPrePrice);this.Canvas.lineTo(xFixed,yLow);this.Canvas.strokeStyle=this.UpColor;this.Canvas.stroke();}}}else{this.Canvas.beginPath();if(data.Direction==1){this.Canvas.moveTo(xFixed,yLow);this.Canvas.lineTo(xFixed,yHigh);}else if(data.Direction==2){this.Canvas.moveTo(xFixed,yHigh);this.Canvas.lineTo(xFixed,yLow);}this.Canvas.stroke();}/*
3468
+ if (data.YClose<data.Close)
3469
+ {
3470
+ this.Canvas.strokeStyle=this.UpColor; //阳线
3471
+ this.Canvas.fillStyle=this.UpColor;
3472
+ }
3473
+ else if (data.YClose>data.Close)
3474
+ {
3475
+ this.Canvas.strokeStyle=this.DownColor; //阴线
3476
+ this.Canvas.fillStyle=this.DownColor;
3477
+ }
3478
+
3479
+ this.Canvas.beginPath();
3480
+ if (isHScreen)
3481
+ {
3482
+ this.Canvas.moveTo(yHigh,ToFixedPoint(x));
3483
+ this.Canvas.lineTo(yLow,ToFixedPoint(x));
3484
+ }
3485
+ else
3486
+ {
3487
+ this.Canvas.moveTo(ToFixedPoint2(lineWidth,x),yHigh);
3488
+ this.Canvas.lineTo(ToFixedPoint2(lineWidth,x),yLow);
3489
+ }
3490
+ this.Canvas.stroke();
3491
+ */preItem.Item=data;preItem.X=x;if(data.Direction==1)preItem.Y=yHigh;//上
3492
+ else if(data.Direction==2)preItem.Y=yLow;//下
3493
+ }this.PtMax=ptMax;this.PtMin=ptMin;};this.DrawTrade=function()//交易系统
3458
3494
  {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()//分笔图
3459
3495
  {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区域
3460
3496
  {var rect=new Rect(x-textSize/2,yClose-textSize/2,textSize,textSize);//this.Canvas.fillStyle="rgb(0,0,100)";
@@ -3469,7 +3505,7 @@ this.Canvas.clip();};this.Draw=function(){this.IsShowOrderText=false;this.Toolti
3469
3505
  this.PtMin={X:null,Y:null,Value:null,Align:'left'};//清空最小
3470
3506
  this.DrawKRange={Start:null,End:null};this.AryPriceGapCache=[];this.ChartFrame.ChartKLine={Max:null,Min:null};//保存K线上 显示最大最小值坐标
3471
3507
  this.DrawHeatMap();if(!this.IsShow)return;if(this.ChartFrame.IsMinSize&&this.Name=="Self Kline")return;if(ChartData.IsTickPeriod(this.Period))//分笔图
3472
- {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();if(this.PriceGap.Enable)this.DrawPriceGap();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 if(this.DrawType==10){this.DrawRenkoCandle();}else if(this.DrawType==12){this.DrawLineBreak();}else if(this.DrawType==13){this.DrawHighLow();}else if(this.DrawType==14){if(this.FFKChart&&this.FFKChart.Draw){this.FFKChart.Draw(this);}}else if(this.DrawType==15){this.DrawHLCArea();}else if(this.DrawType==17){this.DrawOrderFlow_Style4();}else{this.DrawKBar();}if(this.TradeIcon)this.DrawTradeIcon();else this.DrawTrade();this.Canvas.restore();if(this.PriceGap.Enable)this.DrawPriceGap();if(this.IsShowMaxMinPrice)//标注最大值最小值
3508
+ {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();if(this.PriceGap.Enable)this.DrawPriceGap();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 if(this.DrawType==10){this.DrawRenkoCandle();}else if(this.DrawType==12){this.DrawLineBreak();}else if(this.DrawType==13){this.DrawHighLow();}else if(this.DrawType==14){if(this.FFKChart&&this.FFKChart.Draw){this.FFKChart.Draw(this);}}else if(this.DrawType==15){this.DrawHLCArea();}else if(this.DrawType==16){this.DrawKagi();}else if(this.DrawType==17){this.DrawOrderFlow_Style4();}else{this.DrawKBar();}if(this.TradeIcon)this.DrawTradeIcon();else this.DrawTrade();this.Canvas.restore();if(this.PriceGap.Enable)this.DrawPriceGap();if(this.IsShowMaxMinPrice)//标注最大值最小值
3473
3509
  {if(this.ChartFrame.IsHScreen===true)this.HScreenDrawMaxMinPrice(this.PtMax,this.PtMin);else this.DrawMaxMinPrice(this.PtMax,this.PtMin);}if(this.DrawType==14)//自定义图形 标注最大最小值
3474
3510
  {if(this.FFKChart&&this.FFKChart.DrawMaxMinPrice){this.FFKChart.DrawMaxMinPrice();}}};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)//反转坐标
3475
3511
  {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)//横屏模式下显示最大最小值
@@ -5044,7 +5080,7 @@ this.CallAcutionSplitY(this.SplitCount,splitData);if(this.EnableRemoveZero)this.
5044
5080
  {text=''+value.toFixed(this.FloatPrecision);}else{var absValue=Math.abs(value);if(absValue<0.0000000001){text=0;}else if(absValue<this.FLOATPRECISION_RANGE[this.FLOATPRECISION_RANGE.length-1]){text=value.toExponential(2).toString();}else{var floatPrecision=this.GetFloatPrecision(absValue,this.FloatPrecision);//数据比小数位数还小, 调整小数位数
5045
5081
  text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}}return text;};this.FilterIgnoreYValue=function(){if(!this.IgnoreYValue||this.IgnoreYValue.length<=0)return;var setValue=new _set2.default(this.IgnoreYValue);this.Frame.HorizontalInfo=this.Frame.HorizontalInfo.filter(function(item){return!setValue.has(item.Value);});};this.DynamicMessageText=function(){if(this.SplitType==2){for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];if(item.Message[0])item.Message[0]+='%';if(item.Message[1])item.Message[1]+='%';}}};this.CallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var aryCallAcution=this.GetCallAcutionSplitY(count,splitData);if(!aryCallAcution)return;for(var i=0;i<this.Frame.HorizontalInfo.length;++i)//把显示的数据迁移到 Message[2] Message[3]
5046
5082
  {var item=this.Frame.HorizontalInfo[i];if(aryCallAcution.IsBeforeData){item.Message[2]=item.Message[0];item.Message[0]=null;}if(aryCallAcution.IsAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){item.Message[3]=item.Message[1];item.Message[1]=null;}}//集合竞价的坐标插入最后
5047
- for(var i=0;i<aryCallAcution.HorizontalInfo.length;++i){var item=aryCallAcution.HorizontalInfo[i];this.Frame.HorizontalInfo.push(item);}};this.GetCallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var isBeforeData=this.IsBeforeData==true&&this.BeforeOpenData&&(this.BeforeOpenData.Ver==2.0||this.BeforeOpenData.Ver==3.0);var isAfterData=this.IsAfterData==true&&this.AfterCloseData&&(this.AfterCloseData.Ver==2.0||this.AfterCloseData.Ver==3.0);if(isBeforeData||isAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);if(isBeforeData)var intervalLeft=(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)/(count-1);if(isAfterData)var intervalRight=(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=8;if(isBeforeData){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);}if(isAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);}aryHorizontalInfo.push(item);}return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isBeforeData,IsAfterData:isAfterData};}var isMultiDayBeforeData=false;var intervalLeft=null;if(this.MultiDayBeforeOpenData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)){isMultiDayBeforeData=true;var firstDayData=this.MultiDayBeforeOpenData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalLeft=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}var isMultiDayAfterData=false;var intervalRight=null;if(this.MultiDayAfterCloseData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)){isMultiDayAfterData=true;var firstDayData=this.MultiDayAfterCloseData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalRight=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}if(isMultiDayBeforeData||isMultiDayAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=9;var isVaild=false;if(intervalLeft!=null){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);isVaild=true;}if(intervalRight!=null&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);isVaild=true;}if(isVaild)aryHorizontalInfo.push(item);}if(IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isMultiDayBeforeData,IsAfterData:isMultiDayAfterData};}return null;};this.RightFrameSplitY=function(){if(!this.Frame.RightFrame)return;var rightFrame=this.Frame.RightFrame;if(rightFrame.YSplitOperator)rightFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);item.Message[1]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}};this.MainOverlayFrameSplitY=function(){if(!this.Frame.GetMainOverlayFrame)return;var aryOverlayFrame=this.Frame.GetMainOverlayFrame();if(!aryOverlayFrame)return;if(aryOverlayFrame[1]){var rightFrame=aryOverlayFrame[1];var ySplitOper=rightFrame.YSplitOperator;if(ySplitOper)ySplitOper.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);if(ySplitOper&&ySplitOper.FormatValueString)item.Message[1]=ySplitOper.FormatValueString(yValue);else item.Message[1]=this.FormatValueString(yValue);}}if(aryOverlayFrame[0]){var leftFrame=aryOverlayFrame[0];var ySplitOper=leftFrame.YSplitOperator;if(ySplitOper)ySplitOper.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=leftFrame.GetYData(y);if(ySplitOper&&ySplitOper.FormatValueString)item.Message[1]=ySplitOper.FormatValueString(yValue);else item.Message[0]=this.FormatValueString(yValue);}}};this.CustomCoordinate=function(){this.Frame.CustomHorizontalInfo=[];var data=this.InvokeCustomYCoordinateCallback();if(data&&data.PreventDefault==true)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Custom))return;for(var i=0;i<this.Custom.length;++i){var item=this.Custom[i];if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.PAGE_LAST_INDEX_VALUE_ID)//当前屏最后一个数据
5083
+ for(var i=0;i<aryCallAcution.HorizontalInfo.length;++i){var item=aryCallAcution.HorizontalInfo[i];this.Frame.HorizontalInfo.push(item);}};this.GetCallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var isBeforeData=this.IsBeforeData==true&&this.BeforeOpenData&&(this.BeforeOpenData.Ver==2.0||this.BeforeOpenData.Ver==3.0);var isAfterData=this.IsAfterData==true&&this.AfterCloseData&&(this.AfterCloseData.Ver==2.0||this.AfterCloseData.Ver==3.0);if(isBeforeData||isAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);if(isBeforeData)var intervalLeft=(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)/(count-1);if(isAfterData)var intervalRight=(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=8;if(isBeforeData){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);}if(isAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);}aryHorizontalInfo.push(item);}return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isBeforeData,IsAfterData:isAfterData};}var isMultiDayBeforeData=false;var intervalLeft=null;if(this.MultiDayBeforeOpenData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)){isMultiDayBeforeData=true;var firstDayData=this.MultiDayBeforeOpenData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalLeft=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}var isMultiDayAfterData=false;var intervalRight=null;if(this.MultiDayAfterCloseData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)){isMultiDayAfterData=true;var firstDayData=this.MultiDayAfterCloseData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalRight=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}if(isMultiDayBeforeData||isMultiDayAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=9;var isVaild=false;if(intervalLeft!=null){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);isVaild=true;}if(intervalRight!=null&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);isVaild=true;}if(isVaild)aryHorizontalInfo.push(item);}if(IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isMultiDayBeforeData,IsAfterData:isMultiDayAfterData};}return null;};this.RightFrameSplitY=function(){if(!this.Frame.RightFrame)return;var rightFrame=this.Frame.RightFrame;if(rightFrame.YSplitOperator)rightFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);item.Message[1]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}};this.MainOverlayFrameSplitY=function(){if(!this.Frame.GetMainOverlayFrame)return;var aryOverlayFrame=this.Frame.GetMainOverlayFrame();if(!aryOverlayFrame)return;if(aryOverlayFrame[1]){var rightFrame=aryOverlayFrame[1];var ySplitOper=rightFrame.YSplitOperator;if(ySplitOper)ySplitOper.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);if(ySplitOper&&ySplitOper.FormatValueString)item.Message[1]=ySplitOper.FormatValueString(yValue);else item.Message[1]=this.FormatValueString(yValue);}}if(aryOverlayFrame[0]){var leftFrame=aryOverlayFrame[0];var ySplitOper=leftFrame.YSplitOperator;if(ySplitOper)ySplitOper.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=leftFrame.GetYData(y);if(ySplitOper&&ySplitOper.FormatValueString)item.Message[0]=ySplitOper.FormatValueString(yValue);else item.Message[0]=this.FormatValueString(yValue);}}};this.CustomCoordinate=function(){this.Frame.CustomHorizontalInfo=[];var data=this.InvokeCustomYCoordinateCallback();if(data&&data.PreventDefault==true)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Custom))return;for(var i=0;i<this.Custom.length;++i){var item=this.Custom[i];if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.PAGE_LAST_INDEX_VALUE_ID)//当前屏最后一个数据
5048
5084
  {this.CustomLatestIndexDataCoordinate(item);}else if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.FIXED_VALUE_ID)//自定义刻度
5049
5085
  {this.CustomFixedCoordinate(item);}else if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.PAGE_LAST_OVERLAY_INDEX_VALUE_ID)//叠加指标当前屏最后一个数据
5050
5086
  {this.CustomLatestOverlayIndexDataCoordinate(item);}}};this.CustomFixedCoordinate=function(option)//固定坐标刻度
@@ -5207,7 +5243,8 @@ if(this.IsShowCorss){var pixel=GetDevicePixelRatio();this.Canvas.save();this.Can
5207
5243
  this.Canvas.beginPath();this.Canvas.moveTo(ToFixedPoint(x),top);this.Canvas.lineTo(ToFixedPoint(x),bottom);this.Canvas.stroke();this.Canvas.restore();//画横线
5208
5244
  this.Canvas.save();this.Canvas.strokeStyle=this.VPenColor;if(this.VPenType==0){this.Canvas.setLineDash([3*pixel,2*pixel]);//虚线
5209
5245
  }else if(this.VPenType==2){var barWidth=this.Frame.SubFrame[0].Frame.DataWidth;//和K线一样宽度
5210
- if(barWidth>2*pixel)this.Canvas.lineWidth=barWidth;}this.Canvas.beginPath();if(this.VLineType==1){this.Canvas.moveTo(left,ToFixedPoint(y));this.Canvas.lineTo(right,ToFixedPoint(y));}else{if(this.Frame.SubFrame.length>0){for(var i in this.Frame.SubFrame){var frame=this.Frame.SubFrame[i].Frame;var subBorder=frame.ChartBorder.GetHScreenBorder();this.Canvas.moveTo(subBorder.Left,ToFixedPoint(y));this.Canvas.lineTo(subBorder.RightEx,ToFixedPoint(y));}}else{this.Canvas.moveTo(left,ToFixedPoint(y));this.Canvas.lineTo(right,ToFixedPoint(y));}}this.Canvas.stroke();this.Canvas.restore();}var xValue=this.Frame.GetXData(y);var yValueExtend={};var yValue=this.Frame.GetYData(x,yValueExtend);this.StringFormatX.Value=xValue;this.StringFormatX.Point={X:x,Y:y};this.StringFormatX.ClientPos=this.ClientPos;this.StringFormatY.Value=yValue;this.StringFormatY.FrameID=yValueExtend.FrameID;this.StringFormatY.Point={X:x,Y:y};this.StringFormatY.ClientPos=this.ClientPos;this.Canvas.font=this.Font;var textHeight=this.GetFontHeight();if(textHeight>this.TextHeight)this.TextHeight=textHeight;if((this.ShowTextMode.Left==1&&this.Frame.ChartBorder.Top>=30||this.ShowTextMode.Left==2||this.ShowTextMode.Right==1&&this.Frame.ChartBorder.Bottom>=30||this.ShowTextMode.Right==2)&&this.StringFormatY.Operator()){var text=this.StringFormatY.Text;this.Canvas.font=this.Font;var textWidth=this.Canvas.measureText(text).width+4;//前后各空2个像素
5246
+ if(barWidth>2*pixel)this.Canvas.lineWidth=barWidth;}this.Canvas.beginPath();if(this.VLineType==1){this.Canvas.moveTo(left,ToFixedPoint(y));this.Canvas.lineTo(right,ToFixedPoint(y));}else{if(this.Frame.SubFrame.length>0){for(var i in this.Frame.SubFrame){var frame=this.Frame.SubFrame[i].Frame;var subBorder=frame.ChartBorder.GetHScreenBorder();this.Canvas.moveTo(subBorder.Left,ToFixedPoint(y));this.Canvas.lineTo(subBorder.RightEx,ToFixedPoint(y));}}else{this.Canvas.moveTo(left,ToFixedPoint(y));this.Canvas.lineTo(right,ToFixedPoint(y));}}this.Canvas.stroke();this.Canvas.restore();}var xValue=this.Frame.GetXData(y);var yValueExtend={};var yValue=this.Frame.GetYData(x,yValueExtend);this.StringFormatX.Value=xValue;this.StringFormatX.Point={X:x,Y:y};this.StringFormatX.ClientPos=this.ClientPos;this.StringFormatY.Value=yValue;this.StringFormatY.FrameID=yValueExtend.FrameID;this.StringFormatY.RValue=yValueExtend.RightYValue;//右侧子坐标
5247
+ this.StringFormatY.Point={X:x,Y:y};this.StringFormatY.ClientPos=this.ClientPos;this.Canvas.font=this.Font;var textHeight=this.GetFontHeight();if(textHeight>this.TextHeight)this.TextHeight=textHeight;if((this.ShowTextMode.Left==1&&this.Frame.ChartBorder.Top>=30||this.ShowTextMode.Left==2||this.ShowTextMode.Right==1&&this.Frame.ChartBorder.Bottom>=30||this.ShowTextMode.Right==2)&&this.StringFormatY.Operator()){var text=this.StringFormatY.Text;this.Canvas.font=this.Font;var textWidth=this.Canvas.measureText(text).width+4;//前后各空2个像素
5211
5248
  if(this.Frame.ChartBorder.Top>=30&&this.ShowTextMode.Left==1){var xText=x;var yText=top;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);//数据和框子旋转180度
5212
5249
  this.Canvas.fillStyle=this.TextBGColor;if(top>=textWidth){this.Canvas.fillRect(0,-(this.TextHeight/2),-textWidth,this.TextHeight);this.Canvas.textAlign="right";this.Canvas.textBaseline="middle";this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(text,-2,0,textWidth);}else{this.Canvas.fillRect(textWidth-top,-(this.TextHeight/2),-textWidth,this.TextHeight);this.Canvas.textAlign="right";this.Canvas.textBaseline="middle";this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(text,textWidth-top-2,0,textWidth);}this.Canvas.restore();}else if(this.ShowTextMode.Left==2){var xText=x;var yText=top;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);//数据和框子旋转180度
5213
5250
  this.Canvas.fillStyle=this.TextBGColor;this.Canvas.fillRect(0,-(this.TextHeight/2),textWidth,this.TextHeight);this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(text,2,0,textWidth);this.Canvas.restore();}if(this.StringFormatY.RText){text=this.StringFormatY.RText;var textWidth=this.Canvas.measureText(text).width+4;//前后各空2个像素
@@ -5272,7 +5309,7 @@ if(IFrameSplitOperator.IsNumber(value)){this.RText=this.Text=IFrameSplitOperator
5272
5309
  if(IFrameSplitOperator.IsNumber(value)){this.RText=this.Text=IFrameSplitOperator.FormatValueString(value,defaultfloatPrecision,this.LanguageID);}};this.Operator=function(){this.RText=null;this.RComplexText=null;this.RExtendText=[];if(IFrameSplitOperator.IsString(this.RValue))this.RText=this.RValue;if(!this.Value)return false;this.PercentageText=null;var defaultfloatPrecision=2;//价格小数位数
5273
5310
  if(this.FrameID==0)//第1个窗口显示原始价格
5274
5311
  {var defaultfloatPrecision=GetfloatPrecision(this.Symbol);if(this.PriceFormatType==1)this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);else this.Text=this.Value.toFixed(defaultfloatPrecision);if(this.YClose>0)this.PercentageText=((this.Value-this.YClose)*100/this.YClose).toFixed(2);//走势图右边坐标显示百分比
5275
- this.GetExtendPaintData(defaultfloatPrecision);}else if(this.FrameID==1){if(this.DataFormatType==1){this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);if(IFrameSplitOperator.IsNumber(this.RValue))this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);}else{this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);if(IFrameSplitOperator.IsNumber(this.RValue))this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);}if(this.ClientPos==2){this.GetBeforeOpen();}else if(this.ClientPos==3){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetAfterClose();}else if(this.ClientPos>=200&&this.ClientPos<=299){this.GetMultiDayBeforeOpen();}else if(this.ClientPos>=300&&this.ClientPos<=399){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetMultiDayAfterClose();}}else{if(this.DataFormatType==1)this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);}if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_CORSSCURSOR_Y_TEXT);if(event){var data={Value:this.Value,FrameID:this.FrameID};event.Callback(event,data,this);}}return true;};//深度图刻度
5312
+ this.GetExtendPaintData(defaultfloatPrecision);}else if(this.FrameID==1){if(this.DataFormatType==1){this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);if(IFrameSplitOperator.IsNumber(this.RValue))this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);}else{this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);if(IFrameSplitOperator.IsNumber(this.RValue))this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);}if(this.ClientPos==2){this.GetBeforeOpen();}else if(this.ClientPos==3){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetAfterClose();}else if(this.ClientPos>=200&&this.ClientPos<=299){this.GetMultiDayBeforeOpen();}else if(this.ClientPos>=300&&this.ClientPos<=399){if(this.ShareAfterVol==0||this.ShareAfterVol==2)this.GetMultiDayAfterClose();}}else{if(this.DataFormatType==1)this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);if(IFrameSplitOperator.IsNumber(this.RValue))this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);}if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_CORSSCURSOR_Y_TEXT);if(event){var data={Value:this.Value,FrameID:this.FrameID};event.Callback(event,data,this);}}return true;};//深度图刻度
5276
5313
  this.GetExtendPaintData=function(floatPrecision){var value=parseInt(this.Value*ZOOM_VALUE[floatPrecision]);for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];if(item.ClassName=='DepthMapPaint'&&item.FrameID==this.FrameID){var aryData=item.GetYValueByXValue(value,floatPrecision);for(var j in aryData){this.RExtendText.push(aryData[j]);}}}};}function HQDateStringFormat(){this.newMethod=IChangeStringFormat;//派生
5277
5314
  this.newMethod();delete this.newMethod;this.DateFormatType=0;//0=YYYY-MM-DD 1=YYYY/MM/DD 2=YYYY/MM/DD/W 3=DD/MM/YYYY
5278
5315
  this.LanguageID=0;this.Operator=function(){if(!IFrameSplitOperator.IsNumber(this.Value))return false;if(!this.Data)return false;var index=this.Value;index=parseInt(index.toFixed(0));if(this.Data.DataOffset+index>=this.Data.Data.length)return false;var currentData=this.Data.Data[this.Data.DataOffset+index];var dateFormatString="YYYY-MM-DD";if(this.DateFormatType==1)dateFormatString="YYYY/MM/DD";else if(this.DateFormatType==2)dateFormatString="YYYY/MM/DD/W";else if(this.DateFormatType==3)dateFormatString="DD/MM/YYYY";this.Text=IFrameSplitOperator.FormatDateString(currentData.Date,dateFormatString,this.LanguageID);if(ChartData.IsMinutePeriod(this.Data.Period,true))// 分钟周期
@@ -6650,10 +6687,19 @@ this.CalculateATR=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.Source
6650
6687
  var total=0;for(var i=0;i<aryData.length;++i){total+=aryData[i];}var brickSize=total/aryData.length;var value=brickSize.toFixed(this.FloatPrecision);this.ATR.BrickSize=parseFloat(value);};}/////////////////////////////////////////////////////////////////////////
6651
6688
  //kagi candle
6652
6689
  //
6653
- function KagiCalculate(){this.Symbol;this.SourceData;this.FloatPrecision=2;//品种小数位数
6654
- this.ATR={Count:14};//使用ATR计算砖块大小
6690
+ function KagiCalculate(){this.newMethod=RenkoCalculate;//派生
6691
+ this.newMethod();delete this.newMethod;this.ClassName="KagiCalculate";this.BrickSizeType=0;this.BrickSize=0.5;//固定大小
6655
6692
  this.RecvHistoryData=function(sourceData,option)//历史日线数据
6656
- {this.Symbol=option.Symbol;this.SourceData=sourceData;this.FloatPrecision=GetfloatPrecision(this.Symbol);return this.Calculate(sourceData);};this.Calculate=function(sourceData){var bindData=new ChartData();bindData.Data=[];bindData.Right=sourceData.Right;bindData.Period=sourceData.Period;bindData.DataType=sourceData.DataType;bindData.Symbol=sourceData.symbol;if(!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data))return bindData;var periodCount=this.ATR.Count;var kItem=sourceData.Data[0];this.LastData=HistoryData.Copy(kItem);for(var i=1;i<sourceData.Data.length;){}};}//////////////////////////////////////////////////////////////////
6693
+ {this.Symbol=option.Symbol;this.SourceData=sourceData;this.FloatPrecision=GetfloatPrecision(this.Symbol);if(this.BrickSizeType==1)this.CalculateATR();return this.CalculateByClose(sourceData);};this.CalculateByClose=function(sourceData){var bindData=new ChartData();bindData.Data=[];bindData.Right=sourceData.Right;bindData.Period=sourceData.Period;bindData.DataType=sourceData.DataType;bindData.Symbol=sourceData.symbol;if(!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data))return bindData;var brickSize=this.BrickSize;if(this.BrickSizeType==1)brickSize=this.ATR.BrickSize;var kItem=sourceData.Data[0];var kagiItem=HistoryData.Copy(kItem);kagiItem.High=kagiItem.Low=kItem.Close;kagiItem.StartItem=kItem;kagiItem.Direction=0;//1 上 2=下
6694
+ var T_MergeKData=function T_MergeKData(dest,src){dest.Vol+=src.Vol;dest.Amount+=src.Amount;};var index=1;for(;index<sourceData.Data.length;++index)//确定好方向
6695
+ {var kItem=sourceData.Data[index];if(kItem.Close>kagiItem.Close){kagiItem.Direction=1;kagiItem.Close=kItem.Close;kagiItem.EndItem=kItem;kagiItem.High=kItem.Close;break;}else if(kItem.Close<kagiItem.Close){kagiItem.Direction=2;kagiItem.Close=kItem.Close;kagiItem.EndItem=kItem;kagiItem.Low=kItem.Close;break;}}var changeItem=null;for(++index;index<sourceData.Data.length;++index){var kItem=sourceData.Data[index];if(kagiItem.Direction==1)//上
6696
+ {if(kItem.Close>=kagiItem.High){kagiItem.Close=kItem.Close;kagiItem.High=kItem.Close;kagiItem.EndItem=kItem;changeItem=null;}else{if(!changeItem){changeItem=HistoryData.Copy(kItem);changeItem.High=changeItem.Low=kItem.Close;}else{changeItem.Close=kItem.Close;if(changeItem.Low>kItem.Close)changeItem.Low=kItem.Close;}if(Math.abs(changeItem.Low-kagiItem.High)>brickSize)//达到变盘点
6697
+ {bindData.Data.push(kagiItem);var newItem=HistoryData.Copy(kItem);newItem.High=kagiItem.High;newItem.Low=kItem.Close;newItem.Direction=2;//1 上 2=下
6698
+ newItem.StartItem=kItem;kagiItem=newItem;changeItem=null;}}}else if(kagiItem.Direction==2)//下
6699
+ {if(kItem.Close<=kagiItem.Low){kagiItem.Close=kItem.Close;kagiItem.Low=kItem.Close;kagiItem.EndItem=kItem;}else{if(!changeItem){changeItem=HistoryData.Copy(kItem);changeItem.High=changeItem.Low=kItem.Close;}else{changeItem.Close=kItem.Close;if(changeItem.High<kItem.Close)changeItem.High=kItem.Close;}if(Math.abs(changeItem.High-kagiItem.Low)>brickSize)//达到变盘点
6700
+ {bindData.Data.push(kagiItem);var newItem=HistoryData.Copy(kItem);newItem.High=kItem.Close;newItem.Low=kagiItem.Low;newItem.Direction=1;//1 上 2=下
6701
+ newItem.StartItem=kItem;kagiItem=newItem;changeItem=null;}}}}return bindData;};//获取配置信息
6702
+ this.GetTitle=function(){if(this.BrickSizeType==1){var text='Kagi [ATR('+this.ATR.Count+'), '+this.ATR.BrickSize+']';}else{var text='Kagi [Traditional]';}return text;};}//////////////////////////////////////////////////////////////////
6657
6703
  // HeikinAshi
6658
6704
  //
6659
6705
  function HeikinAshiCalculate(){this.SourceData;this.Symbol;this.FloatPrecision=2;//品种小数位数
@@ -7135,9 +7181,9 @@ this.AutoUpdateEvent(false,'KLineChartContainer::ChangeRight');//切换复权先
7135
7181
  this.ClearIndexPaint();this.ResetOverlaySymbolStatus();this.ResetScrollBar();this.RequestHistoryMinuteData();//请求分钟数据
7136
7182
  }}};//设置第1屏的起始日期
7137
7183
  this.SetFirstShowDate=function(obj){if(!obj||!obj.Date)return;var option={ID:JSCHART_OPERATOR_ID.OP_GOTO,Date:obj.Date};if(IFrameSplitOperator.IsNumber(obj.Time))option.Time=obj.Time;if(IFrameSplitOperator.IsNumber(obj.PageSize))option.PageSize=obj.PageSize;this.ChartOperator(option);};//删除某一个窗口的指标, bCallDestory=是否调用图形销毁函数
7138
- this.DeleteIndexPaint=function(windowIndex,bCallDestroy){var paint=new Array();//踢出当前窗口的指标画法
7139
- for(var _i12 in this.ChartPaint){var _item4=this.ChartPaint[_i12];if(_i12==0||_item4.ChartFrame!=this.Frame.SubFrame[windowIndex].Frame){paint.push(_item4);}else{if(bCallDestroy===true){if(_item4&&_item4.OnDestroy)_item4.OnDestroy();//图形销毁
7140
- }}}var subFrame=this.Frame.SubFrame[windowIndex].Frame;subFrame.YSpecificMaxMin=null;//清空指定最大最小值
7184
+ this.DeleteIndexPaint=function(windowIndex,bCallDestroy){if(!this.Frame.SubFrame[windowIndex])return;var subFrame=this.Frame.SubFrame[windowIndex].Frame;if(!subFrame)return;var paint=[];//踢出当前窗口的指标画法
7185
+ for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];var bFind=item.ChartFrame.Guid==subFrame.Guid||item.ChartFrame==subFrame;if(i==0||!bFind){paint.push(item);}else{if(bCallDestroy===true){if(item&&item.OnDestroy)item.OnDestroy();//图形销毁
7186
+ }}}subFrame.YSpecificMaxMin=null;//清空指定最大最小值
7141
7187
  subFrame.IsLocked=false;//解除上锁
7142
7188
  subFrame.YSplitScale=null;//清空固定刻度
7143
7189
  subFrame.YSplitOperator.SplitType=subFrame.YSplitOperator.DefaultSplitType;//还原Y坐标分割模式
@@ -7261,7 +7307,7 @@ chart.SetOption(option);this.ExtendChartPaint.push(chart);this.Frame.ChartBorder
7261
7307
  return chart;case'KLineTooltip':if(option.Create&&typeof option.Create=='function')chart=option.Create();else chart=new KLineTooltipPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;option.LanguageID=this.LanguageID;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"深度图":chart=new DepthMapPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"K线Y轴背景图":chart=new KLineYAxisBGPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case'背景图':chart=new BackgroundPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"FrameSplitPaint"://框架分割
7262
7308
  chart=new FrameSplitPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;default:chart=g_ExtendChartPaintFactory.Create(name);if(!chart)return null;chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;}};this.OnTouchFinished=function(){if(this.DragMode==JSCHART_DRAG_ID.CLICK_TOUCH_MODE_ID){if(this.TouchStatus.CorssCursorShow==true&&this.TouchDrawCount>0)return;this.TouchStatus.CorssCursorShow=false;this.DrawDynamicInfo();return;}if(this.EnableClickModel===true){if(this.ClickModel.IsShowCorssCursor==true&&this.TouchDrawCount>0)return;this.ClickModel.IsShowCorssCursor=false;this.DrawDynamicInfo();return;}if(this.CorssCursorTouchEnd===true)//手势离开十字光标消失
7263
7309
  {if(this.TouchDrawCount>0)this.DrawDynamicInfo();return;}for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];if(item.ClassName==='KLineTooltipPaint'){this.DrawDynamicInfo();}}};//锁|解锁指标 { Index:指标名字,IsLocked:是否要锁上,Callback:回调 }
7264
- this.LockIndex=function(lockData){if(!lockData)return;if(!lockData.IndexName)return;for(var _i13 in this.WindowIndex){var _item5=this.WindowIndex[_i13];if(!_item5)conintue;if(_item5.Name==lockData.IndexName){_item5.SetLock(lockData);this.Update();break;}}};this.TryClickLock=function(x,y){for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!item.Frame.IsLocked)continue;if(!item.Frame.LockPaint)continue;var tooltip=new TooltipData();if(!item.Frame.LockPaint.GetTooltipData(x,y,tooltip))continue;tooltip.HQChart=this;if(tooltip.Data.Callback)tooltip.Data.Callback(tooltip);return true;}return false;};this.TryClickIndexTitle=function(x,y){for(var i in this.TitlePaint){var item=this.TitlePaint[i];if(!item.IsClickTitle)continue;if(!item.IsClickTitle(x,y))continue;var data={Point:{X:x,Y:y},Title:item.Title,FrameID:item.Frame.Identify};JSConsole.Chart.Log('[KLineChartContainer::TryClickIndexTitle] click title ',data);var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEXTITLE);if(event&&event.Callback)event.Callback(event,data,this);return true;}return false;};this.SetSizeChange=function(bChanged){this.Frame.SetSizeChage(bChanged);for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];item.SizeChange=bChanged;}};this.SetSizeChage=this.SetSizeChange;//单词拼错了, 还没替换完
7310
+ this.LockIndex=function(lockData){if(!lockData)return;if(!lockData.IndexName)return;for(var _i12 in this.WindowIndex){var _item4=this.WindowIndex[_i12];if(!_item4)conintue;if(_item4.Name==lockData.IndexName){_item4.SetLock(lockData);this.Update();break;}}};this.TryClickLock=function(x,y){for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!item.Frame.IsLocked)continue;if(!item.Frame.LockPaint)continue;var tooltip=new TooltipData();if(!item.Frame.LockPaint.GetTooltipData(x,y,tooltip))continue;tooltip.HQChart=this;if(tooltip.Data.Callback)tooltip.Data.Callback(tooltip);return true;}return false;};this.TryClickIndexTitle=function(x,y){for(var i in this.TitlePaint){var item=this.TitlePaint[i];if(!item.IsClickTitle)continue;if(!item.IsClickTitle(x,y))continue;var data={Point:{X:x,Y:y},Title:item.Title,FrameID:item.Frame.Identify};JSConsole.Chart.Log('[KLineChartContainer::TryClickIndexTitle] click title ',data);var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEXTITLE);if(event&&event.Callback)event.Callback(event,data,this);return true;}return false;};this.SetSizeChange=function(bChanged){this.Frame.SetSizeChage(bChanged);for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];item.SizeChange=bChanged;}};this.SetSizeChage=this.SetSizeChange;//单词拼错了, 还没替换完
7265
7311
  this.Update=function(option)//option: { UpdateCursorIndexType:更新十字光标方式 }
7266
7312
  {if(!this.SourceData)return;if(this.BeforeBindMainData)this.BeforeBindMainData('Update');var bindData=new ChartData();bindData.Data=this.SourceData.Data;bindData.Period=this.Period;bindData.Right=this.Right;bindData.DataType=this.SourceData.DataType;bindData.Symbol=this.Symbol;if(bindData.Right>0&&ChartData.IsDayPeriod(bindData.Period,true))//复权(日线数据复权)
7267
7313
  {var rightData=bindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});bindData.Data=rightData;}else if(bindData.Right>0&&ChartData.IsMinutePeriod(bindData.Period,true)&&this.RightFormula>=1)//复权(分钟数据复权, 复权因子模式)
@@ -7341,13 +7387,13 @@ bNeedDonloadData=false;if(this.EnableFlowCapital)//强制下载流通股
7341
7387
  {if(MARKET_SUFFIX_NAME.IsBIT(upperSymbol)){if(this.EnableFlowCapital.BIT==true)bNeedDonloadData=true;}}if(!bNeedDonloadData){JSConsole.Chart.Log('[KLineChartContainer::RequestFlowCapitalData] symbol='+this.Symbol+' not need download data.');this.FlowCapitalReady=true;return;}var self=this;var fieldList=["name","date","symbol","capital.a"];if(this.NetworkFilter){var obj={Name:'KLineChartContainer::RequestFlowCapitalData',//类名::
7342
7388
  Explain:'流通股本数据',Request:{Url:self.StockHistoryDayApiUrl,Data:{symbol:[this.Symbol],orderfield:'date',field:fieldList},Type:'POST'},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){self.RecvFlowCapitalData(data);});if(obj.PreventDefault==true)return;//已被上层替换,不调用默认的网络请求
7343
7389
  }//请求数据
7344
- JSNetwork.HttpRequest({url:this.StockHistoryDayApiUrl,data:{"field":fieldList,"symbol":[this.Symbol],"orderfield":"date"},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvFlowCapitalData(recvData);}});};this.RecvFlowCapitalData=function(data){if(!data.stock||data.stock.length!=1)return;var stock=data.stock[0];if(this.EnableVerifyRecvData&&stock.symbol!=this.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvFlowCapitalData] recv data symbol not match. HQChart['+this.Symbol+'] , Recv['+stock.symbol+']');return;}var aryData=new Array();for(var _i14 in stock.stockday){var item=stock.stockday[_i14];var indexData=new SingleData();indexData.Date=item.date;var financeData=item.capital;if(!financeData)continue;if(financeData.a>0){indexData.Value=financeData.a;//流通股本(股)
7390
+ JSNetwork.HttpRequest({url:this.StockHistoryDayApiUrl,data:{"field":fieldList,"symbol":[this.Symbol],"orderfield":"date"},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvFlowCapitalData(recvData);}});};this.RecvFlowCapitalData=function(data){if(!data.stock||data.stock.length!=1)return;var stock=data.stock[0];if(this.EnableVerifyRecvData&&stock.symbol!=this.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvFlowCapitalData] recv data symbol not match. HQChart['+this.Symbol+'] , Recv['+stock.symbol+']');return;}var aryData=new Array();for(var _i13 in stock.stockday){var item=stock.stockday[_i13];var indexData=new SingleData();indexData.Date=item.date;var financeData=item.capital;if(!financeData)continue;if(financeData.a>0){indexData.Value=financeData.a;//流通股本(股)
7345
7391
  aryData.push(indexData);}}if(this.IsApiPeriod){var klineData=this.ChartPaint[0].Data;var aryFixedData=null;if(ChartData.IsMinutePeriod(this.Period,true))//分钟数据
7346
7392
  {aryFixedData=klineData.GetMinuteFittingFinanceData(aryData);}else if(ChartData.IsDayPeriod(this.Period,true))//日线数据
7347
7393
  {aryFixedData=klineData.GetFittingFinanceData(aryData);}if(aryFixedData&&klineData.Data&&aryFixedData.length==klineData.Data.length){for(var i in klineData.Data){var item=klineData.Data[i];if(aryFixedData[i]&&IFrameSplitOperator.IsNumber(aryFixedData[i].Value))item.FlowCapital=aryFixedData[i].Value;}}}else{if(ChartData.IsMinutePeriod(this.Period,true))//分钟数据
7348
7394
  {var aryFixedData=this.SourceData.GetMinuteFittingFinanceData(aryData);for(var i=0;i<this.SourceData.Data.length;++i){var item=this.SourceData.Data[i];if(aryFixedData[i]&&IFrameSplitOperator.IsNumber(aryFixedData[i].Value))item.FlowCapital=aryFixedData[i].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0&&this.RightFormula>=1)//复权
7349
7395
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsMinutePeriod(bindData.Period,false))//周期数据
7350
- {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;}else{var aryFixedData=this.SourceData.GetFittingFinanceData(aryData);for(var _i15 in this.SourceData.Data){var item=this.SourceData.Data[_i15];if(aryFixedData[_i15]&&IFrameSplitOperator.IsNumber(aryFixedData[_i15].Value))item.FlowCapital=aryFixedData[_i15].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0)//复权
7396
+ {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;}else{var aryFixedData=this.SourceData.GetFittingFinanceData(aryData);for(var _i14 in this.SourceData.Data){var item=this.SourceData.Data[_i14];if(aryFixedData[_i14]&&IFrameSplitOperator.IsNumber(aryFixedData[_i14].Value))item.FlowCapital=aryFixedData[_i14].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0)//复权
7351
7397
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsDayPeriod(bindData.Period,false))//周期数据
7352
7398
  {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;}}this.FlowCapitalReady=true;var bDraw=false;for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];if(item.ClassName=='StockChip'){bDraw=true;break;}}if(bDraw)this.Draw();};//创建画图工具
7353
7399
  this.CreateChartDrawPicture=function(name,option,callback){var drawPicture=null;var item=IChartDrawPicture.GetDrawPictureByName(name);if(item){drawPicture=item.Create();if(drawPicture.ClassName=='ChartDrawPictureText'||drawPicture.ClassName=="ChartDrawVolProfile")drawPicture.HQChart=this;}if(!drawPicture)//iconfont图标
@@ -7719,17 +7765,17 @@ for(var i=0;i<this.Frame.SubFrame.length;++i){var titlePaint=new DynamicChartTit
7719
7765
  if(bRegisterWheel)this.UIElement.addEventListener("wheel",function(e){_this27.OnWheel(e);},true);//上下滚动消息
7720
7766
  };//创建子窗口
7721
7767
  this.CreateChildWindow=function(windowCount){var _this28=this;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=new MinuteFrame();frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=i;frame.GlobalOption=this.GlobalOption;if(i<2)frame.ChartBorder.TitleHeight=0;frame.XPointCount=243;if(i>=2){if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
7722
- if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;}var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];if(i==0){frame.YSplitOperator=new FrameSplitMinutePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};frame.YSplitOperator.DayOffset=this.DayOffset;frame.YSplitOperator.GlobalOption=this.GlobalOption;frame.YSplitOperator.HQChart=this;}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};if(i==1)frame.YSplitOperator.ShareAfterVol=this.ShareAfterVol;}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitMinuteX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.DayOffset=this.DayOffset;frame.XSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;frame.XSplitOperator.Operator();for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}};this.CreateSubFrameItem=function(id,mainFrame){var _this29=this;var border=new ChartBorder();border.UIElement=this.UIElement;if(mainFrame&&mainFrame.ChartBorder&&mainFrame.ChartBorder.MultiDayMinute){var item=mainFrame.ChartBorder.MultiDayMinute;border.MultiDayMinute.Count=item.Count;border.MultiDayMinute.Left=item.Left;border.MultiDayMinute.Right=item.Right;}var frame=null;if(this.ClassName=="MinuteChartHScreenContainer")frame=new MinuteHScreenFrame();else frame=new MinuteFrame();frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=id;//窗口序号
7768
+ if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;}var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];if(i==0){frame.YSplitOperator=new FrameSplitMinutePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};frame.YSplitOperator.DayOffset=this.DayOffset;frame.YSplitOperator.GlobalOption=this.GlobalOption;frame.YSplitOperator.HQChart=this;}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};if(i==1)frame.YSplitOperator.ShareAfterVol=this.ShareAfterVol;}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitMinuteX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.DayOffset=this.DayOffset;frame.XSplitOperator.GetEventCallback=function(id){return _this28.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;frame.XSplitOperator.Operator();for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}};this.CreateSubFrameItem=function(id,mainFrame){var _this29=this;var border=new ChartBorder();border.UIElement=this.UIElement;if(mainFrame&&mainFrame.ChartBorder&&mainFrame.ChartBorder.MultiDayMinute){var item=mainFrame.ChartBorder.MultiDayMinute;border.MultiDayMinute.Count=item.Count;border.MultiDayMinute.Left=item.Left;border.MultiDayMinute.Right=item.Right;}var frame=null;if(this.ClassName=="MinuteChartHScreenContainer")frame=new MinuteHScreenFrame();else frame=new MinuteFrame();frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=id;//窗口序号
7723
7769
  frame.XPointCount=243;frame.GlobalOption=this.GlobalOption;if(id>=2){if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;//绑定菜单事件
7724
7770
  if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;}var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitMinuteX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.ShowText=false;frame.XSplitOperator.DayOffset=this.DayOffset;frame.XSplitOperator.GetEventCallback=function(id){return _this29.GetEventCallback(id);};frame.YSplitOperator.GetEventCallback=function(id){return _this29.GetEventCallback(id);};frame.XSplitOperator.Symbol=this.Symbol;if(this.DayCount>1){frame.XSplitOperator.DayCount=this.DayData.length;frame.XSplitOperator.DayData=this.DayData;frame.DayCount=this.DayData.length;}//K线数据绑定
7725
- var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};this.AddNewSubFrame=function(option){var _this30=this;var mainFrame=this.Frame.SubFrame[0].Frame;var index=this.Frame.SubFrame.length;var subFrame=this.CreateSubFrameItem(index,mainFrame);var pixelRatio=GetDevicePixelRatio();subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[index]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[index].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this30.GetEventCallback(id);};this.TitlePaint[index+1]=titlePaint;this.SetSubFrameOption(subFrame,option);//最后一个显示X轴坐标
7771
+ var xPointCouont=this.Frame.SubFrame[0].Frame.XPointCount;frame.XPointCount=xPointCouont;frame.Data=this.ChartPaint[0].Data;for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;subFrame.Height=10;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_FRAME);if(event&&event.Callback){var sendData={SubFrame:subFrame,WindowIndex:id};event.Callback(event,sendData,this);}return subFrame;};this.AddNewSubFrame=function(option){var _this30=this;var mainFrame=this.Frame.SubFrame[0].Frame;var index=this.Frame.SubFrame.length;var subFrame=this.CreateSubFrameItem(index,mainFrame);var pixelRatio=GetDevicePixelRatio();subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[index]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[index].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this30.GetEventCallback(id);};this.TitlePaint[index+1]=titlePaint;this.SetSubFrameOption(subFrame,option);//最后一个显示X轴坐标
7726
7772
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}this.UpdataDataoffset();//更新数据偏移
7727
7773
  this.Frame.SetSizeChage(true);if(this.UpdateXShowText)this.UpdateXShowText();this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
7728
7774
  this.Draw();return index;};this.UpdateXShowText=function(){var bLastFrame=true;for(var i=this.Frame.SubFrame.length-1;i>=0;--i){var item=this.Frame.SubFrame[i].Frame;var subFrame=this.Frame.SubFrame[i];if(bLastFrame){item.XSplitOperator.ShowText=true;if(subFrame.Height>0)bLastFrame=false;}else{item.XSplitOperator.ShowText=false;}}};//删除某一个窗口的指标
7729
- this.DeleteIndexPaint=function(windowIndex,bCallDestroy){var paint=new Array();//踢出当前窗口的指标画法
7730
- for(var _i16 in this.ChartPaint){var _item6=this.ChartPaint[_i16];if(_i16==0||_item6.ChartFrame!=this.Frame.SubFrame[windowIndex].Frame){paint.push(_item6);}else{if(bCallDestroy===true){if(_item6&&_item6.OnDestroy)_item6.OnDestroy();//图形销毁
7775
+ this.DeleteIndexPaint=function(windowIndex,bCallDestroy){var subFrame=this.Frame.SubFrame[windowIndex].Frame;if(!subFrame)return;var paint=[];//踢出当前窗口的指标画法
7776
+ for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];var bFind=item.ChartFrame.Guid==subFrame.Guid||item.ChartFrame==subFrame;if(i==0||!bFind){paint.push(item);}else{if(bCallDestroy===true){if(item&&item.OnDestroy)item.OnDestroy();//图形销毁
7731
7777
  }}}//清空指定最大最小值
7732
- var subFrame=this.Frame.SubFrame[windowIndex].Frame;subFrame.YSpecificMaxMin=null;subFrame.IsLocked=false;//解除上锁
7778
+ subFrame.YSpecificMaxMin=null;subFrame.IsLocked=false;//解除上锁
7733
7779
  subFrame.YSplitOperator.SplitType=subFrame.YSplitOperator.DefaultSplitType;//还原Y坐标分割模式
7734
7780
  this.ChartPaint=paint;//清空东条标题
7735
7781
  var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;};this.CreateStockInfo=function(){this.ExtendChartPaint[0]=new StockInfoExtendChartPaint();this.ExtendChartPaint[0].Canvas=this.Canvas;this.ExtendChartPaint[0].ChartBorder=this.Frame.ChartBorder;this.ExtendChartPaint[0].ChartFrame=this.Frame;this.Frame.ChartBorder.Right=300;};//创建主图K线画法
@@ -7834,7 +7880,7 @@ if(this.DayOffset.ShowDayCount==-1)this.DayOffset.ShowDayCount=this.DayData.leng
7834
7880
  if(this.DayOffset.Offset==-8888)this.DayOffset.Offset=this.DayOffset.DayCount-this.DayOffset.ShowDayCount;//最后一页
7835
7881
  var showDayCount=this.DayOffset.ShowDayCount;this.Frame.SetDayCount(showDayCount);}else{this.DayOffset.Offset=0;this.DayOffset.ShowDayCount=this.DayData.length;var showDayCount=this.DayOffset.ShowDayCount;this.Frame.SetDayCount(this.DayData.length);}var upperSymbol=this.Symbol.toUpperCase();var yClose=this.DayData[0].YClose;var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);if(IFrameSplitOperator.IsNumber(this.DayData[0].YClearing)&&isFutures)yClose=this.DayData[0].YClearing;//期货使用前结算价
7836
7882
  this.BindMainData(sourceData,yClose);//外汇 均线暂时不用
7837
- if(MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol))this.ChartPaint[1].Data=null;for(var _i17=0;_i17<this.Frame.SubFrame.length;++_i17){var item=this.Frame.SubFrame[_i17];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=showDayCount;item.Frame.XSplitOperator.DayData=this.DayData;item.Frame.XSplitOperator.Operator();//调整X轴个数
7883
+ if(MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol))this.ChartPaint[1].Data=null;for(var _i15=0;_i15<this.Frame.SubFrame.length;++_i15){var item=this.Frame.SubFrame[_i15];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=showDayCount;item.Frame.XSplitOperator.DayData=this.DayData;item.Frame.XSplitOperator.Operator();//调整X轴个数
7838
7884
  item.Frame.XSplitOperator.IsBeforeData=this.IsBeforeData;item.Frame.XSplitOperator.IsAfterData=this.IsAfterData;item.Frame.YSplitOperator.Symbol=this.Symbol;item.Frame.YSplitOperator.IsBeforeData=this.IsBeforeData;item.Frame.YSplitOperator.IsAfterData=this.IsAfterData;for(var j in item.OverlayIndex)//子坐标X轴个数同步
7839
7885
  {var overlayItem=item.OverlayIndex[j];overlayItem.Frame.XPointCount=item.Frame.XPointCount;overlayItem.Frame.MinuteCount=item.Frame.MinuteCount;}}this.ChartCorssCursor.StringFormatY.Symbol=this.Symbol;this.ChartCorssCursor.StringFormatX.Symbol=this.Symbol;this.ChartCorssCursor.StringFormatX.IsBeforeData=this.IsBeforeData;this.ChartCorssCursor.StringFormatX.IsAfterData=this.IsAfterData;this.TitlePaint[0].IsShowDate=true;this.UpdateDataOffset();this.UpdateFrameMaxMin();//调整坐标最大 最小值
7840
7886
  //执行脚本
@@ -7860,7 +7906,7 @@ this.UpdateLatestMinuteDataV2(minuteData);var sourceData=this.SourceData;var ary
7860
7906
  this.SourceData.UpdateTime=updateTime;this.Symbol=minuteData.Symbol;this.Name=minuteData.Name;this.SetCallCationDataBorder({Left:this.IsBeforeData,Right:this.IsAfterData,MultiDay:{Left:false,Right:false}});if(this.ShareAfterVol==2)//盘前, 盘后成交量公用坐标
7861
7907
  {if(this.BeforeOpenData&&this.AfterCloseData){var max=Math.max(this.BeforeOpenData.VolMax,this.AfterCloseData.VolMax);var min=Math.min(this.BeforeOpenData.VolMin,this.AfterCloseData.VolMin);this.BeforeOpenData.VolMax=this.AfterCloseData.VolMax=max;this.BeforeOpenData.VolMin=this.AfterCloseData.VolMin=min;}}var yClose=minuteData.YClose;var upperSymbol=this.Symbol.toUpperCase();var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);if(minuteData.YClearing>0&&isFutures)yClose=minuteData.YClearing;//期货使用前结算价
7862
7908
  this.CaclutateLimitPrice(yClose,minuteData.LimitPrice);//计算涨停价格
7863
- var extendData=null;if(minuteData.High>0&&minuteData.Low>0)extendData={High:minuteData.High,Low:minuteData.Low};this.BindMainData(sourceData,yClose,extendData);if(this.Frame.SubFrame.length>2){var bindData=new ChartData();bindData.Data=aryMinuteData;for(var i=2;i<this.Frame.SubFrame.length;++i){this.BindIndexData(i,bindData);}}for(var _i18=0;_i18<this.Frame.SubFrame.length;++_i18){var item=this.Frame.SubFrame[_i18];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=1;item.Frame.XSplitOperator.Operator();//调整X轴个数
7909
+ var extendData=null;if(minuteData.High>0&&minuteData.Low>0)extendData={High:minuteData.High,Low:minuteData.Low};this.BindMainData(sourceData,yClose,extendData);if(this.Frame.SubFrame.length>2){var bindData=new ChartData();bindData.Data=aryMinuteData;for(var i=2;i<this.Frame.SubFrame.length;++i){this.BindIndexData(i,bindData);}}for(var _i16=0;_i16<this.Frame.SubFrame.length;++_i16){var item=this.Frame.SubFrame[_i16];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=1;item.Frame.XSplitOperator.Operator();//调整X轴个数
7864
7910
  item.Frame.YSplitOperator.Symbol=this.Symbol;if(IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)){for(var j=0;j<item.OverlayIndex.length;++j)//子坐标X轴个数同步
7865
7911
  {var overlayItem=item.OverlayIndex[j];overlayItem.Frame.XPointCount=item.Frame.XPointCount;overlayItem.Frame.MinuteCount=item.Frame.MinuteCount;}}}this.ChartCorssCursor.StringFormatY.Symbol=this.Symbol;this.ChartCorssCursor.StringFormatX.Symbol=this.Symbol;if(MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))this.TitlePaint[0].IsShowDate=false;if(data.stock[0].IsHistoryMinute==true)this.TitlePaint[0].IsShowDate=true;var chartInfo=this.GetChartMinuteInfo();if(chartInfo)chartInfo.SourceData=this.SourceData;//数据绑定到信息地雷上
7866
7912
  this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"});this.RequestMinuteInfoData();this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
@@ -7875,7 +7921,7 @@ var sourceData=new ChartData();sourceData.Data=aryMinuteData;sourceData.UpdateTi
7875
7921
  this.SourceData=sourceData;this.Symbol=data.stock[0].symbol;this.Name=data.stock[0].name;this.SetCallCationDataBorder({Left:this.IsBeforeData,Right:this.IsAfterData,MultiDay:{Left:false,Right:false}});if(this.ShareAfterVol==2)//盘前, 盘后成交量公用坐标
7876
7922
  {if(this.BeforeOpenData&&this.AfterCloseData){var max=Math.max(this.BeforeOpenData.VolMax,this.AfterCloseData.VolMax);var min=Math.min(this.BeforeOpenData.VolMin,this.AfterCloseData.VolMin);this.BeforeOpenData.VolMax=this.AfterCloseData.VolMax=max;this.BeforeOpenData.VolMin=this.AfterCloseData.VolMin=min;}}var yClose=data.stock[0].yclose;var upperSymbol=this.Symbol.toUpperCase();var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);if(data.stock[0].yclearing>0&&isFutures)yClose=data.stock[0].yclearing;//期货使用前结算价
7877
7923
  this.CaclutateLimitPrice(yClose,data.stock[0].limitprice);//计算涨停价格
7878
- var extendData=null;if(data.stock[0].high>0&&data.stock[0].low>0)extendData={High:data.stock[0].high,Low:data.stock[0].low};this.BindMainData(sourceData,yClose,extendData);if(this.Frame.SubFrame.length>2){var bindData=new ChartData();bindData.Data=aryMinuteData;for(var i=2;i<this.Frame.SubFrame.length;++i){this.BindIndexData(i,bindData);}}for(var _i19 in this.Frame.SubFrame){var item=this.Frame.SubFrame[_i19];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=1;item.Frame.XSplitOperator.Operator();//调整X轴个数
7924
+ var extendData=null;if(data.stock[0].high>0&&data.stock[0].low>0)extendData={High:data.stock[0].high,Low:data.stock[0].low};this.BindMainData(sourceData,yClose,extendData);if(this.Frame.SubFrame.length>2){var bindData=new ChartData();bindData.Data=aryMinuteData;for(var i=2;i<this.Frame.SubFrame.length;++i){this.BindIndexData(i,bindData);}}for(var _i17 in this.Frame.SubFrame){var item=this.Frame.SubFrame[_i17];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=1;item.Frame.XSplitOperator.Operator();//调整X轴个数
7879
7925
  item.Frame.YSplitOperator.Symbol=this.Symbol;for(var j in item.OverlayIndex)//子坐标X轴个数同步
7880
7926
  {var overlayItem=item.OverlayIndex[j];overlayItem.Frame.XPointCount=item.Frame.XPointCount;overlayItem.Frame.MinuteCount=item.Frame.MinuteCount;}}this.ChartCorssCursor.StringFormatY.Symbol=this.Symbol;this.ChartCorssCursor.StringFormatX.Symbol=this.Symbol;if(MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))this.TitlePaint[0].IsShowDate=false;if(data.stock[0].IsHistoryMinute==true)this.TitlePaint[0].IsShowDate=true;var chartInfo=this.GetChartMinuteInfo();if(chartInfo)chartInfo.SourceData=this.SourceData;//数据绑定到信息地雷上
7881
7927
  this.RecvMinuteDataEvent({FunctionName:"RecvMinuteData"});this.RequestMinuteInfoData();this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
@@ -7892,7 +7938,7 @@ Explain:'叠加股票最新分时数据',Request:{Url:this.HistoryMinuteApiUrl,D
7892
7938
  JSNetwork.HttpRequest({url:this.HistoryMinuteApiUrl,data:{"symbol":symbol,"days":[date]},type:"post",dataType:"json",async:true,success:function success(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;//self.RecvMultiOverlayMinuteData([data]);
7893
7939
  self.RecvOverlayMinuteData(data,item);}});};//请求叠加数据 (主数据下载完再下载))
7894
7940
  this.RequestOverlayMinuteData=function(){var self=this;var date=this.TradeDate;//最后一个交易日期
7895
- for(var i=0;i<this.OverlayChartPaint.length;++i){var _item7=this.OverlayChartPaint[i];if(!_item7.MainData)continue;if(_item7.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)continue;var symbol=_item7.Symbol;if(!symbol)continue;this.RequestSingleOverlayMinuteData(symbol,date,_item7);/*
7941
+ for(var i=0;i<this.OverlayChartPaint.length;++i){var _item5=this.OverlayChartPaint[i];if(!_item5.MainData)continue;if(_item5.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)continue;var symbol=_item5.Symbol;if(!symbol)continue;this.RequestSingleOverlayMinuteData(symbol,date,_item5);/*
7896
7942
  item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;
7897
7943
 
7898
7944
  if (this.NetworkFilter)
@@ -8211,14 +8257,14 @@ var pageSize=this.Frame.GetCurrentPageSize();if(IFrameSplitOperator.IsNumber(pag
8211
8257
  if(!this.mapEvent.has(JSCHART_EVENT_ID.RECV_TRAIN_MOVE_STEP))return;var item=this.mapEvent.get(JSCHART_EVENT_ID.RECV_TRAIN_MOVE_STEP);if(!item.Callback)return;var data={TrainDataCount:this.TrainDataCount,BuySellData:this.BuySellData,KLine:{Start:{Index:this.TrainInfo.Start.Index,Date:this.TrainInfo.Start.Date},End:{Index:this.TrainInfo.End.Index,Date:this.TrainInfo.End.Date}},LastData:this.TrainInfo.LastData,LastShowData:this.TrainInfo.LastShowData};if(IFrameSplitOperator.IsNumber(this.TrainInfo.Start.Time))data.KLine.Start.Time=this.TrainInfo.Start.Time;if(IFrameSplitOperator.IsNumber(this.TrainInfo.End.Time))data.KLine.End.Time=this.TrainInfo.End.Time;if(description)data.Description=description;if(this.TrainDataCount<=0){data.Symbol=this.Symbol;data.Name=this.Name;}item.Callback(item,data,this);};this.FinishTrainData=function(){JSConsole.Chart.Log('[KLineTrainChartContainer::FinishTrainData] trian end ');};this.Stop=function(){if(this.AutoRunTimer!=null)clearInterval(this.AutoRunTimer);this.AutoRunTimer=null;};this.BuyOrSell=function(obj,bDraw)//{ Price:价格, Vol:数量, Op: 买/卖 0=buy 1=sell, ID:单号 } bDraw是否立即绘制图标
8212
8258
  {var kItem=this.TrainInfo.LastShowData;if(!kItem)return false;var buySellPaint=this.ChartPaintEx[0];if(!buySellPaint)return false;var hisData=this.ChartPaint[0].Data;if(!hisData||hisData.Data.length<=0)return false;var index=hisData.Data.length-1;//数据索引
8213
8259
  var buyItem={Date:this.TrainInfo.End.Date,Time:this.TrainInfo.End.Time,Price:obj.Price,Vol:obj.Vol,Op:0,ID:obj.ID};if(obj.Op==1)buyItem.Op=1;var key=index;buyItem.Key=key;this.BuySellData.push(buyItem);buySellPaint.AddTradeItem(buyItem);if(bDraw==true)this.Draw();};this.RestartTrain=function(option)// { Symbol:, Period:周期, Right:复权, Train:{ DataCount:, DateTime: } }
8214
- {JSConsole.Chart.Log('[KLineTrainChartContainer::RestartTrain] option ',option);this.TrainInfo={Start:{},End:{}};this.BuySellData=[];this.KLineSourceData=null;var buySellPaint=this.ChartPaintEx[0];if(buySellPaint){buySellPaint.Data=null;buySellPaint.ClearTradeData();}if(option.Symbol)this.Symbol=option.Symbol;if(IFrameSplitOperator.IsNumber(option.Period))this.Period=option.Period;if(IFrameSplitOperator.IsNumber(option.Right))this.Right=option.Right;if(option.Train){if(option.Train.DataCount>1)this.TrainDataCount=option.Train.DataCount;if(option.Train.DateTime)this.TrainStartDate=option.Train.DateTime;}var symbol=this.Symbol;this.ChangeSymbol(symbol);};this.RecvFlowCapitalData=function(data){if(!data.stock||data.stock.length!=1)return;var stock=data.stock[0];var aryData=new Array();for(var _i20 in stock.stockday){var item=stock.stockday[_i20];var indexData=new SingleData();indexData.Date=item.date;var financeData=item.capital;if(!financeData)continue;if(financeData.a>0){indexData.Value=financeData.a;//流通股本(股)
8260
+ {JSConsole.Chart.Log('[KLineTrainChartContainer::RestartTrain] option ',option);this.TrainInfo={Start:{},End:{}};this.BuySellData=[];this.KLineSourceData=null;var buySellPaint=this.ChartPaintEx[0];if(buySellPaint){buySellPaint.Data=null;buySellPaint.ClearTradeData();}if(option.Symbol)this.Symbol=option.Symbol;if(IFrameSplitOperator.IsNumber(option.Period))this.Period=option.Period;if(IFrameSplitOperator.IsNumber(option.Right))this.Right=option.Right;if(option.Train){if(option.Train.DataCount>1)this.TrainDataCount=option.Train.DataCount;if(option.Train.DateTime)this.TrainStartDate=option.Train.DateTime;}var symbol=this.Symbol;this.ChangeSymbol(symbol);};this.RecvFlowCapitalData=function(data){if(!data.stock||data.stock.length!=1)return;var stock=data.stock[0];var aryData=new Array();for(var _i18 in stock.stockday){var item=stock.stockday[_i18];var indexData=new SingleData();indexData.Date=item.date;var financeData=item.capital;if(!financeData)continue;if(financeData.a>0){indexData.Value=financeData.a;//流通股本(股)
8215
8261
  aryData.push(indexData);}}if(ChartData.IsMinutePeriod(this.Period,true))//分钟数据
8216
- {var aryFixedData=this.SourceData.GetMinuteFittingFinanceData(aryData);for(var _i21 in this.SourceData.Data){var item=this.SourceData.Data[_i21];if(!aryFixedData[_i21])continue;item.FlowCapital=aryFixedData[_i21].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(ChartData.IsMinutePeriod(bindData.Period,false))//周期数据
8262
+ {var aryFixedData=this.SourceData.GetMinuteFittingFinanceData(aryData);for(var _i19 in this.SourceData.Data){var item=this.SourceData.Data[_i19];if(!aryFixedData[_i19])continue;item.FlowCapital=aryFixedData[_i19].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(ChartData.IsMinutePeriod(bindData.Period,false))//周期数据
8217
8263
  {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;var aryFixedData=this.KLineSourceData.GetMinuteFittingFinanceData(aryData);//数据添加到备份数据中
8218
- for(var _i22 in this.KLineSourceData.Data){var item=this.KLineSourceData.Data[_i22];if(!aryFixedData[_i22])continue;item.FlowCapital=aryFixedData[_i22].Value;}}else{var aryFixedData=this.SourceData.GetFittingFinanceData(aryData);for(var _i23 in this.SourceData.Data){var item=this.SourceData.Data[_i23];if(!aryFixedData[_i23])continue;item.FlowCapital=aryFixedData[_i23].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0)//复权
8264
+ for(var _i20 in this.KLineSourceData.Data){var item=this.KLineSourceData.Data[_i20];if(!aryFixedData[_i20])continue;item.FlowCapital=aryFixedData[_i20].Value;}}else{var aryFixedData=this.SourceData.GetFittingFinanceData(aryData);for(var _i21 in this.SourceData.Data){var item=this.SourceData.Data[_i21];if(!aryFixedData[_i21])continue;item.FlowCapital=aryFixedData[_i21].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0)//复权
8219
8265
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsDayPeriod(bindData.Period,false))//周期数据
8220
8266
  {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;var aryFixedData=this.KLineSourceData.GetFittingFinanceData(aryData);//数据添加到备份数据中
8221
- for(var _i24 in this.KLineSourceData.Data){var item=this.KLineSourceData.Data[_i24];if(!aryFixedData[_i24])continue;item.FlowCapital=aryFixedData[_i24].Value;}}this.FlowCapitalReady=true;var bDraw=false;for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];if(item.ClassName=='StockChip'){bDraw=true;break;}}if(bDraw)this.Draw();};this.AutoUpdate();{}}function KLineTrainSimpleChartContainer(uielement,bHScreen){this.newMethod=KLineTrainChartContainer;//派生
8267
+ for(var _i22 in this.KLineSourceData.Data){var item=this.KLineSourceData.Data[_i22];if(!aryFixedData[_i22])continue;item.FlowCapital=aryFixedData[_i22].Value;}}this.FlowCapitalReady=true;var bDraw=false;for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];if(item.ClassName=='StockChip'){bDraw=true;break;}}if(bDraw)this.Draw();};this.AutoUpdate();{}}function KLineTrainSimpleChartContainer(uielement,bHScreen){this.newMethod=KLineTrainChartContainer;//派生
8222
8268
  this.newMethod(uielement,bHScreen);delete this.newMethod;this.IsHScreen=bHScreen;this.IsZoomLockRight=true;this.RightSpaceCount=0;this.RecvFlowCapitalData=function(data){this.Super_RecvFlowCapitalData(data);};this.BeforeBindMainData=function(funcName){};this.UpdateLastDataIcon=function(){if(!this.ChartPaintEx[0])return;var chart=this.ChartPaintEx[0];chart.LastDataIndex=this.TrainInfo.End.Index;};this.AfterBindMainData=function(funcName){if(!this.ChartPaintEx[0]){this.CreateBuySellPaint();this.ChartPaintEx[0].LastDataDrawType=1;}if(funcName!="Update"){var hisData=this.ChartOperator_Temp_GetHistroyData();if(!hisData)return false;var count=hisData.Data.length;var lEnd=count-this.TrainDataCount-20;var xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;var findIndex=this.GetKDataIndexByDateTime(hisData.Data,this.TrainStartDate);if(findIndex>=0){lEnd=findIndex+1;if(count-lEnd<this.TrainDataCount)this.TrainDataCount=count-lEnd;}var xOffset=lEnd-xPointcount;hisData.DataOffset=xOffset;var index=lEnd-1;var kItem=hisData.Data[index];//最后一个显示数据
8223
8269
  this.TrainInfo.LastShowData=kItem;this.TrainInfo.LastData=kItem;//训练起始日期
8224
8270
  this.TrainInfo.Start.Index=index;this.TrainInfo.Start.Date=kItem.Date;this.TrainInfo.Start.Time=kItem.Time;//训练结束日期
@@ -8279,7 +8325,7 @@ if(this.ModifyIndexDialog)frame.ModifyIndexEvent=this.ModifyIndexDialog.DoModal;
8279
8325
  if(this.ChangeIndexDialog)frame.ChangeIndexEvent=this.ChangeIndexDialog.DoModal;frame.HorizontalMax=20;frame.HorizontalMin=10;if(i==0){frame.YSplitOperator=new FrameSplitKLinePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.FrameSplitData2=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this37.GetEventCallback(id);};//主图上下间距
8280
8326
  var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
8281
8327
  border.TopSpace=12*pixelTatio;border.BottomSpace=12*pixelTatio;}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');//frame.IsLocked = true;
8282
- }frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.GetEventCallback=function(id){return _this37.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;}};}////////////////////////////////////////////////////////////////////////////////
8328
+ }frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitKLineX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.GetEventCallback=function(id){return _this37.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;for(var j=frame.HorizontalMin;j<=frame.HorizontalMax;j+=1){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=j;if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=j.toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;}};}////////////////////////////////////////////////////////////////////////////////
8283
8329
  // 走势图横屏显示
8284
8330
  //
8285
8331
  function MinuteChartHScreenContainer(uielement){this.newMethod=MinuteChartContainer;//派生
@@ -8292,7 +8338,7 @@ this.Frame=new HQTradeHScreenFrame();this.Frame.ChartBorder=new ChartBorder();th
8292
8338
  this.ChartSplashPaint.Frame=this.Frame;this.CreateChildWindow(windowCount);this.CreateMainKLine();//子窗口动态标题
8293
8339
  for(var i in this.Frame.SubFrame){var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this38.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint.push(titlePaint);}this.ChartCorssCursor.StringFormatX.Frame=this.Frame.SubFrame[0].Frame;this.ChartCorssCursor.StringFormatY.Frame=this.Frame;this.ChartCorssCursor.CallAcutionXOperator.Frame=this.Frame.SubFrame[0].Frame;this.UIElement.addEventListener("keydown",OnKeyDown,true);//键盘消息
8294
8340
  };//创建子窗口
8295
- this.CreateChildWindow=function(windowCount){var _this39=this;for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=new MinuteHScreenFrame();frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=i;if(i<2)frame.ChartBorder.TitleHeight=0;frame.XPointCount=243;var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];if(i==0){frame.YSplitOperator=new FrameSplitMinutePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.GetEventCallback=function(id){return _this39.GetEventCallback(id);};frame.YSplitOperator.DayOffset=this.DayOffset;frame.YSplitOperator.HQChart=this;}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this39.GetEventCallback(id);};}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitMinuteX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.DayOffset=this.DayOffset;frame.XSplitOperator.GetEventCallback=function(id){return _this39.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;frame.XSplitOperator.Operator();for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;}};}/////////////////////////////////////////////////////////////////////////////////
8341
+ this.CreateChildWindow=function(windowCount){var _this39=this;for(var i=0;i<windowCount;++i){var border=new ChartBorder();border.UIElement=this.UIElement;var frame=new MinuteHScreenFrame();frame.Canvas=this.Canvas;frame.ChartBorder=border;frame.Identify=i;if(i<2)frame.ChartBorder.TitleHeight=0;frame.XPointCount=243;var DEFAULT_HORIZONTAL=[9,8,7,6,5,4,3,2,1];frame.HorizontalMax=DEFAULT_HORIZONTAL[0];frame.HorizontalMin=DEFAULT_HORIZONTAL[DEFAULT_HORIZONTAL.length-1];if(i==0){frame.YSplitOperator=new FrameSplitMinutePriceY();frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('price');frame.YSplitOperator.GetEventCallback=function(id){return _this39.GetEventCallback(id);};frame.YSplitOperator.DayOffset=this.DayOffset;frame.YSplitOperator.HQChart=this;}else{frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.GetEventCallback=function(id){return _this39.GetEventCallback(id);};}frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=border;frame.XSplitOperator=new FrameSplitMinuteX();frame.XSplitOperator.Frame=frame;frame.XSplitOperator.ChartBorder=border;frame.XSplitOperator.DayOffset=this.DayOffset;frame.XSplitOperator.GetEventCallback=function(id){return _this39.GetEventCallback(id);};if(i!=windowCount-1)frame.XSplitOperator.ShowText=false;frame.XSplitOperator.Operator();for(var j in DEFAULT_HORIZONTAL){frame.HorizontalInfo[j]=new CoordinateInfo();frame.HorizontalInfo[j].Value=DEFAULT_HORIZONTAL[j];if(i==0&&j==frame.HorizontalMin)continue;frame.HorizontalInfo[j].Message[1]=DEFAULT_HORIZONTAL[j].toString();frame.HorizontalInfo[j].Font="14px 微软雅黑";}var subFrame=new SubFrameItem();frame.FrameData.SubFrameItem=subFrame;subFrame.Frame=frame;if(i==0)subFrame.Height=20;else subFrame.Height=10;this.Frame.SubFrame[i]=subFrame;}};}/////////////////////////////////////////////////////////////////////////////////
8296
8342
  // 深度图
8297
8343
  //
8298
8344
  function DepthChartContainer(uielement){this.newMethod=JSChartContainer;//派生
@@ -8401,7 +8447,7 @@ this.newMethod(name);delete this.newMethod;this.Script=script;//脚本
8401
8447
  this.Arguments=[];//参数
8402
8448
  this.OutVar=[];//输出数据
8403
8449
  this.ApiUrl=g_JSChartResource.PyIndexDomain+'/hq/code';if(args)this.Arguments=args;this.RequestData=function(hqChart,windowIndex,hisData){this.OutVar=[];var self=this;var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData};//参数
8404
- var strParam='';for(var _i25 in this.Arguments){if(strParam.length>0)strParam+=',';var item=this.Arguments[_i25];strParam+='"'+item.Name+'"'+':'+item.Value;}strParam='{'+strParam+'}';var indexParam=JSON.parse(strParam);var data=(0,_stringify2.default)({code:this.Script,//脚本
8450
+ var strParam='';for(var _i23 in this.Arguments){if(strParam.length>0)strParam+=',';var item=this.Arguments[_i23];strParam+='"'+item.Name+'"'+':'+item.Value;}strParam='{'+strParam+'}';var indexParam=JSON.parse(strParam);var data=(0,_stringify2.default)({code:this.Script,//脚本
8405
8451
  symbol:param.HQChart.Symbol,//股票代码
8406
8452
  period:param.HQChart.Period,//周期 0=日线 1=周线 2=月线 3=年线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟
8407
8453
  right:param.HQChart.Right,//复权 0 不复权 1 前复权 2 后复权
@@ -8417,10 +8463,10 @@ var indexInfo={Name:item.name,Type:item.graph,LineWidth:item.width,Data:bindData
8417
8463
  param.HQChart.UpdataDataoffset();//更新数据偏移
8418
8464
  param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8419
8465
  param.HQChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){hqChart.DeleteIndexPaint(windowIndex);//清空指标图形
8420
- for(var _i26 in this.OutVar){var _item8=this.OutVar[_i26];switch(_item8.Type){case'line':this.CreateLine(hqChart,windowIndex,_item8,_i26);break;case'colorstick'://上下柱子
8421
- this.CreateColorStock(hqChart,windowIndex,_item8,_i26);break;}}var titleIndex=windowIndex+1;hqChart.TitlePaint[titleIndex].Title=this.Name;//这是指标名称
8466
+ for(var _i24 in this.OutVar){var _item6=this.OutVar[_i24];switch(_item6.Type){case'line':this.CreateLine(hqChart,windowIndex,_item6,_i24);break;case'colorstick'://上下柱子
8467
+ this.CreateColorStock(hqChart,windowIndex,_item6,_i24);break;}}var titleIndex=windowIndex+1;hqChart.TitlePaint[titleIndex].Title=this.Name;//这是指标名称
8422
8468
  var indexParam='';//指标参数
8423
- for(var _i27 in this.Arguments){var _item9=this.Arguments[_i27];if(indexParam.length>0)indexParam+=',';indexParam+=_item9.Value.toString();}if(indexParam.length>0)hqChart.TitlePaint[titleIndex].Title=this.Name+'('+indexParam+')';return true;};this.CreateLine=function(hqChart,windowIndex,varItem,id){var line=new ChartLine();line.Canvas=hqChart.Canvas;line.DrawType=1;line.Name=varItem.Name;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)line.Color=varItem.Color;else line.Color=this.GetDefaultColor(id);if(varItem.LineWidth>0)line.LineWidth=varItem.LineWidth;if(varItem.IsShow==false)line.IsShow=false;var titleIndex=windowIndex+1;line.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);hqChart.ChartPaint.push(line);};this.CreateColorStock=function(hqChart,windowIndex,varItem,id){var chart=new ChartMACD();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chart.Data,varItem.Name,this.GetDefaultColor(id));hqChart.ChartPaint.push(chart);};//给一个默认的颜色
8469
+ for(var _i25 in this.Arguments){var _item7=this.Arguments[_i25];if(indexParam.length>0)indexParam+=',';indexParam+=_item7.Value.toString();}if(indexParam.length>0)hqChart.TitlePaint[titleIndex].Title=this.Name+'('+indexParam+')';return true;};this.CreateLine=function(hqChart,windowIndex,varItem,id){var line=new ChartLine();line.Canvas=hqChart.Canvas;line.DrawType=1;line.Name=varItem.Name;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)line.Color=varItem.Color;else line.Color=this.GetDefaultColor(id);if(varItem.LineWidth>0)line.LineWidth=varItem.LineWidth;if(varItem.IsShow==false)line.IsShow=false;var titleIndex=windowIndex+1;line.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);hqChart.ChartPaint.push(line);};this.CreateColorStock=function(hqChart,windowIndex,varItem,id){var chart=new ChartMACD();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chart.Data,varItem.Name,this.GetDefaultColor(id));hqChart.ChartPaint.push(chart);};//给一个默认的颜色
8424
8470
  this.GetDefaultColor=function(id){var COLOR_ARRAY=["rgb(255,174,0)","rgb(25,199,255)","rgb(175,95,162)","rgb(236,105,65)","rgb(68,114,196)","rgb(229,0,79)","rgb(0,128,255)","rgb(252,96,154)","rgb(42,230,215)","rgb(24,71,178)"];var number=parseInt(id);return COLOR_ARRAY[number%(COLOR_ARRAY.length-1)];};}/*
8425
8471
  json格式数据指标 用来显示本地数据
8426
8472
  */function JsonDataIndex(name,script,args,option){this.newMethod=PyScriptIndex;//派生
@@ -8673,8 +8719,8 @@ this.Dialog;this.HQChart;this.PageData;//分页数据
8673
8719
  //隐藏窗口
8674
8720
  this.Close=function(){this.DivElement.removeChild(this.Dialog);};//创建
8675
8721
  this.Create=function(){this.ID=Guid();var div=document.createElement('div');div.className='jchart-kline-match-box';div.id=this.ID;div.innerHTML='<div class=\'parameter jchart-kline-match-box\'>\n <div class=\'parameter-header\'>\n <span>\u5F62\u6001\u5339\u914D</span>\n <strong id=\'close\' class=\'icon iconfont icon-close\'></strong>\n </div>\n <div class=\'parameter-content\'>\n <p class=\'dataCount\'></p>\n <table class=\'matchTable\'>\n <thead>\n <tr>\n <td>\u80A1\u7968\u540D\u79F0</td>\n <td>\u5339\u914D\u5EA6</td>\n <td>\u65F6\u95F4\u6BB5</td>\n </tr>\n </thead>\n <tbody>\n </tbody>\n </table>\n <div class=\'pagination\' data-current=\'1\'></div>\n </div>\n <div class=\'parameter-footer\'>\n <button id=\'close\' class=\'submit\' >\u786E\u5B9A</button>\n </div>\n </div>'.trim();this.DivElement.appendChild(div);this.Dialog=div;//关闭按钮
8676
- (0,_jquery2.default)("#"+this.ID+" #close").click({divBox:this},function(event){event.data.divBox.Close();});};this.BindData=function(){JSConsole.Chart.Log('[KLineMatchDialog::BindData] \u5F62\u6001\u6E90: '+this.Sample.Stock.Name+' \u533A\u95F4:'+this.Sample.Date.Start+' - '+this.Sample.Date.End);var count=this.MatchData.length+1;var pageData={NewData:{},MetaData:[],PageCount:0,Count:count};var pageCount=0;var paginationHtml='';(0,_jquery2.default)('#'+this.ID+' .dataCount').html('个数:'+count);for(var _i28=0;_i28<count;_i28++){var dataObj={};if(_i28==0){dataObj={Symbol:this.Sample.Stock.Symbol,Name:this.Sample.Stock.Name,Rate:'形态源',Color:'red',Date:this.Sample.Date.Start+'-'+this.Sample.Date.End};}else{var dataItem=this.MatchData[_i28-1];dataObj={Symbol:dataItem.Symbol,Name:dataItem.Name,Rate:Number(dataItem.Similar*100).toFixed(2),Color:'',Date:dataItem.Start+'-'+dataItem.End};}pageData.MetaData.push(dataObj);}if(pageData.Count%10==0){pageCount=pageData.Count/10;}else{pageCount=Math.floor(pageData.Count/10)+1;}pageData.PageCount=pageCount;this.PaginationMetaData(pageData);this.PageData=pageData;JSConsole.Chart.Log('[KLineMatchDialog::DoModal pageData]',pageData);this.RenderDom(1);this.PaginationInit('#'+this.ID,pageData.PageCount,this.paginationCallback);// $('#' + this.ID + ' .pagination').html(paginationHtml);
8677
- };this.RenderDom=function(page){var currentPageData=this.PageData.NewData[page];JSConsole.Chart.Log('[KLineMatchDialog::RenderDom currentPageData]',currentPageData);var bodyHtml='';for(var _i29=0;_i29<currentPageData.length;_i29++){bodyHtml+=('<tr>\n <td class='+currentPageData[_i29].Color+'>'+currentPageData[_i29].Name+'</td>\n <td class='+currentPageData[_i29].Color+'>'+currentPageData[_i29].Rate+'</td>\n <td class='+currentPageData[_i29].Color+'>'+currentPageData[_i29].Date+'</td>\n </tr>').trim();}(0,_jquery2.default)('#'+this.ID+' .matchTable tbody').html(bodyHtml);};var _this=this;this.paginationCallback=function(page){_this.RenderDom(page);_this.PaginationInit('#'+_this.ID,_this.PageData.PageCount,_this.paginationCallback);//更新UI
8722
+ (0,_jquery2.default)("#"+this.ID+" #close").click({divBox:this},function(event){event.data.divBox.Close();});};this.BindData=function(){JSConsole.Chart.Log('[KLineMatchDialog::BindData] \u5F62\u6001\u6E90: '+this.Sample.Stock.Name+' \u533A\u95F4:'+this.Sample.Date.Start+' - '+this.Sample.Date.End);var count=this.MatchData.length+1;var pageData={NewData:{},MetaData:[],PageCount:0,Count:count};var pageCount=0;var paginationHtml='';(0,_jquery2.default)('#'+this.ID+' .dataCount').html('个数:'+count);for(var _i26=0;_i26<count;_i26++){var dataObj={};if(_i26==0){dataObj={Symbol:this.Sample.Stock.Symbol,Name:this.Sample.Stock.Name,Rate:'形态源',Color:'red',Date:this.Sample.Date.Start+'-'+this.Sample.Date.End};}else{var dataItem=this.MatchData[_i26-1];dataObj={Symbol:dataItem.Symbol,Name:dataItem.Name,Rate:Number(dataItem.Similar*100).toFixed(2),Color:'',Date:dataItem.Start+'-'+dataItem.End};}pageData.MetaData.push(dataObj);}if(pageData.Count%10==0){pageCount=pageData.Count/10;}else{pageCount=Math.floor(pageData.Count/10)+1;}pageData.PageCount=pageCount;this.PaginationMetaData(pageData);this.PageData=pageData;JSConsole.Chart.Log('[KLineMatchDialog::DoModal pageData]',pageData);this.RenderDom(1);this.PaginationInit('#'+this.ID,pageData.PageCount,this.paginationCallback);// $('#' + this.ID + ' .pagination').html(paginationHtml);
8723
+ };this.RenderDom=function(page){var currentPageData=this.PageData.NewData[page];JSConsole.Chart.Log('[KLineMatchDialog::RenderDom currentPageData]',currentPageData);var bodyHtml='';for(var _i27=0;_i27<currentPageData.length;_i27++){bodyHtml+=('<tr>\n <td class='+currentPageData[_i27].Color+'>'+currentPageData[_i27].Name+'</td>\n <td class='+currentPageData[_i27].Color+'>'+currentPageData[_i27].Rate+'</td>\n <td class='+currentPageData[_i27].Color+'>'+currentPageData[_i27].Date+'</td>\n </tr>').trim();}(0,_jquery2.default)('#'+this.ID+' .matchTable tbody').html(bodyHtml);};var _this=this;this.paginationCallback=function(page){_this.RenderDom(page);_this.PaginationInit('#'+_this.ID,_this.PageData.PageCount,_this.paginationCallback);//更新UI
8678
8724
  };this.PaginationInit=function(id,maxPageNum,callback){//初始化分页
8679
8725
  var spanStr="";var currentPageNum=(0,_jquery2.default)(id+" .pagination").data("current");var lastPageNum=0;var showCountPage=5;//只显示5个数字项
8680
8726
  if(currentPageNum<showCountPage){//当前页小于预显示页数
@@ -8687,7 +8733,7 @@ spanStr+=i!=currentPageNum?"<span>"+i+"</span>":"<span class='active'>"+i+"</spa
8687
8733
  var text=(0,_jquery2.default)(this).text();JSConsole.Chart.Log('[::PaginationCurrentIndex text]',text);var currentPageNum=Number((0,_jquery2.default)(this).parent().data("current"));var maxPageNum=event.data.maxpage;var callback=event.data.Callback;var flag=1;if(text==="上一页"){flag=currentPageNum===1?currentPageNum:currentPageNum-1;}else if(text==="下一页"){flag=currentPageNum===maxPageNum?currentPageNum:currentPageNum+1;}else{flag=Number(text);}(0,_jquery2.default)(this).parent().data("current",flag);//将当前页存到dom上
8688
8734
  callback(flag);};this.PaginationMetaData=function(data){//假分页数据,每页10条数据
8689
8735
  // data = {NewData:{},MetaData:[],PageCount:0,Callback:null};
8690
- var newData={};var metaData=data.MetaData;var pageCount=data.PageCount;for(var _i30=0;_i30<pageCount;_i30++){var itemArr=[];for(var _j=0;_j<10;_j++){var itemIndex=10*_i30+_j;if(itemIndex<=metaData.length-1){var item=metaData[itemIndex];itemArr.push(item);}else{break;}}newData[_i30+1]=itemArr;}data.NewData=newData;};//显示
8736
+ var newData={};var metaData=data.MetaData;var pageCount=data.PageCount;for(var _i28=0;_i28<pageCount;_i28++){var itemArr=[];for(var _j=0;_j<10;_j++){var itemIndex=10*_i28+_j;if(itemIndex<=metaData.length-1){var item=metaData[itemIndex];itemArr.push(item);}else{break;}}newData[_i28+1]=itemArr;}data.NewData=newData;};//显示
8691
8737
  this.DoModal=function(event){var chart=event.data.Chart;if(this.ID==null)this.Create();//第1次 需要创建div
8692
8738
  this.MatchData=event.data.MatchData;this.Sample=event.data.Sample;this.HQChart=chart;this.BindData();//居中显示
8693
8739
  var border=chart.Frame.ChartBorder;var scrollPos=GetScrollPosition();var left=border.GetWidth()/2;var top=border.GetHeight()/2;this.Show(left,top,200,200);//显示
@@ -9512,7 +9558,7 @@ this.ParseStatement=function(){var statement=void 0;switch(this.LookAhead.Type){
9512
9558
  this.ParseEmptyStatement=function(){var node=this.CreateNode();this.Expect(';');return this.Finalize(node,this.Node.EmptyStatement());};//https://tc39.github.io/ecma262/#sec-labelled-statements
9513
9559
  this.ParseLabelledStatement=function(){var node=this.CreateNode();var expr=this.ParseExpression();this.ConsumeSemicolon();var statement=new this.Node.ExpressionStatement(expr);return this.Finalize(node,statement);};// https://tc39.github.io/ecma262/#sec-comma-operator
9514
9560
  this.ParseExpression=function(){var startToken=this.LookAhead;var expr=this.IsolateCoverGrammar(this.ParseAssignmentExpression);if(this.Match(',')){var expressions=[];expressions.push(expr);while(this.LookAhead.Type!=2/*EOF*/){if(!this.Match(','))break;this.NextToken();expressions.push(this.IsolateCoverGrammar(this.ParseAssignmentExpression));}expr=this.Finalize(this.StartNode(startToken),this.Node.SequenceExpression(expressions));}return expr;};this.ParseAssignmentExpression=function(){var expr=void 0;var startToken=this.LookAhead;var token=startToken;expr=this.ParseConditionalExpression();if(this.MatchAssign()){if(!this.Context.IsAssignmentTarget){var marker=expr.Marker;this.ThrowUnexpectedError(marker.Index,marker.Line,marker.Column,Messages.InvalidLHSInAssignment);}if(!this.Match('=')&&!this.Match(':')){this.Context.IsAssignmentTarget=false;this.Context.IsBindingElement=false;}else{this.ReinterpretExpressionAsPattern(expr);}token=this.NextToken();var operator=token.Value;var right=this.IsolateCoverGrammar(this.ParseAssignmentExpression);expr=this.Finalize(this.StartNode(startToken),this.Node.AssignmentExpression(operator,expr,right));this.Context.FirstCoverInitializedNameError=null;}return expr;};this.ParseConditionalExpression=function(){var startToken=this.LookAhead;var expr=this.InheritCoverGrammar(this.ParseBinaryExpression);return expr;};this.ParseBinaryExpression=function(){var startToken=this.LookAhead;var expr=this.InheritCoverGrammar(this.ParseExponentiationExpression);var token=this.LookAhead;var prec=this.BinaryPrecedence(token);if(prec>0){this.NextToken();this.Context.IsAssignmentTarget=false;this.Context.IsBindingElement=false;var markers=[startToken,this.LookAhead];var left=expr;var right=this.IsolateCoverGrammar(this.ParseExponentiationExpression);var stack=[left,token.Value,right];var precedences=[prec];while(true){prec=this.BinaryPrecedence(this.LookAhead);if(prec<=0)break;while(stack.length>2&&prec<=precedences[precedences.length-1]){right=stack.pop();var operator=stack.pop();precedences.pop();left=stack.pop();markers.pop();var node=this.StartNode(markers[markers.length-1]);stack.push(this.Finalize(node,this.Node.BinaryExpression(operator,left,right)));}//Shift
9515
- stack.push(this.NextToken().Value);precedences.push(prec);markers.push(this.LookAhead);stack.push(this.IsolateCoverGrammar(this.ParseExponentiationExpression));}var _i31=stack.length-1;expr=stack[_i31];var lastMarker=markers.pop();while(_i31>1){var marker=markers.pop();var lastLineStart=lastMarker&&lastMarker.LineStart;var _node=this.StartNode(marker,lastLineStart);var _operator=stack[_i31-1];expr=this.Finalize(_node,this.Node.BinaryExpression(_operator,stack[_i31-2],expr));_i31-=2;lastMarker=marker;}}return expr;};this.ParseExponentiationExpression=function(){var startToken=this.LookAhead;var expr=this.InheritCoverGrammar(this.ParseUnaryExpression);return expr;};this.ParseUnaryExpression=function(){var expr=void 0;if(this.Match('+')||this.Match('-')){var node=this.StartNode(this.LookAhead);var token=this.NextToken();expr=this.InheritCoverGrammar(this.ParseUnaryExpression);expr=this.Finalize(node,this.Node.UnaryExpression(token.Value,expr));this.Context.IsAssignmentTarget=false;this.Context.IsBindingElement=false;}else{expr=this.ParseUpdateExpression();}return expr;};// https://tc39.github.io/ecma262/#sec-update-expressions
9561
+ stack.push(this.NextToken().Value);precedences.push(prec);markers.push(this.LookAhead);stack.push(this.IsolateCoverGrammar(this.ParseExponentiationExpression));}var _i29=stack.length-1;expr=stack[_i29];var lastMarker=markers.pop();while(_i29>1){var marker=markers.pop();var lastLineStart=lastMarker&&lastMarker.LineStart;var _node=this.StartNode(marker,lastLineStart);var _operator=stack[_i29-1];expr=this.Finalize(_node,this.Node.BinaryExpression(_operator,stack[_i29-2],expr));_i29-=2;lastMarker=marker;}}return expr;};this.ParseExponentiationExpression=function(){var startToken=this.LookAhead;var expr=this.InheritCoverGrammar(this.ParseUnaryExpression);return expr;};this.ParseUnaryExpression=function(){var expr=void 0;if(this.Match('+')||this.Match('-')){var node=this.StartNode(this.LookAhead);var token=this.NextToken();expr=this.InheritCoverGrammar(this.ParseUnaryExpression);expr=this.Finalize(node,this.Node.UnaryExpression(token.Value,expr));this.Context.IsAssignmentTarget=false;this.Context.IsBindingElement=false;}else{expr=this.ParseUpdateExpression();}return expr;};// https://tc39.github.io/ecma262/#sec-update-expressions
9516
9562
  this.ParseUpdateExpression=function(){var expr=void 0;var startToken=this.LookAhead;expr=this.InheritCoverGrammar(this.ParseLeftHandSideExpressionAllowCall);return expr;};this.ParseLeftHandSideExpressionAllowCall=function(){var startToken=this.LookAhead;var expr=void 0;expr=this.InheritCoverGrammar(this.ParsePrimaryExpression);while(true){if(this.Match('.')){this.Context.IsBindingElement=false;this.Context.IsAssignmentTarget=true;this.Expect('.');var property=this.ParseMemberIdentifierName();expr=this.Finalize(this.StartNode(startToken),this.Node.StaticMemberExpression(expr,property,startToken));}else if(this.Match('(')){this.Context.IsBindingElement=false;this.Context.IsAssignmentTarget=false;var args=this.ParseArguments();//解析 调用参数
9517
9563
  expr=this.Finalize(this.StartNode(startToken),this.Node.CallExpression(expr,args,startToken));}else{break;}}return expr;};/*
9518
9564
  BooleanLiteral = 1,
@@ -9541,77 +9587,77 @@ this.LastMarker.Index=this.StartMarker.Index;this.LastMarker.Line=this.StartMark
9541
9587
  //相加
9542
9588
  this.Add=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相加
9543
9589
  if(isNumber&&isNumber2)return data+data2;//都是数组相加
9544
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i32=0;_i32<count;++_i32){result[_i32]=null;//初始化
9545
- if(_i32<data.length&&_i32<data2.length){if(this.IsNumber(data[_i32])&&this.IsNumber(data2[_i32]))result[_i32]=data[_i32]+data2[_i32];}}return result;}//单数据和数组相加
9546
- var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i33 in aryData){result[_i33]=null;if(this.IsNumber(aryData[_i33])&&this.IsNumber(value))result[_i33]=value+aryData[_i33];}return result;};//相减
9590
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i30=0;_i30<count;++_i30){result[_i30]=null;//初始化
9591
+ if(_i30<data.length&&_i30<data2.length){if(this.IsNumber(data[_i30])&&this.IsNumber(data2[_i30]))result[_i30]=data[_i30]+data2[_i30];}}return result;}//单数据和数组相加
9592
+ var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i31 in aryData){result[_i31]=null;if(this.IsNumber(aryData[_i31])&&this.IsNumber(value))result[_i31]=value+aryData[_i31];}return result;};//相减
9547
9593
  this.Subtract=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相减
9548
9594
  if(isNumber&&isNumber2)return data-data2;//都是数组相减
9549
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i34=0;_i34<count;++_i34){result[_i34]=null;//初始化
9550
- if(_i34<data.length&&_i34<data2.length){if(this.IsNumber(data[_i34])&&this.IsNumber(data2[_i34]))result[_i34]=data[_i34]-data2[_i34];}}return result;}if(isNumber)//单数据-数组
9551
- {for(var _i35 in data2){result[_i35]=null;if(this.IsNumber(data)&&this.IsNumber(data2[_i35]))result[_i35]=data-data2[_i35];}}else//数组-单数据
9552
- {for(var _i36 in data){result[_i36]=null;if(this.IsNumber(data[_i36])&&this.IsNumber(data2))result[_i36]=data[_i36]-data2;}}return result;};//相乘
9595
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i32=0;_i32<count;++_i32){result[_i32]=null;//初始化
9596
+ if(_i32<data.length&&_i32<data2.length){if(this.IsNumber(data[_i32])&&this.IsNumber(data2[_i32]))result[_i32]=data[_i32]-data2[_i32];}}return result;}if(isNumber)//单数据-数组
9597
+ {for(var _i33 in data2){result[_i33]=null;if(this.IsNumber(data)&&this.IsNumber(data2[_i33]))result[_i33]=data-data2[_i33];}}else//数组-单数据
9598
+ {for(var _i34 in data){result[_i34]=null;if(this.IsNumber(data[_i34])&&this.IsNumber(data2))result[_i34]=data[_i34]-data2;}}return result;};//相乘
9553
9599
  this.Multiply=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相乘
9554
9600
  if(isNumber&&isNumber2)return data*data2;//都是数组相乘
9555
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i37=0;_i37<count;++_i37){result[_i37]=null;//初始化
9556
- if(_i37<data.length&&_i37<data2.length){if(this.IsNumber(data[_i37])&&this.IsNumber(data2[_i37]))result[_i37]=data[_i37]*data2[_i37];}}return result;}//单数据和数组相乘
9557
- var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i38 in aryData){result[_i38]=null;if(this.IsNumber(aryData[_i38])&&this.IsNumber(value))result[_i38]=value*aryData[_i38];}return result;};//相除
9601
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i35=0;_i35<count;++_i35){result[_i35]=null;//初始化
9602
+ if(_i35<data.length&&_i35<data2.length){if(this.IsNumber(data[_i35])&&this.IsNumber(data2[_i35]))result[_i35]=data[_i35]*data2[_i35];}}return result;}//单数据和数组相乘
9603
+ var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i36 in aryData){result[_i36]=null;if(this.IsNumber(aryData[_i36])&&this.IsNumber(value))result[_i36]=value*aryData[_i36];}return result;};//相除
9558
9604
  this.Divide=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相除
9559
9605
  if(isNumber&&isNumber2){if(data2==0)return null;//除0判断
9560
9606
  return data/data2;}//都是数组相除
9561
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i39=0;_i39<count;++_i39){result[_i39]=null;//初始化
9562
- if(_i39<data.length&&_i39<data2.length){if(this.IsNumber(data[_i39])&&this.IsDivideNumber(data2[_i39]))result[_i39]=data[_i39]/data2[_i39];}}return result;}if(isNumber)//单数据-数组
9563
- {for(var _i40 in data2){result[_i40]=null;if(this.IsNumber(data)&&this.IsDivideNumber(data2[_i40]))result[_i40]=data/data2[_i40];}}else//数组-单数据
9564
- {for(var _i41 in data){result[_i41]=null;if(this.IsNumber(data[_i41])&&this.IsDivideNumber(data2))result[_i41]=data[_i41]/data2;}}return result;};//大于
9607
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i37=0;_i37<count;++_i37){result[_i37]=null;//初始化
9608
+ if(_i37<data.length&&_i37<data2.length){if(this.IsNumber(data[_i37])&&this.IsDivideNumber(data2[_i37]))result[_i37]=data[_i37]/data2[_i37];}}return result;}if(isNumber)//单数据-数组
9609
+ {for(var _i38 in data2){result[_i38]=null;if(this.IsNumber(data)&&this.IsDivideNumber(data2[_i38]))result[_i38]=data/data2[_i38];}}else//数组-单数据
9610
+ {for(var _i39 in data){result[_i39]=null;if(this.IsNumber(data[_i39])&&this.IsDivideNumber(data2))result[_i39]=data[_i39]/data2;}}return result;};//大于
9565
9611
  this.GT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9566
9612
  if(isNumber&&isNumber2)return data>data2?1:0;//都是数组比较
9567
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i42=0;_i42<count;++_i42){result[_i42]=null;//初始化
9568
- if(_i42<data.length&&_i42<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i42]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i42]))continue;if(!isNaN(data[_i42])&&!isNaN(data2[_i42]))result[_i42]=data[_i42]>data2[_i42]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9569
- {for(var _i43 in data2){result[_i43]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i43]))continue;if(!isNaN(data)&&!isNaN(data2[_i43]))result[_i43]=data>data2[_i43]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9570
- {for(var _i44 in data){result[_i44]=null;if(!IFrameSplitOperator.IsVaild(data[_i44]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;if(!isNaN(data[_i44])&&!isNaN(data2))result[_i44]=data[_i44]>data2?1:0;}}return result;};//大于等于
9613
+ var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i40=0;_i40<count;++_i40){result[_i40]=null;//初始化
9614
+ if(_i40<data.length&&_i40<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i40]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i40]))continue;if(!isNaN(data[_i40])&&!isNaN(data2[_i40]))result[_i40]=data[_i40]>data2[_i40]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9615
+ {for(var _i41 in data2){result[_i41]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i41]))continue;if(!isNaN(data)&&!isNaN(data2[_i41]))result[_i41]=data>data2[_i41]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9616
+ {for(var _i42 in data){result[_i42]=null;if(!IFrameSplitOperator.IsVaild(data[_i42]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;if(!isNaN(data[_i42])&&!isNaN(data2))result[_i42]=data[_i42]>data2?1:0;}}return result;};//大于等于
9571
9617
  this.GTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9572
9618
  if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
9573
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i45=0;_i45<count;++_i45){result[_i45]=null;//初始化
9574
- if(_i45<data.length&&_i45<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i45]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i45]))continue;result[_i45]=data[_i45]>=data2[_i45]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9575
- {for(var _i46 in data2){result[_i46]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i46]))continue;result[_i46]=data>=data2[_i46]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9576
- {for(var _i47 in data){result[_i47]=null;if(!IFrameSplitOperator.IsVaild(data[_i47]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i47]=data[_i47]>=data2?1:0;}}return result;};//小于
9619
+ var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i43=0;_i43<count;++_i43){result[_i43]=null;//初始化
9620
+ if(_i43<data.length&&_i43<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i43]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i43]))continue;result[_i43]=data[_i43]>=data2[_i43]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9621
+ {for(var _i44 in data2){result[_i44]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i44]))continue;result[_i44]=data>=data2[_i44]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9622
+ {for(var _i45 in data){result[_i45]=null;if(!IFrameSplitOperator.IsVaild(data[_i45]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i45]=data[_i45]>=data2?1:0;}}return result;};//小于
9577
9623
  this.LT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9578
9624
  if(isNumber&&isNumber2)return data<data2?1:0;//都是数组比较
9579
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i48=0;_i48<count;++_i48){result[_i48]=null;//初始化
9580
- if(_i48<data.length&&_i48<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i48]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i48]))continue;result[_i48]=data[_i48]<data2[_i48]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9581
- {for(var _i49 in data2){result[_i49]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i49]))continue;result[_i49]=data<data2[_i49]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9582
- {for(var _i50 in data){result[_i50]=null;if(!IFrameSplitOperator.IsVaild(data[_i50]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i50]=data[_i50]<data2?1:0;}}return result;};//小于等于
9625
+ var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i46=0;_i46<count;++_i46){result[_i46]=null;//初始化
9626
+ if(_i46<data.length&&_i46<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i46]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i46]))continue;result[_i46]=data[_i46]<data2[_i46]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9627
+ {for(var _i47 in data2){result[_i47]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i47]))continue;result[_i47]=data<data2[_i47]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9628
+ {for(var _i48 in data){result[_i48]=null;if(!IFrameSplitOperator.IsVaild(data[_i48]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i48]=data[_i48]<data2?1:0;}}return result;};//小于等于
9583
9629
  this.LTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9584
9630
  if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
9585
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i51=0;_i51<count;++_i51){result[_i51]=null;//初始化
9586
- if(_i51<data.length&&_i51<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i51]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i51]))continue;result[_i51]=data[_i51]<=data2[_i51]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9587
- {for(var _i52 in data2){result[_i52]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i52]))continue;result[_i52]=data<=data2[_i52]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9588
- {for(var _i53 in data){result[_i53]=null;if(!IFrameSplitOperator.IsVaild(data[_i53]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i53]=data[_i53]<=data2?1:0;}}return result;};//等于
9631
+ var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i49=0;_i49<count;++_i49){result[_i49]=null;//初始化
9632
+ if(_i49<data.length&&_i49<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i49]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i49]))continue;result[_i49]=data[_i49]<=data2[_i49]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9633
+ {for(var _i50 in data2){result[_i50]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i50]))continue;result[_i50]=data<=data2[_i50]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9634
+ {for(var _i51 in data){result[_i51]=null;if(!IFrameSplitOperator.IsVaild(data[_i51]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i51]=data[_i51]<=data2?1:0;}}return result;};//等于
9589
9635
  this.EQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9590
9636
  if(isNumber&&isNumber2)return data==data2?1:0;//都是数组比较
9591
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i54=0;_i54<count;++_i54){result[_i54]=null;//初始化
9592
- if(_i54<data.length&&_i54<data2.length){if(!isNaN(data[_i54])&&!isNaN(data2[_i54]))result[_i54]=data[_i54]==data2[_i54]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9593
- {for(var _i55 in data2){result[_i55]=null;if(!isNaN(data)&&!isNaN(data2[_i55]))result[_i55]=data==data2[_i55]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9594
- {for(var _i56 in data){result[_i56]=null;if(!isNaN(data[_i56])&&!isNaN(data2))result[_i56]=data[_i56]==data2?1:0;}}return result;};//不等于
9637
+ var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i52=0;_i52<count;++_i52){result[_i52]=null;//初始化
9638
+ if(_i52<data.length&&_i52<data2.length){if(!isNaN(data[_i52])&&!isNaN(data2[_i52]))result[_i52]=data[_i52]==data2[_i52]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9639
+ {for(var _i53 in data2){result[_i53]=null;if(!isNaN(data)&&!isNaN(data2[_i53]))result[_i53]=data==data2[_i53]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9640
+ {for(var _i54 in data){result[_i54]=null;if(!isNaN(data[_i54])&&!isNaN(data2))result[_i54]=data[_i54]==data2?1:0;}}return result;};//不等于
9595
9641
  this.NEQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9596
9642
  if(isNumber&&isNumber2)return data!=data2?1:0;//都是数组比较
9597
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i57=0;_i57<count;++_i57){result[_i57]=null;//初始化
9598
- if(_i57<data.length&&_i57<data2.length){if(!isNaN(data[_i57])&&!isNaN(data2[_i57]))result[_i57]=data[_i57]!=data2[_i57]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9599
- {for(var _i58 in data2){result[_i58]=null;if(!isNaN(data)&&!isNaN(data2[_i58]))result[_i58]=data!=data2[_i58]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9600
- {for(var _i59 in data){result[_i59]=null;if(!isNaN(data[_i59])&&!isNaN(data2))result[_i59]=data[_i59]!=data2?1:0;}}return result;};//AND &&
9643
+ var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i55=0;_i55<count;++_i55){result[_i55]=null;//初始化
9644
+ if(_i55<data.length&&_i55<data2.length){if(!isNaN(data[_i55])&&!isNaN(data2[_i55]))result[_i55]=data[_i55]!=data2[_i55]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9645
+ {for(var _i56 in data2){result[_i56]=null;if(!isNaN(data)&&!isNaN(data2[_i56]))result[_i56]=data!=data2[_i56]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9646
+ {for(var _i57 in data){result[_i57]=null;if(!isNaN(data[_i57])&&!isNaN(data2))result[_i57]=data[_i57]!=data2?1:0;}}return result;};//AND &&
9601
9647
  this.And=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值 &&
9602
9648
  if(isNumber&&isNumber2)return data&&data2?1:0;//都是数组 &&
9603
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i60=0;_i60<count;++_i60){result[_i60]=null;//初始化
9604
- if(_i60<data.length&&_i60<data2.length){if(!isNaN(data[_i60])&&!isNaN(data2[_i60]))result[_i60]=data[_i60]&&data2[_i60]?1:0;}}return result;}if(isNumber)//单数据-数组
9605
- {for(var _i61 in data2){result[_i61]=null;if(!isNaN(data)&&!isNaN(data2[_i61]))result[_i61]=data&&data2[_i61]?1:0;}}else//数组-单数据
9606
- {for(var _i62 in data){result[_i62]=null;if(!isNaN(data[_i62])&&!isNaN(data2))result[_i62]=data[_i62]&&data2?1:0;}}return result;};//OR ||
9649
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i58=0;_i58<count;++_i58){result[_i58]=null;//初始化
9650
+ if(_i58<data.length&&_i58<data2.length){if(!isNaN(data[_i58])&&!isNaN(data2[_i58]))result[_i58]=data[_i58]&&data2[_i58]?1:0;}}return result;}if(isNumber)//单数据-数组
9651
+ {for(var _i59 in data2){result[_i59]=null;if(!isNaN(data)&&!isNaN(data2[_i59]))result[_i59]=data&&data2[_i59]?1:0;}}else//数组-单数据
9652
+ {for(var _i60 in data){result[_i60]=null;if(!isNaN(data[_i60])&&!isNaN(data2))result[_i60]=data[_i60]&&data2?1:0;}}return result;};//OR ||
9607
9653
  this.Or=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值 &&
9608
9654
  if(isNumber&&isNumber2)return data||data2?1:0;//都是数组 &&
9609
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i63=0;_i63<count;++_i63){result[_i63]=null;//初始化
9610
- if(_i63<data.length&&_i63<data2.length){if(!isNaN(data[_i63])&&!isNaN(data2[_i63]))result[_i63]=data[_i63]||data2[_i63]?1:0;}}return result;}if(isNumber)//单数据-数组
9611
- {for(var _i64 in data2){result[_i64]=null;if(!isNaN(data)&&!isNaN(data2[_i64]))result[_i64]=data||data2[_i64]?1:0;}}else//数组-单数据
9612
- {for(var _i65 in data){result[_i65]=null;if(!isNaN(data[_i65])&&!isNaN(data2))result[_i65]=data[_i65]||data2?1:0;}}return result;};this.IF=function(data,trueData,falseData){var isNumber=this.IsNumber(data);var isNumber2=this.IsNumber(trueData);var isNumber3=this.IsNumber(falseData);var isArray2=Array.isArray(trueData);var isArray3=Array.isArray(falseData);//单数值
9655
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i61=0;_i61<count;++_i61){result[_i61]=null;//初始化
9656
+ if(_i61<data.length&&_i61<data2.length){if(!isNaN(data[_i61])&&!isNaN(data2[_i61]))result[_i61]=data[_i61]||data2[_i61]?1:0;}}return result;}if(isNumber)//单数据-数组
9657
+ {for(var _i62 in data2){result[_i62]=null;if(!isNaN(data)&&!isNaN(data2[_i62]))result[_i62]=data||data2[_i62]?1:0;}}else//数组-单数据
9658
+ {for(var _i63 in data){result[_i63]=null;if(!isNaN(data[_i63])&&!isNaN(data2))result[_i63]=data[_i63]||data2?1:0;}}return result;};this.IF=function(data,trueData,falseData){var isNumber=this.IsNumber(data);var isNumber2=this.IsNumber(trueData);var isNumber3=this.IsNumber(falseData);var isArray2=Array.isArray(trueData);var isArray3=Array.isArray(falseData);//单数值
9613
9659
  if(isNumber){if(isNumber2&&isNumber3)return data?trueData:falseData;return data?trueData:falseData;}//都是数组
9614
- var result=[];for(var _i66 in data){if(data[_i66]){if(isNumber2)result[_i66]=trueData;else if(isArray2)result[_i66]=trueData[_i66];else result[_i66]=null;}else{if(isNumber3)result[_i66]=falseData;else if(isArray3)result[_i66]=falseData[_i66];else result[_i66]=null;}}return result;};/*
9660
+ var result=[];for(var _i64 in data){if(data[_i64]){if(isNumber2)result[_i64]=trueData;else if(isArray2)result[_i64]=trueData[_i64];else result[_i64]=null;}else{if(isNumber3)result[_i64]=falseData;else if(isArray3)result[_i64]=falseData[_i64];else result[_i64]=null;}}return result;};/*
9615
9661
  根据条件求不同的值,同IF判断相反.
9616
9662
  用法: IFN(X,A,B)若X不为0则返回B,否则返回A
9617
9663
  例如: IFN(CLOSE>OPEN,HIGH,LOW)表示该周期收阴则返回最高值,否则返回最低值
@@ -9622,35 +9668,35 @@ var result=[];for(var _i66 in data){if(data[_i66]){if(isNumber2)result[_i66]=tru
9622
9668
  //例如: REF(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
9623
9669
  this.REF=function(data,n){var result=[];if(typeof n=='number'){if(IFrameSplitOperator.IsNumber(data))//单数值
9624
9670
  {if(n<0)return result;var kData=this.SymbolData.Data.Data;if(!kData||kData.length<=0)return result;var count=kData.length;for(var i=n;i<count;++i){result[i]=data;}}else{if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(0,data.length-n);//平滑处理
9625
- var firstData=data[0];for(var _i67=0;_i67<n;++_i67){result.unshift(firstData);}}}else//n 为数组的情况
9626
- {for(var _i68=0;_i68<data.length;++_i68){result[_i68]=null;if(_i68>=n.length)continue;var value=n[_i68];if(value>=0&&value<=_i68)result[_i68]=data[_i68-value];else if(_i68)result[_i68]=result[_i68-1];else result[_i68]=data[_i68];}}return result;};//引用若干周期前的数据(未作平滑处理).
9671
+ var firstData=data[0];for(var _i65=0;_i65<n;++_i65){result.unshift(firstData);}}}else//n 为数组的情况
9672
+ {for(var _i66=0;_i66<data.length;++_i66){result[_i66]=null;if(_i66>=n.length)continue;var value=n[_i66];if(value>=0&&value<=_i66)result[_i66]=data[_i66-value];else if(_i66)result[_i66]=result[_i66-1];else result[_i66]=data[_i66];}}return result;};//引用若干周期前的数据(未作平滑处理).
9627
9673
  //用法: REFV(X,A),引用A周期前的X值.A可以是变量.
9628
9674
  //平滑处理:当引用不到数据时进行的操作.
9629
9675
  //例如: REFV(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
9630
- this.REFV=function(data,n){var result=[];if(typeof n=='number'){if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(0,data.length-n);for(var _i69=0;_i69<n;++_i69){//不作平滑处理
9676
+ this.REFV=function(data,n){var result=[];if(typeof n=='number'){if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(0,data.length-n);for(var _i67=0;_i67<n;++_i67){//不作平滑处理
9631
9677
  result.unshift(null);}}else//n 为数组的情况
9632
- {for(var _i70=0;_i70<data.length;++_i70){result[_i70]=null;if(_i70>=n.length)continue;var value=n[_i70];if(value>=0&&value<=_i70)result[_i70]=data[_i70-value];}}return result;};//属于未来函数,引用若干周期后的数据(平滑处理).
9678
+ {for(var _i68=0;_i68<data.length;++_i68){result[_i68]=null;if(_i68>=n.length)continue;var value=n[_i68];if(value>=0&&value<=_i68)result[_i68]=data[_i68-value];}}return result;};//属于未来函数,引用若干周期后的数据(平滑处理).
9633
9679
  //用法: REFX(X,A),引用A周期后的X值.A可以是变量.
9634
9680
  //平滑处理:当引用不到数据时进行的操作.此函数中,平滑时使用上一个周期的引用值.
9635
9681
  //例如: TT:=IF(C>O,1,2);
9636
9682
  // REFX(CLOSE,TT);表示阳线引用下一周期的收盘价,阴线引用日后第二周期的收盘价.
9637
9683
  this.REFX=function(data,n){var result=[];if(typeof n=='number'){if(data.length<=0)return result;if(n>=data.length){if(data.length>0)return data[data.length-1];//取最后一个数据
9638
9684
  return result;}result=data.slice(n,data.length);//平滑处理
9639
- var lastData=data[data.length-1];for(var _i71=0;_i71<n;++_i71){result.push(lastData);}}else//n 为数组的情况
9640
- {var dataCount=data.length;for(var _i72=0;_i72<data.length;++_i72){result[_i72]=null;if(_i72>=n.length)continue;var value=n[_i72];if(value>=0&&value+_i72<dataCount)result[_i72]=data[_i72+value];else if(_i72)result[_i72]=result[_i72-1];else result[_i72]=data[_i72];}}return result;};//属于未来函数,引用若干周期后的数据(未作平滑处理).
9685
+ var lastData=data[data.length-1];for(var _i69=0;_i69<n;++_i69){result.push(lastData);}}else//n 为数组的情况
9686
+ {var dataCount=data.length;for(var _i70=0;_i70<data.length;++_i70){result[_i70]=null;if(_i70>=n.length)continue;var value=n[_i70];if(value>=0&&value+_i70<dataCount)result[_i70]=data[_i70+value];else if(_i70)result[_i70]=result[_i70-1];else result[_i70]=data[_i70];}}return result;};//属于未来函数,引用若干周期后的数据(未作平滑处理).
9641
9687
  //用法:REFXV(X,A),引用A周期后的X值.A可以是变量.
9642
9688
  //平滑处理:当引用不到数据时进行的操作.
9643
9689
  //例如: REFXV(CLOSE,1)表示下一周期的收盘价,在日线上就是明天收盘价
9644
9690
  this.REFXV=function(data,n){var result=[];if(typeof n=='number'){if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(n,data.length);//平滑处理
9645
- for(var _i73=0;_i73<n;++_i73){result.push(null);}}else//n 为数组的情况
9646
- {var dataCount=data.length;for(var _i74=0;_i74<data.length;++_i74){result[_i74]=null;if(_i74>=n.length)continue;var value=n[_i74];if(value>=0&&value+_i74<dataCount)result[_i74]=data[_i74+value];}}return result;};//求最大值.
9691
+ for(var _i71=0;_i71<n;++_i71){result.push(null);}}else//n 为数组的情况
9692
+ {var dataCount=data.length;for(var _i72=0;_i72<data.length;++_i72){result[_i72]=null;if(_i72>=n.length)continue;var value=n[_i72];if(value>=0&&value+_i72<dataCount)result[_i72]=data[_i72+value];}}return result;};//求最大值.
9647
9693
  //用法:MAX(A,B,C,D ..... ) 返回A,B,C,D ..... 中的较大值
9648
9694
  //例如: MAX(CLOSE-OPEN,0)表示若收盘价大于开盘价返回它们的差值,否则返回0
9649
9695
  this.MAX=function(args,node){if(args.length==0)this.ThrowUnexpectedNode(node,'MAX() Error: 参数个数不能为0');if(args.length==1)return args[0];var aryData=[],aryNumber=[];for(var i in args){var item=args[i];if(IFrameSplitOperator.IsNumber(item))aryNumber.push(item);else if(Array.isArray(item))aryData.push(item);}var maxNumber=null;if(aryNumber.length>0){maxNumber=aryNumber[0];for(var i=1;i<aryNumber.length;++i){maxNumber=Math.max(maxNumber,aryNumber[i]);}}var maxAryData=null;if(aryData.length>0){maxAryData=aryData[0].slice(0);for(var i=1;i<aryData.length;++i){var dataItem=aryData[i];for(var j in dataItem){var maxItem=maxAryData[j];var item=dataItem[j];if(!IFrameSplitOperator.IsNumber(maxItem))continue;if(!IFrameSplitOperator.IsNumber(item)){maxAryData[j]=null;continue;}maxAryData[j]=Math.max(maxItem,item);}}}if(maxAryData==null&&maxNumber!=null)return maxNumber;if(maxAryData&&maxNumber==null)return maxAryData;for(var i in maxAryData){if(!IFrameSplitOperator.IsNumber(maxAryData[i]))continue;maxAryData[i]=Math.max(maxAryData[i],maxNumber);}return maxAryData;};//求最小值.
9650
9696
  //用法:MIN(A,B, C, D .....)返回A,B, C ,D ......中的较小值
9651
9697
  //例如:MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值
9652
9698
  this.MIN=function(args,node){if(args.length==0)this.ThrowUnexpectedNode(node,'MIN() Error: 参数个数不能为0');if(args.length==1)return args[0];var aryData=[],aryNumber=[];for(var i in args){var item=args[i];if(IFrameSplitOperator.IsNumber(item))aryNumber.push(item);else if(Array.isArray(item))aryData.push(item);}var minNumber=null;if(aryNumber.length>0){minNumber=aryNumber[0];for(var i=1;i<aryNumber.length;++i){minNumber=Math.min(minNumber,aryNumber[i]);}}var minAryData=null;if(aryData.length>0){minAryData=aryData[0].slice(0);for(var i=1;i<aryData.length;++i){var dataItem=aryData[i];for(var j in dataItem){var minItem=minAryData[j];var item=dataItem[j];if(!IFrameSplitOperator.IsNumber(minItem))continue;if(!IFrameSplitOperator.IsNumber(item)){minAryData[j]=null;continue;}minAryData[j]=Math.min(minItem,item);}}}if(minAryData==null&&minNumber!=null)return minNumber;if(minAryData&&minNumber==null)return minAryData;for(var i in minAryData){if(!IFrameSplitOperator.IsNumber(minAryData[i]))continue;minAryData[i]=Math.min(minAryData[i],minNumber);}return minAryData;};//取正数
9653
- this.ABS=function(data){var result=[];for(var _i75 in data){result[_i75]=null;if(!isNaN(data[_i75]))result[_i75]=Math.abs(data[_i75]);}return result;};this.MA=function(data,dayCount){var result=[];if(dayCount<=0)return result;if(!Array.isArray(dayCount)){dayCount=parseInt(dayCount);//转整形
9699
+ this.ABS=function(data){var result=[];for(var _i73 in data){result[_i73]=null;if(!isNaN(data[_i73]))result[_i73]=Math.abs(data[_i73]);}return result;};this.MA=function(data,dayCount){var result=[];if(dayCount<=0)return result;if(!Array.isArray(dayCount)){dayCount=parseInt(dayCount);//转整形
9654
9700
  if(dayCount<=0)dayCount=1;if(!data||!data.length)return result;for(var i=0;i<data.length;++i){result[i]=null;if(this.IsNumber(data[i]))break;}var data=data.slice(0);//复制一份数据出来
9655
9701
  for(var days=0;i<data.length;++i,++days){if(days<dayCount-1){result[i]=null;continue;}var preValue=data[i-(dayCount-1)];var _sum=0;for(var _j2=dayCount-1;_j2>=0;--_j2){var value=data[i-_j2];if(!this.IsNumber(value)){value=preValue;//空数据就取上一个数据
9656
9702
  data[i-_j2]=value;}else{preValue=value;}_sum+=value;}result[i]=_sum/dayCount;}}else{for(var i=0;i<data.length;++i){result[i]=null;if(i>=dayCount.length)continue;var sumCount=dayCount[i];if(!this.IsNumber(sumCount))continue;if(sumCount<=0)continue;var sum=0;var count=0;for(var j=i,k=0;j>=0&&k<sumCount;--j,++k){sum+=data[j];++count;}if(count>0)result[i]=sum/count;}}return result;};//指数平均数指标 EMA(close,10)
@@ -9776,14 +9822,14 @@ this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n
9776
9822
  求总的周期数。
9777
9823
  用法: BARSCOUNT(X) 第一个有效数据到当前的天数。
9778
9824
  例如: BARSCOUNT(CLOSE) 对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数。
9779
- */this.BARSCOUNT=function(data){var result=[];var days=null;for(var _i76 in data){result[_i76]=0;if(days==null){if(!this.IsNumber(data[_i76]))continue;days=0;}result[_i76]=days;++days;}return result;};//DEVSQ 数据偏差平方和
9825
+ */this.BARSCOUNT=function(data){var result=[];var days=null;for(var _i74 in data){result[_i74]=0;if(days==null){if(!this.IsNumber(data[_i74]))continue;days=0;}result[_i74]=days;++days;}return result;};//DEVSQ 数据偏差平方和
9780
9826
  //DEVSQ(X,N)  返回数据偏差平方和。
9781
9827
  this.DEVSQ=function(data,n){if(this.IsNumber(data)&&this.IsNumber(n))return 0;var result=[];if(Array.isArray(data)){var num=null;if(Array.isArray(n))//取最后一个有效数
9782
9828
  {for(var i=n.length-1;i>=0;--i){if(this.IsNumber(n[i])){num=parseInt(n[i]);break;}}}else{num=parseInt(n);}if(!this.IsNumber(num))return result;var datanum=data.length;var i=0,j=0,k=0;var E=0,DEV=0;for(i=0;i<datanum&&!this.IsNumber(data[i]);++i){result[i]=null;}if(num<1||i+num>datanum)return result;for(E=0;i<datanum&&j<num;++i,++j){E+=data[i]/num;}if(j==num){DEV=0;for(i--;k<num;k++){DEV+=(data[i-k]-E)*(data[i-k]-E);}result[i]=DEV;i++;}for(;i<datanum;++i){E+=(data[i]-data[i-num])/num;for(DEV=0,k=0;k<num;++k){DEV+=(data[i-k]-E)*(data[i-k]-E);}result[i]=DEV;}}return result;};//NOT 取反
9783
9829
  //求逻辑非。
9784
9830
  //用法: NOT(X) 返回非X,即当X=0时返回1,否则返回0。
9785
9831
  //例如: NOT(ISUP) 表示平盘或收阴。
9786
- this.NOT=function(data){var isNumber=typeof data=='number';if(isNumber)return data?0:1;var result=[];for(var _i77 in data){result[_i77]=null;if(this.IsNumber(data[_i77]))result[_i77]=data[_i77]?0:1;}return result;};//FORCAST 线性回归预测值
9832
+ this.NOT=function(data){var isNumber=typeof data=='number';if(isNumber)return data?0:1;var result=[];for(var _i75 in data){result[_i75]=null;if(this.IsNumber(data[_i75]))result[_i75]=data[_i75]?0:1;}return result;};//FORCAST 线性回归预测值
9787
9833
  //FORCAST(X,N)  返回线性回归预测值。
9788
9834
  this.FORCAST=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
9789
9835
  var num=n;var datanum=data.length;if(num<1||num>=datanum)return result;var Ex=0,Ey=0,Sxy=0,Sxx=0,Const,Slope;var i,j,x;for(j=0;j<datanum&&!this.IsNumber(data[j]);++j){result[j]=null;}for(i=j+num-1;i<datanum;++i){Ex=Ey=Sxy=Sxx=0;for(j=0,x=num;j<num&&j<=i;++j,--x){Ex+=x;Ey+=data[i-j];}Ex/=num;Ey/=num;for(j=0,x=num;j<num&&j<=i;++j,--x){Sxy+=(x-Ex)*(data[i-j]-Ey);Sxx+=(x-Ex)*(x-Ex);}Slope=Sxy/Sxx;Const=Ey-Ex*Slope;result[i]=Slope*num+Const;}return result;};//TSMA(X,N):求X在N个周期内的时间序列三角移动平均
@@ -9800,9 +9846,9 @@ this.TSMA=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//
9800
9846
  var num=n;var datanum=data.length;if(num<1||num>=datanum)return result;var Ex=0,Ey=0,Sxy=0,Sxx=0,Const,Slope;var i,j,x;for(j=0;j<datanum&&!this.IsNumber(data[j]);++j){result[j]=null;}for(i=j+num-1;i<datanum;++i){Ex=Ey=Sxy=Sxx=0;for(j=0,x=num;j<num&&j<=i;++j,--x){Ex+=x;Ey+=data[i-j];}Ex/=num;Ey/=num;for(j=0,x=num;j<num&&j<=i;++j,--x){Sxy+=(x-Ex)*(data[i-j]-Ey);Sxx+=(x-Ex)*(x-Ex);}Slope=Sxy/Sxx;Const=Ey-Ex*Slope;result[i]=Slope*num+Const+Slope;}return result;};//SLOPE 线性回归斜率
9801
9847
  //SLOPE(X,N)  返回线性回归斜率。
9802
9848
  this.SLOPE=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
9803
- if(n<1||!data.length)return result;if(n>=data.length)return result;var start=0;for(var _i78=0;_i78<data.length;++_i78,++start){result[_i78]=null;if(this.IsNumber(data[_i78]))break;}var x=void 0,y=void 0,xy=void 0,xx=void 0;for(var _i79=start+n-1;_i79<data.length;++_i79){result[_i79]=null;x=y=xy=xx=0;for(var j=0;j<n&&j<=_i79;++j){x+=_i79-j;//数据索引相加
9804
- y+=data[_i79-j];//数据相加
9805
- }x=x/n;y=y/n;for(j=0;j<n&&j<=_i79;++j){xy+=(_i79-j-x)*(data[_i79-j]-y);xx+=(_i79-j-x)*(_i79-j-x);}if(xx)result[_i79]=xy/xx;else if(_i79)result[_i79]=result[_i79-1];}return result;};//STDP 总体标准差
9849
+ if(n<1||!data.length)return result;if(n>=data.length)return result;var start=0;for(var _i76=0;_i76<data.length;++_i76,++start){result[_i76]=null;if(this.IsNumber(data[_i76]))break;}var x=void 0,y=void 0,xy=void 0,xx=void 0;for(var _i77=start+n-1;_i77<data.length;++_i77){result[_i77]=null;x=y=xy=xx=0;for(var j=0;j<n&&j<=_i77;++j){x+=_i77-j;//数据索引相加
9850
+ y+=data[_i77-j];//数据相加
9851
+ }x=x/n;y=y/n;for(j=0;j<n&&j<=_i77;++j){xy+=(_i77-j-x)*(data[_i77-j]-y);xx+=(_i77-j-x)*(_i77-j-x);}if(xx)result[_i77]=xy/xx;else if(_i77)result[_i77]=result[_i77-1];}return result;};//STDP 总体标准差
9806
9852
  //STDP(X,N)  返回总体标准差。
9807
9853
  this.STDP=function(data,n){var result=[];if(!Array.isArray(data))return result;var nStart=this.GetFirstVaildIndex(data);if(!IFrameSplitOperator.IsNumber(n))return result;if(nStart+n>data.length||n<1)return result;var i=nStart,j=0,bFirst=true,dTotal=0,dAvg=0;for(i+=n-1;i<data.length;++i){dTotal=0;if(bFirst){bFirst=false;for(j=i-n+1;j<=i;++j){dAvg+=data[j];}dAvg/=n;}else{dAvg+=(data[i]-data[i-n])/n;}for(j=i-n+1;j<=i;++j){dTotal+=(data[j]-dAvg)*(data[j]-dAvg);}result[i]=Math.sqrt(dTotal/n);}return result;};//VAR 估算样本方差
9808
9854
  //VAR(X,N)  返回估算样本方差。
@@ -9810,13 +9856,13 @@ this.VAR=function(data,n){if(this.IsNumber(data)&&this.IsNumber(n))return 0;var
9810
9856
  //VARP(X,N)  返回总体样本方差 。
9811
9857
  this.VARP=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
9812
9858
  var num=n;var datanum=data.length;if(num<1||num>=datanum)return result;var i=0,j=0;for(i=0;i<datanum&&!this.IsNumber(data[i]);++i){result[i]=null;}var SigmaPowerX=0,SigmaX=0;for(;i<datanum&&j<num;++i,++j){SigmaPowerX+=data[i]*data[i];SigmaX+=data[i];}if(j==num)result[i-1]=(num*SigmaPowerX-SigmaX*SigmaX)/(num*num);for(;i<datanum;++i){SigmaPowerX+=data[i]*data[i]-data[i-num]*data[i-num];SigmaX+=data[i]-data[i-num];result[i]=(num*SigmaPowerX-SigmaX*SigmaX)/(num*num);}return result;};//RANGE(A,B,C)表示A>B AND A<C;
9813
- this.RANGE=function(data,range,range2){var isNumber=typeof data=='number';var isNumber2=typeof range=='number';var isNumber3=typeof range2=='number';if(isNumber&&isNumber2&&isNumber3){if(data>Math.min(range,range2)&&data<Math.max(range,range2))return 1;else return 0;}var result=[];var value=void 0,rangeValue=void 0,rangValue2=void 0;for(var _i80=0;_i80<data.length;++_i80){result[_i80]=null;value=data[_i80];if(!this.IsNumber(value))continue;if(!isNumber2){if(_i80>=range.length)continue;rangeValue=range[_i80];}else{rangeValue=range;}if(!this.IsNumber(rangeValue))continue;if(!isNumber3){if(_i80>=range2.length)continue;rangeValue2=range2[_i80];}else{rangeValue2=range2;}if(!this.IsNumber(rangeValue2))continue;result[_i80]=value>Math.min(rangeValue,rangeValue2)&&value<Math.max(rangeValue,rangeValue2)?1:0;}return result;};/*
9859
+ this.RANGE=function(data,range,range2){var isNumber=typeof data=='number';var isNumber2=typeof range=='number';var isNumber3=typeof range2=='number';if(isNumber&&isNumber2&&isNumber3){if(data>Math.min(range,range2)&&data<Math.max(range,range2))return 1;else return 0;}var result=[];var value=void 0,rangeValue=void 0,rangValue2=void 0;for(var _i78=0;_i78<data.length;++_i78){result[_i78]=null;value=data[_i78];if(!this.IsNumber(value))continue;if(!isNumber2){if(_i78>=range.length)continue;rangeValue=range[_i78];}else{rangeValue=range;}if(!this.IsNumber(rangeValue))continue;if(!isNumber3){if(_i78>=range2.length)continue;rangeValue2=range2[_i78];}else{rangeValue2=range2;}if(!this.IsNumber(rangeValue2))continue;result[_i78]=value>Math.min(rangeValue,rangeValue2)&&value<Math.max(rangeValue,rangeValue2)?1:0;}return result;};/*
9814
9860
  是否存在.
9815
9861
  例如: EXIST(CLOSE>OPEN,10)
9816
9862
  表示10日内存在着阳线
9817
9863
  */this.EXIST=function(data,n){if(typeof data=='number')return 0;if(Array.isArray(n)){var result=[];if(data.length<=0)return result;for(var i in data)//初始化
9818
9864
  {result[i]=0;}for(var i=0;i<n.length&&i<data.length;++i){var period=n[i];if(!this.IsNumber(period))continue;period=parseInt(period);if(period<=0)continue;if(period>i+1)period=i+1;var bExist=false;var index=0,value=0;for(var j=0;j<period;++j){index=i-(period-j-1);value=data[i];if(this.IsNumber(value)&&value>0){bExist=true;break;}}result[i]=bExist?1:0;}return result;}else{n=parseInt(n);var latestID=null;//最新满足条件的数据索引
9819
- var result=[];var value;for(var _i81=0;_i81<data.length;++_i81){result[_i81]=null;value=data[_i81];if(this.IsNumber(value)&&value>0)latestID=_i81;if(latestID!=null&&_i81-latestID<n)result[_i81]=1;else result[_i81]=0;}return result;}};/*
9865
+ var result=[];var value;for(var _i79=0;_i79<data.length;++_i79){result[_i79]=null;value=data[_i79];if(this.IsNumber(value)&&value>0)latestID=_i79;if(latestID!=null&&_i79-latestID<n)result[_i79]=1;else result[_i79]=0;}return result;}};/*
9820
9866
  过滤连续出现的信号.
9821
9867
  用法:TFILTER(买入条件,卖出条件,N);过滤掉买入(卖出)信号发出后,下一个反向信号发出前的所有买入(卖出)信号.
9822
9868
 
@@ -9837,7 +9883,7 @@ var result=[];var value;for(var _i81=0;_i81<data.length;++_i81){result[_i81]=nul
9837
9883
  用法:FILTER(X,N):X满足条件后,将其后N周期内的数据置为0,N为常量.
9838
9884
  例如:
9839
9885
  FILTER(CLOSE>OPEN,5)查找阳线,5天内再次出现的阳线不被记录在内
9840
- */this.FILTER=function(data,n){var result=[];for(var _i82=0,_j3=0;_i82<data.length;++_i82){if(data[_i82]){result[_i82]=1;for(_j3=0;_j3<n&&_j3+_i82+1<data.length;++_j3){result[_j3+_i82+1]=0;}_i82+=n;}else{result[_i82]=0;}}return result;};this.BARSLAST=function(data){var result=[];if(!data)return result;var day=null;for(var _i83=0;_i83<data.length;++_i83){result[_i83]=null;if(data[_i83]>0)day=0;else if(day!=null)++day;if(day!=null)result[_i83]=day;}return result;};/*
9886
+ */this.FILTER=function(data,n){var result=[];for(var _i80=0,_j3=0;_i80<data.length;++_i80){if(data[_i80]){result[_i80]=1;for(_j3=0;_j3<n&&_j3+_i80+1<data.length;++_j3){result[_j3+_i80+1]=0;}_i80+=n;}else{result[_i80]=0;}}return result;};this.BARSLAST=function(data){var result=[];if(!data)return result;var day=null;for(var _i81=0;_i81<data.length;++_i81){result[_i81]=null;if(data[_i81]>0)day=0;else if(day!=null)++day;if(day!=null)result[_i81]=day;}return result;};/*
9841
9887
  N周期内第一个条件成立到当前的周期数.
9842
9888
  用法:
9843
9889
  BARSSINCEN(X,N):N周期内第一次X不为0到现在的天数,N为常量
@@ -9849,7 +9895,7 @@ var result=[];var value;for(var _i81=0;_i81<data.length;++_i81){result[_i81]=nul
9849
9895
  BARSSINCE(X):第一次X不为0到现在的天数
9850
9896
  例如:
9851
9897
  BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数
9852
- */this.BARSSINCE=function(data){var result=[];var day=null;for(var _i84=0;_i84<data.length;++_i84){result[_i84]=null;if(day==null){if(data[_i84])day=0;}else{++day;}if(day)result[_i84]=day;}return result;};/*三角函数调用 func 三角函数
9898
+ */this.BARSSINCE=function(data){var result=[];var day=null;for(var _i82=0;_i82<data.length;++_i82){result[_i82]=null;if(day==null){if(data[_i82])day=0;}else{++day;}if(day)result[_i82]=day;}return result;};/*三角函数调用 func 三角函数
9853
9899
  反正切值. 用法: ATAN(X)返回X的反正切值
9854
9900
  余弦值. 用法: COS(X)返回X的余弦值
9855
9901
  正弦值. 用法: SIN(X)返回X的正弦值
@@ -9859,9 +9905,9 @@ var result=[];var value;for(var _i81=0;_i81<data.length;++_i81){result[_i81]=nul
9859
9905
  求10为底的对数. 用法: LOG(X)取得X的对数 例如: LOG(100)等于2
9860
9906
  指数. 用法: EXP(X)为e的X次幂 例如: EXP(CLOSE)返回e的CLOSE次幂
9861
9907
  开平方. 用法: SQRT(X)为X的平方根 例如: SQRT(CLOSE)收盘价的平方根
9862
- */this.Trigonometric=function(data,func){if(!Array.isArray(data)){if(this.IsNumber(data))return func(data);return null;}else{var result=[];for(var _i85 in data){var item=data[_i85];if(this.IsNumber(item))result[_i85]=func(item);else result[_i85]=null;}return result;}};//反正弦值. 用法: ASIN(X)返回X的反正弦值
9863
- this.ASIN=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i86 in data){var item=data[_i86];result[_i86]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i86]=Math.asin(item);}else if(_i86-1>=0){var preItem=result[_i86-1];if(this.IsNumber(preItem))result[_i86]=preItem;}}}return result;}};//反余弦值. 用法: ACOS(X)返回X的反余弦值
9864
- this.ACOS=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i87 in data){var item=data[_i87];result[_i87]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i87]=Math.acos(item);}else if(_i87-1>=0){var preItem=result[_i87-1];if(this.IsNumber(preItem))result[_i87]=preItem;}}}return result;}};/*
9908
+ */this.Trigonometric=function(data,func){if(!Array.isArray(data)){if(this.IsNumber(data))return func(data);return null;}else{var result=[];for(var _i83 in data){var item=data[_i83];if(this.IsNumber(item))result[_i83]=func(item);else result[_i83]=null;}return result;}};//反正弦值. 用法: ASIN(X)返回X的反正弦值
9909
+ this.ASIN=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i84 in data){var item=data[_i84];result[_i84]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i84]=Math.asin(item);}else if(_i84-1>=0){var preItem=result[_i84-1];if(this.IsNumber(preItem))result[_i84]=preItem;}}}return result;}};//反余弦值. 用法: ACOS(X)返回X的反余弦值
9910
+ this.ACOS=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i85 in data){var item=data[_i85];result[_i85]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i85]=Math.acos(item);}else if(_i85-1>=0){var preItem=result[_i85-1];if(this.IsNumber(preItem))result[_i85]=preItem;}}}return result;}};/*
9865
9911
  LAST(X,A,B):持续存在.
9866
9912
  用法:
9867
9913
  LAST(CLOSE>OPEN,10,5)
@@ -10064,42 +10110,42 @@ for(var i=startDay,j=0;i<kData.length;++i){var start=i-startDay;if(start<0)conti
10064
10110
  */this.LWINNER=function(n,data,node){var startDay=n;if(startDay<=0)this.ThrowUnexpectedNode(node,'LWINNER() 第1个参数错误');var result=[];var kData=this.SymbolData.Data.Data;if(!kData||kData.length<=0)return result;var aryCapital=this.SymbolData.GetStockCacheData({FunctionName:"FINANCE",Args:[7],ArgCount:1,Node:node});//流通股本
10065
10111
  var dTotalVol=0,dVol=0;for(var i=startDay-1,j=0,k=0;i<kData.length;++i){var index=i-startDay+1;var dMaxPrice=kData[index].High,dMinPrice=kData[index].Low;for(var j=0;j<startDay;++j){var item=kData[index+j];dMinPrice=Math.min(dMinPrice,item.Low);dMaxPrice=Math.max(dMaxPrice,item.High);}if(dMinPrice>5000||dMinPrice<0||dMaxPrice>5000||dMinPrice<0)this.ThrowUnexpectedNode(node,'LWINNER() 历史K线最大最小值错误, 超出(0,5000)范围');var lMaxPrice=parseInt(dMaxPrice*100+1);var lMinPrice=parseInt(dMinPrice*100-1);var lLow=0,lHigh=0,lClose=0;dMaxPrice=lMaxPrice/100.0;dMinPrice=lMinPrice/100.0;var lSpeed=lMaxPrice-lMinPrice+1;if(lSpeed<1)return result;var aryVolPrice=[],aryPerVol=[];for(var j=0;j<lSpeed;++j){aryVolPrice[j]=0;aryPerVol[j]=0;}for(j=0;j<startDay;++j){var capital=aryCapital[index+j];if(capital<1)continue;var kItem=kData[index+j];var dHSL=kItem.Vol/capital;for(k=0;k<lSpeed;k++){aryVolPrice[k]*=1-dHSL;}lLow=parseInt(Math.min(lMaxPrice,Math.max(lMinPrice,kItem.Low*100)))-lMinPrice;lHigh=parseInt(Math.min(lMaxPrice,Math.max(lMinPrice,kItem.High*100)))-lMinPrice;lClose=parseInt(Math.min(lMaxPrice,Math.max(lMinPrice,kItem.Close*100)))-lMinPrice;for(var k=0;k<lSpeed;++k){aryPerVol[k]=0;}var lHalf=parseInt((lLow+lHigh+2*lClose)/4);if(lHalf==lHigh||lHalf==lLow){aryPerVol[lHalf]+=kItem.Vol;}else{var dVH=kItem.Vol/(lHalf-lLow);for(var _k=lLow;_k<lHalf;++_k){aryPerVol[_k]+=(_k-lLow)*(dVH/(lHalf-lLow));}for(var _k2;_k2<=lHigh;++_k2){aryPerVol[_k2]+=(_k2-lHigh)*(dVH/(lHalf-lHigh));}}dTotalVol=0;for(var k=lLow;k<=lHigh;k++){aryVolPrice[k]+=aryPerVol[k];}}for(var j=0;j<lSpeed;j++){dTotalVol+=aryVolPrice[j];}if(Array.isArray(data))lHigh=parseInt(Math.min(data[i]*100-lMinPrice,lSpeed-1));else lHigh=parseInt(Math.min(data*100-lMinPrice,lSpeed-1));dVol=0;for(k=0;k<=lHigh;k++){dVol+=aryVolPrice[k];}if(dTotalVol>0&&dVol>0&&dVol<=dTotalVol)result[i]=dVol/dTotalVol;else if(i-1>=0)result[i]=result[i-1];}return result;};this.PWINNER=function(n,data,node){var result=[];return result;};//计算截至到某一天的历史所有筹码
10066
10112
  this.CalculateChip=function(index,exchangeData,hisData,dRate){var result={Min:null,Max:null,Data:[]};var seed=1;//筹码历史衰减换手系数
10067
- var max=null,min=null;for(var _i88=index;_i88>=0;--_i88){var _item10={};//Vol:量 High:最高 Low:最低
10068
- var kData=hisData[_i88];if(_i88==index)_item10.Vol=kData.Vol*exchangeData[_i88];else _item10.Vol=kData.Vol*seed;_item10.Date=kData.Date;_item10.High=kData.High;_item10.Low=kData.Low;if(max==null)max=_item10.High;else if(max<_item10.High)max=_item10.High;if(min==null)min=_item10.Low;else if(min<_item10.Low)min=_item10.Low;result.Data[_i88]=_item10;seed*=1-exchangeData[_i88]/100*dRate;//换手率累乘
10113
+ var max=null,min=null;for(var _i86=index;_i86>=0;--_i86){var _item8={};//Vol:量 High:最高 Low:最低
10114
+ var kData=hisData[_i86];if(_i86==index)_item8.Vol=kData.Vol*exchangeData[_i86];else _item8.Vol=kData.Vol*seed;_item8.Date=kData.Date;_item8.High=kData.High;_item8.Low=kData.Low;if(max==null)max=_item8.High;else if(max<_item8.High)max=_item8.High;if(min==null)min=_item8.Low;else if(min<_item8.Low)min=_item8.Low;result.Data[_i86]=_item8;seed*=1-exchangeData[_i86]/100*dRate;//换手率累乘
10069
10115
  }result.Max=max;result.Min=min;return result;};/*
10070
10116
  返回是否连涨周期数.
10071
10117
  用法:
10072
10118
  UPNDAY(CLOSE,M)
10073
10119
  表示连涨M个周期,M为常量
10074
- */this.UPNDAY=function(data,n){var result=[];if(n<1)return result;if(data==null||n>data.length)return result;var days=0;for(var _i89=0;_i89<data.length;++_i89){result[_i89]=0;if(_i89-1<0)continue;if(!this.IsNumber(data[_i89])||!this.IsNumber(data[_i89-1]))//无效数都不算连涨
10075
- {days=0;continue;}if(data[_i89]>data[_i89-1])++days;else days=0;if(days==n){result[_i89]=1;--days;}}return result;};/*
10120
+ */this.UPNDAY=function(data,n){var result=[];if(n<1)return result;if(data==null||n>data.length)return result;var days=0;for(var _i87=0;_i87<data.length;++_i87){result[_i87]=0;if(_i87-1<0)continue;if(!this.IsNumber(data[_i87])||!this.IsNumber(data[_i87-1]))//无效数都不算连涨
10121
+ {days=0;continue;}if(data[_i87]>data[_i87-1])++days;else days=0;if(days==n){result[_i87]=1;--days;}}return result;};/*
10076
10122
  返回是否连跌周期.
10077
10123
  用法:
10078
10124
  DOWNNDAY(CLOSE,M)
10079
10125
  表示连跌M个周期,M为常量
10080
- */this.DOWNNDAY=function(data,n){var result=[];if(n<1)return result;if(data==null||n>data.length)return result;var days=0;for(var _i90=0;_i90<data.length;++_i90){result[_i90]=0;if(_i90-1<0)continue;if(!this.IsNumber(data[_i90])||!this.IsNumber(data[_i90-1]))//无效数都不算连涨
10081
- {days=0;continue;}if(data[_i90]<data[_i90-1])++days;else days=0;if(days==n){result[_i90]=1;--days;}}return result;};/*
10126
+ */this.DOWNNDAY=function(data,n){var result=[];if(n<1)return result;if(data==null||n>data.length)return result;var days=0;for(var _i88=0;_i88<data.length;++_i88){result[_i88]=0;if(_i88-1<0)continue;if(!this.IsNumber(data[_i88])||!this.IsNumber(data[_i88-1]))//无效数都不算连涨
10127
+ {days=0;continue;}if(data[_i88]<data[_i88-1])++days;else days=0;if(days==n){result[_i88]=1;--days;}}return result;};/*
10082
10128
  返回是否持续存在X>Y
10083
10129
  用法:
10084
10130
  NDAY(CLOSE,OPEN,3)
10085
10131
  表示连续3日收阳线
10086
- */this.NDAY=function(data,data2,n){var result=[];if(n<1)return result;if(!Array.isArray(data)&&!Array.isArray(data2))return result;if(data==null||data2==null)return result;if(Array.isArray(data)&&Array.isArray(data2)){if(n>=data.length||n>=data2.length)return result;var count=Math.max(data.length,data2.length);var days=0;for(var _i91=0;_i91<count;++_i91){result[_i91]=0;if(_i91>=data.length||_i91>=data2.length)continue;if(!this.IsNumber(data[_i91])||!this.IsNumber(data2[_i91])){days=0;continue;}if(data[_i91]>data2[_i91])++days;else days=0;if(days==n){result[_i91]=1;--days;}}}else if(Array.isArray(data)&&!Array.isArray(data2)){if(n>=data.length||!this.IsNumber(data2))return;var days=0;for(var _i92 in data){result[_i92]=0;if(!this.IsNumber(data[_i92])){days=0;continue;}if(data[_i92]>data2)++days;else days=0;if(days==n){result[_i92]=1;--days;}}}else if(!Array.isArray(data)&&Array.isArray(data2)){if(n>=data2.length||!this.IsNumber(data))return;var days=0;for(var _i93 in data2){result[_i93]=0;if(!this.IsNumber(data2[_i93])){days=0;continue;}if(data>data2[_i93])++days;else days=0;if(days==n){result[_i93]=1;--days;}}}return result;};/*
10132
+ */this.NDAY=function(data,data2,n){var result=[];if(n<1)return result;if(!Array.isArray(data)&&!Array.isArray(data2))return result;if(data==null||data2==null)return result;if(Array.isArray(data)&&Array.isArray(data2)){if(n>=data.length||n>=data2.length)return result;var count=Math.max(data.length,data2.length);var days=0;for(var _i89=0;_i89<count;++_i89){result[_i89]=0;if(_i89>=data.length||_i89>=data2.length)continue;if(!this.IsNumber(data[_i89])||!this.IsNumber(data2[_i89])){days=0;continue;}if(data[_i89]>data2[_i89])++days;else days=0;if(days==n){result[_i89]=1;--days;}}}else if(Array.isArray(data)&&!Array.isArray(data2)){if(n>=data.length||!this.IsNumber(data2))return;var days=0;for(var _i90 in data){result[_i90]=0;if(!this.IsNumber(data[_i90])){days=0;continue;}if(data[_i90]>data2)++days;else days=0;if(days==n){result[_i90]=1;--days;}}}else if(!Array.isArray(data)&&Array.isArray(data2)){if(n>=data2.length||!this.IsNumber(data))return;var days=0;for(var _i91 in data2){result[_i91]=0;if(!this.IsNumber(data2[_i91])){days=0;continue;}if(data>data2[_i91])++days;else days=0;if(days==n){result[_i91]=1;--days;}}}return result;};/*
10087
10133
  两条线维持一定周期后交叉.
10088
10134
  用法:LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0
10089
- */this.LONGCROSS=function(data,data2,n){var result=[];var count=Math.max(data.length,data2.length);for(var _i94=0;_i94<count;++_i94){result[_i94]=0;if(_i94-1<0)continue;if(_i94>=data.length||_i94>=data2.length)continue;if(!this.IsNumber(data[_i94])||!this.IsNumber(data2[_i94])||!this.IsNumber(data[_i94-1])||!this.IsNumber(data2[_i94-1]))continue;if(data[_i94]>data2[_i94]&&data[_i94-1]<data2[_i94-1])result[_i94]=1;}for(var _i95=0,_j4=0;_i95<count;++_i95){if(!result[_i95])continue;for(_j4=1;_j4<=n&&_i95-_j4>=0;++_j4){if(data[_i95-_j4]>=data2[_i95-_j4]){result[_i95]=0;break;}}}return result;};this.ISVALID=function(data){if(Array.isArray(data)){var result=[];for(var i=0;i<data.length;++i){var item=data[i];if(item)result[i]=1;else result[i]=0;}return result;}else{if(data)return 1;else return 0;}};/*
10135
+ */this.LONGCROSS=function(data,data2,n){var result=[];var count=Math.max(data.length,data2.length);for(var _i92=0;_i92<count;++_i92){result[_i92]=0;if(_i92-1<0)continue;if(_i92>=data.length||_i92>=data2.length)continue;if(!this.IsNumber(data[_i92])||!this.IsNumber(data2[_i92])||!this.IsNumber(data[_i92-1])||!this.IsNumber(data2[_i92-1]))continue;if(data[_i92]>data2[_i92]&&data[_i92-1]<data2[_i92-1])result[_i92]=1;}for(var _i93=0,_j4=0;_i93<count;++_i93){if(!result[_i93])continue;for(_j4=1;_j4<=n&&_i93-_j4>=0;++_j4){if(data[_i93-_j4]>=data2[_i93-_j4]){result[_i93]=0;break;}}}return result;};this.ISVALID=function(data){if(Array.isArray(data)){var result=[];for(var i=0;i<data.length;++i){var item=data[i];if(item)result[i]=1;else result[i]=0;}return result;}else{if(data)return 1;else return 0;}};/*
10090
10136
  EXISTR(X,A,B):是否存在(前几日到前几日间).
10091
10137
  例如: EXISTR(CLOSE>OPEN,10,5)
10092
10138
  表示从前10日内到前5日内存在着阳线
10093
10139
  若A为0,表示从第一天开始,B为0,表示到最后日止
10094
- */this.EXISTR=function(data,n,n2){var result=[];if(!Array.isArray(data))return result;n=parseInt(n);n2=parseInt(n2);if(n<=0)n=data.length;if(n2<=0)n2=1;if(n2>n)return result;var result=[];var value;for(var _i96=0,_j5=0;_i96<data.length;++_i96){result[_i96]=null;if(_i96-n<0||_i96-n2<0)continue;result[_i96]=0;for(_j5=n;_j5>=n2;--_j5){var value=data[_i96-_j5];if(this.IsNumber(value)&&value){result[_i96]=1;break;}}}return result;};/*
10140
+ */this.EXISTR=function(data,n,n2){var result=[];if(!Array.isArray(data))return result;n=parseInt(n);n2=parseInt(n2);if(n<=0)n=data.length;if(n2<=0)n2=1;if(n2>n)return result;var result=[];var value;for(var _i94=0,_j5=0;_i94<data.length;++_i94){result[_i94]=null;if(_i94-n<0||_i94-n2<0)continue;result[_i94]=0;for(_j5=n;_j5>=n2;--_j5){var value=data[_i94-_j5];if(this.IsNumber(value)&&value){result[_i94]=1;break;}}}return result;};/*
10095
10141
  RELATE(X,Y,N) 返回X和Y的N周期的相关系数
10096
10142
  RELATE(X,Y,N)=(∑[(Xi-Avg(X))(Yi-Avg(y))])/N ÷ √((∑(Xi-Avg(X))^2)/N * (∑(Yi-Avg(Y))^2)/N)
10097
10143
  其中 avg(x)表示x的N周期均值: avg(X) = (∑Xi)/N
10098
10144
  √(...)表示开平方
10099
- */this.RELATE=function(data,data2,n){var result=[];if(n<1)n=1;if(!Array.isArray(data)||!Array.isArray(data2))return result;var dataAverage=this.CalculateAverage(data,n);var data2Average=this.CalculateAverage(data2,n);var count=Math.max(data.length,data2.length);for(var _i97=0,_j6=0;_i97<count;++_i97){result[_i97]=null;if(_i97>=data.length||_i97>=data2.length||_i97>=dataAverage.length||_i97>=data2Average.length)continue;var average=dataAverage[_i97];var average2=data2Average[_i97];var total=0,total2=0,total3=0;for(_j6=_i97-n+1;_j6<=_i97;++_j6){total+=(data[_j6]-average)*(data2[_j6]-average2);//∑[(Xi-Avg(X))(Yi-Avg(y))])
10145
+ */this.RELATE=function(data,data2,n){var result=[];if(n<1)n=1;if(!Array.isArray(data)||!Array.isArray(data2))return result;var dataAverage=this.CalculateAverage(data,n);var data2Average=this.CalculateAverage(data2,n);var count=Math.max(data.length,data2.length);for(var _i95=0,_j6=0;_i95<count;++_i95){result[_i95]=null;if(_i95>=data.length||_i95>=data2.length||_i95>=dataAverage.length||_i95>=data2Average.length)continue;var average=dataAverage[_i95];var average2=data2Average[_i95];var total=0,total2=0,total3=0;for(_j6=_i95-n+1;_j6<=_i95;++_j6){total+=(data[_j6]-average)*(data2[_j6]-average2);//∑[(Xi-Avg(X))(Yi-Avg(y))])
10100
10146
  total2+=Math.pow(data[_j6]-average,2);//∑(Xi-Avg(X))^2
10101
10147
  total3+=Math.pow(data2[_j6]-average2,2);//∑(Yi-Avg(Y))^2)
10102
- }result[_i97]=total/n/(Math.sqrt(total2/n)*Math.sqrt(total3/n));}return result;};//计算数组n周期内的均值
10148
+ }result[_i95]=total/n/(Math.sqrt(total2/n)*Math.sqrt(total3/n));}return result;};//计算数组n周期内的均值
10103
10149
  this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var total=0;for(var i=0;i<data.length;++i)//去掉开始的无效数
10104
10150
  {if(this.IsNumber(data[i]))break;}for(;i<data.length&&i<n;++i)//计算第1个周期的数据
10105
10151
  {result[i]=null;var value=data[i];if(!this.IsNumber(value))continue;total+=value;}result[i-1]=total/n;for(;i<data.length;++i)//计算后面的周期数据
@@ -10107,7 +10153,7 @@ this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var to
10107
10153
  if(!this.IsNumber(value))value=0;if(!this.IsNumber(preValue))preValue=0;total=total-preValue+value;//当前周期的数据 等于上一个周期数据 去掉上一个周期的第1个数据 加上这个周期的最后1个数据
10108
10154
  result[i]=total/n;}return result;};/*
10109
10155
  COVAR(X,Y,N) 返回X和Y的N周期的协方差
10110
- */this.COVAR=function(data,data2,n){if(this.IsNumber(data)||this.IsNumber(data2))return 0;var result=[];if(n<1)n=1;if(!Array.isArray(data)||!Array.isArray(data2))return result;var dataAverage=this.CalculateAverage(data,n);var data2Average=this.CalculateAverage(data2,n);var count=Math.max(data.length,data2.length);var count=Math.max(data.length,data2.length);for(var _i98=0,_j7=0;_i98<count;++_i98){result[_i98]=null;if(_i98>=data.length||_i98>=data2.length||_i98>=dataAverage.length||_i98>=data2Average.length)continue;var average=dataAverage[_i98];var average2=data2Average[_i98];var total=0;for(_j7=_i98-n+1;_j7<=_i98;++_j7){total+=(data[_j7]-average)*(data2[_j7]-average2);}result[_i98]=total/n;}return result;};/*
10156
+ */this.COVAR=function(data,data2,n){if(this.IsNumber(data)||this.IsNumber(data2))return 0;var result=[];if(n<1)n=1;if(!Array.isArray(data)||!Array.isArray(data2))return result;var dataAverage=this.CalculateAverage(data,n);var data2Average=this.CalculateAverage(data2,n);var count=Math.max(data.length,data2.length);var count=Math.max(data.length,data2.length);for(var _i96=0,_j7=0;_i96<count;++_i96){result[_i96]=null;if(_i96>=data.length||_i96>=data2.length||_i96>=dataAverage.length||_i96>=data2Average.length)continue;var average=dataAverage[_i96];var average2=data2Average[_i96];var total=0;for(_j7=_i96-n+1;_j7<=_i96;++_j7){total+=(data[_j7]-average)*(data2[_j7]-average2);}result[_i96]=total/n;}return result;};/*
10111
10157
  求上一高点到当前的周期数.
10112
10158
  用法:
10113
10159
  HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计
@@ -10131,7 +10177,7 @@ for(var i=0;i<data.length;++i){result[i]=null;if(this.IsNumber(data[i])){nMin=i;
10131
10177
  公式=股票和指数协方差/指数方差
10132
10178
  */this.BETA=function(n){var result=[];var stockData=this.SymbolData.Data;var indexData=this.SymbolData.IndexData;if(n<=0)n=1;var stockProfit=[];//股票涨幅
10133
10179
  var indexProfit=[];//指数涨幅
10134
- for(var _i99=0;_i99<stockData.Data.length;++_i99){stockProfit[_i99]=0;indexProfit[_i99]=0;var stockItem=stockData.Data[_i99];var indexItem=indexData.Data[_i99];if(stockItem.Close>0&&stockItem.YClose>0)stockProfit[_i99]=(stockItem.Close-stockItem.YClose)/stockItem.YClose;if(indexItem.Close>0&&indexItem.YClose>0)indexProfit[_i99]=(indexItem.Close-indexItem.YClose)/indexItem.YClose;}//计算均值数组
10180
+ for(var _i97=0;_i97<stockData.Data.length;++_i97){stockProfit[_i97]=0;indexProfit[_i97]=0;var stockItem=stockData.Data[_i97];var indexItem=indexData.Data[_i97];if(stockItem.Close>0&&stockItem.YClose>0)stockProfit[_i97]=(stockItem.Close-stockItem.YClose)/stockItem.YClose;if(indexItem.Close>0&&indexItem.YClose>0)indexProfit[_i97]=(indexItem.Close-indexItem.YClose)/indexItem.YClose;}//计算均值数组
10135
10181
  var averageStockProfit=this.CalculateAverage(stockProfit,n);var averageIndexProfit=this.CalculateAverage(indexProfit,n);for(var i=0,j=0;i<stockData.Data.length;++i){result[i]=null;if(i>=stockProfit.length||i>=indexProfit.length||i>=averageStockProfit.length||i>=averageIndexProfit.length)continue;var averageStock=averageStockProfit[i];var averageIndex=averageIndexProfit[i];var covariance=0;//协方差
10136
10182
  var variance=0;//方差
10137
10183
  for(j=i-n+1;j<=i;++j){var value=indexProfit[j]-averageIndex;var value2=stockProfit[j]-averageStock;covariance+=value*value2;variance+=value*value;}if(this.IsDivideNumber(variance)&&this.IsNumber(covariance))result[i]=covariance/variance;//(covariance/n)/(variance/n)=covariance/variance;
@@ -10179,8 +10225,8 @@ this.CON2STR=function(data,n){var result=[];if(Array.isArray(data)){for(var i=da
10179
10225
  //用法: VAR2STR(C,3)表示取收盘价,以3位小数转为字符串
10180
10226
  this.VAR2STR=function(data,n){var result=[];if(Array.isArray(data)){for(var i=0;i<data.length;++i){result[i]=null;var item=data[i];if(this.IsNumber(item))result[i]=item.toFixed(n);}}else{if(this.IsNumber(data))result=data.toFixed(n);}return result;};this.MOD=function(data,data2){var result=[];var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值
10181
10227
  if(isNumber&&isNumber2){return JSAlgorithm.MOD(data,data2);}else if(!isNumber&&!isNumber2)//都是数组相加
10182
- {var count=Math.max(data.length,data2.length);for(var _i100=0;_i100<count;++_i100){result[_i100]=null;//初始化
10183
- if(_i100<data.length&&_i100<data2.length){if(this.IsNumber(data[_i100])&&this.IsNumber(data2[_i100]))result[_i100]=JSAlgorithm.MOD(data[_i100],data2[_i100]);}}return result;}else if(isNumber&&!isNumber2)//单数字 数组
10228
+ {var count=Math.max(data.length,data2.length);for(var _i98=0;_i98<count;++_i98){result[_i98]=null;//初始化
10229
+ if(_i98<data.length&&_i98<data2.length){if(this.IsNumber(data[_i98])&&this.IsNumber(data2[_i98]))result[_i98]=JSAlgorithm.MOD(data[_i98],data2[_i98]);}}return result;}else if(isNumber&&!isNumber2)//单数字 数组
10184
10230
  {for(var i in data2){result[i]=null;if(this.IsNumber(data)&&this.IsNumber(data2[i]))result[i]=JSAlgorithm.MOD(data,data2[i]);}return result;}else if(!isNumber&&isNumber2)//数组 单数字
10185
10231
  {for(var i in data){result[i]=null;if(this.IsNumber(data[i])&&this.IsNumber(data2))result[i]=JSAlgorithm.MOD(data[i],data2);}return result;}return result;};this.POW=function(data,n){var result=[];if(Array.isArray(data)&&Array.isArray(n)){for(var i=0;i<data.length;++i){var value=data[i];var value2=n[i];if(this.IsNumber(value)&&this.IsNumber(value2))result[i]=Math.pow(value,value2);else result[i]=null;}}else if(IFrameSplitOperator.IsNumber(data)&&Array.isArray(n)){for(var i=0;i<n.length;++i){var item=n[i];if(this.IsNumber(item))result[i]=Math.pow(data,item);else result[i]=null;}}else if(IFrameSplitOperator.IsNumber(data)&&IFrameSplitOperator.IsNumber(n)){return Math.pow(data,n);}else if(Array.isArray(data)&&IFrameSplitOperator.IsNumber(n)){for(var i=0;i<data.length;++i){var item=data[i];if(this.IsNumber(item))result[i]=Math.pow(item,n);else result[i]=null;}}return result;};this.CEILING=function(data){var isNumber=typeof data=='number';if(isNumber)return parseInt(data);var result=[];for(var i in data){var item=data[i];if(this.IsNumber(item))result[i]=parseInt(item);else result[i]=null;}return result;};this.FLOOR=function(data){var isNumber=typeof data=='number';if(isNumber)return parseInt(data-1);var result=[];for(var i in data){var item=data[i];if(this.IsNumber(item))result[i]=parseInt(item-1);else result[i]=null;}return result;};this.ZTPRICE=function(data,rate){if(!this.IsNumber(rate))return null;if(Array.isArray(data)){var result=[];for(var i in data){var item=data[i];if(this.IsNumber(item))result[i]=(1+rate)*item;else result[i]=null;}return result;}else if(this.IsNumber(data)){var result=(1+rate)*data;return result;}};this.DTPRICE=function(data,rate){if(!this.IsNumber(rate))return null;if(Array.isArray(data)){var result=[];for(var i in data){var item=data[i];if(this.IsNumber(item))result[i]=(1-rate)*item;else result[i]=null;}return result;}else if(this.IsNumber(data)){var result=(1-rate)*data;return result;}};/*
10186
10232
  FRACPART(A) 取得小数部分
@@ -10347,20 +10393,20 @@ var IsNumber=typeof data=="number";var IsNumber2=typeof data2=="number";if(Array
10347
10393
  用法: DRAWLINE(COND1,PRICE1,COND2,PRICE2,EXPAND)
10348
10394
  当COND1条件满足时,在PRICE1位置画直线起点,当COND2条件满足时,在PRICE2位置画直线终点,EXPAND为延长类型。
10349
10395
  例如: DRAWLINE(HIGH>=HHV(HIGH,20),HIGH,LOW<=LLV(LOW,20),LOW,1) 表示在创20天新高与创20天新低之间画直线并且向右延长。
10350
- */this.DRAWLINE=function(condition,data,condition2,data2,expand){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWLINE',Expand:expand};if(condition.length<=0)return result;var count=Math.max(condition.length,condition2.length);var bFirstPoint=false;var bSecondPont=false;var lineCache={Start:{},End:{},List:new Array()};for(var _i101=0;_i101<count;++_i101){drawData[_i101]=null;if(_i101<condition.length&&_i101<condition2.length){if(bFirstPoint==false&&bSecondPont==false){if(condition[_i101]==null||!condition[_i101])continue;bFirstPoint=true;lineCache.Start={ID:_i101,Value:data[_i101]};//第1个点
10351
- }else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[_i101]!=null&&condition2[_i101];//条件2
10352
- if(!bCondition2){if(condition[_i101])//条件1满足
10353
- lineCache.Start={ID:_i101,Value:data[_i101]};//移动第1个点
10354
- continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:_i101,Value:data2[_i101]};//第2个点
10355
- }}else if(bFirstPoint==true&&bSecondPont==true){var bCondition2=condition2[_i101]!=null&&condition2[_i101];//条件2
10396
+ */this.DRAWLINE=function(condition,data,condition2,data2,expand){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWLINE',Expand:expand};if(condition.length<=0)return result;var count=Math.max(condition.length,condition2.length);var bFirstPoint=false;var bSecondPont=false;var lineCache={Start:{},End:{},List:new Array()};for(var _i99=0;_i99<count;++_i99){drawData[_i99]=null;if(_i99<condition.length&&_i99<condition2.length){if(bFirstPoint==false&&bSecondPont==false){if(condition[_i99]==null||!condition[_i99])continue;bFirstPoint=true;lineCache.Start={ID:_i99,Value:data[_i99]};//第1个点
10397
+ }else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[_i99]!=null&&condition2[_i99];//条件2
10398
+ if(!bCondition2){if(condition[_i99])//条件1满足
10399
+ lineCache.Start={ID:_i99,Value:data[_i99]};//移动第1个点
10400
+ continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:_i99,Value:data2[_i99]};//第2个点
10401
+ }}else if(bFirstPoint==true&&bSecondPont==true){var bCondition2=condition2[_i99]!=null&&condition2[_i99];//条件2
10356
10402
  if(bCondition2)//条件2满足
10357
- {lineCache.End={ID:_i101,Value:data2[_i101]};//移动第2个点
10358
- }else if(condition[_i101])//条件1满足
10403
+ {lineCache.End={ID:_i99,Value:data2[_i99]};//移动第2个点
10404
+ }else if(condition[_i99])//条件1满足
10359
10405
  {var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
10360
- for(var _j8 in lineData){var _item11=lineData[_j8];drawData[_item11.ID]=_item11.Value;}if(expand==1)this.CalculateDrawDataExtendLine(drawData,lineCache.Start.ID-2);//右延长线
10361
- bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:_i101,Value:data[_i101]};//第1个点
10406
+ for(var _j8 in lineData){var _item9=lineData[_j8];drawData[_item9.ID]=_item9.Value;}if(expand==1)this.CalculateDrawDataExtendLine(drawData,lineCache.Start.ID-2);//右延长线
10407
+ bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:_i99,Value:data[_i99]};//第1个点
10362
10408
  }}}//最后一组线
10363
- if(bFirstPoint==true&&bSecondPont==true){var _lineData=this.CalculateDrawLine(lineCache);for(var _j9 in _lineData){var _item12=_lineData[_j9];drawData[_item12.ID]=_item12.Value;}}}if(expand==1)this.CalculateDrawDataExtendLine(drawData);//右延长线
10409
+ if(bFirstPoint==true&&bSecondPont==true){var _lineData=this.CalculateDrawLine(lineCache);for(var _j9 in _lineData){var _item10=_lineData[_j9];drawData[_item10.ID]=_item10.Value;}}}if(expand==1)this.CalculateDrawDataExtendLine(drawData);//右延长线
10364
10410
  return result;};/*
10365
10411
  画出带状线.
10366
10412
  用法: DRAWBAND(VAL1,COLOR1,VAL2,COLOR2),当VAL1>VAL2时,在VAL1和VAL2之间填充COLOR1;当VAL1<VAL2时,填充COLOR2,这里的颜色均使用RGB函数计算得到.
@@ -10373,8 +10419,8 @@ if(color)result.Color[0]=color.toLowerCase();if(color2)result.Color[1]=color2.to
10373
10419
  {for(var i in condition){drawData[i]=null;var condItem=condition[i];if(!condItem)continue;var value=this.GetDataByIndex(data,i);if(!value.Result)continue;var value2=this.GetDataByIndex(data2,i);if(!value2.Result)continue;var item={Value:value.Data,Value2:value2.Data};drawData[i]=item;}}else{if(condition){for(var i=0;i<this.SymbolData.Data.Data.length;++i)//以K线长度为数据长度
10374
10420
  {drawData[i]=null;var value=this.GetDataByIndex(data,i);if(!value.Result)continue;var value2=this.GetDataByIndex(data2,i);if(!value2.Result)continue;var item={Value:value.Data,Value2:value2.Data};drawData[i]=item;}}}return result;};//DRAWKLINE(HIGH,OPEN,LOW,CLOSE).
10375
10421
  //用法:以HIGH为最高价,OPEN为开盘价,LOW为最低,CLOSE收盘画K线
10376
- this.DRAWKLINE=function(high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE'};var count=Math.max(high.length,open.length,low.length,close.length);for(var _i102=0;_i102<count;++_i102){var _item13={Open:null,High:null,Low:null,Close:null};if(_i102<high.length&&_i102<open.length&&_i102<low.length&&_i102<close.length){_item13.Open=open[_i102];_item13.High=high[_i102];_item13.Low=low[_i102];_item13.Close=close[_i102];}drawData[_i102]=_item13;}return result;};//满足条件画一根K线
10377
- this.DRAWKLINE_IF=function(condition,high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE_IF'};var count=Math.max(condition.length,high.length,open.length,low.length,close.length);for(var _i103=0;_i103<count;++_i103){var _item14={Open:null,High:null,Low:null,Close:null};if(_i103<high.length&&_i103<open.length&&_i103<low.length&&_i103<close.length&&_i103<condition.length){if(condition[_i103]){_item14.Open=open[_i103];_item14.High=high[_i103];_item14.Low=low[_i103];_item14.Close=close[_i103];}}drawData[_i103]=_item14;}return result;};//叠加一个K线
10422
+ this.DRAWKLINE=function(high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE'};var count=Math.max(high.length,open.length,low.length,close.length);for(var _i100=0;_i100<count;++_i100){var _item11={Open:null,High:null,Low:null,Close:null};if(_i100<high.length&&_i100<open.length&&_i100<low.length&&_i100<close.length){_item11.Open=open[_i100];_item11.High=high[_i100];_item11.Low=low[_i100];_item11.Close=close[_i100];}drawData[_i100]=_item11;}return result;};//满足条件画一根K线
10423
+ this.DRAWKLINE_IF=function(condition,high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE_IF'};var count=Math.max(condition.length,high.length,open.length,low.length,close.length);for(var _i101=0;_i101<count;++_i101){var _item12={Open:null,High:null,Low:null,Close:null};if(_i101<high.length&&_i101<open.length&&_i101<low.length&&_i101<close.length&&_i101<condition.length){if(condition[_i101]){_item12.Open=open[_i101];_item12.High=high[_i101];_item12.Low=low[_i101];_item12.Close=close[_i101];}}drawData[_i101]=_item12;}return result;};//叠加一个K线
10378
10424
  this.DRAWOVERLAYKLINE=function(open,high,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWOVERLAYKLINE'};var count=Math.max(high.length,open.length,low.length,close.length);var kData=this.SymbolData.Data.Data;for(var i=0;i<count;++i){var item={Open:null,High:null,Low:null,Close:null};var kItem=kData[i];if(i<high.length&&i<open.length&&i<low.length&&i<close.length&&IFrameSplitOperator.IsNumber(open[i])&&IFrameSplitOperator.IsNumber(high[i])&&IFrameSplitOperator.IsNumber(low[i])&&IFrameSplitOperator.IsNumber(low[i])){item.Open=open[i];item.High=high[i];item.Low=low[i];item.Close=close[i];item.Date=kItem.Date;if(IFrameSplitOperator.IsNumber(kItem.Time))item.Time=kItem.Time;}drawData[i]=item;}return result;};/*
10379
10425
  DRAWCOLORKLINE 绘制K线
10380
10426
  用法:
@@ -10398,11 +10444,11 @@ this.DRAWOVERLAYKLINE=function(open,high,low,close){var drawData=[];var result={
10398
10444
  }else if(bFirstPoint==true&&bSecondPont==false){if(!this.IsNumber(data[i]))continue;lineCache.End={ID:parseInt(i),Value:data[i]};//第2个点
10399
10445
  //根据起始点和结束点 计算中间各个点的数据
10400
10446
  var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
10401
- for(var _j10 in lineData){var _item15=lineData[_j10];drawData[_item15.ID]=_item15.Value;}var start={ID:lineCache.End.ID,Value:lineCache.End.Value};lineCache={Start:start,End:{}};}}this.CalculateDrawDataExtendLine(drawData);}else{var _lineCache={Start:{},End:{},List:[]};for(var _i104 in condition){drawData[_i104]=null;if(bFirstPoint==false&&bSecondPont==false){if(condition[_i104]==null||!condition[_i104])continue;if(_i104>=data.length||!this.IsNumber(data[_i104]))continue;bFirstPoint=true;_lineCache.Start={ID:parseInt(_i104),Value:data[_i104]};//第1个点
10402
- }else if(bFirstPoint==true&&bSecondPont==false){if(condition[_i104]==null||!condition[_i104])continue;if(_i104>=data.length||!this.IsNumber(data[_i104]))continue;_lineCache.End={ID:parseInt(_i104),Value:data[_i104]};//第2个点
10447
+ for(var _j10 in lineData){var _item13=lineData[_j10];drawData[_item13.ID]=_item13.Value;}var start={ID:lineCache.End.ID,Value:lineCache.End.Value};lineCache={Start:start,End:{}};}}this.CalculateDrawDataExtendLine(drawData);}else{var _lineCache={Start:{},End:{},List:[]};for(var _i102 in condition){drawData[_i102]=null;if(bFirstPoint==false&&bSecondPont==false){if(condition[_i102]==null||!condition[_i102])continue;if(_i102>=data.length||!this.IsNumber(data[_i102]))continue;bFirstPoint=true;_lineCache.Start={ID:parseInt(_i102),Value:data[_i102]};//第1个点
10448
+ }else if(bFirstPoint==true&&bSecondPont==false){if(condition[_i102]==null||!condition[_i102])continue;if(_i102>=data.length||!this.IsNumber(data[_i102]))continue;_lineCache.End={ID:parseInt(_i102),Value:data[_i102]};//第2个点
10403
10449
  //根据起始点和结束点 计算中间各个点的数据
10404
10450
  var _lineData2=this.CalculateDrawLine(_lineCache);//计算2个点的线上 其他点的数值
10405
- for(var _j11 in _lineData2){var _item16=_lineData2[_j11];drawData[_item16.ID]=_item16.Value;}var _start={ID:_lineCache.End.ID,Value:_lineCache.End.Value};_lineCache={Start:_start,End:{}};}}this.CalculateDrawDataExtendLine(drawData);}}return result;};this.CalculateDrawDataExtendLine=function(drawData,maxCount){if(maxCount<0)return;var x2=null;var count=drawData.length;if(this.IsNumber(maxCount)&&maxCount<count)count=maxCount;for(var i=count-1;i>=0;--i){if(this.IsNumber(drawData[i])){x2=i;break;}}//y3=(y1-y2)*(x3-x1)/(x2-x1)
10451
+ for(var _j11 in _lineData2){var _item14=_lineData2[_j11];drawData[_item14.ID]=_item14.Value;}var _start={ID:_lineCache.End.ID,Value:_lineCache.End.Value};_lineCache={Start:_start,End:{}};}}this.CalculateDrawDataExtendLine(drawData);}}return result;};this.CalculateDrawDataExtendLine=function(drawData,maxCount){if(maxCount<0)return;var x2=null;var count=drawData.length;if(this.IsNumber(maxCount)&&maxCount<count)count=maxCount;for(var i=count-1;i>=0;--i){if(this.IsNumber(drawData[i])){x2=i;break;}}//y3=(y1-y2)*(x3-x1)/(x2-x1)
10406
10452
  if(x2!=null&&x2-1>=0){var x1=x2-1;for(var i=x2+1;i<count;++i){var y1=drawData[x1];var y2=drawData[x2];var y3=(y1-y2)*(i-x1)/(x2-x1);if(y1-y3<0)break;drawData[i]=y1-y3;}}};/*
10407
10453
  画出数字.
10408
10454
  用法:
@@ -10564,8 +10610,8 @@ this.CKLINE=function(color,lineWidth,lineType,lineDotted){var drawData={Color:co
10564
10610
  this.BUY=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(0,255,0)",Type:"SVG",Icon:'\uE660'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='BUY';return result;};this.BUYSHORT=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(0,255,0)",Type:"SVG",Icon:'\uE660'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='BUYSHORT';return result;};//多头平仓(卖出平仓).
10565
10611
  //参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
10566
10612
  //例如: SELL(CROSS(A,B),HIGH),当A上穿B时,在HIGH处画标记,同时突出提示或直接下单,如果HIGH改为DRAWNULL,就不画标记.(分时图上不支持)
10567
- this.SELL=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(255,0,0)",Type:"SVG",Icon:'\uE661'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='SELL';return result;};this.SELLSHORT=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(255,0,0)",Type:"SVG",Icon:'\uE661'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='SELLSHORT';return result;};this.CalculateTradeData=function(condition,data,IconInfo){var aryData=[];var aryIcon=[];var result={DrawData:{Data:aryData,Icons:aryIcon}};if(Array.isArray(condition)){var isAryPosition=Array.isArray(data);for(var i=0;i<condition.length;++i){aryData[i]=0;aryIcon[i]=null;if(!condition[i])continue;aryData[i]=1;if(isAryPosition)aryIcon[i]={Value:data[i],Type:IconInfo.Type,Color:IconInfo.Color,Icon:IconInfo.Icon};else aryIcon[i]={Value:data,Type:IconInfo.Type,Color:IconInfo.Color,Icon:IconInfo.Icon};}}else if(IFrameSplitOperator.IsNumber(condition)&&condition>0){}return result;};}JSDraw.prototype.CalculateDrawLine=function(lineCache){lineCache.List=[];for(var _i105=lineCache.Start.ID;_i105<=lineCache.End.ID;++_i105){lineCache.List.push(_i105);}var height=Math.abs(lineCache.Start.Value-lineCache.End.Value);var width=lineCache.List.length-1;var result=[];result.push({ID:lineCache.Start.ID,Value:lineCache.Start.Value});//第1个点
10568
- if(lineCache.Start.Value>lineCache.End.Value){for(var _i106=1;_i106<lineCache.List.length-1;++_i106){var value=height*(lineCache.List.length-1-_i106)/width+lineCache.End.Value;result.push({ID:lineCache.List[_i106],Value:value});}}else{for(var _i107=1;_i107<lineCache.List.length-1;++_i107){var value=height*_i107/width+lineCache.Start.Value;result.push({ID:lineCache.List[_i107],Value:value});}}result.push({ID:lineCache.End.ID,Value:lineCache.End.Value});//最后一个点
10613
+ this.SELL=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(255,0,0)",Type:"SVG",Icon:'\uE661'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='SELL';return result;};this.SELLSHORT=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(255,0,0)",Type:"SVG",Icon:'\uE661'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='SELLSHORT';return result;};this.CalculateTradeData=function(condition,data,IconInfo){var aryData=[];var aryIcon=[];var result={DrawData:{Data:aryData,Icons:aryIcon}};if(Array.isArray(condition)){var isAryPosition=Array.isArray(data);for(var i=0;i<condition.length;++i){aryData[i]=0;aryIcon[i]=null;if(!condition[i])continue;aryData[i]=1;if(isAryPosition)aryIcon[i]={Value:data[i],Type:IconInfo.Type,Color:IconInfo.Color,Icon:IconInfo.Icon};else aryIcon[i]={Value:data,Type:IconInfo.Type,Color:IconInfo.Color,Icon:IconInfo.Icon};}}else if(IFrameSplitOperator.IsNumber(condition)&&condition>0){}return result;};}JSDraw.prototype.CalculateDrawLine=function(lineCache){lineCache.List=[];for(var _i103=lineCache.Start.ID;_i103<=lineCache.End.ID;++_i103){lineCache.List.push(_i103);}var height=Math.abs(lineCache.Start.Value-lineCache.End.Value);var width=lineCache.List.length-1;var result=[];result.push({ID:lineCache.Start.ID,Value:lineCache.Start.Value});//第1个点
10614
+ if(lineCache.Start.Value>lineCache.End.Value){for(var _i104=1;_i104<lineCache.List.length-1;++_i104){var value=height*(lineCache.List.length-1-_i104)/width+lineCache.End.Value;result.push({ID:lineCache.List[_i104],Value:value});}}else{for(var _i105=1;_i105<lineCache.List.length-1;++_i105){var value=height*_i105/width+lineCache.Start.Value;result.push({ID:lineCache.List[_i105],Value:value});}}result.push({ID:lineCache.End.ID,Value:lineCache.End.Value});//最后一个点
10569
10615
  return result;};//是否有是有效的数字
10570
10616
  JSDraw.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSDraw.prototype.IsDrawFunction=function(name){var setFunctionName=new _set2.default(["STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF',"DRAWCOLORKLINE",'PLOYLINE',"DRAWOVERLAYKLINE",'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS","DRAWTEXTREL",'DRAWOVERLAYLINE',"FILLRGN","FILLRGN2","FILLTOPRGN","FILLBOTTOMRGN","FILLVERTICALRGN","FLOATRGN","DRAWSL","DRAWGBK2","DRAWGBK_DIV","VERTLINE","HORLINE","TIPICON","BUY","SELL","SELLSHORT","BUYSHORT"]);if(setFunctionName.has(name))return true;return false;};JSDraw.prototype.RemoveZero=function(strValue){while(strValue.length>0){var index=strValue.length-1;var ch=strValue[index];if(ch=="0"){strValue=strValue.substr(0,index);}else if(ch=="."){strValue=strValue.substr(0,index);break;}else{break;}}return strValue;};//http://www.newone.com.cn/helpcontroller/index?code=zszy_pc
10571
10617
  var DYNAINFO_ARGUMENT_ID={YCLOSE:3,OPEN:4,HIGH:5,LOW:6,CLOSE:7,VOL:8,AMOUNT:10,AMPLITUDE:13,//振幅
@@ -10725,12 +10771,12 @@ if(periodInfo.Period==0)hisData=dayData.Data;else hisData=dayData.GetPeriodData(
10725
10771
  var result;if(curPeriodInfo.Period==periodInfo.Period){result=this.Data;}else{var hisData;if(this.IsApiPeriod){if(!this.PeriodData.has(periodName))return null;hisData=this.PeriodData.get(periodName);}else{if(ChartData.IsMinutePeriod(curPeriodInfo.Period,true)&&ChartData.IsDayPeriod(periodInfo.Period,true)){var dayData=this.PeriodData.get('DAY');//日线
10726
10772
  if(periodInfo.Period==0)hisData=dayData;else hisData=dayData.GetPeriodData(periodInfo.Period);//日线周期
10727
10773
  }else{var bindData=new ChartData();bindData.Data=this.SourceData.Data;bindData.Period=this.Period;bindData.Right=this.Right;if(ChartData.IsDayPeriod(periodInfo.Period,true)&&bindData.Right>0)//日线数据才复权
10728
- {var rightData=bindData.GetRightData(bindData.Right);bindData.Data=rightData;}hisData=bindData.GetPeriodData(periodInfo.Period);}}var data=this.Data.ConverPeriod(hisData,this.Period,periodInfo.Period);var result=new ChartData();result.Data=data;}if(IFrameSplitOperator.IsPlusNumber(n)){var refResult=new ChartData();var data=result.GetRef(n);refResult.Data=data;result=refResult;}var upperSymbol=this.Symbol.toUpperCase();switch(valueName){case'C':case"CLOSE":return result.GetClose();case'O':case"OPEN":return result.GetOpen();case'H':case"HIGH":return result.GetHigh();case'L':case"LOW":return result.GetLow();case'AMO':case"AMOUNT":return result.GetAmount();case'V':case"VOL":if(MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))return result.GetVol(100);return result.GetVol();case"VOLINSTK":return result.GetPosition();default:return null;}};this.GetCurrBarsCount=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i108=lCount-1;_i108>=0;--_i108){result.push(_i108+1);}//数据从0开始
10774
+ {var rightData=bindData.GetRightData(bindData.Right);bindData.Data=rightData;}hisData=bindData.GetPeriodData(periodInfo.Period);}}var data=this.Data.ConverPeriod(hisData,this.Period,periodInfo.Period);var result=new ChartData();result.Data=data;}if(IFrameSplitOperator.IsPlusNumber(n)){var refResult=new ChartData();var data=result.GetRef(n);refResult.Data=data;result=refResult;}var upperSymbol=this.Symbol.toUpperCase();switch(valueName){case'C':case"CLOSE":return result.GetClose();case'O':case"OPEN":return result.GetOpen();case'H':case"HIGH":return result.GetHigh();case'L':case"LOW":return result.GetLow();case'AMO':case"AMOUNT":return result.GetAmount();case'V':case"VOL":if(MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))return result.GetVol(100);return result.GetVol();case"VOLINSTK":return result.GetPosition();default:return null;}};this.GetCurrBarsCount=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i106=lCount-1;_i106>=0;--_i106){result.push(_i106+1);}//数据从0开始
10729
10775
  return result;};//BARPOS 返回从第一根K线开始到当前的周期数。
10730
10776
  //注:
10731
10777
  //1、BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
10732
10778
  //2、本机已有的第一根K线上返回值为1。
10733
- this.GetBarPos=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i109=0;_i109<lCount;++_i109){result.push(_i109+1);}return result;};this.GetTotalTradeMinuteCount=function(){var data=g_MinuteCoordinateData.GetCoordinateData(this.Symbol);if(data&&data.Count>0)return data.Count-1;return 242;};this.GetTotalBarsCount=function(){var lCount=this.Data.Data.length;return lCount;};this.GetIsLastBar=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i110=0;_i110<lCount;++_i110){if(_i110==lCount-1)result.push(1);else result.push(0);}return result;};//BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置.
10779
+ this.GetBarPos=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i107=0;_i107<lCount;++_i107){result.push(_i107+1);}return result;};this.GetTotalTradeMinuteCount=function(){var data=g_MinuteCoordinateData.GetCoordinateData(this.Symbol);if(data&&data.Count>0)return data.Count-1;return 242;};this.GetTotalBarsCount=function(){var lCount=this.Data.Data.length;return lCount;};this.GetIsLastBar=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i108=0;_i108<lCount;++_i108){if(_i108==lCount-1)result.push(1);else result.push(0);}return result;};//BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置.
10734
10780
  //例如:BARSTATUS=2表示当天是该数据的最后一个周期.
10735
10781
  this.GetBarStatus=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var i=0;i<lCount;++i){if(i==0)result[i]=1;else if(i==lCount-1)result[i]=2;else result[i]=0;}return result;};//求真实波幅, (最高-最低),(最高-昨收),(最低-昨收)三者绝对值中的最大值.
10736
10782
  //用法:
@@ -10751,7 +10797,7 @@ case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
10751
10797
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
10752
10798
  fieldList.push("margin.sell");break;}//请求数据
10753
10799
  JSNetwork.HttpRequest({url:this.StockHistoryDayApiUrl,data:{"field":fieldList,"symbol":[this.Symbol],"orderfield":"date"},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvMarginData(recvData,jobID);self.Execute.RunNextJob();}});};this.RecvMarginData=function(data,jobID){JSConsole.Complier.Log(data);if(!data.stock||data.stock.length!=1)return;var stock=data.stock[0];var aryData=new Array();var aryData2=[],aryData3=[],aryData4=[];//其他3个数据
10754
- for(var _i111 in stock.stockday){var item=stock.stockday[_i111];var marginData=item.margin;if(!marginData)continue;var indexData=new SingleData();indexData.Date=item.date;switch(jobID){case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE:if(!this.IsNumber(marginData.balance))continue;indexData.Value=marginData.balance;//融资融券余额
10800
+ for(var _i109 in stock.stockday){var item=stock.stockday[_i109];var marginData=item.margin;if(!marginData)continue;var indexData=new SingleData();indexData.Date=item.date;switch(jobID){case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE:if(!this.IsNumber(marginData.balance))continue;indexData.Value=marginData.balance;//融资融券余额
10755
10801
  aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE:if(!this.IsNumber(marginData.rate))continue;indexData.Value=marginData.rate;//融资占比
10756
10802
  aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE://买入信息-融资余额
10757
10803
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
@@ -10761,9 +10807,9 @@ var buyData=marginData.buy;if(!buyData)continue;if(!this.IsNumber(buyData.balanc
10761
10807
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME://卖出信息-卖出量
10762
10808
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
10763
10809
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
10764
- var sellData=marginData.sell;if(!sellData)continue;if(!this.IsNumber(sellData.balance)||!this.IsNumber(sellData.volume)||!this.IsNumber(sellData.repay)||!this.IsNumber(sellData.net))continue;indexData.Value=buyData.balance;var indexData2=new SingleData();indexData2.Date=item.date;indexData2.Value=buyData.volume;var indexData3=new SingleData();indexData3.Date=item.date;indexData3.Value=buyData.repay;var indexData4=new SingleData();indexData4.Date=item.date;indexData4.Value=buyData.net;aryData.push(indexData);aryData2.push(indexData2);aryData3.push(indexData3);aryData4.push(indexData4);break;default:continue;}}var allData=[];if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE){allData.push({JobID:jobID,Data:aryData});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET,Data:aryData4});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET,Data:aryData4});}for(var _i112 in allData){var aryFixedData=this.SourceData.GetFittingData(allData[_i112].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10810
+ var sellData=marginData.sell;if(!sellData)continue;if(!this.IsNumber(sellData.balance)||!this.IsNumber(sellData.volume)||!this.IsNumber(sellData.repay)||!this.IsNumber(sellData.net))continue;indexData.Value=buyData.balance;var indexData2=new SingleData();indexData2.Date=item.date;indexData2.Value=buyData.volume;var indexData3=new SingleData();indexData3.Date=item.date;indexData3.Value=buyData.repay;var indexData4=new SingleData();indexData4.Date=item.date;indexData4.Value=buyData.net;aryData.push(indexData);aryData2.push(indexData2);aryData3.push(indexData3);aryData4.push(indexData4);break;default:continue;}}var allData=[];if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE){allData.push({JobID:jobID,Data:aryData});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET,Data:aryData4});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET,Data:aryData4});}for(var _i110 in allData){var aryFixedData=this.SourceData.GetFittingData(allData[_i110].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10765
10811
  if(bindData.Period>0)//周期数据
10766
- {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data2=bindData.GetValue();this.MarginData.set(allData[_i112].JobID,_data2);}};this.GetNewsAnalysisCacheData=function(id,node){var jobID=JS_EXECUTE_JOB_ID.GetNewsAnalysisID(id);if(!jobID)this.Execute.ThrowUnexpectedNode(node,'不支持NEWS('+id+')');if(this.NewsAnalysisData.has(jobID))return this.NewsAnalysisData.get(jobID);return[];};this.GetHKToSHSZData=function(job){var args=job.Args;var code=this.Symbol;if(args.length>0){var item=args[0];if(item.Type==Syntax.Literal){code=item.Value;}else if(item.Type==Syntax.Identifier)//变量 !!只支持默认的变量值
10812
+ {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data2=bindData.GetValue();this.MarginData.set(allData[_i110].JobID,_data2);}};this.GetNewsAnalysisCacheData=function(id,node){var jobID=JS_EXECUTE_JOB_ID.GetNewsAnalysisID(id);if(!jobID)this.Execute.ThrowUnexpectedNode(node,'不支持NEWS('+id+')');if(this.NewsAnalysisData.has(jobID))return this.NewsAnalysisData.get(jobID);return[];};this.GetHKToSHSZData=function(job){var args=job.Args;var code=this.Symbol;if(args.length>0){var item=args[0];if(item.Type==Syntax.Literal){code=item.Value;}else if(item.Type==Syntax.Identifier)//变量 !!只支持默认的变量值
10767
10813
  {var isFind=false;for(var j in this.Arguments){var argItem=this.Arguments[j];if(argItem.Name==item.Name){code=argItem.Value;isFind=true;break;}}if(!isFind){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'HK2SHSZ() Error: can\'t read '+item.Name);}}}job.Symbol=code;if(code==1||code==2||code==3)//下载全市场数据
10768
10814
  this.GetHKToSHSZMarketData(code,job);else this.GetHKToSHSZStockData(code,job);//下载个股数据
10769
10815
  };this.GetHKToSHSZStockData=function(symbol,job){if(this.HKToSHSZData.has(symbol))return this.Execute.RunNextJob();var upperSymbol=symbol.toLowerCase();//代码小写
@@ -10776,9 +10822,9 @@ if(bindData.Period>0)//周期数据
10776
10822
  JSNetwork.HttpRequest({url:url,data:{"symbol":this.Symbol,'daycount':this.MaxRequestMinuteDayCount},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvMulitMinuteHKToSHSZData(recvData,job);self.Execute.RunNextJob();}});}else{//请求数据
10777
10823
  JSNetwork.HttpRequest({url:url,type:"get",dataType:"json",async:true,success:function success(recvData){if(dataType==0)self.RecvHKToSHSZData(recvData,job);else if(dataType==1)self.RecvMinuteHKToSHSZData(recvData,job);self.Execute.RunNextJob();}});}};this.RecvMinuteHKToSHSZData=function(data,job){var arySHSZData=[],arySHData=[],arySZData=[];if(this.IsBeforeData){for(i in this.SourceData.Data){var item=this.SourceData.Data[i];if(item.Before){arySHSZData.push(null);arySHData.push(null);arySZData.push(null);}else{break;}}for(var i=0;i<data.time.length;++i){var time=data.time[i];if(time===925)continue;var SHValue=data.hk2sh[i];var SZValue=data.hk2sz[i];var total=SHValue+SZValue;arySHSZData.push(total);arySHData.push(SHValue);arySZData.push(SZValue);}}else{for(var i=0;i<data.time.length;++i){var time=data.time[i];var SHValue=data.hk2sh[i];var SZValue=data.hk2sz[i];var total=SHValue+SZValue;arySHSZData.push(total);arySHData.push(SHValue);arySZData.push(SZValue);}}var allData=[{Data:arySHSZData,ID:1},{Data:arySHData,ID:2},{Data:arySZData,ID:3}];for(var i in allData){var item=allData[i];this.HKToSHSZData.set(item.ID,item.Data);}};this.RecvHKToSHSZData=function(data,job){var arySHSZData=[],arySHData=[],arySZData=[];for(var i=0;i<data.date.length;++i){var date=data.date[i];var SHValue=data.hk2sh[i]*1000000;//单位是百万
10778
10824
  var SZValue=data.hk2sz[i]*1000000;//单位是百万
10779
- var total=SHValue+SZValue;var itemSHSZData=new SingleData();itemSHSZData.Date=date;itemSHSZData.Value=total;var itemSHData=new SingleData();itemSHData.Date=date;itemSHData.Value=SHValue;var itemSZData=new SingleData();itemSZData.Date=date;itemSZData.Value=SZValue;arySHSZData.push(itemSHSZData);arySHData.push(itemSHData);arySZData.push(itemSZData);}var allData=[{Data:arySHSZData,ID:1},{Data:arySHData,ID:2},{Data:arySZData,ID:3}];for(var _i113 in allData){var aryFixedData=this.Data.GetFittingData(allData[_i113].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10825
+ var total=SHValue+SZValue;var itemSHSZData=new SingleData();itemSHSZData.Date=date;itemSHSZData.Value=total;var itemSHData=new SingleData();itemSHData.Date=date;itemSHData.Value=SHValue;var itemSZData=new SingleData();itemSZData.Date=date;itemSZData.Value=SZValue;arySHSZData.push(itemSHSZData);arySHData.push(itemSHData);arySZData.push(itemSZData);}var allData=[{Data:arySHSZData,ID:1},{Data:arySHData,ID:2},{Data:arySZData,ID:3}];for(var _i111 in allData){var aryFixedData=this.Data.GetFittingData(allData[_i111].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10780
10826
  if(bindData.Period>0)//周期数据
10781
- {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data3=bindData.GetValue();this.HKToSHSZData.set(allData[_i113].ID,_data3);}};this.RecvMulitMinuteHKToSHSZData=function(data,job)//多日分时图北上资金
10827
+ {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data3=bindData.GetValue();this.HKToSHSZData.set(allData[_i111].ID,_data3);}};this.RecvMulitMinuteHKToSHSZData=function(data,job)//多日分时图北上资金
10782
10828
  {if(!data.data||data.data.length<=0)return;var arySHSZData=[],arySHData=[],arySZData=[];for(var i=0,j=0;i<this.Data.Data.length&&j<data.data.length;){arySHSZData[i]=null;arySHData[i]=null;arySZData[i]=null;var item=this.Data.Data[i];var dateTime=item.DateTime;//日期加时间
10783
10829
  if(!dateTime){++i;continue;}var aryValue=dateTime.split(' ');if(aryValue.length!=2){++i;continue;}var date=parseInt(aryValue[0]);var day=data.data[j];if(!day.minute||day.minute.length<=0){++j;continue;}if(day.date>date){++i;continue;}else if(day.date<date){++j;continue;}for(var k in day.minute){var timeItem=day.minute[k];var SHValue=timeItem[1];var SZValue=timeItem[2];var total=SHValue+SZValue;arySHSZData[i]=total;arySHData[i]=SHValue;arySZData[i]=SZValue;++i;}++j;}var allData=[{Data:arySHSZData,ID:1},{Data:arySHData,ID:2},{Data:arySZData,ID:3}];for(var i in allData){var item=allData[i];this.HKToSHSZData.set(item.ID,item.Data);}};//北上资金函数
10784
10830
  this.GetHKToSHSZCacheData=function(code,node){//if (!this.HKToSHSZData.has(code)) this.Execute.ThrowUnexpectedNode(node,`不支持HK2SHSZ(${code})`);
@@ -10914,11 +10960,11 @@ this.Execute.ThrowUnexpectedNode(node,funcName+'() Error: '+indexInfo.Error);}va
10914
10960
  if(!this.ReadIndexArgumentValue(args,indexInfo))this.Execute.ThrowUnexpectedNode(node,funcName+'() \u6307\u6807\u53C2\u6570\u9519\u8BEF: '+indexInfo.Error);var key=this.GenerateScriptIndexKey(indexInfo);if(!this.ScriptIndexOutData.has(key))return null;return this.ScriptIndexOutData.get(key);};this.JsonDataToHistoryData=function(data){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;var up=8,down=9,stop=10,unchanged=11;for(var i=0;i<list.length;++i){var item=new HistoryData();item.Date=list[i][date];item.Open=list[i][open];item.YClose=list[i][yclose];item.Close=list[i][close];item.High=list[i][high];item.Low=list[i][low];item.Vol=list[i][vol];//原始单位股
10915
10961
  item.Amount=list[i][amount];//上涨 下跌家数
10916
10962
  if(list[i].length>up)item.Up=list[i][up];if(list[i].length>down)item.Down=list[i][down];if(list[i].length>stop)item.Stop=list[i][stop];if(list[i].length>unchanged)item.Unchanged=list[i][unchanged];if(isNaN(item.Open)||item.Open<=0)continue;//停牌的数据剔除
10917
- aryDayData.push(item);}return aryDayData;};this.JsonDataToMinuteHistoryData=function(data){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;for(var i=0;i<list.length;++i){var _item17=new HistoryData();_item17.Date=list[i][date];_item17.Open=list[i][open];_item17.YClose=list[i][yclose];_item17.Close=list[i][close];_item17.High=list[i][high];_item17.Low=list[i][low];_item17.Vol=list[i][vol];//原始单位股
10918
- _item17.Amount=list[i][amount];_item17.Time=list[i][time];// if (isNaN(item.Open) || item.Open<=0) continue; //停牌的数据剔除
10919
- aryDayData.push(_item17);}// 无效数据处理
10920
- for(var _i114=0;_i114<aryDayData.length;++_i114){var minData=aryDayData[_i114];if(minData==null)coninue;if(isNaN(minData.Open)||minData.Open<=0||isNaN(minData.High)||minData.High<=0||isNaN(minData.Low)||minData.Low<=0||isNaN(minData.Close)||minData.Close<=0||isNaN(minData.YClose)||minData.YClose<=0){if(_i114==0){if(minData.YClose>0){minData.Open=minData.YClose;minData.High=minData.YClose;minData.Low=minData.YClose;minData.Close=minData.YClose;}}else// 用前一个有效数据填充
10921
- {for(var _j12=_i114-1;_j12>=0;--_j12){var minData2=aryDayData[_j12];if(minData2==null)coninue;if(minData2.Open>0&&minData2.High>0&&minData2.Low>0&&minData2.Close>0){if(minData.YClose<=0)minData.YClose=minData2.Close;minData.Open=minData2.Open;minData.High=minData2.High;minData.Low=minData2.Low;minData.Close=minData2.Close;break;}}}}}return aryDayData;};//API 返回数据 转化为array[]
10963
+ aryDayData.push(item);}return aryDayData;};this.JsonDataToMinuteHistoryData=function(data){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;for(var i=0;i<list.length;++i){var _item15=new HistoryData();_item15.Date=list[i][date];_item15.Open=list[i][open];_item15.YClose=list[i][yclose];_item15.Close=list[i][close];_item15.High=list[i][high];_item15.Low=list[i][low];_item15.Vol=list[i][vol];//原始单位股
10964
+ _item15.Amount=list[i][amount];_item15.Time=list[i][time];// if (isNaN(item.Open) || item.Open<=0) continue; //停牌的数据剔除
10965
+ aryDayData.push(_item15);}// 无效数据处理
10966
+ for(var _i112=0;_i112<aryDayData.length;++_i112){var minData=aryDayData[_i112];if(minData==null)coninue;if(isNaN(minData.Open)||minData.Open<=0||isNaN(minData.High)||minData.High<=0||isNaN(minData.Low)||minData.Low<=0||isNaN(minData.Close)||minData.Close<=0||isNaN(minData.YClose)||minData.YClose<=0){if(_i112==0){if(minData.YClose>0){minData.Open=minData.YClose;minData.High=minData.YClose;minData.Low=minData.YClose;minData.Close=minData.YClose;}}else// 用前一个有效数据填充
10967
+ {for(var _j12=_i112-1;_j12>=0;--_j12){var minData2=aryDayData[_j12];if(minData2==null)coninue;if(minData2.Open>0&&minData2.High>0&&minData2.Low>0&&minData2.Close>0){if(minData.YClose<=0)minData.YClose=minData2.Close;minData.Open=minData2.Open;minData.High=minData2.High;minData.Low=minData2.Low;minData.Close=minData2.Close;break;}}}}}return aryDayData;};//API 返回数据 转化为array[]
10922
10968
  this.JsonDataToMinuteData=function(data){var aryMinuteData=new Array();for(var i in data.stock[0].minute){var jsData=data.stock[0].minute[i];var item=new MinuteData();item.Close=jsData.price;item.Open=jsData.open;item.High=jsData.high;item.Low=jsData.low;item.Vol=jsData.vol;//股
10923
10969
  item.Amount=jsData.amount;if(i==0)//第1个数据 写死9:25
10924
10970
  item.DateTime=data.stock[0].date.toString()+" 0925";else item.DateTime=data.stock[0].date.toString()+" "+jsData.time.toString();item.Date=data.stock[0].date;item.Time=jsData.time;item.Increase=jsData.increase;item.Risefall=jsData.risefall;item.AvPrice=jsData.avprice;aryMinuteData[i]=item;}return aryMinuteData;};//多日日线数据API 转化成array[];
@@ -10936,23 +10982,23 @@ if(item.Open<=0)item.Open=null;if(item.Close<=0)item.Close=null;if(item.AvPrice<
10936
10982
  this.CODELIKE=function(value){if(this.Symbol&&this.Symbol.indexOf(value)==0)return 1;return 0;};this.NAMELIKE=function(value){if(this.Name&&this.Name.indexOf(value)==0)return 1;return 0;};/*
10937
10983
  SETCODE 市场类型
10938
10984
  0:深圳 1:上海,47:中金所期货 28:郑州商品 29:大连商品 30:上海商品,27:香港指数 31:香港主板,48:香港创业板...
10939
- */this.SETCODE=function(){if(this.Symbol.indexOf('.sh'))return 1;if(this.Symbol.indexOf('.sz'))return 0;return 0;};this.GetSymbol=function(){return this.Symbol;};this.GetName=function(){return this.Name;};this.DATE=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i115 in this.Data.Data){var item=this.Data.Data[_i115];result[_i115]=item.Date-19000000;}return result;};this.YEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i116 in this.Data.Data){var item=this.Data.Data[_i116];if(this.IsNumber(item.Date))result[_i116]=parseInt(item.Date/10000);else result[_i116]=null;}return result;};this.DAY=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i117 in this.Data.Data){var item=this.Data.Data[_i117];if(this.IsNumber(item.Date))result[_i117]=parseInt(item.Date%100);else result[_i117]=null;}return result;};this.MONTH=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i118 in this.Data.Data){var item=this.Data.Data[_i118];if(this.IsNumber(item.Date))result[_i118]=parseInt(item.Date%10000/100);else result[_i118]=null;}return result;};this.TIME=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i119=0;_i119<this.Data.Data.length;++_i119){var item=this.Data.Data[_i119];if(this.IsNumber(item.Time))result[_i119]=item.Time;else result[_i119]=0;}return result;};/*
10985
+ */this.SETCODE=function(){if(this.Symbol.indexOf('.sh'))return 1;if(this.Symbol.indexOf('.sz'))return 0;return 0;};this.GetSymbol=function(){return this.Symbol;};this.GetName=function(){return this.Name;};this.DATE=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i113 in this.Data.Data){var item=this.Data.Data[_i113];result[_i113]=item.Date-19000000;}return result;};this.YEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i114 in this.Data.Data){var item=this.Data.Data[_i114];if(this.IsNumber(item.Date))result[_i114]=parseInt(item.Date/10000);else result[_i114]=null;}return result;};this.DAY=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i115 in this.Data.Data){var item=this.Data.Data[_i115];if(this.IsNumber(item.Date))result[_i115]=parseInt(item.Date%100);else result[_i115]=null;}return result;};this.MONTH=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i116 in this.Data.Data){var item=this.Data.Data[_i116];if(this.IsNumber(item.Date))result[_i116]=parseInt(item.Date%10000/100);else result[_i116]=null;}return result;};this.TIME=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i117=0;_i117<this.Data.Data.length;++_i117){var item=this.Data.Data[_i117];if(this.IsNumber(item.Time))result[_i117]=item.Time;else result[_i117]=0;}return result;};/*
10940
10986
  取得该周期的时分秒,适用于日线以下周期.
10941
10987
  用法: TIME2
10942
10988
  函数返回有效值范围为(000000-235959)
10943
- */this.TIME2=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i120=0;_i120<this.Data.Data.length;++_i120){var item=this.Data.Data[_i120];if(this.IsNumber(item.Time))result[_i120]=item.Time*100;else result[_i120]=0;}return result;};this.DateTime=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var isKLineMinute=ChartData.IsMinutePeriod(this.Period,true);for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(isKLineMinute){result[i]=item.Date*10000+item.Time;}else{result[i]=item.Date;}}return result;};//星期 1-7
10944
- this.WEEK=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var tempDate=new Date();for(var _i121 in this.Data.Data){var item=this.Data.Data[_i121];result[_i121]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;tempDate.setFullYear(year,month-1,day);result[_i121]=tempDate.getDay();}return result;};/*
10989
+ */this.TIME2=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i118=0;_i118<this.Data.Data.length;++_i118){var item=this.Data.Data[_i118];if(this.IsNumber(item.Time))result[_i118]=item.Time*100;else result[_i118]=0;}return result;};this.DateTime=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var isKLineMinute=ChartData.IsMinutePeriod(this.Period,true);for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(isKLineMinute){result[i]=item.Date*10000+item.Time;}else{result[i]=item.Date;}}return result;};//星期 1-7
10990
+ this.WEEK=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var tempDate=new Date();for(var _i119 in this.Data.Data){var item=this.Data.Data[_i119];result[_i119]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;tempDate.setFullYear(year,month-1,day);result[_i119]=tempDate.getDay();}return result;};/*
10945
10991
  取得该周期的日期离今天的天数.
10946
10992
  用法: DAYSTOTODAY
10947
- */this.DAYSTOTODAY=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var nowDate=new Date();var endDate=new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate());for(var _i122=0;_i122<this.Data.Data.length;++_i122){var item=this.Data.Data[_i122];result[_i122]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;var beginDate=new Date(year,month-1,day);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));result[_i122]=diffDays;}return result;};/*
10993
+ */this.DAYSTOTODAY=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var nowDate=new Date();var endDate=new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate());for(var _i120=0;_i120<this.Data.Data.length;++_i120){var item=this.Data.Data[_i120];result[_i120]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;var beginDate=new Date(year,month-1,day);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));result[_i120]=diffDays;}return result;};/*
10948
10994
  取得该周是年内第几个周.
10949
10995
  用法:WEEKOFYEAR
10950
- */this.WEEKOFYEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i123 in this.Data.Data){var item=this.Data.Data[_i123];result[_i123]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;var endDate=new Date(year,month-1,day);var beginDate=new Date(year,0,1);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));diffDays+=beginDate.getDay()+1-1;var week=Math.ceil(diffDays/7);var value=week;result[_i123]=value;}return result;};this.GetYearWeek=function(endDate){var beginDate=new Date(endDate.getFullYear(),0,1);//星期从0-6,0代表星期天,6代表星期六
10996
+ */this.WEEKOFYEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i121 in this.Data.Data){var item=this.Data.Data[_i121];result[_i121]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;var endDate=new Date(year,month-1,day);var beginDate=new Date(year,0,1);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));diffDays+=beginDate.getDay()+1-1;var week=Math.ceil(diffDays/7);var value=week;result[_i121]=value;}return result;};this.GetYearWeek=function(endDate){var beginDate=new Date(endDate.getFullYear(),0,1);//星期从0-6,0代表星期天,6代表星期六
10951
10997
  var endWeek=endDate.getDay();if(endWeek==0)endWeek=7;var beginWeek=beginDate.getDay();if(beginWeek==0)beginWeek=7;//计算两个日期的天数差
10952
- var millisDiff=endDate.getTime()-beginDate.getTime();var dayDiff=Math.floor((millisDiff+(beginWeek-endWeek)*(24*60*60*1000))/86400000);return Math.ceil(dayDiff/7)+1;};this.REFDATE=function(data,date){var result=null;var findDate=null;if(Array.isArray(date)){if(date.length>0)findDate=date[date.length-1];}else if(this.IsNumber(date)){findDate=date;}if(findDate==null)return null;if(findDate<5000000)findDate+=19000000;var index=null;for(var _i124 in this.Data.Data)//查找日期对应的索引
10953
- {if(this.Data.Data[_i124].Date==findDate){index=parseInt(_i124);break;}}if(index==null||index>=data.length)return null;return data[index];};//用法:结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年
10998
+ var millisDiff=endDate.getTime()-beginDate.getTime();var dayDiff=Math.floor((millisDiff+(beginWeek-endWeek)*(24*60*60*1000))/86400000);return Math.ceil(dayDiff/7)+1;};this.REFDATE=function(data,date){var result=null;var findDate=null;if(Array.isArray(date)){if(date.length>0)findDate=date[date.length-1];}else if(this.IsNumber(date)){findDate=date;}if(findDate==null)return null;if(findDate<5000000)findDate+=19000000;var index=null;for(var _i122 in this.Data.Data)//查找日期对应的索引
10999
+ {if(this.Data.Data[_i122].Date==findDate){index=parseInt(_i122);break;}}if(index==null||index>=data.length)return null;return data[index];};//用法:结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年
10954
11000
  this.PERIOD=function(){//Period周期 0=日线 1=周线 2=月线 3=年线 9=季线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟
10955
- var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_MAP.length-1)return PERIOD_MAP[this.Period];return this.Period;};this.GetDrawNull=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i125 in this.Data.Data){result[_i125]=null;}return result;};this.HOUR=function(){var result=[];if(!this.Data||!this.Data.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return result;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];result[i]=0;if(IFrameSplitOperator.IsNumber(item.Time))result[i]=parseInt(item.Time/100);}return result;};this.MINUTE=function(){var result=[];if(!this.Data||!this.Data.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return result;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];result[i]=0;if(IFrameSplitOperator.IsNumber(item.Time))result[i]=item.Time%100;}return result;};/*
11001
+ var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_MAP.length-1)return PERIOD_MAP[this.Period];return this.Period;};this.GetDrawNull=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i123 in this.Data.Data){result[_i123]=null;}return result;};this.HOUR=function(){var result=[];if(!this.Data||!this.Data.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return result;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];result[i]=0;if(IFrameSplitOperator.IsNumber(item.Time))result[i]=parseInt(item.Time/100);}return result;};this.MINUTE=function(){var result=[];if(!this.Data||!this.Data.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return result;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];result[i]=0;if(IFrameSplitOperator.IsNumber(item.Time))result[i]=item.Time%100;}return result;};/*
10956
11002
  飞狐函数 SYSPARAM
10957
11003
  SYSPARAM(1)画面上光标位置(K线序号)
10958
11004
  SYSPARAM(2)主图可见K线最初位置
@@ -10961,7 +11007,7 @@ var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_M
10961
11007
  SYSPARAM(5)主图可见K线最低价,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
10962
11008
  SYSPARAM(6)画面上光标数值,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
10963
11009
  */this.SysParam=function(id,jsExec){if(!this.DrawInfo)return[];if(id==2){jsExec.IsUsePageData=true;if(IFrameSplitOperator.IsNumber(this.DrawInfo.Start))return this.DrawInfo.Start+1;}else if(id==3){jsExec.IsUsePageData=true;if(IFrameSplitOperator.IsNumber(this.DrawInfo.End))return this.DrawInfo.End+1;}else if(id==4){jsExec.IsUsePageData=true;if(!IFrameSplitOperator.IsNumber(this.DrawInfo.End)||!IFrameSplitOperator.IsNumber(this.DrawInfo.Start))return[];if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return[];var high=null;for(var i=this.DrawInfo.Start;i<=this.DrawInfo.End&&i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(item.High))continue;if(high==null)high=item.High;else if(high<item.High)high=item.High;}return high;}else if(id==5){jsExec.IsUsePageData=true;if(!IFrameSplitOperator.IsNumber(this.DrawInfo.End)||!IFrameSplitOperator.IsNumber(this.DrawInfo.Start))return[];if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return[];var low=null;for(var i=this.DrawInfo.Start;i<=this.DrawInfo.End&&i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(item.Low))continue;if(low==null)low=item.Low;else if(low>item.Low)low=item.Low;}return low;}return[];};}//是否有是有效的数字
10964
- JSSymbolData.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSSymbolData.prototype.IsDivideNumber=function(value){if(value==null)return false;if(isNaN(value))return false;if(value==0)return false;return true;};JSSymbolData.prototype.JsonDataToFinance=function(data){var financeData;for(var _i126=1;_i126<=4;++_i126){switch(_i126){case 1:var finance=data.finance1;var announcement=data.announcement1;break;case 2:var finance=data.finance2;var announcement=data.announcement2;break;case 3:var finance=data.finance3;var announcement=data.announcement3;break;case 4:var finance=data.finance4;var announcement=data.announcement4;break;default:break;}if(!finance||!announcement||!this.IsNumber(announcement.year)||!this.IsNumber(announcement.quarter))continue;if(financeData)//如果存在1天公布多个报告期数据 只取最新的一个公告期数据
11010
+ JSSymbolData.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSSymbolData.prototype.IsDivideNumber=function(value){if(value==null)return false;if(isNaN(value))return false;if(value==0)return false;return true;};JSSymbolData.prototype.JsonDataToFinance=function(data){var financeData;for(var _i124=1;_i124<=4;++_i124){switch(_i124){case 1:var finance=data.finance1;var announcement=data.announcement1;break;case 2:var finance=data.finance2;var announcement=data.announcement2;break;case 3:var finance=data.finance3;var announcement=data.announcement3;break;case 4:var finance=data.finance4;var announcement=data.announcement4;break;default:break;}if(!finance||!announcement||!this.IsNumber(announcement.year)||!this.IsNumber(announcement.quarter))continue;if(financeData)//如果存在1天公布多个报告期数据 只取最新的一个公告期数据
10965
11011
  {if(financeData.Announcement.year<announcement.year)financeData={Date:data.date,Finance:finance,Announcement:announcement};}else{financeData={Date:data.date,Finance:finance,Announcement:announcement};}}return financeData;};var JS_EXECUTE_DEBUG_LOG=false;var JS_EXECUTE_JOB_ID={JOB_DOWNLOAD_SYMBOL_DATA:1,//下载股票的K线数据
10966
11012
  JOB_DOWNLOAD_INDEX_DATA:2,//下载大盘的K线数据
10967
11013
  JOB_DOWNLOAD_SYMBOL_LATEST_DATA:3,//最新的股票行情数据
@@ -11119,8 +11165,8 @@ this.ConstVarTable=new _map2.default([//个股数据
11119
11165
  this.UpdateUICallback=null;//回调
11120
11166
  this.CallbackParam=null;this.IsSectionMode=false;if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam){this.CallbackParam=option.CallbackParam;if(this.CallbackParam.HQChart)this.GetEventCallback=function(id){return _this45.CallbackParam.HQChart.GetEventCallback(id);};}if(option.Arguments)this.Arguments=option.Arguments;if(option.IsSectionMode)this.IsSectionMode=option.IsSectionMode;if(option.Self)this.IndexCtrl=option.Self;//调试模式信息
11121
11167
  if(IFrameSplitOperator.IsNumber(option.Debug))this.Debug=option.Debug;if(option.DebugFilter)this.DebugFilter=option.DebugFilter;}this.Execute=function(){this.OutVarTable=[];this.VarTable=new _map2.default();this.VarDrawTable=new _map2.default();//绘图变量表
11122
- JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i127 in this.Arguments)//预定义的变量
11123
- {var _item18=this.Arguments[_i127];this.VarTable.set(_item18.Name,_item18.Value);}this.RunNextJob();};this.RunNextJob=function(){if(this.JobList.length<=0)return;JSConsole.Complier.Log('[JSExecute::Execute] JobList',this.JobList);var jobItem=this.JobList.shift();switch(jobItem.ID){case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_DATA:return this.SymbolData.GetSymbolData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_PERIOD_DATA:return this.SymbolData.GetSymbolPeriodData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA:return this.SymbolData.GetIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA:return this.SymbolData.GetLatestIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_INCREASE_DATA:return this.SymbolData.GetIndexIncreaseData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA:return this.SymbolData.GetLatestData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA://量比
11168
+ JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i125 in this.Arguments)//预定义的变量
11169
+ {var _item16=this.Arguments[_i125];this.VarTable.set(_item16.Name,_item16.Value);}this.RunNextJob();};this.RunNextJob=function(){if(this.JobList.length<=0)return;JSConsole.Complier.Log('[JSExecute::Execute] JobList',this.JobList);var jobItem=this.JobList.shift();switch(jobItem.ID){case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_DATA:return this.SymbolData.GetSymbolData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_PERIOD_DATA:return this.SymbolData.GetSymbolPeriodData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA:return this.SymbolData.GetIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA:return this.SymbolData.GetLatestIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_INCREASE_DATA:return this.SymbolData.GetIndexIncreaseData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA:return this.SymbolData.GetLatestData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA://量比
11124
11170
  return this.SymbolData.GetVolRateData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_OTHER_SYMBOL_DATA://指定股票数据
11125
11171
  return this.SymbolData.GetOtherSymbolData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_RELEASE_DATE_DATA:return this.SymbolData.GetCompanyReleaseDate(jobItem.ID);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE:case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE:case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE://买入信息-融资余额
11126
11172
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
@@ -11151,7 +11197,7 @@ case'INDEXA':case'INDEXC':case'INDEXH':case'INDEXH':case'INDEXO':case'INDEXV':ca
11151
11197
  this.ReadVariable=function(name,node){if(this.ConstVarTable.has(name)){var data=this.ConstVarTable.get(name);if(data==null)//动态加载,用到再加载
11152
11198
  {data=this.ReadSymbolData(name,node);this.ConstVarTable.set(name,data);}return data;}if(g_JSComplierResource.IsCustomVariant(name))return this.ReadCustomVariant(name,node);//读取自定义变量
11153
11199
  if(this.VarTable.has(name))return this.VarTable.get(name);if(name.indexOf('#')>0){var aryPeriod=name.split('#');return this.SymbolData.GetSymbolPeriodCacheData(aryPeriod[0],aryPeriod[1]);}if(name.indexOf("COLOR")==0){var colorValue=JSComplier.ColorVarToRGB(name);if(colorValue)return colorValue;}this.ThrowUnexpectedNode(node,'变量'+name+'不存在',name);return null;};this.ReadMemberVariable=function(node){var obj=node.Object;var member=node.Property;var maiObj=void 0;if(obj.Type==Syntax.BinaryExpression||obj.Type==Syntax.LogicalExpression)maiObj=this.VisitBinaryExpression(obj);else if(obj.Type==Syntax.CallExpression)maiObj=this.VisitCallExpression(obj);else maiObj=this.GetNodeValue(obj);if(!maiObj)return null;var value=maiObj[member.Name];if(value)return value;return null;};//单数据转成数组 个数和历史数据一致
11154
- this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var _i128=0;_i128<count;++_i128){result[_i128]=value;}return result;};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i129=0;_i129<this.AST.Body.length;++_i129){var _item19=this.AST.Body[_i129];this.RunASTNode(_item19,_i129);if(this.Interrupt&&this.Interrupt.Exit){JSConsole.Complier.Log('[JSExecute::RunAST] Interrupt',this.Interrupt);//中断退出
11200
+ this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var _i126=0;_i126<count;++_i126){result[_i126]=value;}return result;};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i127=0;_i127<this.AST.Body.length;++_i127){var _item17=this.AST.Body[_i127];this.RunASTNode(_item17,_i127);if(this.Interrupt&&this.Interrupt.Exit){JSConsole.Complier.Log('[JSExecute::RunAST] Interrupt',this.Interrupt);//中断退出
11155
11201
  break;}}JSConsole.Complier.Log('[JSExecute::RunAST]',this.VarTable);return this.OutVarTable;};this.RunASTNode=function(item,lineID){this.VisitNode(item);var i=lineID;//输出变量
11156
11202
  if(item.Type==Syntax.ExpressionStatement&&item.Expression){if(item.Expression.Type==Syntax.AssignmentExpression){if(item.Expression.Operator==':'&&item.Expression.Left){var assignmentItem=item.Expression;var _varName=assignmentItem.Left.Name;var _outVar=this.VarTable.get(_varName);if(this.VarDrawTable.has(_varName))//绘图函数赋值
11157
11203
  {var draw=this.VarDrawTable.get(_varName);this.OutVarTable.push({Name:draw.Name,Draw:draw,Type:1});}else{var type=0;if(_outVar&&(typeof _outVar==='undefined'?'undefined':(0,_typeof3.default)(_outVar))=='object'&&_outVar.__Type__=='Object'){type=1000;}else if(!this.IsSectionMode&&!Array.isArray(_outVar)){if(typeof _outVar=='string'){var floatValue=parseFloat(_outVar);if(IFrameSplitOperator.IsNumber(floatValue)){_outVar=this.SingleDataToArrayData(floatValue);}else{_outVar=this.SingleDataToArrayData(_outVar);type=1001;}}else _outVar=this.SingleDataToArrayData(_outVar);}this.OutVarTable.push({Name:_varName,Data:_outVar,Type:type});}}}else if(item.Expression.Type==Syntax.CallExpression){var callItem=item.Expression;if(this.Draw.IsDrawFunction(callItem.Callee.Name)){var _draw=callItem.Draw;_draw.Name=callItem.Callee.Name;this.OutVarTable.push({Name:_draw.Name,Draw:_draw,Type:1});}else if(callItem.Callee.Name==="IFC"&&callItem.Draw){var _draw2=callItem.Draw;_draw2.Name=_draw2.DrawType;this.OutVarTable.push({Name:_draw2.Name,Draw:_draw2,Type:1});}else{var _outVar2=callItem.Out;varName='__temp_c_'+callItem.Callee.Name+'_'+i+'__';var type=0;if(!Array.isArray(_outVar2))_outVar2=this.SingleDataToArrayData(_outVar2);this.OutVarTable.push({Name:varName,Data:_outVar2,Type:type,NoneName:true});}}else if(item.Expression.Type==Syntax.Identifier){var _varName2=item.Expression.Name;var _outVar3=this.ReadVariable(_varName2,item.Expression);var type=0;if(_outVar3&&(typeof _outVar3==='undefined'?'undefined':(0,_typeof3.default)(_outVar3))=='object'&&_outVar3.__Type__=='Object'){type=1000;}else if(!this.IsSectionMode&&!Array.isArray(_outVar3)){if(typeof _outVar3=='string')_outVar3=this.SingleDataToArrayData(parseFloat(_outVar3));else _outVar3=this.SingleDataToArrayData(_outVar3);}_varName2="__temp_i_"+i+"__";this.OutVarTable.push({Name:_varName2,Data:_outVar3,Type:type,NoneName:true});}else if(item.Expression.Type==Syntax.Literal)//常量
@@ -11184,7 +11230,7 @@ else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","
11184
11230
  {var _outVar14=this.VarTable.get(_varName3);var _value8={Name:_varName3,Data:_outVar14,Color:color,Type:2};if(lineWidth)_value8.LineWidth=lineWidth;if(color)_value8.Color=color;if(upColor)_value8.UpColor=upColor;if(downColor)_value8.DownColor=downColor;this.OutVarTable.push(_value8);}else if(_varName3&&color&&!_draw3){var _outVar15=this.VarTable.get(_varName3);if(!Array.isArray(_outVar15))_outVar15=this.SingleDataToArrayData(_outVar15);var _value9={Name:_varName3,Data:_outVar15,Color:color,Type:0};if(lineWidth)_value9.LineWidth=lineWidth;if(isShow==false)_value9.IsShow=false;if(isExData==true)_value9.IsExData=true;if(isDotLine==true)_value9.IsDotLine=true;if(isOverlayLine==true)_value9.IsOverlayLine=true;if(isNoneName==true)_value9.NoneName=true;if(isShowTitle==false)_value9.IsShowTitle=false;if(stepLine==true)_value9.Type=7;this.OutVarTable.push(_value9);}else if(_draw3)//画图函数
11185
11231
  {var outVar={Name:_draw3.Name,Draw:_draw3,Type:1};if(color)outVar.Color=color;if(isDotLine==true)outVar.IsDotLine=true;if(lineWidth)outVar.LineWidth=lineWidth;if(isDrawAbove)outVar.IsDrawAbove=true;if(isDrawCenter)outVar.IsDrawCenter=true;if(isDrawBelow)outVar.IsDrawBelow=true;if(drawAlign>=0)outVar.DrawAlign=drawAlign;if(drawVAlign>=0)outVar.DrawVAlign=drawVAlign;if(fontSize>0)outVar.DrawFontSize=fontSize;if(bgConfig)outVar.Background=bgConfig;if(vLineConfig)outVar.VerticalLine=vLineConfig;if(IFrameSplitOperator.IsNumber(xOffset))outVar.XOffset=xOffset;if(IFrameSplitOperator.IsNumber(yOffset))outVar.YOffset=yOffset;if(IFrameSplitOperator.IsBool(isFirstDraw))outVar.IsFirstDraw=isFirstDraw;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar16=this.VarTable.get(_varName3);var _value10={Name:_varName3,Data:_outVar16,Type:0};if(color)_value10.Color=color;if(lineWidth)_value10.LineWidth=lineWidth;if(isShow==false)_value10.IsShow=false;if(isExData==true)_value10.IsExData=true;if(isDotLine==true)_value10.IsDotLine=true;if(isOverlayLine==true)_value10.IsOverlayLine=true;if(isShowTitle==false)_value10.IsShowTitle=false;if(stepLine==true)_value10.Type=7;this.OutVarTable.push(_value10);}}}};this.ReadUnaryExpression=function(item,varInfo){var argument=item.Argument;var outVar=null;if(argument.Type==Syntax.Literal){outVar=argument.Value;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.Identifier){var varName=argument.Name;outVar=this.ReadVariable(varName,item.Expression);if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.BinaryExpression){outVar=argument.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.CallExpression){var callItem=argument;if(this.Draw.IsDrawFunction(callItem.Callee.Name)){return false;}else if(callItem.Callee.Name==="IFC"&&callItem.Draw){return false;}else{outVar=callItem.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}}else{return false;}if(item.Operator=='-'){if(outVar)outVar=this.Algorithm.Subtract(0,outVar);}varInfo.OutVar=outVar;return true;};this.GetOutIconData=function(cond,iconDraw){if(Array.isArray(cond)){for(var i=0;i<cond.length&&i<iconDraw.DrawData.length;++i){var item=cond[i];if(item<=0)iconDraw.DrawData[i]=null;}return iconDraw;}if(cond)return iconDraw;return null;};this.GetSoundEvent=function(){if(!this.GetEventCallback)return null;return this.GetEventCallback(JSCHART_EVENT_ID.ON_PLAY_SOUND);};this.Run=function(){try{var data=this.RunAST();//执行脚本
11186
11232
  JSConsole.Complier.Log('[JSComplier.Run] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.Run] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}}catch(error){JSConsole.Complier.Log(error);if(error.Job){JSConsole.Complier.Log('[JSComplier.Run] download job and reexectue',error.Job);this.JobList.push(error.Job);this.JobList.push({ID:JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT});this.Execute();}else if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.DebugRun_End=function(){var data=this.OutVarTable;JSConsole.Complier.Log('[JSComplier.DebugRun_End] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.DebugRun_End] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}};this.DebugRun_Next=function(debugCtrl){var _this46=this;if(debugCtrl.ExeLine<debugCtrl.LineCount){var item=this.AST.Body[debugCtrl.ExeLine];this.RunASTNode(item);++debugCtrl.ExeLine;this.DebugFilter(debugCtrl,function(){_this46.DebugRun_Next(debugCtrl);});}else{this.DebugRun_End();debugCtrl.Status=2;this.DebugFilter(debugCtrl,null);}};//debug模式
11187
- this.DebugRun=function(){var _this47=this;try{if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();var debugCtrl={LineCount:this.AST.Body.length,ExeLine:0,Self:this,Status:1};this.DebugFilter(debugCtrl,function(){_this47.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var tempValue=this.GetNodeValueEx(node.Argument);var value=this.Algorithm.Subtract(0,tempValue);}else{var value=node.Argument.Value;}return value;};this.VisitSequenceExpression=function(node){for(var _i130 in node.Expression){var _item20=node.Expression[_i130];this.VisitNode(_item20);}};this.GetDynamicScriptIndex=function(node,args){var dynamicName=node.Callee.Value;var aryValue=dynamicName.split(".");if(aryValue.length!=2){this.ThrowUnexpectedNode(node,'\u8C03\u7528\u6307\u6807\u683C\u5F0F\''+dynamicName+'\'\u9519\u8BEF');}var name=aryValue[0];var outName=aryValue[1];var period=null;var pos=outName.indexOf('#');if(pos!=-1){period=outName.slice(pos+1);//周期
11233
+ this.DebugRun=function(){var _this47=this;try{if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();var debugCtrl={LineCount:this.AST.Body.length,ExeLine:0,Self:this,Status:1};this.DebugFilter(debugCtrl,function(){_this47.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var tempValue=this.GetNodeValueEx(node.Argument);var value=this.Algorithm.Subtract(0,tempValue);}else{var value=node.Argument.Value;}return value;};this.VisitSequenceExpression=function(node){for(var _i128 in node.Expression){var _item18=node.Expression[_i128];this.VisitNode(_item18);}};this.GetDynamicScriptIndex=function(node,args){var dynamicName=node.Callee.Value;var aryValue=dynamicName.split(".");if(aryValue.length!=2){this.ThrowUnexpectedNode(node,'\u8C03\u7528\u6307\u6807\u683C\u5F0F\''+dynamicName+'\'\u9519\u8BEF');}var name=aryValue[0];var outName=aryValue[1];var period=null;var pos=outName.indexOf('#');if(pos!=-1){period=outName.slice(pos+1);//周期
11188
11234
  outName=outName.slice(0,pos);}var strValue="";for(var i=0;i<args.length;++i){var value=args[i];if(strValue.length>0)strValue+=",";strValue+=''+value;}var strArgs='('+strValue+')';var key=outName+'#'+strArgs;if(period)key+='#'+period;if(!this.VarTable.has(name))return null;var indexData=this.VarTable.get(name);var value=indexData[key];return value;};//函数调用
11189
11235
  this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var i=0;i<node.Arguments.length;++i){var item=node.Arguments[i];var value;if(funcName==="IFC"&&i>=1)break;//IFC先处理第1个条件参数
11190
11236
  if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);args.push(value);}if(node.Callee.Type==Syntax.Literal){node.Out=[];node.Draw=null;var data=this.GetDynamicScriptIndex(node,args);if(data)node.Out=data;return node.Out;}if(funcName==="IFC"){//IFC(X,A,B)若X不为0则执行A,否则执行B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
@@ -11220,31 +11266,31 @@ this.ConstVarTable=new _map2.default([//个股数据
11220
11266
  ['HYBLOCK',"所属行业"],//所属行业板块
11221
11267
  ['DYBLOCK',"所属地域"],//所属地域板块
11222
11268
  ['GNBLOCK',"所属概念"],//所属概念
11223
- ["FGBLOCK","所属风格板块"],["ZSBLOCK","所属指数板块"],["ZHBLOCK",'所属组合板块'],["ZDBLOCK",'所属自定义板块'],["HYZSCODE","所属行业的板块指数代码"],["GNBLOCKNUM","所属概念板块的个数"],["FGBLOCKNUM","所属风格板块的个数"],["ZSBLOCKNUM","所属指数板块的个数"],["ZHBLOCKNUM","所属组合板块的个数"],["ZDBLOCKNUM","所属自定义板块的个数"],["HYSYL","指数市盈率或个股所属行业的市盈率"],["HYSJL","指数市净率或个股所属行业的市净率"],['DRAWNULL',"无效数据"],["TR","求真实波幅"]]);if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam)this.CallbackParam=option.CallbackParam;if(option.Arguments)this.Arguments=option.Arguments;}this.Run=function(){try{this.OutVarTable=[];this.VarTable=new _map2.default();JSConsole.Complier.Log('[JSExecute::JSExplainer] Load Arguments',this.Arguments);for(var _i131 in this.Arguments)//预定义的变量
11224
- {var _item21=this.Arguments[_i131];this.VarTable.set(_item21.Name,_item21.Value);}var data=this.RunAST();//执行脚本
11269
+ ["FGBLOCK","所属风格板块"],["ZSBLOCK","所属指数板块"],["ZHBLOCK",'所属组合板块'],["ZDBLOCK",'所属自定义板块'],["HYZSCODE","所属行业的板块指数代码"],["GNBLOCKNUM","所属概念板块的个数"],["FGBLOCKNUM","所属风格板块的个数"],["ZSBLOCKNUM","所属指数板块的个数"],["ZHBLOCKNUM","所属组合板块的个数"],["ZDBLOCKNUM","所属自定义板块的个数"],["HYSYL","指数市盈率或个股所属行业的市盈率"],["HYSJL","指数市净率或个股所属行业的市净率"],['DRAWNULL',"无效数据"],["TR","求真实波幅"]]);if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam)this.CallbackParam=option.CallbackParam;if(option.Arguments)this.Arguments=option.Arguments;}this.Run=function(){try{this.OutVarTable=[];this.VarTable=new _map2.default();JSConsole.Complier.Log('[JSExecute::JSExplainer] Load Arguments',this.Arguments);for(var _i129 in this.Arguments)//预定义的变量
11270
+ {var _item19=this.Arguments[_i129];this.VarTable.set(_item19.Name,_item19.Value);}var data=this.RunAST();//执行脚本
11225
11271
  JSConsole.Complier.Log('[JSExplainer.Run] explain finish',data);if(this.UpdateUICallback)//回调发送结果, 可以支持异步
11226
- {JSConsole.Complier.Log('[JSExplainer.Run] invoke UpdateUICallback.');this.UpdateUICallback(data);}}catch(error){JSConsole.Complier.Log('[JSExplainer.Run] throw error ',error);if(this.ErrorCallback){this.ErrorCallback(error,this.OutVarTable);}}};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i132 in this.AST.Body){var _item22=this.AST.Body[_i132];this.VisitNode(_item22);//输出变量
11227
- if(_item22.Type==Syntax.ExpressionStatement&&_item22.Expression){if(_item22.Expression.Type==Syntax.AssignmentExpression){if(_item22.Expression.Operator==':'&&_item22.Expression.Left){var assignmentItem=_item22.Expression;var _varName4=assignmentItem.Left.Name;var _outVar17='\u8F93\u51FA'+_varName4+': '+this.VarTable.get(_varName4);this.OutVarTable.push({Name:_varName4,Data:_outVar17,Type:0});}else if(_item22.Expression.Operator==':='&&_item22.Expression.Left){var _assignmentItem=_item22.Expression;var _varName5=_assignmentItem.Left.Name;var _outVar18='\u8D4B\u503C'+_varName5+': '+this.VarTable.get(_varName5);this.OutVarTable.push({Name:_varName5,Data:_outVar18,Type:0,IsOut:false});}}else if(_item22.Expression.Type==Syntax.CallExpression){var callItem=_item22.Expression;if(this.IsDrawFunction(callItem.Callee.Name)){var _outVar19=callItem.Out;var drawName=callItem.Callee.Name;this.OutVarTable.push({Name:drawName,Draw:'\u8F93\u51FA: '+_outVar19,Type:1});}else{var _outVar20=callItem.Out;varName='__temp_c_'+callItem.Callee.Name+'_'+_i132+'__';this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar20,Type:0,NoneName:true});}}else if(_item22.Expression.Type==Syntax.Identifier){var _varName6=_item22.Expression.Name;var _outVar21=this.ReadVariable(_varName6,_item22.Expression);_varName6="__temp_i_"+_i132+"__";this.OutVarTable.push({Name:_varName6,Data:'\u8F93\u51FA: '+_outVar21,Type:0,NoneName:true});}else if(_item22.Expression.Type==Syntax.Literal)//常量
11228
- {var _outVar22=_item22.Expression.Value;if(IFrameSplitOperator.IsString(_outVar22)&&_outVar22.indexOf("$")>0)_outVar22=this.GetOtherSymbolExplain({Literal:_outVar22},_item22);varName="__temp_li_"+_i132+"__";var type=0;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar22,Type:0,NoneName:true});}else if(_item22.Expression.Type==Syntax.BinaryExpression)// CLOSE+OPEN;
11229
- {var varName="__temp_b_"+_i132+"__";var _outVar23=_item22.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar23,Type:0,NoneName:true});}else if(_item22.Expression.Type==Syntax.LogicalExpression)//逻辑语句 如 T1 AND T2
11230
- {var varName="__temp_l_"+_i132+"__";var _outVar24=_item22.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar24,Type:0,NoneName:true});}else if(_item22.Expression.Type==Syntax.UnaryExpression)//一元运算 如-C, -7, -(C+10)
11231
- {var varName="__temp_l_"+_i132+"__";var argument=_item22.Expression.Argument;var _outVar25=null;if(argument.Type==Syntax.Literal){_outVar25=argument.Value;}else if(argument.Type==Syntax.Identifier){var _varName7=argument.Name;_outVar25=this.ReadVariable(_varName7,_item22.Expression);}else if(argument.Type==Syntax.BinaryExpression){_outVar25=argument.Out;}if(_item22.Expression.Operator=='-'){_outVar25='-'+_outVar25;}this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar25,Type:0,NoneName:true});}else if(_item22.Expression.Type==Syntax.SequenceExpression){var _varName8=void 0;var _drawName=void 0;var draw=void 0;var color=void 0;var lineWidth=void 0;var colorStick=false;var pointDot=false;var circleDot=false;var lineStick=false;var stick=false;var volStick=false;var isShow=true;var isExData=false;var isDotLine=false;var isOverlayLine=false;//叠加线
11272
+ {JSConsole.Complier.Log('[JSExplainer.Run] invoke UpdateUICallback.');this.UpdateUICallback(data);}}catch(error){JSConsole.Complier.Log('[JSExplainer.Run] throw error ',error);if(this.ErrorCallback){this.ErrorCallback(error,this.OutVarTable);}}};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i130 in this.AST.Body){var _item20=this.AST.Body[_i130];this.VisitNode(_item20);//输出变量
11273
+ if(_item20.Type==Syntax.ExpressionStatement&&_item20.Expression){if(_item20.Expression.Type==Syntax.AssignmentExpression){if(_item20.Expression.Operator==':'&&_item20.Expression.Left){var assignmentItem=_item20.Expression;var _varName4=assignmentItem.Left.Name;var _outVar17='\u8F93\u51FA'+_varName4+': '+this.VarTable.get(_varName4);this.OutVarTable.push({Name:_varName4,Data:_outVar17,Type:0});}else if(_item20.Expression.Operator==':='&&_item20.Expression.Left){var _assignmentItem=_item20.Expression;var _varName5=_assignmentItem.Left.Name;var _outVar18='\u8D4B\u503C'+_varName5+': '+this.VarTable.get(_varName5);this.OutVarTable.push({Name:_varName5,Data:_outVar18,Type:0,IsOut:false});}}else if(_item20.Expression.Type==Syntax.CallExpression){var callItem=_item20.Expression;if(this.IsDrawFunction(callItem.Callee.Name)){var _outVar19=callItem.Out;var drawName=callItem.Callee.Name;this.OutVarTable.push({Name:drawName,Draw:'\u8F93\u51FA: '+_outVar19,Type:1});}else{var _outVar20=callItem.Out;varName='__temp_c_'+callItem.Callee.Name+'_'+_i130+'__';this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar20,Type:0,NoneName:true});}}else if(_item20.Expression.Type==Syntax.Identifier){var _varName6=_item20.Expression.Name;var _outVar21=this.ReadVariable(_varName6,_item20.Expression);_varName6="__temp_i_"+_i130+"__";this.OutVarTable.push({Name:_varName6,Data:'\u8F93\u51FA: '+_outVar21,Type:0,NoneName:true});}else if(_item20.Expression.Type==Syntax.Literal)//常量
11274
+ {var _outVar22=_item20.Expression.Value;if(IFrameSplitOperator.IsString(_outVar22)&&_outVar22.indexOf("$")>0)_outVar22=this.GetOtherSymbolExplain({Literal:_outVar22},_item20);varName="__temp_li_"+_i130+"__";var type=0;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar22,Type:0,NoneName:true});}else if(_item20.Expression.Type==Syntax.BinaryExpression)// CLOSE+OPEN;
11275
+ {var varName="__temp_b_"+_i130+"__";var _outVar23=_item20.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar23,Type:0,NoneName:true});}else if(_item20.Expression.Type==Syntax.LogicalExpression)//逻辑语句 如 T1 AND T2
11276
+ {var varName="__temp_l_"+_i130+"__";var _outVar24=_item20.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar24,Type:0,NoneName:true});}else if(_item20.Expression.Type==Syntax.UnaryExpression)//一元运算 如-C, -7, -(C+10)
11277
+ {var varName="__temp_l_"+_i130+"__";var argument=_item20.Expression.Argument;var _outVar25=null;if(argument.Type==Syntax.Literal){_outVar25=argument.Value;}else if(argument.Type==Syntax.Identifier){var _varName7=argument.Name;_outVar25=this.ReadVariable(_varName7,_item20.Expression);}else if(argument.Type==Syntax.BinaryExpression){_outVar25=argument.Out;}if(_item20.Expression.Operator=='-'){_outVar25='-'+_outVar25;}this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar25,Type:0,NoneName:true});}else if(_item20.Expression.Type==Syntax.SequenceExpression){var _varName8=void 0;var _drawName=void 0;var draw=void 0;var color=void 0;var lineWidth=void 0;var colorStick=false;var pointDot=false;var circleDot=false;var lineStick=false;var stick=false;var volStick=false;var isShow=true;var isExData=false;var isDotLine=false;var isOverlayLine=false;//叠加线
11232
11278
  var isNoneName=false;var fontSize=-1;var drawAlign=-1,drawVAlign=-1;//显示在位置之上,对于DRAWTEXT和DRAWNUMBER等函数有用,放在语句的最后面(不能与LINETHICK等函数共用),比如:
11233
11279
  //DRAWNUMBER(CLOSE>OPEN,HIGH,CLOSE),DRAWABOVE;
11234
- var isDrawAbove=false;for(var _j14 in _item22.Expression.Expression){var itemExpression=_item22.Expression.Expression[_j14];if(itemExpression.Type==Syntax.AssignmentExpression&&itemExpression.Operator==':'&&itemExpression.Left){_varName8=itemExpression.Left.Name;var _varValue4=this.VarTable.get(_varName8);this.VarTable.set(_varName8,_varValue4);//把常量放到变量表里
11280
+ var isDrawAbove=false;for(var _j14 in _item20.Expression.Expression){var itemExpression=_item20.Expression.Expression[_j14];if(itemExpression.Type==Syntax.AssignmentExpression&&itemExpression.Operator==':'&&itemExpression.Left){_varName8=itemExpression.Left.Name;var _varValue4=this.VarTable.get(_varName8);this.VarTable.set(_varName8,_varValue4);//把常量放到变量表里
11235
11281
  }else if(itemExpression.Type==Syntax.Identifier){var value=itemExpression.Name;if(value==='COLORSTICK')colorStick=true;else if(value==='POINTDOT')pointDot=true;else if(value==='CIRCLEDOT')circleDot=true;else if(value==='DOTLINE')isDotLine=true;else if(value==='LINESTICK')lineStick=true;else if(value==='STICK')stick=true;else if(value==='VOLSTICK')volStick=true;else if(value==="DRAWABOVE")isDrawAbove=true;else if(value.indexOf('COLOR')==0)color=value;else if(value.indexOf('LINETHICK')==0)lineWidth=value;else if(value=="ALIGN0")drawAlign=0;else if(value=="ALIGN1")drawAlign=1;else if(value=="ALIGN2")drawAlign=2;else if(value=="VALIGN0")drawVAlign=0;else if(value=="VALIGN1")drawVAlign=1;else if(value=="VALIGN2")drawVAlign=2;else if(value.indexOf('NODRAW')==0)isShow=false;else if(value.indexOf('EXDATA')==0)isExData=true;//扩展数据, 不显示再图形里面
11236
- else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{_varName8=itemExpression.Name;var _varValue5=this.ReadVariable(_varName8,itemExpression);_varName8="__temp_si_"+_i132+"__";isNoneName=true;this.VarTable.set(_varName8,_varValue5);//放到变量表里
11282
+ else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{_varName8=itemExpression.Name;var _varValue5=this.ReadVariable(_varName8,itemExpression);_varName8="__temp_si_"+_i130+"__";isNoneName=true;this.VarTable.set(_varName8,_varValue5);//放到变量表里
11237
11283
  }}else if(itemExpression.Type==Syntax.Literal)//常量
11238
11284
  {var aryValue=itemExpression.Value;_varName8=itemExpression.Value.toString();isNoneName=true;this.VarTable.set(_varName8,aryValue);//把常量放到变量表里
11239
- }else if(itemExpression.Type==Syntax.CallExpression){if(_j14==0){if(this.IsDrawFunction(itemExpression.Callee.Name)){draw=itemExpression.Out;_drawName=itemExpression.Callee.Name;}else{var _varValue6=itemExpression.Out;_varName8='__temp_sc_'+itemExpression.Callee.Name+'_'+_i132+'__';isNoneName=true;this.VarTable.set(_varName8,_varValue6);}}}else if(itemExpression.Type==Syntax.BinaryExpression){_varName8="__temp_sb_"+_i132+"__";var _aryValue2=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName8,_aryValue2);}else if(itemExpression.Type==Syntax.UnaryExpression){_varName8="__temp_sb_"+_i132+"__";var argument=itemExpression.Argument;var _aryValue3=null;if(argument.Type==Syntax.Literal){_aryValue3=argument.Value;}else if(argument.Type==Syntax.Identifier){var _varName9=argument.Name;_aryValue3=this.ReadVariable(_varName9,_item22.Expression);}else if(argument.Type==Syntax.BinaryExpression){_aryValue3=argument.Out;}if(itemExpression.Operator=='-'){_aryValue3='-'+_aryValue3;}isNoneName=true;this.VarTable.set(_varName8,_aryValue3);}}var outValue;if(draw)outValue='\u8F93\u51FA: '+draw;else if(isNoneName)outValue='\u8F93\u51FA: '+this.VarTable.get(_varName8);else outValue='\u8F93\u51FA'+_varName8+': '+this.VarTable.get(_varName8);if(color)outValue+=',\u989C\u8272'+this.GetColorExplain(color);if(lineWidth)outValue+=',\u7EBF\u6BB5\u7C97\u7EC6'+this.GetLineWidthExplain(lineWidth);if(isShow==false)outValue+=",不显示";if(isDotLine==true)outValue+=",画虚线";if(isDrawAbove==true)outValue+=',显示在位置之上';if(pointDot&&_varName8)//圆点
11285
+ }else if(itemExpression.Type==Syntax.CallExpression){if(_j14==0){if(this.IsDrawFunction(itemExpression.Callee.Name)){draw=itemExpression.Out;_drawName=itemExpression.Callee.Name;}else{var _varValue6=itemExpression.Out;_varName8='__temp_sc_'+itemExpression.Callee.Name+'_'+_i130+'__';isNoneName=true;this.VarTable.set(_varName8,_varValue6);}}}else if(itemExpression.Type==Syntax.BinaryExpression){_varName8="__temp_sb_"+_i130+"__";var _aryValue2=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName8,_aryValue2);}else if(itemExpression.Type==Syntax.UnaryExpression){_varName8="__temp_sb_"+_i130+"__";var argument=itemExpression.Argument;var _aryValue3=null;if(argument.Type==Syntax.Literal){_aryValue3=argument.Value;}else if(argument.Type==Syntax.Identifier){var _varName9=argument.Name;_aryValue3=this.ReadVariable(_varName9,_item20.Expression);}else if(argument.Type==Syntax.BinaryExpression){_aryValue3=argument.Out;}if(itemExpression.Operator=='-'){_aryValue3='-'+_aryValue3;}isNoneName=true;this.VarTable.set(_varName8,_aryValue3);}}var outValue;if(draw)outValue='\u8F93\u51FA: '+draw;else if(isNoneName)outValue='\u8F93\u51FA: '+this.VarTable.get(_varName8);else outValue='\u8F93\u51FA'+_varName8+': '+this.VarTable.get(_varName8);if(color)outValue+=',\u989C\u8272'+this.GetColorExplain(color);if(lineWidth)outValue+=',\u7EBF\u6BB5\u7C97\u7EC6'+this.GetLineWidthExplain(lineWidth);if(isShow==false)outValue+=",不显示";if(isDotLine==true)outValue+=",画虚线";if(isDrawAbove==true)outValue+=',显示在位置之上';if(pointDot&&_varName8)//圆点
11240
11286
  {outValue+=",画小圆点线";var _value11={Name:_varName8,Draw:outValue,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};this.OutVarTable.push(_value11);}else if(circleDot&&_varName8)//圆点
11241
11287
  {outValue+=",画小圆圈线";var _value12={Name:_varName8,Draw:outValue,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};this.OutVarTable.push(_value12);}else if(lineStick&&_varName8)//LINESTICK 同时画出柱状线和指标线
11242
11288
  {outValue+=",画出柱状线和指标线";var _value13={Name:_varName8,Draw:outValue,Type:4};this.OutVarTable.push(_value13);}else if(stick&&_varName8)//STICK 画柱状线
11243
11289
  {outValue+=",画柱状线";var _value14={Name:_varName8,Draw:outValue,Type:5};this.OutVarTable.push(_value14);}else if(volStick&&_varName8)//VOLSTICK 画彩色柱状线
11244
11290
  {outValue+=",画成交量柱状线";var _value15={Name:_varName8,Draw:outValue,Type:6};this.OutVarTable.push(_value15);}else if(_varName8&&color){var _value16={Name:_varName8,Data:outValue,Color:color,Type:0};this.OutVarTable.push(_value16);}else if(draw)//画图函数
11245
11291
  {var outVar={Name:_drawName,Draw:outValue,Type:1};this.OutVarTable.push(outVar);}else if(colorStick&&_varName8)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
11246
- {outValue+=",画彩色柱状线";var _value17={Name:_varName8,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value17);}else if(_varName8){var _value18={Name:_varName8,Data:outValue,Type:0};this.OutVarTable.push(_value18);}}}}JSConsole.Complier.Log('[JSExplainer::Run]',this.VarTable);return this.OutVarTable;};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitSequenceExpression=function(node){for(var _i133 in node.Expression){var _item23=node.Expression[_i133];this.VisitNode(_item23);}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var value=this.GetNodeValueEx(node.Argument);return'-'+value;}return node.Argument.Value;};//函数调用
11247
- this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i134 in node.Arguments){var _item24=node.Arguments[_i134];var value=void 0;if(_item24.Type==Syntax.BinaryExpression||_item24.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(_item24);else if(_item24.Type==Syntax.CallExpression)value=this.VisitCallExpression(_item24);else value=this.GetNodeValue(_item24);args.push(value);}if(node.Callee.Type==Syntax.Literal){var dynamicName=node.Callee.Value;node.Out='\u6307\u6807\u5F15\u7528\''+dynamicName+'\'';return node.Out;}JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}node.Out=this.CallFunctionExplain(funcName,args,node);return node.Out;};this.FUNCTION_INFO_LIST=new _map2.default([["REF",{Name:"REF",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684'+args[0];}}],["REFX",{Name:"REFX",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684'+args[0];}}],["REFV",{Name:"REFV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFXV",{Name:"REFXV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFDATE",{Name:"REFDATE",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5'+args[0];}}],["COUNT",{Name:"COUNT",Param:{Count:2},ToString:function ToString(args){return'\u7EDF\u8BA1'+args[1]+'\u65E5\u4E2D\u6EE1\u8DB3'+args[0]+'\u7684\u5929\u6570';}}],["BARSLASTCOUNT",{Name:"BARSLASTCOUNT",Param:{Count:1},ToString:function ToString(args){return'\u6761\u4EF6'+args[0]+'\u8FDE\u7EED\u6210\u7ACB\u6B21\u6570';}}],["BARSCOUNT",{Name:"BARSCOUNT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u6709\u6548\u6570\u636E\u5468\u671F\u6570';}}],["BARSLAST",{Name:"BARSLAST",Param:{Count:1},ToString:function ToString(args){return'\u4E0A\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSNEXT",{Name:"BARSNEXT",Param:{Count:1},ToString:function ToString(args){return'\u4E0B\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCEN",{Name:"BARSSINCEN",Param:{Count:2},ToString:function ToString(args){return'\u5728'+args[1]+'\u5468\u671F\u5185\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCE",{Name:"BARSSINCE",Param:{Count:1},ToString:function ToString(args){return'\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["HHV",{Name:"HHV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u9AD8\u503C';}}],["LLV",{Name:"LLV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u4F4E\u503C';}}],["ZTPRICE",{Name:"ZTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算涨停价';}}],["DTPRICE",{Name:"DTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算跌停价';}}],["BACKSET",{Name:"BACKSET",Param:{Count:2},ToString:function ToString(args){return'\u82E5'+args[0]+'\u5219\u5C06\u6700\u8FD1'+args[1]+'\u5468\u671F\u7F6E\u4E3A1';}}],["HOD",{Name:"HOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u9AD8\u503C\u540D\u6B21';}}],["LOD",{Name:"LOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u4F4E\u503C\u540D\u6B21';}}],["REVERSE",{Name:"REVERSE",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u76F8\u53CD\u6570';}}],["FILTER",{Name:"FILTER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u8FC7\u6EE4';}}],["FILTERX",{Name:"FILTERX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u53CD\u5411\u8FC7\u6EE4';}}],["TFILTER",{Name:"TFILTER",Param:{Count:3},ToString:function ToString(args){return'\u4FE1\u53F7\u8FC7\u6EE4(\u591A\u5934)';}}],["SUMBARS",{Name:"SUMBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7D2F\u52A0\u81F3'+args[1]+'\u7684\u5929\u6570';}}],["MA",{Name:"MA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7B80\u5355\u79FB\u52A8\u5E73\u5747';}}],["SMA",{Name:"SMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["MEMA",{Name:"MEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["EMA",{Name:"EMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMA",{Name:"EXPMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMEMA",{Name:"EXPMEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["WMA",{Name:"WMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u52A0\u6743\u79FB\u52A8\u5E73\u5747';}}],["DMA",{Name:"DMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u52A8\u6001\u79FB\u52A8\u5E73\u5747';}}],["XMA",{Name:"XMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u504F\u79FB\u79FB\u52A8\u5E73\u5747';}}],["RANGE",{Name:"RANGE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["CONST",{Name:"CONST",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6700\u540E\u4E00\u65E5\u503C';}}],["TOPRANGE",{Name:"TOPRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5927\u503C';}}],["LOWRANGE",{Name:"LOWRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5C0F\u503C';}}],["FINDHIGH",{Name:"FINDHIGH",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7';}}],["FINDHIGHBARS",{Name:"FINDHIGHBARS",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["FINDLOW",{Name:"FINDLOW",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7';}}],["FINDLOWBARS",{Name:"FINDLOWBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["SUM",{Name:"SUM",Param:{Count:2},ToString:function ToString(args){return''+args[0]+args[1]+'\u65E5\u7D2F\u52A0';}}],["MULAR",{Name:"MULAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u65E5\u7D2F\u4E58';}}],["AMA",{Name:"AMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u81EA\u9002\u5E94\u5747\u7EBF';}}],["TMA",{Name:"TMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["CROSS",{Name:"CROSS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u4E0A\u7A7F'+args[1];}}],["LONGCROSS",{Name:"LONGCROSS",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u5C0F\u4E8E'+args[1]+'\u4FDD\u6301'+args[2]+'\u4E2A\u4EA4\u6613\u65E5\u540E\u4EA4\u53C9\u4E0A\u7A7F';}}],["UPNDAY",{Name:"UPNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u6DA8';}}],["DOWNNDAY",{Name:"DOWNNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u8DCC';}}],["NDAY",{Name:"NDAY",Param:{Count:3},ToString:function ToString(args){return'\u6700\u8FD1'+args[2]+'\u65E5'+args[0]+'\u4E00\u76F4\u5927\u4E8E'+args[1];}}],["EXIST",{Name:"EXIST",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u5B58\u5728'+args[0];}}],["EXISTR",{Name:"EXISTR",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u5B58\u5728'+args[0];}}],["EVERY",{Name:"EVERY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u4E00\u76F4\u5B58\u5728'+args[0];}}],["LAST",{Name:"LAST",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u6301\u7EED'+args[0];}}],["NOT",{Name:"NOT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u53D6\u53CD';}}],["IF",{Name:"IF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFF",{Name:"IFF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFN",{Name:"IFN",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFC",{Name:"IFC",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["TESTSKIP",{Name:"TESTSKIP",Param:{Count:1},ToString:function ToString(args){return'\u5982\u679C\u6EE1\u8DB3\u6761\u4EF6'+args[0]+',\u516C\u5F0F\u8FD4\u56DE';}}],["VALUEWHEN",{Name:"VALUEWHEN",Param:{Count:2},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE\u4E0A\u4E2A\u8F93\u51FA\u503C ';}}],["MAX",{Name:"MAX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5927\u503C';}}],["MIN",{Name:"MIN",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5C0F\u503C';}}],["ACOS",{Name:"ACOS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u4F59\u5F26';}}],["ASIN",{Name:"ASIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5F26';}}],["ATAN",{Name:"ATAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5207';}}],["COS",{Name:"COS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u4F59\u5F26';}}],["SIN",{Name:"SIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5F26';}}],["TAN",{Name:"TAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5207';}}],["EXP",{Name:"EXP",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6307\u6570';}}],["LN",{Name:"LN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u81EA\u7136\u5BF9\u6570';}}],["LOG",{Name:"LOG",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5BF9\u6570';}}],["SQRT",{Name:"SQRT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5F00\u65B9';}}],["ABS",{Name:"ABS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7EDD\u5BF9\u503C';}}],["POW",{Name:"POW",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u4E58\u5E42';}}],["CEILING",{Name:"CEILING",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["FLOOR",{Name:"FLOOR",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["INTPART",{Name:"INTPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6574\u6570\u90E8\u5206';}}],["BETWEEN",{Name:"BETWEEN",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["FRACPART",{Name:"FRACPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5C0F\u6570\u90E8\u5206';}}],["ROUND",{Name:"ROUND",Param:{Count:1},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["ROUND2",{Name:"ROUND2",Param:{Count:2},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["SIGN",{Name:"SIGN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7B26\u53F7';}}],["MOD",{Name:"MOD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5173\u4E8E'+args[1]+'\u7684\u6A21';}}],["RAND",{Name:"RAND",Param:{Count:1},ToString:function ToString(args){return'\u968F\u673A\u6B63\u6574\u6570';}}],["AVEDEV",{Name:"AVEDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u5747\u7EDD\u5BF9\u504F\u5DEE';}}],["DEVSQ",{Name:"DEVSQ",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6570\u636E\u504F\u5DEE\u5E73\u65B9\u548C';}}],["FORCAST",{Name:"FORCAST",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u9884\u6D4B\u503C';}}],["TSMA",{Name:"TSMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u4E2A\u5468\u671F\u5185\u7684\u65F6\u95F4\u5E8F\u5217\u4E09\u89D2\u79FB\u52A8\u5E73\u5747';}}],["SLOPE",{Name:"SLOPE",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u659C\u7387';}}],["STD",{Name:"STD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6807\u51C6\u5DEE';}}],["STDP",{Name:"STDP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6807\u51C6\u5DEE';}}],["STDDEV",{Name:"STDDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6807\u51C6\u504F\u5DEE';}}],["VAR",{Name:"VAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6837\u672C\u65B9\u5DEE';}}],["VARP",{Name:"VARP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6837\u672C\u65B9\u5DEE';}}],["COVAR",{Name:"COVAR",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u534F\u65B9\u5DEE';}}],["RELATE",{Name:"RELATE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[0]+'\u5468\u671F\u7684\u76F8\u5173\u7CFB\u6570';}}],["BETA",{Name:"BETA",Param:{Count:1},ToString:function ToString(args){return'\u03B2(Beta)\u7CFB\u6570';}}],["BETAEX",{Name:"BETAEX",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u76F8\u5173\u653E\u5927\u7CFB\u6570';}}],["COST",{Name:"COST",Param:{Count:1},ToString:function ToString(args){return'\u83B7\u5229\u76D8\u4E3A'+args[0]+'%\u7684\u6210\u672C\u5206\u5E03';}}],["WINNER",{Name:"WINNER",Param:{Count:1},ToString:function ToString(args){return'\u4EE5'+args[0]+'\u8BA1\u7B97\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["LWINNER",{Name:"LWINNER",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[0]+'\u65E5\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["PWINNER",{Name:"PWINNER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["COSTEX",{Name:"COSTEX",Param:{Count:2},ToString:function ToString(args){return'\u4F4D\u4E8E\u4EF7\u683C'+args[0]+'\u548C'+args[1]+'\u95F4\u7684\u6210\u672C';}}],["PPART",{Name:"PPART",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u5360\u603B\u6210\u672C\u7684\u6BD4\u4F8B';}}],["SAR",{Name:"SAR",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411';}}],["SARTURN",{Name:"SARTURN",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411\u70B9';}}],//字符串函数
11292
+ {outValue+=",画彩色柱状线";var _value17={Name:_varName8,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value17);}else if(_varName8){var _value18={Name:_varName8,Data:outValue,Type:0};this.OutVarTable.push(_value18);}}}}JSConsole.Complier.Log('[JSExplainer::Run]',this.VarTable);return this.OutVarTable;};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitSequenceExpression=function(node){for(var _i131 in node.Expression){var _item21=node.Expression[_i131];this.VisitNode(_item21);}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var value=this.GetNodeValueEx(node.Argument);return'-'+value;}return node.Argument.Value;};//函数调用
11293
+ this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i132 in node.Arguments){var _item22=node.Arguments[_i132];var value=void 0;if(_item22.Type==Syntax.BinaryExpression||_item22.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(_item22);else if(_item22.Type==Syntax.CallExpression)value=this.VisitCallExpression(_item22);else value=this.GetNodeValue(_item22);args.push(value);}if(node.Callee.Type==Syntax.Literal){var dynamicName=node.Callee.Value;node.Out='\u6307\u6807\u5F15\u7528\''+dynamicName+'\'';return node.Out;}JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}node.Out=this.CallFunctionExplain(funcName,args,node);return node.Out;};this.FUNCTION_INFO_LIST=new _map2.default([["REF",{Name:"REF",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684'+args[0];}}],["REFX",{Name:"REFX",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684'+args[0];}}],["REFV",{Name:"REFV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFXV",{Name:"REFXV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFDATE",{Name:"REFDATE",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5'+args[0];}}],["COUNT",{Name:"COUNT",Param:{Count:2},ToString:function ToString(args){return'\u7EDF\u8BA1'+args[1]+'\u65E5\u4E2D\u6EE1\u8DB3'+args[0]+'\u7684\u5929\u6570';}}],["BARSLASTCOUNT",{Name:"BARSLASTCOUNT",Param:{Count:1},ToString:function ToString(args){return'\u6761\u4EF6'+args[0]+'\u8FDE\u7EED\u6210\u7ACB\u6B21\u6570';}}],["BARSCOUNT",{Name:"BARSCOUNT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u6709\u6548\u6570\u636E\u5468\u671F\u6570';}}],["BARSLAST",{Name:"BARSLAST",Param:{Count:1},ToString:function ToString(args){return'\u4E0A\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSNEXT",{Name:"BARSNEXT",Param:{Count:1},ToString:function ToString(args){return'\u4E0B\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCEN",{Name:"BARSSINCEN",Param:{Count:2},ToString:function ToString(args){return'\u5728'+args[1]+'\u5468\u671F\u5185\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCE",{Name:"BARSSINCE",Param:{Count:1},ToString:function ToString(args){return'\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["HHV",{Name:"HHV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u9AD8\u503C';}}],["LLV",{Name:"LLV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u4F4E\u503C';}}],["ZTPRICE",{Name:"ZTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算涨停价';}}],["DTPRICE",{Name:"DTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算跌停价';}}],["BACKSET",{Name:"BACKSET",Param:{Count:2},ToString:function ToString(args){return'\u82E5'+args[0]+'\u5219\u5C06\u6700\u8FD1'+args[1]+'\u5468\u671F\u7F6E\u4E3A1';}}],["HOD",{Name:"HOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u9AD8\u503C\u540D\u6B21';}}],["LOD",{Name:"LOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u4F4E\u503C\u540D\u6B21';}}],["REVERSE",{Name:"REVERSE",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u76F8\u53CD\u6570';}}],["FILTER",{Name:"FILTER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u8FC7\u6EE4';}}],["FILTERX",{Name:"FILTERX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u53CD\u5411\u8FC7\u6EE4';}}],["TFILTER",{Name:"TFILTER",Param:{Count:3},ToString:function ToString(args){return'\u4FE1\u53F7\u8FC7\u6EE4(\u591A\u5934)';}}],["SUMBARS",{Name:"SUMBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7D2F\u52A0\u81F3'+args[1]+'\u7684\u5929\u6570';}}],["MA",{Name:"MA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7B80\u5355\u79FB\u52A8\u5E73\u5747';}}],["SMA",{Name:"SMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["MEMA",{Name:"MEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["EMA",{Name:"EMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMA",{Name:"EXPMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMEMA",{Name:"EXPMEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["WMA",{Name:"WMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u52A0\u6743\u79FB\u52A8\u5E73\u5747';}}],["DMA",{Name:"DMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u52A8\u6001\u79FB\u52A8\u5E73\u5747';}}],["XMA",{Name:"XMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u504F\u79FB\u79FB\u52A8\u5E73\u5747';}}],["RANGE",{Name:"RANGE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["CONST",{Name:"CONST",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6700\u540E\u4E00\u65E5\u503C';}}],["TOPRANGE",{Name:"TOPRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5927\u503C';}}],["LOWRANGE",{Name:"LOWRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5C0F\u503C';}}],["FINDHIGH",{Name:"FINDHIGH",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7';}}],["FINDHIGHBARS",{Name:"FINDHIGHBARS",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["FINDLOW",{Name:"FINDLOW",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7';}}],["FINDLOWBARS",{Name:"FINDLOWBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["SUM",{Name:"SUM",Param:{Count:2},ToString:function ToString(args){return''+args[0]+args[1]+'\u65E5\u7D2F\u52A0';}}],["MULAR",{Name:"MULAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u65E5\u7D2F\u4E58';}}],["AMA",{Name:"AMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u81EA\u9002\u5E94\u5747\u7EBF';}}],["TMA",{Name:"TMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["CROSS",{Name:"CROSS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u4E0A\u7A7F'+args[1];}}],["LONGCROSS",{Name:"LONGCROSS",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u5C0F\u4E8E'+args[1]+'\u4FDD\u6301'+args[2]+'\u4E2A\u4EA4\u6613\u65E5\u540E\u4EA4\u53C9\u4E0A\u7A7F';}}],["UPNDAY",{Name:"UPNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u6DA8';}}],["DOWNNDAY",{Name:"DOWNNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u8DCC';}}],["NDAY",{Name:"NDAY",Param:{Count:3},ToString:function ToString(args){return'\u6700\u8FD1'+args[2]+'\u65E5'+args[0]+'\u4E00\u76F4\u5927\u4E8E'+args[1];}}],["EXIST",{Name:"EXIST",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u5B58\u5728'+args[0];}}],["EXISTR",{Name:"EXISTR",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u5B58\u5728'+args[0];}}],["EVERY",{Name:"EVERY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u4E00\u76F4\u5B58\u5728'+args[0];}}],["LAST",{Name:"LAST",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u6301\u7EED'+args[0];}}],["NOT",{Name:"NOT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u53D6\u53CD';}}],["IF",{Name:"IF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFF",{Name:"IFF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFN",{Name:"IFN",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFC",{Name:"IFC",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["TESTSKIP",{Name:"TESTSKIP",Param:{Count:1},ToString:function ToString(args){return'\u5982\u679C\u6EE1\u8DB3\u6761\u4EF6'+args[0]+',\u516C\u5F0F\u8FD4\u56DE';}}],["VALUEWHEN",{Name:"VALUEWHEN",Param:{Count:2},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE\u4E0A\u4E2A\u8F93\u51FA\u503C ';}}],["MAX",{Name:"MAX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5927\u503C';}}],["MIN",{Name:"MIN",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5C0F\u503C';}}],["ACOS",{Name:"ACOS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u4F59\u5F26';}}],["ASIN",{Name:"ASIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5F26';}}],["ATAN",{Name:"ATAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5207';}}],["COS",{Name:"COS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u4F59\u5F26';}}],["SIN",{Name:"SIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5F26';}}],["TAN",{Name:"TAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5207';}}],["EXP",{Name:"EXP",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6307\u6570';}}],["LN",{Name:"LN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u81EA\u7136\u5BF9\u6570';}}],["LOG",{Name:"LOG",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5BF9\u6570';}}],["SQRT",{Name:"SQRT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5F00\u65B9';}}],["ABS",{Name:"ABS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7EDD\u5BF9\u503C';}}],["POW",{Name:"POW",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u4E58\u5E42';}}],["CEILING",{Name:"CEILING",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["FLOOR",{Name:"FLOOR",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["INTPART",{Name:"INTPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6574\u6570\u90E8\u5206';}}],["BETWEEN",{Name:"BETWEEN",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["FRACPART",{Name:"FRACPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5C0F\u6570\u90E8\u5206';}}],["ROUND",{Name:"ROUND",Param:{Count:1},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["ROUND2",{Name:"ROUND2",Param:{Count:2},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["SIGN",{Name:"SIGN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7B26\u53F7';}}],["MOD",{Name:"MOD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5173\u4E8E'+args[1]+'\u7684\u6A21';}}],["RAND",{Name:"RAND",Param:{Count:1},ToString:function ToString(args){return'\u968F\u673A\u6B63\u6574\u6570';}}],["AVEDEV",{Name:"AVEDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u5747\u7EDD\u5BF9\u504F\u5DEE';}}],["DEVSQ",{Name:"DEVSQ",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6570\u636E\u504F\u5DEE\u5E73\u65B9\u548C';}}],["FORCAST",{Name:"FORCAST",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u9884\u6D4B\u503C';}}],["TSMA",{Name:"TSMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u4E2A\u5468\u671F\u5185\u7684\u65F6\u95F4\u5E8F\u5217\u4E09\u89D2\u79FB\u52A8\u5E73\u5747';}}],["SLOPE",{Name:"SLOPE",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u659C\u7387';}}],["STD",{Name:"STD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6807\u51C6\u5DEE';}}],["STDP",{Name:"STDP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6807\u51C6\u5DEE';}}],["STDDEV",{Name:"STDDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6807\u51C6\u504F\u5DEE';}}],["VAR",{Name:"VAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6837\u672C\u65B9\u5DEE';}}],["VARP",{Name:"VARP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6837\u672C\u65B9\u5DEE';}}],["COVAR",{Name:"COVAR",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u534F\u65B9\u5DEE';}}],["RELATE",{Name:"RELATE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[0]+'\u5468\u671F\u7684\u76F8\u5173\u7CFB\u6570';}}],["BETA",{Name:"BETA",Param:{Count:1},ToString:function ToString(args){return'\u03B2(Beta)\u7CFB\u6570';}}],["BETAEX",{Name:"BETAEX",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u76F8\u5173\u653E\u5927\u7CFB\u6570';}}],["COST",{Name:"COST",Param:{Count:1},ToString:function ToString(args){return'\u83B7\u5229\u76D8\u4E3A'+args[0]+'%\u7684\u6210\u672C\u5206\u5E03';}}],["WINNER",{Name:"WINNER",Param:{Count:1},ToString:function ToString(args){return'\u4EE5'+args[0]+'\u8BA1\u7B97\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["LWINNER",{Name:"LWINNER",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[0]+'\u65E5\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["PWINNER",{Name:"PWINNER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["COSTEX",{Name:"COSTEX",Param:{Count:2},ToString:function ToString(args){return'\u4F4D\u4E8E\u4EF7\u683C'+args[0]+'\u548C'+args[1]+'\u95F4\u7684\u6210\u672C';}}],["PPART",{Name:"PPART",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u5360\u603B\u6210\u672C\u7684\u6BD4\u4F8B';}}],["SAR",{Name:"SAR",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411';}}],["SARTURN",{Name:"SARTURN",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411\u70B9';}}],//字符串函数
11248
11294
  ["CON2STR",{Name:"CON2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["VAR2STR",{Name:"VAR2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["STR2CON",{Name:"STR2CON",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u6570\u5B57';}}],["STRLEN",{Name:"STRLEN",Param:{Count:1},ToString:function ToString(args){return'\u5F97\u5230'+args[0]+'\u5B57\u7B26\u4E32\u957F\u5EA6';}}],["STRCAT",{Name:"STRCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["VARCAT",{Name:"VARCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["STRSPACE",{Name:"STRSPACE",Param:{Count:1},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u52A0\u4E00\u7A7A\u683C';}}],["SUBSTR",{Name:"SUBSTR",Param:{Count:3},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u53D6\u4E00\u90E8\u5206';}}],["STRCMP",{Name:"STRCMP",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u548C\u5B57\u7B26\u4E32'+args[1]+'\u6BD4\u8F83';}}],["FINDSTR",{Name:"FINDSTR",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u67E5\u627E\u5B57\u7B26\u4E32'+args[1];}}],["NAMEINCLUDE",{Name:"NAMEINCLUDE",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["CODELIKE",{Name:"CODELIKE",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["INBLOCK",{Name:"AVEDEV",Param:{Count:1},ToString:function ToString(args){return'\u5C5E\u4E8E'+args[0]+'\u677F\u5757';}}],["STKINDI",{Name:"STKINDI",Param:{Dynamic:true},ToString:function ToString(args){return"指标引用";}}],["STRFORMAT",{Name:"STRFORMAT",Param:{Dynamic:true},ToString:function ToString(args){return'\u683C\u5F0F\u5316'+args[0]+'\u5B57\u7B26\u4E32';}}],["NAMELIKE",{Name:"NAMELIKE",Param:{Count:1},ToString:function ToString(args){return'\u54C1\u79CD\u540D\u79F0\u662F\u5426\u4EE5\''+args[0]+'\'\u5F00\u5934';}}],["HHVBARS",{Name:"HHVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';}}],["LLVBARS",{Name:"LLVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';}}]]);this.CallFunctionExplain=function(funcName,args,node){if(this.FUNCTION_INFO_LIST.has(funcName)){var item=this.FUNCTION_INFO_LIST.get(funcName);if(item.Param.Dynamic===true)//动态参数
11249
11295
  {}else{if(item.Param.Count!=args.length)this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u53C2\u6570\u4E2A\u6570\u4E0D\u6B63\u786E. \u9700\u8981'+item.Param.Count+'\u4E2A\u53C2\u6570');}return item.ToString(args);}switch(funcName){case"CALCSTOCKINDEX":return'\u5F15\u7528'+args[0]+'\u7684'+args[1]+'\u6307\u6807\u7B2C'+args[2]+'\u4E2A\u8F93\u51FA\u503C';case"PEAK":case"PEAKBARS":case"ZIG":case"ZIGA":case"TROUGH":case"TROUGHBARS":return this.GetZIGExplain(funcName,args);case"FINANCE":return this.GetFinanceExplain(args);case"DYNAINFO":return this.GetDynainfoExplain(args);case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':return this.GetOtherSymbolExplain({FunctionName:funcName,Args:args},node);//绘图函数
11250
11296
  case"PLOYLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6\u4EE5'+args[1]+'\u4F4D\u7F6E\u4E3A\u9876\u70B9\u753B\u6298\u7EBF\u8FDE\u63A5';case"DRAWLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u8D77\u70B9\uFF0C\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[2]+'\u65F6,\u5728'+args[3]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u7EC8\u70B9,'+args[4]+'\u8868\u793A\u662F\u5426\u5EF6\u957F';case"DRAWSL":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u659C\u7EBF\u7EBF\u6027\u56DE\u5F52,'+args[2]+'\u659C\u7387,'+args[3]+'\u957F\u5EA6,'+args[4]+'\u65B9\u5411';case"DRAWKLINE":case"DRAWKLINE1":return'K线';case"DRAWICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"DRAWTEXT":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWTEXT_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWNUMBER":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"DRAWNUMBER_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"RGB":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+']';case"RGBA":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+','+args[3]+']';case"DRAWBAND":return'画带状线';case"DRAWRECTREL":return"相对位置上画矩形.";case"DRAWGBK":return"填充背景";case"TIPICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"STICKLINE":var barType="";if(args[4]==-1)barType="虚线空心柱";else if(args[4]==0)barType="实心柱";else barType="实线空心柱";return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6, \u5728'+args[1]+'\u548C'+args[2]+'\u4F4D\u7F6E\u4E4B\u95F4\u753B\u67F1\u72B6\u7EBF,\u5BBD\u5EA6\u4E3A'+args[3]+','+barType;case"PARTLINE":return"画折线";case"SELL":return"卖出平仓";case"BUY":return"买入开仓";case"SELLSHORT":return"卖出开仓";case"BUYSHORT":return"买入平仓";case"YMOVE":return;case"BACKGROUND":return"绘制背景";case"UPCOLOR":return'\u4E0A\u6DA8\u989C\u8272'+args[0];case"DOWNCOLOR":return'\u4E0B\u8DCC\u989C\u8272'+args[0];case"FIRSTDRAW":return"";default:this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u4E0D\u5B58\u5728');}};this.GetDynainfoExplain=function(args){var DATA_NAME_MAP=new _map2.default([[3,"前收盘价"],[4,"开盘价"],[5,"最高价"],[6,"最低价"],[7,"现价"],[8,'总量'],[9,"现量"],[10,"总金额"],[11,"均价"],[12,"日涨跌"],[13,"振幅"],[14,"涨幅"],[15,"开盘时的成交金额"],[16,"前5日每分钟均量"],[17,"量比"],[18,"上涨家数"],[19,"下跌家数"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u5373\u65F6\u884C\u60C5['+id+']';};this.GetFinanceExplain=function(args){var DATA_NAME_MAP=new _map2.default([[1,"总股本"],[2,"市场类型"],[3,"沪深品种类型"],[4,"沪深行业代码"],[5,"B股"],[6,"H股"],[7,"流通股本[股]"],[8,"股东人数[户]"],[9,"资产负债率%"],[10,"总资产"],[11,"流动资产"],[12,"固定资产"],[13,"无形资产"],[15,"流动负债"],[16,"少数股东权益"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u8D22\u52A1\u6570\u636E['+id+']';};this.GetZIGExplain=function(funcName,args){var value=args[0];if(value==0)value="开盘价";else if(value==1)value="最高价";else if(value==2)value="最低价";else if(value==3)value="收盘价";switch(funcName){case"PEAK":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u503C';case"PEAKBARS":return value+'\u7684'+args[1]+'5%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u4F4D\u7F6E';case"ZIG":return value+'\u7684'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"ZIGA":return value+'\u53D8\u5316'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"TROUGH":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u503C';case"TROUGHBARS":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u4F4D\u7F6E';}};this.GetColorExplain=function(colorName){var COLOR_MAP=new _map2.default([['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);if(COLOR_MAP.has(colorName))return COLOR_MAP.get(colorName);//COLOR 自定义色
@@ -11421,11 +11467,11 @@ chart.KLineColor=varItem.Draw.DrawData.KLine;if(varItem.Color)chart.Color=varIte
11421
11467
  if(varItem.IsShow==false)chart.IsShow=false;var titleIndex=windowIndex+1;chart.Data.Data=varItem.Draw.DrawData.Data;chart.MainData.Data=varItem.Draw.DrawData.MainData;if(varItem.Draw.DrawData.Title)hqChart.TitlePaint[titleIndex].Data[i]=new DynamicTitleData(chart.Data,varItem.Draw.DrawData.Title,chart.Color);hqChart.ChartPaint.push(chart);};//创建K线
11422
11468
  this.CreateSelfKLine=function(hqChart,windowIndex,hisData){var chart=new ChartKLine();chart.Canvas=hqChart.Canvas;chart.Name="Self Kline";chart.Identify=this.Guid;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hisData;chart.IsShowMaxMinPrice=false;chart.IsShowKTooltip=false;chart.DrawType=this.KLineType;hqChart.ChartPaint.push(chart);};this.BindInstructionData=function(hqChart,windowIndex,hisData)//绑定指示指标
11423
11469
  {if(this.OutVar==null||this.OutVar.length<0)return;//参数
11424
- var indexParam='';for(var _i135 in this.Arguments){var _item25=this.Arguments[_i135];if(indexParam.length>0)indexParam+=',';indexParam+=_item25.Value.toString();}if(indexParam.length>0)indexParam='('+indexParam+')';if(this.InstructionType==2)//五彩K线
11470
+ var indexParam='';for(var _i133 in this.Arguments){var _item23=this.Arguments[_i133];if(indexParam.length>0)indexParam+=',';indexParam+=_item23.Value.toString();}if(indexParam.length>0)indexParam='('+indexParam+')';if(this.InstructionType==2)//五彩K线
11425
11471
  {var varItem=this.OutVar[this.OutVar.length-1];//取最后一组数据作为指示数据
11426
11472
  hqChart.SetInstructionData(this.InstructionType,{Data:varItem.Data,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
11427
11473
  return true;}else if(this.InstructionType==1)//交易系统
11428
- {var buyData,sellData;for(var i in this.OutVar){var _item26=this.OutVar[i];if(_item26.Name=='ENTERLONG')buyData=_item26.Data;else if(_item26.Name=='EXITLONG')sellData=_item26.Data;}hqChart.SetInstructionData(this.InstructionType,{Buy:buyData,Sell:sellData,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
11474
+ {var buyData,sellData;for(var i in this.OutVar){var _item24=this.OutVar[i];if(_item24.Name=='ENTERLONG')buyData=_item24.Data;else if(_item24.Name=='EXITLONG')sellData=_item24.Data;}hqChart.SetInstructionData(this.InstructionType,{Buy:buyData,Sell:sellData,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
11429
11475
  return true;}};this.BindData=function(hqChart,windowIndex,hisData){if(windowIndex==0&&this.InstructionType){this.BindInstructionData(hqChart,windowIndex,hisData);return;}//清空主指标图形
11430
11476
  hqChart.DeleteIndexPaint(windowIndex);if(windowIndex==0)hqChart.ShowKLine(true);if(this.OutVar==null||this.OutVar.length<0)return;//叠加一个K线背景
11431
11477
  if(this.KLineType!=null){if(this.KLineType===0||this.KLineType===1||this.KLineType===2)this.CreateSelfKLine(hqChart,windowIndex,hisData);else if(this.KLineType===-1&&windowIndex==0)hqChart.ShowKLine(false);}if(windowIndex>=1&&hqChart.Frame){//Y轴刻度格式 默认跟标题栏一致
@@ -11439,12 +11485,12 @@ if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.Y
11439
11485
  var testData={ Name:'MULTI_LINE', Type:1,Draw:{ DrawType:'MULTI_LINE', DrawData:[point1,point2] } };
11440
11486
  this.OutVar.push(testData);
11441
11487
  }
11442
- */for(var _i136=0;_i136<this.OutVar.length;++_i136){var _item27=this.OutVar[_i136];if(_item27.IsExData===true)continue;//扩展数据不显示图形
11443
- if(_item27.Type==1000||_item27.Type==1001)continue;//数据集合, 字符串
11444
- if(_item27.Type==0){if(_item27.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item27,_i136,_item27.Type);else this.CreateLine(hqChart,windowIndex,_item27,_i136,_item27.Type);}else if(_item27.Type==1){switch(_item27.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item27,_i136);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item27,_i136);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item27,_i136);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item27,_i136);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item27,_i136);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item27,_i136);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item27,_i136);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item27,_i136);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item27,_i136);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item27,_i136);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item27,_i136);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item27,_i136);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item27,_i136);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item27,_i136);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item27,_i136);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item27,_i136);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item27,_i136);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item27,_i136);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item27,_i136);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item27,_i136);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item27,_i136);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item27,_i136);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item27,_i136);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item27,_i136);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item27,_i136);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item27,_i136);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item27,_i136);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item27,_i136);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item27,_i136);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item27,_i136);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item27,_i136);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item27,_i136);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item27,_i136);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item27,_i136);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item27,_i136);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item27,_i136);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item27,_i136);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item27,_i136);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item27,_i136);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item27,_i136);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item27,_i136);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item27,_i136);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item27,_i136);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item27,_i136);break;default:{var find=g_ScriptIndexChartFactory.Get(_item27.Draw.DrawType);//外部挂接
11445
- if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item27,_i136,this);}break;}}else if(_item27.Type==2){this.CreateMACD(hqChart,windowIndex,_item27,_i136);}else if(_item27.Type==3){this.CreatePointDot(hqChart,windowIndex,_item27,_i136,hisData);}else if(_item27.Type==4){this.CreateLineStick(hqChart,windowIndex,_item27,_i136);}else if(_item27.Type==5){this.CreateStick(hqChart,windowIndex,_item27,_i136);}else if(_item27.Type==6){this.CreateVolStick(hqChart,windowIndex,_item27,_i136,hisData);}else if(_item27.Type==7){this.CreateLine(hqChart,windowIndex,_item27,_i136,_item27.Type);}else if(_item27.Type==8){this.CreateLine(hqChart,windowIndex,_item27,_i136,_item27.Type);}else if(_item27.Type==9){this.CreateArea(hqChart,windowIndex,_item27,_i136);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i136<titlePaint.Data.length)//设置标题数值 小数位数和格式
11446
- {if(this.StringFormat>0)titlePaint.Data[_i136].StringFormat=this.StringFormat;if(this.FloatPrecision>=0)titlePaint.Data[_i136].FloatPrecision=this.FloatPrecision;if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments);}}}var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.Title=this.Name;titlePaint.Identify=this.Guid;//指标ID
11447
- titlePaint.ArgumentsText=null;titlePaint.Script=this;titlePaint.IsShowMainIndexTitle=this.IsShowIndexTitle;if(!this.IsShortTitle){var indexParam='';for(var _i137=0;_i137<this.Arguments.length;++_i137){var _item28=this.Arguments[_i137];if(indexParam.length>0)indexParam+=',';indexParam+=_item28.Value.toString();}if(indexParam.length>0)titlePaint.ArgumentsText='('+indexParam+')';}if(this.TitleFont)titlePaint.Font=this.TitleFont;return true;};//给一个默认的颜色
11488
+ */for(var _i134=0;_i134<this.OutVar.length;++_i134){var _item25=this.OutVar[_i134];if(_item25.IsExData===true)continue;//扩展数据不显示图形
11489
+ if(_item25.Type==1000||_item25.Type==1001)continue;//数据集合, 字符串
11490
+ if(_item25.Type==0){if(_item25.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item25,_i134,_item25.Type);else this.CreateLine(hqChart,windowIndex,_item25,_i134,_item25.Type);}else if(_item25.Type==1){switch(_item25.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item25,_i134);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item25,_i134);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item25,_i134);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item25,_i134);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item25,_i134);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item25,_i134);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item25,_i134);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item25,_i134);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item25,_i134);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item25,_i134);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item25,_i134);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item25,_i134);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item25,_i134);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item25,_i134);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item25,_i134);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item25,_i134);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item25,_i134);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item25,_i134);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item25,_i134);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item25,_i134);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item25,_i134);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item25,_i134);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item25,_i134);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item25,_i134);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item25,_i134);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item25,_i134);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item25,_i134);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item25,_i134);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item25,_i134);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item25,_i134);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item25,_i134);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item25,_i134);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item25,_i134);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item25,_i134);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item25,_i134);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item25,_i134);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item25,_i134);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item25,_i134);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item25,_i134);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item25,_i134);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item25,_i134);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item25,_i134);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item25,_i134);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item25,_i134);break;default:{var find=g_ScriptIndexChartFactory.Get(_item25.Draw.DrawType);//外部挂接
11491
+ if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item25,_i134,this);}break;}}else if(_item25.Type==2){this.CreateMACD(hqChart,windowIndex,_item25,_i134);}else if(_item25.Type==3){this.CreatePointDot(hqChart,windowIndex,_item25,_i134,hisData);}else if(_item25.Type==4){this.CreateLineStick(hqChart,windowIndex,_item25,_i134);}else if(_item25.Type==5){this.CreateStick(hqChart,windowIndex,_item25,_i134);}else if(_item25.Type==6){this.CreateVolStick(hqChart,windowIndex,_item25,_i134,hisData);}else if(_item25.Type==7){this.CreateLine(hqChart,windowIndex,_item25,_i134,_item25.Type);}else if(_item25.Type==8){this.CreateLine(hqChart,windowIndex,_item25,_i134,_item25.Type);}else if(_item25.Type==9){this.CreateArea(hqChart,windowIndex,_item25,_i134);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i134<titlePaint.Data.length)//设置标题数值 小数位数和格式
11492
+ {if(this.StringFormat>0)titlePaint.Data[_i134].StringFormat=this.StringFormat;if(this.FloatPrecision>=0)titlePaint.Data[_i134].FloatPrecision=this.FloatPrecision;if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments);}}}var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.Title=this.Name;titlePaint.Identify=this.Guid;//指标ID
11493
+ titlePaint.ArgumentsText=null;titlePaint.Script=this;titlePaint.IsShowMainIndexTitle=this.IsShowIndexTitle;if(!this.IsShortTitle){var indexParam='';for(var _i135=0;_i135<this.Arguments.length;++_i135){var _item26=this.Arguments[_i135];if(indexParam.length>0)indexParam+=',';indexParam+=_item26.Value.toString();}if(indexParam.length>0)titlePaint.ArgumentsText='('+indexParam+')';}if(this.TitleFont)titlePaint.Font=this.TitleFont;return true;};//给一个默认的颜色
11448
11494
  this.GetDefaultColor=function(id){var COLOR_ARRAY=null;//使用全局线段配置
11449
11495
  if(g_JSChartResource&&g_JSChartResource.Index&&g_JSChartResource.Index.LineColor){COLOR_ARRAY=g_JSChartResource.Index.LineColor;}if(!COLOR_ARRAY||!Array.isArray(COLOR_ARRAY)){COLOR_ARRAY=["rgb(255,174,0)","rgb(25,199,255)","rgb(175,95,162)","rgb(236,105,65)","rgb(68,114,196)","rgb(229,0,79)","rgb(0,128,255)","rgb(252,96,154)","rgb(42,230,215)","rgb(24,71,178)"];}var number=parseInt(id);return COLOR_ARRAY[number%(COLOR_ARRAY.length-1)];};//获取颜色
11450
11496
  this.GetColor=function(colorName){if(colorName.indexOf("RGB(")==0)return colorName.toLowerCase();if(colorName.indexOf("rgb(")==0)return colorName;if(colorName.indexOf("RGBA(")==0)return colorName.toLowerCase();if(colorName.indexOf("rgba(")==0)return colorName;var color=JSComplier.ColorVarToRGB(colorName);if(color)return color;return'rgb(30,144,255)';/*
@@ -11481,11 +11527,11 @@ this.OverlayIndex=null;// { IsOverlay:true, Identify:overlayFrame.Identify, Wind
11481
11527
  //显示指标不符合条件
11482
11528
  this.ShowConditionError=function(param,msg){var hqChart=param.HQChart;var windowIndex=param.WindowIndex;var message='指标不支持当前品种或周期';if(msg)message=msg;var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;frame.ChartPaint=[];var chart=new ChartLine();chart.Canvas=hqChart.Canvas;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.NotSupportMessage=message;frame.ChartPaint.push(chart);hqChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){if(!this.OverlayIndex||this.OverlayIndex.IsOverlay!=true)return;this.OverlayIndex.Frame.ChartPaint=[];if(!IFrameSplitOperator.IsNonEmptyArray(this.OutVar))return;//修改Y轴分割方式
11483
11529
  var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;if(ySpliter){ySpliter.Reset();ySpliter.FloatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(this.YSplitType))ySpliter.SplitType=this.YSplitType;if(this.YAxis)ySpliter.SetOption(this.YAxis);}//指标名字
11484
- var titleInfo={Data:[],Title:this.Name,Frame:this.OverlayIndex.Frame.Frame,Script:this,IsShowIndexTitle:this.IsShowIndexTitle};var indexParam='';for(var i in this.Arguments){var _item29=this.Arguments[i];if(indexParam.length>0)indexParam+=',';indexParam+=_item29.Value.toString();}if(indexParam.length>0)titleInfo.Title=this.Name+'('+indexParam+')';var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments,this.OverlayIndex.Identify);}this.OverlayIndex.Frame.Frame.Title=this.Name;//给子框架设置标题
11530
+ var titleInfo={Data:[],Title:this.Name,Frame:this.OverlayIndex.Frame.Frame,Script:this,IsShowIndexTitle:this.IsShowIndexTitle};var indexParam='';for(var i in this.Arguments){var _item27=this.Arguments[i];if(indexParam.length>0)indexParam+=',';indexParam+=_item27.Value.toString();}if(indexParam.length>0)titleInfo.Title=this.Name+'('+indexParam+')';var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments,this.OverlayIndex.Identify);}this.OverlayIndex.Frame.Frame.Title=this.Name;//给子框架设置标题
11485
11531
  if(hqChart.Frame.SubFrame[windowIndex]){var mainFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(mainFrame)this.OverlayIndex.Frame.Frame.XPointCount=mainFrame.XPointCount;//跟主窗口同步下页面显示数据个数
11486
- }for(var i=0;i<this.OutVar.length;++i){var _item30=this.OutVar[i];if(_item30.IsExData===true)continue;//扩展数据不显示图形
11487
- if(_item30.Type==0){this.CreateLine(hqChart,windowIndex,_item30,i,_item30.Type);}else if(_item30.Type==1){switch(_item30.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item30,i);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item30,i);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item30,i);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item30,i);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item30,i);break;case'DRAWKLINE':this.CreateKLine(hqChart,windowIndex,_item30,i);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item30,i);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item30,i);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item30,i);break;case'DRAWNUMBER':case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item30,i);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item30,i);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item30,i);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item30,i);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item30,i);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item30,i);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item30,i);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item30,i);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item30,i);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item30,i);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item30,i);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item30,i);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item30,i);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item30,i);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item30,i);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item30,i);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item30,i);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item30,i);break;default:{var find=g_ScriptIndexChartFactory.Get(_item30.Draw.DrawType);//外部挂接
11488
- if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item30,i,this);}break;}}else if(_item30.Type==2){this.CreateMACD(hqChart,windowIndex,_item30,i);}else if(_item30.Type==3){this.CreatePointDot(hqChart,windowIndex,_item30,i,hisData);}else if(_item30.Type==4){this.CreateLineStick(hqChart,windowIndex,_item30,i);}else if(_item30.Type==5){this.CreateStick(hqChart,windowIndex,_item30,i);}else if(_item30.Type==6){this.CreateVolStick(hqChart,windowIndex,_item30,i,hisData);}else if(_item30.Type==7){this.CreateLine(hqChart,windowIndex,_item30,i,_item30.Type);}else if(_item30.Type==8){this.CreateLine(hqChart,windowIndex,_item30,i,_item30.Type);}var titleData=titleInfo.Data[i];if(titleData){if(this.FloatPrecision>=0)titleData.FloatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(this.StringFormat))titleData.StringFormat=this.StringFormat;}}/*
11532
+ }for(var i=0;i<this.OutVar.length;++i){var _item28=this.OutVar[i];if(_item28.IsExData===true)continue;//扩展数据不显示图形
11533
+ if(_item28.Type==0){this.CreateLine(hqChart,windowIndex,_item28,i,_item28.Type);}else if(_item28.Type==1){switch(_item28.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item28,i);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item28,i);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item28,i);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item28,i);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item28,i);break;case'DRAWKLINE':this.CreateKLine(hqChart,windowIndex,_item28,i);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item28,i);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item28,i);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item28,i);break;case'DRAWNUMBER':case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item28,i);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item28,i);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item28,i);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item28,i);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item28,i);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item28,i);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item28,i);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item28,i);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item28,i);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item28,i);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item28,i);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item28,i);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item28,i);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item28,i);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item28,i);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item28,i);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item28,i);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item28,i);break;default:{var find=g_ScriptIndexChartFactory.Get(_item28.Draw.DrawType);//外部挂接
11534
+ if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item28,i,this);}break;}}else if(_item28.Type==2){this.CreateMACD(hqChart,windowIndex,_item28,i);}else if(_item28.Type==3){this.CreatePointDot(hqChart,windowIndex,_item28,i,hisData);}else if(_item28.Type==4){this.CreateLineStick(hqChart,windowIndex,_item28,i);}else if(_item28.Type==5){this.CreateStick(hqChart,windowIndex,_item28,i);}else if(_item28.Type==6){this.CreateVolStick(hqChart,windowIndex,_item28,i,hisData);}else if(_item28.Type==7){this.CreateLine(hqChart,windowIndex,_item28,i,_item28.Type);}else if(_item28.Type==8){this.CreateLine(hqChart,windowIndex,_item28,i,_item28.Type);}var titleData=titleInfo.Data[i];if(titleData){if(this.FloatPrecision>=0)titleData.FloatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(this.StringFormat))titleData.StringFormat=this.StringFormat;}}/*
11489
11535
  hqChart.TitlePaint[titleIndex].Title=this.Name;
11490
11536
 
11491
11537
  let indexParam='';
@@ -13053,7 +13099,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
13053
13099
  this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
13054
13100
  * 版本信息输出
13055
13101
  *
13056
- */var HQCHART_VERSION="1.1.13141";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13102
+ */var HQCHART_VERSION="1.1.13151";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13057
13103
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
13058
13104
  // BaseIndex:BaseIndex,
13059
13105
  // ChartLine:ChartLine,