hqchart 1.1.14295 → 1.1.14299

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.
@@ -3866,7 +3866,25 @@ this.BorderColor=g_JSChartResource.ChartSimpleTable.BorderColor;//边框颜色
3866
3866
  };this.CalculateSize=function(){this.AryColumnCache=[];var pixelRatio=GetDevicePixelRatio();this.TextFont=this.TextFontConfig.Size*pixelRatio+'px '+this.TextFontConfig.Name;this.TextFontHeight=this.GetFontHeight(this.TextFont,"擎");this.RowHeight=this.TextFontHeight+this.ItemMargin.Top+this.ItemMargin.Bottom;var rowCount=this.Data.Data.length;for(var i=0,j=0;i<rowCount;++i){var rowItem=this.Data.Data[i];for(j=0;j<rowItem.AryCell.length;++j){if(!this.AryColumnCache[j])this.AryColumnCache[j]={Width:this.DefaultCellWidth};var colItem=this.AryColumnCache[j];var cellItem=rowItem.AryCell[j];var textWidth=this.Canvas.measureText(cellItem.Text).width;if(colItem.Width<textWidth)colItem.Width=textWidth;}}var tableWidth=0;for(var i=0;i<this.AryColumnCache.length;++i){var item=this.AryColumnCache[i];item.Width+=this.ItemMargin.Left+this.ItemMargin.Right;//增加左右间距
3867
3867
  tableWidth+=item.Width;}this.RectClient={Width:tableWidth,Height:this.RowHeight*rowCount};var border=this.ChartFrame.GetBorder();this.RectClient.Right=border.Right+this.Offset.X;this.RectClient.Top=border.TopEx+this.Offset.Y;this.RectClient.Left=this.RectClient.Right-this.RectClient.Width;this.RectClient.Bottom=this.RectClient.Top+this.RectClient.Height;};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;var isHScreen=this.ChartFrame.IsHScreen===true;if(isHScreen)return;this.CalculateSize();if(this.BGColor){this.Canvas.fillStyle=this.BGColor;this.Canvas.fillRect(this.RectClient.Left,this.RectClient.Top,this.RectClient.Width,this.RectClient.Height);}var itemHeight=this.RowHeight;this.Canvas.font=this.TextFont;this.Canvas.textBaseline='bottom';this.Canvas.textAlign='left';var rtRow={Left:this.RectClient.Left,Top:this.RectClient.Top,Width:this.RectClient.Width,Height:itemHeight};rtRow.Right=rtRow.Left+rtRow.Width;rtRow.Bottom=rtRow.Top+rtRow.Height;var rowCount=this.Data.Data.length;for(var i=0;i<rowCount;++i){var rowItem=this.Data.Data[i];this.DrawRow(rowItem,rtRow);rtRow.Top+=itemHeight;rtRow.Bottom+=itemHeight;}this.DrawBorder();};this.DrawBorder=function(){if(!this.BorderColor)return;var rowCount=this.Data.Data.length;var colCount=this.AryColumnCache.length;this.Canvas.strokeStyle=this.BorderColor;this.Canvas.beginPath();//横线
3868
3868
  var rowTop=this.RectClient.Top;var left=this.RectClient.Left,right=this.RectClient.Right;var bottom=this.RectClient.Bottom,top=this.RectClient.Top;for(var i=0;i<rowCount;++i){if(i==0){var drawTop=ToFixedPoint(rowTop);this.Canvas.moveTo(left,drawTop);this.Canvas.lineTo(right,drawTop);}var drawTop=ToFixedPoint(rowTop+this.RowHeight);this.Canvas.moveTo(left,drawTop);this.Canvas.lineTo(right,drawTop);rowTop+=this.RowHeight;}//竖线
3869
- var columnLeft=this.RectClient.Left;for(var i=0;i<colCount;++i){var item=this.AryColumnCache[i];if(i==0){var drawLeft=ToFixedPoint(columnLeft);this.Canvas.moveTo(drawLeft,top);this.Canvas.lineTo(drawLeft,bottom);}var drawLeft=ToFixedPoint(columnLeft+item.Width);this.Canvas.moveTo(drawLeft,top);this.Canvas.lineTo(drawLeft,bottom);columnLeft+=item.Width;}this.Canvas.stroke();};this.DrawRow=function(data,rtRow){if(!IFrameSplitOperator.IsNonEmptyArray(data.AryCell))return;var x=rtRow.Left,y=rtRow.Top,width=rtRow.Width;for(var i=0;i<data.AryCell.length;++i){var item=data.AryCell[i];var colItem=this.AryColumnCache[i];var rtBG={Left:x,Top:rtRow.Top,Bottom:rtRow.Bottom,Height:this.RowHeight,Width:colItem.Width};rtBG.Right=rtBG.Left+rtBG.Width;if(item){if(item.BGColor){this.Canvas.fillStyle=item.BGColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}if(item.Text&&rtBG.Width>10){if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.TextColor;var xText=x+this.ItemMargin.Left;var yText=rtBG.Bottom-this.ItemMargin.Bottom;if(item.TextAlign=='right'){var textWidth=this.Canvas.measureText(item.Text).width;xText=rtBG.Right-this.ItemMargin.Right-textWidth;}else if(item.TextAlign=='center'){var textWidth=this.Canvas.measureText(item.Text).width;xText=rtBG.Left+rtBG.Width/2-textWidth/2;}this.Canvas.fillText(item.Text,xText,yText);}}x+=rtBG.Width;}};this.GetMaxMin=function(){return{Min:null,Max:null};};}//分钟成交量 支持横屏
3869
+ var columnLeft=this.RectClient.Left;for(var i=0;i<colCount;++i){var item=this.AryColumnCache[i];if(i==0){var drawLeft=ToFixedPoint(columnLeft);this.Canvas.moveTo(drawLeft,top);this.Canvas.lineTo(drawLeft,bottom);}var drawLeft=ToFixedPoint(columnLeft+item.Width);this.Canvas.moveTo(drawLeft,top);this.Canvas.lineTo(drawLeft,bottom);columnLeft+=item.Width;}this.Canvas.stroke();};this.DrawRow=function(data,rtRow){if(!IFrameSplitOperator.IsNonEmptyArray(data.AryCell))return;var x=rtRow.Left,y=rtRow.Top,width=rtRow.Width;for(var i=0;i<data.AryCell.length;++i){var item=data.AryCell[i];var colItem=this.AryColumnCache[i];var rtBG={Left:x,Top:rtRow.Top,Bottom:rtRow.Bottom,Height:this.RowHeight,Width:colItem.Width};rtBG.Right=rtBG.Left+rtBG.Width;if(item){if(item.BGColor){this.Canvas.fillStyle=item.BGColor;this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);}if(item.Text&&rtBG.Width>10){if(item.Color)this.Canvas.fillStyle=item.Color;else this.Canvas.fillStyle=this.TextColor;var xText=x+this.ItemMargin.Left;var yText=rtBG.Bottom-this.ItemMargin.Bottom;if(item.TextAlign=='right'){var textWidth=this.Canvas.measureText(item.Text).width;xText=rtBG.Right-this.ItemMargin.Right-textWidth;}else if(item.TextAlign=='center'){var textWidth=this.Canvas.measureText(item.Text).width;xText=rtBG.Left+rtBG.Width/2-textWidth/2;}this.Canvas.fillText(item.Text,xText,yText);}}x+=rtBG.Width;}};this.GetMaxMin=function(){return{Min:null,Max:null};};}//饼图
3870
+ function ChartPie(){this.newMethod=IChartPainting;//派生
3871
+ this.newMethod();delete this.newMethod;this.Radius=100;//半径默认值
3872
+ this.Width=40;this.Height=50;//this.Distance = 30; //指示线超出圆饼的距离
3873
+ //this.txtLine = 20; // 文本下划线
3874
+ //this.paddingX = 20 / 3;// 设置文本的移动
3875
+ this.RectClient={};this.Draw=function(){if(!this.Data||!this.Data.Data||!(this.Data.Data.length>0))return this.DrawEmptyData();var left=this.ChartBorder.GetLeft();var right=this.ChartBorder.GetRight();var top=this.ChartBorder.GetTop();var bottom=this.ChartBorder.GetBottom();var width=this.ChartBorder.GetWidth();var height=this.ChartBorder.GetHeight();if(isNaN(this.Radius)){var str=this.Radius.replace("%","");str=str/100;if(width>=height){this.Radius=str*height;}if(width<height)this.Radius=str*width;}this.Canvas.save();this.Canvas.translate(width/2,height/2);var totalValue=0;//求和
3876
+ for(var _i4 in this.Data.Data){totalValue+=this.Data.Data[_i4].Value;}var start=0;var end=0;//画饼图
3877
+ for(var _i5 in this.Data.Data){var _item=this.Data.Data[_i5];var _rate=(_item.Value/totalValue).toFixed(2);//占比
3878
+ //JSConsole.Chart.Log('[ChartPie::Draw]', i, rate, item);
3879
+ // 绘制扇形
3880
+ this.Canvas.beginPath();this.Canvas.moveTo(0,0);end+=_rate*2*Math.PI;//终止角度
3881
+ this.Canvas.strokeStyle="white";this.Canvas.fillStyle=_item.Color;this.Canvas.arc(0,0,this.Radius,start,end);this.Canvas.fill();this.Canvas.closePath();this.Canvas.stroke();// 绘制直线
3882
+ this.Canvas.beginPath();this.Canvas.strokeStyle=_item.Color;this.Canvas.moveTo(0,0);var _x=(this.Radius+this.Distance)*Math.cos(end-(end-start)/2);var _y=(this.Radius+this.Distance)*Math.sin(end-(end-start)/2);this.Canvas.lineTo(_x,_y);// JSConsole.Chart.Log(x,y,"xy")
3883
+ // 绘制横线
3884
+ var txtLine=this.txtLine;var paddingX=this.paddingX;this.Canvas.textAlign='left';if(end-(end-start)/2<1.5*Math.PI&&end-(end-start)/2>0.5*Math.PI){txtLine=-this.txtLine;paddingX=-this.paddingX;this.Canvas.textAlign='right';}this.Canvas.lineTo(_x+txtLine,_y);this.Canvas.stroke();// 写文字
3885
+ if(_item.Text){this.Canvas.fillText(_item.Text,_x+txtLine+paddingX,_y);}else{var _text=_item.Name+':'+_item.Value;this.Canvas.fillText(_text,_x+txtLine+paddingX,_y);}start+=_rate*2*Math.PI;//起始角度
3886
+ }this.Canvas.restore();};//空数据
3887
+ this.DrawEmptyData=function(){JSConsole.Chart.Log('[ChartPie::DrawEmptyData]');};this.GetMaxMin=function(){return{Min:null,Max:null};};}//分钟成交量 支持横屏
3870
3888
  function ChartMinuteVolumBar(){this.newMethod=IChartPainting;//派生
3871
3889
  this.newMethod();delete this.newMethod;this.ClassName='ChartMinuteVolumBar';//类名
3872
3890
  this.UpColor=g_JSChartResource.UpBarColor;//上涨
@@ -4144,7 +4162,7 @@ this.Draw=function(){if(!this.Data||!this.Data.Data)return;if(this.Data.Data.len
4144
4162
  */function ChartStraightArea(){this.newMethod=IChartPainting;//派生
4145
4163
  this.newMethod();delete this.newMethod;this.ClassName='ChartStraightArea';//类名
4146
4164
  this.Color="rgb(255,193,37)";//线段颜色
4147
- this.Font='11px 微软雅黑';this.Draw=function(){if(this.ChartFrame.IsMinSize)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;if(this.ChartFrame.IsHScreen===true){this.HScreenDraw();return;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();var bottom=this.ChartBorder.GetBottom();var left=this.ChartBorder.GetLeft();var xPointCount=this.ChartFrame.XPointCount;var xRight=this.ChartFrame.GetXFromIndex(xPointCount-1);for(var _i4 in this.Data.Data){var _item=this.Data.Data[_i4];if(_item==null||isNaN(_item.Value)||isNaN(_item.Value2))continue;if(_item.Color==null)continue;var valueMax=Math.max(_item.Value,_item.Value2);var valueMin=Math.min(_item.Value,_item.Value2);var yTop=this.ChartFrame.GetYFromData(valueMax);var yBottom=this.ChartFrame.GetYFromData(valueMin);this.Canvas.fillStyle=_item.Color;this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(yTop),ToFixedRect(xRight-left),ToFixedRect(yBottom-yTop));if(_item.Title&&_item.TitleColor){this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';this.Canvas.fillStyle=_item.TitleColor;this.Canvas.font=this.Font;var _y=yTop+(yBottom-yTop)/2;this.Canvas.fillText(_item.Title,xRight,_y);}}};this.HScreenDraw=function(){var bottom=this.ChartBorder.GetBottom();var top=this.ChartBorder.GetTop();var height=this.ChartBorder.GetHeight();for(var _i5 in this.Data.Data){var _item2=this.Data.Data[_i5];if(_item2==null||isNaN(_item2.Value)||isNaN(_item2.Value2))continue;if(_item2.Color==null)continue;var valueMax=Math.max(_item2.Value,_item2.Value2);var valueMin=Math.min(_item2.Value,_item2.Value2);var yTop=this.ChartFrame.GetYFromData(valueMax);var yBottom=this.ChartFrame.GetYFromData(valueMin);this.Canvas.fillStyle=_item2.Color;this.Canvas.fillRect(ToFixedRect(yBottom),ToFixedRect(top),ToFixedRect(yTop-yBottom),ToFixedRect(height));if(_item2.Title&&_item2.TitleColor){var xText=yTop+(yBottom-yTop)/2;var yText=bottom;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';this.Canvas.fillStyle=_item2.TitleColor;this.Canvas.font=this.Font;this.Canvas.fillText(_item2.Title,0,-2);this.Canvas.restore();}}};this.GetMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={};range.Min=null;range.Max=null;if(!this.Data||!this.Data.Data)return range;for(var _i6 in this.Data.Data){var _item3=this.Data.Data[_i6];if(_item3==null||isNaN(_item3.Value)||isNaN(_item3.Value2))continue;var valueMax=Math.max(_item3.Value,_item3.Value2);var valueMin=Math.min(_item3.Value,_item3.Value2);if(range.Max==null)range.Max=valueMax;if(range.Min==null)range.Min=valueMin;if(range.Max<valueMax)range.Max=valueMax;if(range.Min>valueMin)range.Min=valueMin;}return range;};}//分钟线 支持横屏
4165
+ this.Font='11px 微软雅黑';this.Draw=function(){if(this.ChartFrame.IsMinSize)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;if(this.ChartFrame.IsHScreen===true){this.HScreenDraw();return;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();var bottom=this.ChartBorder.GetBottom();var left=this.ChartBorder.GetLeft();var xPointCount=this.ChartFrame.XPointCount;var xRight=this.ChartFrame.GetXFromIndex(xPointCount-1);for(var _i6 in this.Data.Data){var _item2=this.Data.Data[_i6];if(_item2==null||isNaN(_item2.Value)||isNaN(_item2.Value2))continue;if(_item2.Color==null)continue;var valueMax=Math.max(_item2.Value,_item2.Value2);var valueMin=Math.min(_item2.Value,_item2.Value2);var yTop=this.ChartFrame.GetYFromData(valueMax);var yBottom=this.ChartFrame.GetYFromData(valueMin);this.Canvas.fillStyle=_item2.Color;this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(yTop),ToFixedRect(xRight-left),ToFixedRect(yBottom-yTop));if(_item2.Title&&_item2.TitleColor){this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';this.Canvas.fillStyle=_item2.TitleColor;this.Canvas.font=this.Font;var _y2=yTop+(yBottom-yTop)/2;this.Canvas.fillText(_item2.Title,xRight,_y2);}}};this.HScreenDraw=function(){var bottom=this.ChartBorder.GetBottom();var top=this.ChartBorder.GetTop();var height=this.ChartBorder.GetHeight();for(var _i7 in this.Data.Data){var _item3=this.Data.Data[_i7];if(_item3==null||isNaN(_item3.Value)||isNaN(_item3.Value2))continue;if(_item3.Color==null)continue;var valueMax=Math.max(_item3.Value,_item3.Value2);var valueMin=Math.min(_item3.Value,_item3.Value2);var yTop=this.ChartFrame.GetYFromData(valueMax);var yBottom=this.ChartFrame.GetYFromData(valueMin);this.Canvas.fillStyle=_item3.Color;this.Canvas.fillRect(ToFixedRect(yBottom),ToFixedRect(top),ToFixedRect(yTop-yBottom),ToFixedRect(height));if(_item3.Title&&_item3.TitleColor){var xText=yTop+(yBottom-yTop)/2;var yText=bottom;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';this.Canvas.fillStyle=_item3.TitleColor;this.Canvas.font=this.Font;this.Canvas.fillText(_item3.Title,0,-2);this.Canvas.restore();}}};this.GetMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={};range.Min=null;range.Max=null;if(!this.Data||!this.Data.Data)return range;for(var _i8 in this.Data.Data){var _item4=this.Data.Data[_i8];if(_item4==null||isNaN(_item4.Value)||isNaN(_item4.Value2))continue;var valueMax=Math.max(_item4.Value,_item4.Value2);var valueMin=Math.min(_item4.Value,_item4.Value2);if(range.Max==null)range.Max=valueMax;if(range.Min==null)range.Min=valueMin;if(range.Max<valueMax)range.Max=valueMax;if(range.Min>valueMin)range.Min=valueMin;}return range;};}//分钟线 支持横屏
4148
4166
  function ChartMinutePriceLine(){this.newMethod=ChartLine;//派生
4149
4167
  this.newMethod();delete this.newMethod;this.ClassName='ChartMinutePriceLine';//类名
4150
4168
  this.YClose;this.IsDrawArea=true;//是否画价格面积图
@@ -4735,9 +4753,9 @@ for(var i=0;i<this.Data.AllChip.length;++i){var vol=this.Data.AllChip[i];if(!vol
4735
4753
  {if(!this.HQChart)return false;if(!this.HQChart.FlowCapitalReady)return false;var symbol=this.HQChart.Symbol;if(!symbol)return false;var recvData=this.SendCalculateChipEvent();if(recvData&&recvData.PreventDefault)return recvData.Result;if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))return false;//指数暂时不支持移动筹码
4736
4754
  var bindData=this.HQChart.ChartPaint[0].Data;//if (bindData.Period>=4) return false; //分钟K线不支持, 没时间做,以后再做吧
4737
4755
  var count=bindData.DataOffset+parseInt(this.HQChart.CursorIndex);if(count>=bindData.Data.length)count=bindData.Data.length-1;var selData=bindData.Data[count];var yPrice=selData.Close;var mouseY=this.HQChart.LastPoint.Y;if(mouseY)yPrice=this.HQChart.Frame.SubFrame[0].Frame.GetYData(mouseY);//JSConsole.Chart.Log("[StockChip::CalculateChip]",count,this.HQChart.CursorIndex,selData);
4738
- var rate=1;var aryVol=[];var seed=1,vol,maxPrice,minPrice;for(var _i7=count;_i7>=0;--_i7){var item=bindData.Data[_i7];var changeRate=1;//换手率
4739
- if(item.FlowCapital>0)changeRate=item.Vol/item.FlowCapital;if(_i7==count)vol=item.Vol*changeRate;else vol=item.Vol*seed;var dataItem={Vol:vol,High:item.High,Low:item.Low};aryVol.push(dataItem);seed*=1-changeRate*rate;if(!maxPrice||maxPrice<item.High)maxPrice=item.High;if(!minPrice||minPrice>item.Low)minPrice=item.Low;}//JSConsole.Chart.Log("[StockChip::CalculateChip]",maxPrice,minPrice);
4740
- if(!maxPrice||!minPrice)return true;var priceZoom=this.PriceZoom;maxPrice=parseInt(maxPrice*priceZoom);minPrice=parseInt(minPrice*priceZoom);var dataCount=maxPrice-minPrice;var aryChip=new Array();for(var _i8=0;_i8<=dataCount;++_i8){aryChip.push(0);}var dayChip=[];var distributeData;if(this.ShowType==2){var dayChip=[{Day:100,Color:this.DAY_COLOR[1][5]},{Day:60,Color:this.DAY_COLOR[1][4]},{Day:30,Color:this.DAY_COLOR[1][3]},{Day:20,Color:this.DAY_COLOR[1][2]},{Day:10,Color:this.DAY_COLOR[1][1]},{Day:5,Color:this.DAY_COLOR[1][0]}];for(var _i9 in aryVol){var item=aryVol[_i9];var high=parseInt(item.High*priceZoom);var low=parseInt(item.Low*priceZoom);var averageVol=item.Vol;if(high-low>0)averageVol=item.Vol/(high-low);if(averageVol<=0.000000001)continue;for(var k=0;k<dayChip.length;++k){if(_i9==dayChip[k].Day){dayChip[k].Chip=aryChip.slice(0);break;}}distributeData={Low:low,High:high,Vol:item.Vol,MaxPrice:maxPrice,MinPrice:minPrice};this.CalculateDistribute(aryChip,distributeData);}}else if(this.ShowType==1){var dayChip=[{Day:5,Color:this.DAY_COLOR[0][0]},{Day:10,Color:this.DAY_COLOR[0][1]},{Day:20,Color:this.DAY_COLOR[0][2]},{Day:30,Color:this.DAY_COLOR[0][3]},{Day:60,Color:this.DAY_COLOR[0][4]},{Day:100,Color:this.DAY_COLOR[0][5]}];for(var _i10=aryVol.length-1;_i10>=0;--_i10){var item=aryVol[_i10];var high=parseInt(item.High*priceZoom);var low=parseInt(item.Low*priceZoom);var averageVol=item.Vol;if(high-low>0)averageVol=item.Vol/(high-low);if(averageVol<=0.000000001)continue;for(var k=0;k<dayChip.length;++k){if(_i10==dayChip[k].Day){dayChip[k].Chip=aryChip.slice(0);break;}}distributeData={Low:low,High:high,Vol:item.Vol,MaxPrice:maxPrice,MinPrice:minPrice};this.CalculateDistribute(aryChip,distributeData);}}else{for(var _i11 in aryVol){var item=aryVol[_i11];var high=parseInt(item.High*priceZoom);var low=parseInt(item.Low*priceZoom);var averageVol=item.Vol;if(high-low>0)averageVol=item.Vol/(high-low);if(averageVol<=0.000000001)continue;distributeData={Low:low,High:high,Vol:item.Vol,MaxPrice:maxPrice,MinPrice:minPrice};this.CalculateDistribute(aryChip,distributeData);}}if(!distributeData)return false;this.Data={AllChip:aryChip,MaxVol:distributeData.MaxVol,MaxPrice:maxPrice,MinPrice:minPrice,SelectData:selData,DayChip:dayChip,YPrice:yPrice};return true;};this.DrawFrame=function()//X轴成交量坐标
4756
+ var rate=1;var aryVol=[];var seed=1,vol,maxPrice,minPrice;for(var _i9=count;_i9>=0;--_i9){var item=bindData.Data[_i9];var changeRate=1;//换手率
4757
+ if(item.FlowCapital>0)changeRate=item.Vol/item.FlowCapital;if(_i9==count)vol=item.Vol*changeRate;else vol=item.Vol*seed;var dataItem={Vol:vol,High:item.High,Low:item.Low};aryVol.push(dataItem);seed*=1-changeRate*rate;if(!maxPrice||maxPrice<item.High)maxPrice=item.High;if(!minPrice||minPrice>item.Low)minPrice=item.Low;}//JSConsole.Chart.Log("[StockChip::CalculateChip]",maxPrice,minPrice);
4758
+ if(!maxPrice||!minPrice)return true;var priceZoom=this.PriceZoom;maxPrice=parseInt(maxPrice*priceZoom);minPrice=parseInt(minPrice*priceZoom);var dataCount=maxPrice-minPrice;var aryChip=new Array();for(var _i10=0;_i10<=dataCount;++_i10){aryChip.push(0);}var dayChip=[];var distributeData;if(this.ShowType==2){var dayChip=[{Day:100,Color:this.DAY_COLOR[1][5]},{Day:60,Color:this.DAY_COLOR[1][4]},{Day:30,Color:this.DAY_COLOR[1][3]},{Day:20,Color:this.DAY_COLOR[1][2]},{Day:10,Color:this.DAY_COLOR[1][1]},{Day:5,Color:this.DAY_COLOR[1][0]}];for(var _i11 in aryVol){var item=aryVol[_i11];var high=parseInt(item.High*priceZoom);var low=parseInt(item.Low*priceZoom);var averageVol=item.Vol;if(high-low>0)averageVol=item.Vol/(high-low);if(averageVol<=0.000000001)continue;for(var k=0;k<dayChip.length;++k){if(_i11==dayChip[k].Day){dayChip[k].Chip=aryChip.slice(0);break;}}distributeData={Low:low,High:high,Vol:item.Vol,MaxPrice:maxPrice,MinPrice:minPrice};this.CalculateDistribute(aryChip,distributeData);}}else if(this.ShowType==1){var dayChip=[{Day:5,Color:this.DAY_COLOR[0][0]},{Day:10,Color:this.DAY_COLOR[0][1]},{Day:20,Color:this.DAY_COLOR[0][2]},{Day:30,Color:this.DAY_COLOR[0][3]},{Day:60,Color:this.DAY_COLOR[0][4]},{Day:100,Color:this.DAY_COLOR[0][5]}];for(var _i12=aryVol.length-1;_i12>=0;--_i12){var item=aryVol[_i12];var high=parseInt(item.High*priceZoom);var low=parseInt(item.Low*priceZoom);var averageVol=item.Vol;if(high-low>0)averageVol=item.Vol/(high-low);if(averageVol<=0.000000001)continue;for(var k=0;k<dayChip.length;++k){if(_i12==dayChip[k].Day){dayChip[k].Chip=aryChip.slice(0);break;}}distributeData={Low:low,High:high,Vol:item.Vol,MaxPrice:maxPrice,MinPrice:minPrice};this.CalculateDistribute(aryChip,distributeData);}}else{for(var _i13 in aryVol){var item=aryVol[_i13];var high=parseInt(item.High*priceZoom);var low=parseInt(item.Low*priceZoom);var averageVol=item.Vol;if(high-low>0)averageVol=item.Vol/(high-low);if(averageVol<=0.000000001)continue;distributeData={Low:low,High:high,Vol:item.Vol,MaxPrice:maxPrice,MinPrice:minPrice};this.CalculateDistribute(aryChip,distributeData);}}if(!distributeData)return false;this.Data={AllChip:aryChip,MaxVol:distributeData.MaxVol,MaxPrice:maxPrice,MinPrice:minPrice,SelectData:selData,DayChip:dayChip,YPrice:yPrice};return true;};this.DrawFrame=function()//X轴成交量坐标
4741
4759
  {if(this.IsShowX==false)return;if(this.Data.MaxVol<=0)return;var isDrawXFrame=this.HQChart.Frame.SubFrame.length===1?false:true;//是否画X轴,如果只有1个窗口就不画
4742
4760
  var KLineFrame=this.HQChart.Frame.SubFrame[0].Frame;var chartBorder=KLineFrame.ChartBorder;var bottom=ToFixedPoint(chartBorder.GetBottomEx()+1);if(!isDrawXFrame)bottom=this.ClientRect.Top+this.ClientRect.Height;var left=this.ClientRect.Left;var right=left+this.ClientRect.Width;this.Canvas.strokeStyle=this.PenBorder;this.Canvas.beginPath();if(isDrawXFrame){this.Canvas.moveTo(left,bottom);this.Canvas.lineTo(right,bottom);}var showCount=this.ShowXCount;var maxValue=this.Data.MaxVol;var perValue=Math.floor(maxValue/showCount);this.Canvas.font=this.Font;this.Canvas.textBaseline='top';this.Canvas.fillStyle=this.InfoColor;var xOffset=10*GetDevicePixelRatio();for(var i=1;i<=showCount;++i){var vol=perValue*i;var x=vol/this.Data.MaxVol*this.ClientRect.Width+this.ClientRect.Left;x=ToFixedPoint(x);if(i==showCount)//最后一个刻度不要画线了
4743
4761
  {this.Canvas.textAlign='right';var text=IFrameSplitOperator.FormatValueString(maxValue,1);this.Canvas.fillText(text,x,bottom+2);}else{this.Canvas.moveTo(x,this.ClientRect.Top);this.Canvas.lineTo(x,bottom);this.Canvas.textAlign='center';var text=IFrameSplitOperator.FormatValueString(vol,1);var textWidth=this.Canvas.measureText(text).width;this.Canvas.fillText(text,Math.floor(x-textWidth*0.25),bottom+2);}}this.Canvas.stroke();};}//筹码分布手机版
@@ -7523,7 +7541,7 @@ chart.SetOption(option);this.ExtendChartPaint.push(chart);this.Frame.ChartBorder
7523
7541
  return chart;case"StockChipPhone":return this.CreateStockChipPhone(option);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"://框架分割
7524
7542
  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)//手势离开十字光标消失
7525
7543
  {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:回调 }
7526
- 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;//单词拼错了, 还没替换完
7544
+ this.LockIndex=function(lockData){if(!lockData)return;if(!lockData.IndexName)return;for(var _i14 in this.WindowIndex){var _item5=this.WindowIndex[_i14];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;//单词拼错了, 还没替换完
7527
7545
  this.Update=function(option)//option: { UpdateCursorIndexType:更新十字光标方式 }
7528
7546
  {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))//复权(日线数据复权)
7529
7547
  {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)//复权(分钟数据复权, 复权因子模式)
@@ -7571,8 +7589,8 @@ else if(ChartData.IsMinutePeriod(this.Period,true))this.RequestOverlayHistoryMin
7571
7589
  return true;};this.RequestSingleOverlayHistoryData=function(symbol,dataCount,firstDate,item){var self=this;item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;if(this.NetworkFilter){var obj={Name:'KLineChartContainer::RequestOverlayHistoryData',//类名::
7572
7590
  Explain:'叠加股票日K线数据',Request:{Url:self.KLineApiUrl,Data:{symbol:symbol,count:dataCount.MaxRequestDataCount,"first":{date:firstDate},field:["name","symbol","yclose","open","price","high",'vol','amount']},Type:'POST'},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOverlayHistoryData(data,item);});if(obj.PreventDefault==true)return;//已被上层替换,不调用默认的网络请求
7573
7591
  }};this.RequestOverlayHistoryData=function(){if(!this.OverlayChartPaint.length)return;if(!this.SourceData||!this.SourceData.Data)return;//主图数据还没有到完
7574
- var self=this;var dataCount=this.GetRequestDataCount();var firstDate=this.SourceData.Data[0].Date;for(var i=0;i<this.OverlayChartPaint.length;++i){var _item5=this.OverlayChartPaint[i];if(!_item5.MainData)continue;//等待主图股票数据未下载完
7575
- if(_item5.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)continue;var symbol=_item5.Symbol;if(!symbol)continue;this.RequestSingleOverlayHistoryData(symbol,dataCount,firstDate,_item5);}};this.RecvOverlayHistoryData=function(data,paint){if(paint.IsDelete)return;var aryDayData=KLineChartContainer.JsonDataToHistoryData(data);//原始叠加数据
7592
+ var self=this;var dataCount=this.GetRequestDataCount();var firstDate=this.SourceData.Data[0].Date;for(var i=0;i<this.OverlayChartPaint.length;++i){var _item6=this.OverlayChartPaint[i];if(!_item6.MainData)continue;//等待主图股票数据未下载完
7593
+ if(_item6.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)continue;var symbol=_item6.Symbol;if(!symbol)continue;this.RequestSingleOverlayHistoryData(symbol,dataCount,firstDate,_item6);}};this.RecvOverlayHistoryData=function(data,paint){if(paint.IsDelete)return;var aryDayData=KLineChartContainer.JsonDataToHistoryData(data);//原始叠加数据
7576
7594
  var sourceData=new ChartData();sourceData.Data=aryDayData;sourceData.DataType=0;var bindData=new ChartData();bindData.Data=aryDayData;bindData.Period=this.Period;bindData.Right=this.Right;bindData.DataType=0;if(bindData.Right>0&&MARKET_SUFFIX_NAME.IsSHSZStockA(data.symbol)&&!this.IsApiPeriod)//复权数据 ,A股才有有复权
7577
7595
  {var rightData=bindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});bindData.Data=rightData;}var aryOverlayData=this.SourceData.GetOverlayData(bindData.Data,this.IsApiPeriod);//和主图数据拟合以后的数据
7578
7596
  bindData.Data=aryOverlayData;if(ChartData.IsDayPeriod(bindData.Period,false)&&!this.IsApiPeriod)//周期数据
@@ -7582,8 +7600,8 @@ this.UpdateFrameMaxMin();//调整坐标最大 最小值
7582
7600
  this.Frame.SetSizeChage(true);this.Draw();};this.RequestSingleHistoryMinuteData=function(symbol,dataCount,firstDate,firstTime,item){var self=this;item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;if(this.NetworkFilter){var obj={Name:'KLineChartContainer::RequestOverlayHistoryMinuteData',//类名::
7583
7601
  Explain:'叠加股票分钟K线数据',Request:{Url:self.MinuteKLineApiUrl,Data:{symbol:symbol,count:dataCount.MaxRequestMinuteDayCount,"first":{date:firstDate,time:firstTime},field:["name","symbol","yclose","open","price","high",'vol','amount']},Type:'POST'},Self:this,PreventDefault:false};this.NetworkFilter(obj,function(data){item.Status=OVERLAY_STATUS_ID.STATUS_RECVDATA_ID;self.RecvOveralyHistoryMinuteData(data,item);});if(obj.PreventDefault==true)return;//已被上层替换,不调用默认的网络请求
7584
7602
  }};this.RequestOverlayHistoryMinuteData=function(){if(!this.OverlayChartPaint.length)return;if(!this.SourceData||!this.SourceData.Data)return;//主图数据还没有到完
7585
- var self=this;var dataCount=this.GetRequestDataCount();var firstDate=this.SourceData.Data[0].Date;var firstTime=this.SourceData.Data[0].Time;for(var i=0;i<this.OverlayChartPaint.length;++i){var _item6=this.OverlayChartPaint[i];if(!_item6.MainData)continue;//等待主图股票数据未下载完
7586
- if(_item6.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)continue;var symbol=_item6.Symbol;if(!symbol)continue;this.RequestSingleHistoryMinuteData(symbol,dataCount,firstDate,firstTime,_item6);}};this.RecvOveralyHistoryMinuteData=function(data,paint){if(this.EnableVerifyRecvData&&data.symbol!=paint.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvOveralyHistoryMinuteData] recv data symbol not match. paint['+paint.Symbol+'] , Recv['+data.symbol+']');return;}var aryDayData=KLineChartContainer.JsonDataToMinuteHistoryData(data);if(!aryDayData)return;//原始叠加数据
7603
+ var self=this;var dataCount=this.GetRequestDataCount();var firstDate=this.SourceData.Data[0].Date;var firstTime=this.SourceData.Data[0].Time;for(var i=0;i<this.OverlayChartPaint.length;++i){var _item7=this.OverlayChartPaint[i];if(!_item7.MainData)continue;//等待主图股票数据未下载完
7604
+ if(_item7.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)continue;var symbol=_item7.Symbol;if(!symbol)continue;this.RequestSingleHistoryMinuteData(symbol,dataCount,firstDate,firstTime,_item7);}};this.RecvOveralyHistoryMinuteData=function(data,paint){if(this.EnableVerifyRecvData&&data.symbol!=paint.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvOveralyHistoryMinuteData] recv data symbol not match. paint['+paint.Symbol+'] , Recv['+data.symbol+']');return;}var aryDayData=KLineChartContainer.JsonDataToMinuteHistoryData(data);if(!aryDayData)return;//原始叠加数据
7587
7605
  var sourceData=new ChartData();sourceData.Data=aryDayData;sourceData.DataType=1;//0=日线数据 1=分钟数据
7588
7606
  var bindData=new ChartData();bindData.Data=aryDayData;bindData.Period=this.Period;bindData.Right=this.Right;bindData.DataType=1;var aryOverlayData=this.SourceData.GetOverlayMinuteData(bindData.Data,this.IsApiPeriod);//和主图数据拟合以后的数据
7589
7607
  bindData.Data=aryOverlayData;if(ChartData.IsMinutePeriod(bindData.Period,false)&&!this.IsApiPeriod)//周期数据, API周期数据不用计算
@@ -7601,13 +7619,13 @@ bNeedDonloadData=false;if(this.EnableFlowCapital)//强制下载流通股
7601
7619
  {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',//类名::
7602
7620
  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;//已被上层替换,不调用默认的网络请求
7603
7621
  }//请求数据
7604
- 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;//流通股本(股)
7622
+ 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 _i15 in stock.stockday){var item=stock.stockday[_i15];var indexData=new SingleData();indexData.Date=item.date;var financeData=item.capital;if(!financeData)continue;if(financeData.a>0){indexData.Value=financeData.a;//流通股本(股)
7605
7623
  aryData.push(indexData);}}if(this.IsApiPeriod){var klineData=this.ChartPaint[0].Data;var aryFixedData=null;if(ChartData.IsMinutePeriod(this.Period,true))//分钟数据
7606
7624
  {aryFixedData=klineData.GetMinuteFittingFinanceData(aryData);}else if(ChartData.IsDayPeriod(this.Period,true))//日线数据
7607
7625
  {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))//分钟数据
7608
7626
  {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)//复权
7609
7627
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsMinutePeriod(bindData.Period,false))//周期数据
7610
- {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)//复权
7628
+ {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;}else{var aryFixedData=this.SourceData.GetFittingFinanceData(aryData);for(var _i16 in this.SourceData.Data){var item=this.SourceData.Data[_i16];if(aryFixedData[_i16]&&IFrameSplitOperator.IsNumber(aryFixedData[_i16].Value))item.FlowCapital=aryFixedData[_i16].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0)//复权
7611
7629
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsDayPeriod(bindData.Period,false))//周期数据
7612
7630
  {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();};//创建画图工具
7613
7631
  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图标
@@ -7950,7 +7968,8 @@ this.GetAfterCloseData=function(){var dayItem=null;if(this.AfterCloseData&&this.
7950
7968
  this.GetBeforeOpenData=function(){var dayItem=null;if(this.BeforeOpenData&&this.IsShowBeforeData)dayItem=this.BeforeOpenData;return dayItem;};this.MoveCorssCursorIndex=function(option){if(!this.EnableNewIndex)return false;if(!this.Frame.SubFrame[0]||!this.Frame.SubFrame[0].Frame)return false;var frame=this.Frame.SubFrame[0].Frame;if(this.CorssCursorIndex.Type==1||this.CorssCursorIndex.Type==2||this.CorssCursorIndex.Type==3||this.CorssCursorIndex.Type==-1){var aryData=[];var dayItem=this.GetBeforeOpenData();aryData.push({DayItem:dayItem,Type:2});var dayItem=null;if(this.SourceData)dayItem=this.SourceData;aryData.push({DayItem:dayItem,Type:1});var dayItem=this.GetAfterCloseData();;aryData.push({DayItem:dayItem,Type:3});var obj={DataType:1,Data:aryData,IndexData:this.CorssCursorIndex,Point:{X:null,Y:null}};var step=1;if(option.IsMoveLeft){if(this.CorssCursorIndex.DayIndex<0&&this.CorssCursorIndex.DataIndex<0){this.GetLastCursorIndex(obj);step=0;}if(frame.MoveXIndexLeft(step,obj)){this.LastPoint.X=obj.Point.X;this.LastPoint.Y=obj.Point.Y;if(this.CorssCursorIndex.Type==1)this.CursorIndex=this.CorssCursorIndex.CursorIndex;var option={ParentFunction:'MoveCorssCursorIndex',Point:{X:obj.Point.X,Y:obj.Point.Y},IsPhone:false,ClientPos:this.CorssCursorIndex.Type};this.DrawDynamicInfo(option);}}else{if(this.CorssCursorIndex.DayIndex<0&&this.CorssCursorIndex.DataIndex<0){this.GetFirstCursorIndex(obj);step=0;}if(frame.MoveXIndexRight(step,obj)){this.LastPoint.X=obj.Point.X;this.LastPoint.Y=obj.Point.Y;if(this.CorssCursorIndex.Type==1)this.CursorIndex=this.CorssCursorIndex.CursorIndex;var option={ParentFunction:'MoveCorssCursorIndex',Point:{X:obj.Point.X,Y:obj.Point.Y},IsPhone:false,ClientPos:this.CorssCursorIndex.Type};this.DrawDynamicInfo(option);}}}else if(this.CorssCursorIndex.Type==10||this.CorssCursorIndex.Type==20||this.CorssCursorIndex.Type==30||this.CorssCursorIndex.Type==-2){var aryData=[];var offset=0,showDayCount=this.DayData.length;if(this.DayOffset){if(IFrameSplitOperator.IsNumber(this.DayOffset.Offset))offset=this.DayOffset.Offset;if(IFrameSplitOperator.IsNumber(this.DayOffset.ShowDayCount))showDayCount=this.DayOffset.ShowDayCount;}for(var i=offset,j=0;i<this.DayData.length&&j<showDayCount;++i,++j){var item=[];var dayItem=null;if(this.MultiDayBeforeOpenData&&this.IsShowMultiDayBeforeData)dayItem=this.MultiDayBeforeOpenData[i];item.push({DayItem:dayItem,Type:20});//倒序排的
7951
7969
  var dayItem=null;if(this.DayData)dayItem=this.DayData[this.DayData.length-1-i];item.push({DayItem:dayItem,Type:10});var dayItem=null;if(this.MultiDayAfterCloseData&&this.IsShowMultiDayAfterData)dayItem=this.MultiDayAfterCloseData[i];item.push({DayItem:dayItem,Type:30});aryData.push(item);}var obj={DataType:2,Data:aryData,IndexData:this.CorssCursorIndex,Point:{X:null,Y:null}};var step=1;if(option.IsMoveLeft){if(this.CorssCursorIndex.DayIndex<0&&this.CorssCursorIndex.DataIndex<0){this.GetLastCursorIndex(obj);step=0;}if(frame.MoveXIndexLeft(step,obj)){this.LastPoint.X=obj.Point.X;this.LastPoint.Y=obj.Point.Y;if(this.CorssCursorIndex.Type==10)this.CursorIndex=this.CorssCursorIndex.CursorIndex;var option={ParentFunction:'MoveCorssCursorIndex',Point:{X:obj.Point.X,Y:obj.Point.Y},IsPhone:false,ClientPos:null};if(this.CorssCursorIndex.Type==10)option.ClientPos=1;else if(this.CorssCursorIndex.Type==20)option.ClientPos=this.CorssCursorIndex.DayIndex+200;else if(this.CorssCursorIndex.Type==30)option.ClientPos=this.CorssCursorIndex.DayIndex+300;this.DrawDynamicInfo(option);}}else{if(this.CorssCursorIndex.DayIndex<0&&this.CorssCursorIndex.DataIndex<0){this.GetFirstCursorIndex(obj);step=0;}if(frame.MoveXIndexRight(step,obj)){this.LastPoint.X=obj.Point.X;this.LastPoint.Y=obj.Point.Y;if(this.CorssCursorIndex.Type==10)this.CursorIndex=this.CorssCursorIndex.CursorIndex;var option={ParentFunction:'MoveCorssCursorIndex',Point:{X:obj.Point.X,Y:obj.Point.Y},IsPhone:false,ClientPos:null};if(this.CorssCursorIndex.Type==10)option.ClientPos=1;else if(this.CorssCursorIndex.Type==20)option.ClientPos=this.CorssCursorIndex.DayIndex+200;else if(this.CorssCursorIndex.Type==30)option.ClientPos=this.CorssCursorIndex.DayIndex+300;this.DrawDynamicInfo(option);}}}};this.LockCorssCursor=function(option){var xItem=this.GlobalOption.LockCorssCursor.X;if(this.EnableNewIndex){if(this.CorssCursorIndex.Type!=1&&this.CorssCursorIndex.Type!=10)return false;//目前只支持连续交易时间段
7952
7970
  xItem.Minute={DayIndex:this.CorssCursorIndex.DayIndex,DataIndex:this.CorssCursorIndex.DataIndex,Type:this.CorssCursorIndex.Type,CursorIndex:this.CursorIndex};}else{xItem.Minute={CursorIndex:this.CursorIndex};}xItem.Enable=true;if(option&&option.Draw)this.Draw();return true;};this.UnlockCorssCursor=function(option){var xItem=this.GlobalOption.LockCorssCursor.X;xItem.Enable=false;xItem.Minute=null;if(option&&option.Draw)this.Draw();};this.GetCorssCursorPosition=function(){var position={LastPoint:{X:this.LastPoint.X,Y:this.LastPoint.Y},CursorIndex:this.CursorIndex,CorssCursorIndex:this.CorssCursorIndex};if(!this.GlobalOption||!this.GlobalOption.LockCorssCursor)return position;var xItem=this.GlobalOption.LockCorssCursor.X;if(xItem.Enable&&xItem.Minute){if(this.EnableNewIndex){var type=xItem.Minute.Type;position.CorssCursorIndex={DayIndex:xItem.Minute.DayIndex,DataIndex:xItem.Minute.DataIndex,Type:type};position.CursorIndex=xItem.Minute.CursorIndex;position.LastPoint.X=this.GetXPointByCorssCursorIndex(position.CorssCursorIndex);}else{var index=xItem.Minute.CursorIndex;var x=this.Frame.GetXFromIndex(index,false);position.LastPoint.X=x;position.CursorIndex=xItem.Minute.CursorIndex;}var border=this.Frame.ChartBorder.GetBorder();if(position.LastPoint.Y<border.Top||position.LastPoint.Y>border.Bottom)//超出图形框子, 调整为收盘价
7953
- {var kData=this.GetKData();if(kData&&IFrameSplitOperator.IsNonEmptyArray(kData.Data)){var index=parseInt(position.CursorIndex.toFixed(0));var item=kData.Data[index];if(item&&IFrameSplitOperator.IsNumber(item.Close)){var y=this.Frame.SubFrame[0].Frame.GetYFromData(item.Close);position.LastPoint.Y=y;}}}}return position;};this.GetXPointByCorssCursorIndex=function(corssCursorIndex){if(!corssCursorIndex)return;var x=null;var dayIndex=corssCursorIndex.DayIndex;var dataIndex=corssCursorIndex.DataIndex;switch(corssCursorIndex.Type){//单日 1=主图 2=盘前 3=盘后 //多日 10=主图 20=盘前 30=盘后
7971
+ {var kData=this.GetKData();if(kData&&IFrameSplitOperator.IsNonEmptyArray(kData.Data)){var index=parseInt(position.CursorIndex.toFixed(0));if(index>=kData.Data.length)index=kData.Data.length-1;//未开盘的时间,取最后一个数据的收盘价
7972
+ var item=kData.Data[index];if(item&&IFrameSplitOperator.IsNumber(item.Close)){var y=this.Frame.SubFrame[0].Frame.GetYFromData(item.Close);position.LastPoint.Y=y;}}}}return position;};this.GetXPointByCorssCursorIndex=function(corssCursorIndex){if(!corssCursorIndex)return;var x=null;var dayIndex=corssCursorIndex.DayIndex;var dataIndex=corssCursorIndex.DataIndex;switch(corssCursorIndex.Type){//单日 1=主图 2=盘前 3=盘后 //多日 10=主图 20=盘前 30=盘后
7954
7973
  case 1://单日 1=主图
7955
7974
  case 10://多日 10=主图
7956
7975
  x=this.Frame.GetXFromIndex(dataIndex);break;/*
@@ -8149,7 +8168,7 @@ var showDayCount=this.DayOffset.ShowDayCount;this.Frame.SetDayCount(showDayCount
8149
8168
  if(this.BaselineType===1)dayItem=this.DayData[this.DayData.length-1];//多日前
8150
8169
  var yClose=dayItem.YClose;if(IFrameSplitOperator.IsNumber(dayItem.YClearing)&&isFutures)yClose=dayItem.YClearing;//期货使用前结算价
8151
8170
  this.BindMainData(sourceData,yClose);//外汇 均线暂时不用
8152
- 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轴个数
8171
+ 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轴个数
8153
8172
  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轴个数同步
8154
8173
  {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();//调整坐标最大 最小值
8155
8174
  this.CreateChartDrawPictureByStorage();//创建画图工具
@@ -8177,7 +8196,7 @@ this.UpdateLatestMinuteDataV2(minuteData);var sourceData=this.SourceData;var ary
8177
8196
  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)//盘前, 盘后成交量公用坐标
8178
8197
  {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;//期货使用前结算价
8179
8198
  this.CaclutateLimitPrice(yClose,minuteData.LimitPrice);//计算涨停价格
8180
- 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轴个数
8199
+ 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轴个数
8181
8200
  item.Frame.YSplitOperator.Symbol=this.Symbol;if(IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)){for(var j=0;j<item.OverlayIndex.length;++j)//子坐标X轴个数同步
8182
8201
  {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;//数据绑定到信息地雷上
8183
8202
  this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"});this.RequestMinuteInfoData();this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
@@ -8195,7 +8214,7 @@ var sourceData=new ChartData();sourceData.Data=aryMinuteData;sourceData.UpdateTi
8195
8214
  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)//盘前, 盘后成交量公用坐标
8196
8215
  {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;//期货使用前结算价
8197
8216
  this.CaclutateLimitPrice(yClose,data.stock[0].limitprice);//计算涨停价格
8198
- 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轴个数
8217
+ 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轴个数
8199
8218
  item.Frame.YSplitOperator.Symbol=this.Symbol;for(var j in item.OverlayIndex)//子坐标X轴个数同步
8200
8219
  {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;//数据绑定到信息地雷上
8201
8220
  this.RecvMinuteDataEvent({FunctionName:"RecvMinuteData",Day:{IsFirstData:bFirstData}});this.RequestMinuteInfoData();this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
@@ -8212,7 +8231,7 @@ Explain:'叠加股票最新分时数据',Request:{Url:this.HistoryMinuteApiUrl,D
8212
8231
  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]);
8213
8232
  self.RecvOverlayMinuteData(data,item);}});};//请求叠加数据 (主数据下载完再下载))
8214
8233
  this.RequestOverlayMinuteData=function(){var self=this;var date=this.TradeDate;//最后一个交易日期
8215
- 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);/*
8234
+ for(var i=0;i<this.OverlayChartPaint.length;++i){var _item8=this.OverlayChartPaint[i];if(!_item8.MainData)continue;if(_item8.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)continue;var symbol=_item8.Symbol;if(!symbol)continue;this.RequestSingleOverlayMinuteData(symbol,date,_item8);/*
8216
8235
  item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;
8217
8236
 
8218
8237
  if (this.NetworkFilter)
@@ -8503,14 +8522,14 @@ var pageSize=this.Frame.GetCurrentPageSize();if(IFrameSplitOperator.IsNumber(pag
8503
8522
  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是否立即绘制图标
8504
8523
  {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;//数据索引
8505
8524
  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: } }
8506
- {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;//流通股本(股)
8525
+ {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;//流通股本(股)
8507
8526
  aryData.push(indexData);}}if(ChartData.IsMinutePeriod(this.Period,true))//分钟数据
8508
- {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))//周期数据
8527
+ {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))//周期数据
8509
8528
  {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;var aryFixedData=this.KLineSourceData.GetMinuteFittingFinanceData(aryData);//数据添加到备份数据中
8510
- 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)//复权
8529
+ 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)//复权
8511
8530
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsDayPeriod(bindData.Period,false))//周期数据
8512
8531
  {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;var aryFixedData=this.KLineSourceData.GetFittingFinanceData(aryData);//数据添加到备份数据中
8513
- 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;//派生
8532
+ 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;//派生
8514
8533
  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_GetHistoryData();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];//最后一个显示数据
8515
8534
  this.TrainInfo.LastShowData=kItem;this.TrainInfo.LastData=kItem;//训练起始日期
8516
8535
  this.TrainInfo.Start.Index=index;this.TrainInfo.Start.Date=kItem.Date;this.TrainInfo.Start.Time=kItem.Time;//训练结束日期
@@ -8711,7 +8730,7 @@ this.newMethod(name);delete this.newMethod;this.Script=script;//脚本
8711
8730
  this.Arguments=[];//参数
8712
8731
  this.OutVar=[];//输出数据
8713
8732
  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};//参数
8714
- 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,//脚本
8733
+ 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,//脚本
8715
8734
  symbol:param.HQChart.Symbol,//股票代码
8716
8735
  period:param.HQChart.Period,//周期 0=日线 1=周线 2=月线 3=年线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟
8717
8736
  right:param.HQChart.Right,//复权 0 不复权 1 前复权 2 后复权
@@ -8727,10 +8746,10 @@ var indexInfo={Name:item.name,Type:item.graph,LineWidth:item.width,Data:bindData
8727
8746
  param.HQChart.UpdataDataoffset();//更新数据偏移
8728
8747
  param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8729
8748
  param.HQChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){hqChart.DeleteIndexPaint(windowIndex);//清空指标图形
8730
- for(var _i24 in this.OutVar){var _item8=this.OutVar[_i24];switch(_item8.Type){case'line':this.CreateLine(hqChart,windowIndex,_item8,_i24);break;case'colorstick'://上下柱子
8731
- this.CreateColorStock(hqChart,windowIndex,_item8,_i24);break;}}var titleIndex=windowIndex+1;hqChart.TitlePaint[titleIndex].Title=this.Name;//这是指标名称
8749
+ for(var _i26 in this.OutVar){var _item9=this.OutVar[_i26];switch(_item9.Type){case'line':this.CreateLine(hqChart,windowIndex,_item9,_i26);break;case'colorstick'://上下柱子
8750
+ this.CreateColorStock(hqChart,windowIndex,_item9,_i26);break;}}var titleIndex=windowIndex+1;hqChart.TitlePaint[titleIndex].Title=this.Name;//这是指标名称
8732
8751
  var indexParam='';//指标参数
8733
- for(var _i25 in this.Arguments){var _item9=this.Arguments[_i25];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);};//给一个默认的颜色
8752
+ for(var _i27 in this.Arguments){var _item10=this.Arguments[_i27];if(indexParam.length>0)indexParam+=',';indexParam+=_item10.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);};//给一个默认的颜色
8734
8753
  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)];};}/*
8735
8754
  json格式数据指标 用来显示本地数据
8736
8755
  */function JsonDataIndex(name,script,args,option){this.newMethod=PyScriptIndex;//派生
@@ -9579,7 +9598,7 @@ this.ParseStatement=function(){var statement=void 0;switch(this.LookAhead.Type){
9579
9598
  this.ParseEmptyStatement=function(){var node=this.CreateNode();this.Expect(';');return this.Finalize(node,this.Node.EmptyStatement());};//https://tc39.github.io/ecma262/#sec-labelled-statements
9580
9599
  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
9581
9600
  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
9582
- stack.push(this.NextToken().Value);precedences.push(prec);markers.push(this.LookAhead);stack.push(this.IsolateCoverGrammar(this.ParseExponentiationExpression));}var _i26=stack.length-1;expr=stack[_i26];var lastMarker=markers.pop();while(_i26>1){var marker=markers.pop();var lastLineStart=lastMarker&&lastMarker.LineStart;var _node=this.StartNode(marker,lastLineStart);var _operator=stack[_i26-1];expr=this.Finalize(_node,this.Node.BinaryExpression(_operator,stack[_i26-2],expr));_i26-=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
9601
+ stack.push(this.NextToken().Value);precedences.push(prec);markers.push(this.LookAhead);stack.push(this.IsolateCoverGrammar(this.ParseExponentiationExpression));}var _i28=stack.length-1;expr=stack[_i28];var lastMarker=markers.pop();while(_i28>1){var marker=markers.pop();var lastLineStart=lastMarker&&lastMarker.LineStart;var _node=this.StartNode(marker,lastLineStart);var _operator=stack[_i28-1];expr=this.Finalize(_node,this.Node.BinaryExpression(_operator,stack[_i28-2],expr));_i28-=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
9583
9602
  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();//解析 调用参数
9584
9603
  expr=this.Finalize(this.StartNode(startToken),this.Node.CallExpression(expr,args,startToken));}else{break;}}return expr;};/*
9585
9604
  BooleanLiteral = 1,
@@ -9608,77 +9627,77 @@ this.LastMarker.Index=this.StartMarker.Index;this.LastMarker.Line=this.StartMark
9608
9627
  //相加
9609
9628
  this.Add=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相加
9610
9629
  if(isNumber&&isNumber2)return data+data2;//都是数组相加
9611
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i27=0;_i27<count;++_i27){result[_i27]=null;//初始化
9612
- if(_i27<data.length&&_i27<data2.length){if(this.IsNumber(data[_i27])&&this.IsNumber(data2[_i27]))result[_i27]=data[_i27]+data2[_i27];}}return result;}//单数据和数组相加
9613
- var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i28 in aryData){result[_i28]=null;if(this.IsNumber(aryData[_i28])&&this.IsNumber(value))result[_i28]=value+aryData[_i28];}return result;};//相减
9630
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i29=0;_i29<count;++_i29){result[_i29]=null;//初始化
9631
+ if(_i29<data.length&&_i29<data2.length){if(this.IsNumber(data[_i29])&&this.IsNumber(data2[_i29]))result[_i29]=data[_i29]+data2[_i29];}}return result;}//单数据和数组相加
9632
+ var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i30 in aryData){result[_i30]=null;if(this.IsNumber(aryData[_i30])&&this.IsNumber(value))result[_i30]=value+aryData[_i30];}return result;};//相减
9614
9633
  this.Subtract=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相减
9615
9634
  if(isNumber&&isNumber2)return data-data2;//都是数组相减
9616
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i29=0;_i29<count;++_i29){result[_i29]=null;//初始化
9617
- if(_i29<data.length&&_i29<data2.length){if(this.IsNumber(data[_i29])&&this.IsNumber(data2[_i29]))result[_i29]=data[_i29]-data2[_i29];}}return result;}if(isNumber)//单数据-数组
9618
- {for(var _i30 in data2){result[_i30]=null;if(this.IsNumber(data)&&this.IsNumber(data2[_i30]))result[_i30]=data-data2[_i30];}}else//数组-单数据
9619
- {for(var _i31 in data){result[_i31]=null;if(this.IsNumber(data[_i31])&&this.IsNumber(data2))result[_i31]=data[_i31]-data2;}}return result;};//相乘
9635
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i31=0;_i31<count;++_i31){result[_i31]=null;//初始化
9636
+ if(_i31<data.length&&_i31<data2.length){if(this.IsNumber(data[_i31])&&this.IsNumber(data2[_i31]))result[_i31]=data[_i31]-data2[_i31];}}return result;}if(isNumber)//单数据-数组
9637
+ {for(var _i32 in data2){result[_i32]=null;if(this.IsNumber(data)&&this.IsNumber(data2[_i32]))result[_i32]=data-data2[_i32];}}else//数组-单数据
9638
+ {for(var _i33 in data){result[_i33]=null;if(this.IsNumber(data[_i33])&&this.IsNumber(data2))result[_i33]=data[_i33]-data2;}}return result;};//相乘
9620
9639
  this.Multiply=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相乘
9621
9640
  if(isNumber&&isNumber2)return data*data2;//都是数组相乘
9622
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i32=0;_i32<count;++_i32){result[_i32]=null;//初始化
9623
- if(_i32<data.length&&_i32<data2.length){if(this.IsNumber(data[_i32])&&this.IsNumber(data2[_i32]))result[_i32]=data[_i32]*data2[_i32];}}return result;}//单数据和数组相乘
9624
- 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;};//相除
9641
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i34=0;_i34<count;++_i34){result[_i34]=null;//初始化
9642
+ if(_i34<data.length&&_i34<data2.length){if(this.IsNumber(data[_i34])&&this.IsNumber(data2[_i34]))result[_i34]=data[_i34]*data2[_i34];}}return result;}//单数据和数组相乘
9643
+ var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i35 in aryData){result[_i35]=null;if(this.IsNumber(aryData[_i35])&&this.IsNumber(value))result[_i35]=value*aryData[_i35];}return result;};//相除
9625
9644
  this.Divide=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相除
9626
9645
  if(isNumber&&isNumber2){if(data2==0)return null;//除0判断
9627
9646
  return data/data2;}//都是数组相除
9628
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i34=0;_i34<count;++_i34){result[_i34]=null;//初始化
9629
- if(_i34<data.length&&_i34<data2.length){if(this.IsNumber(data[_i34])&&this.IsDivideNumber(data2[_i34]))result[_i34]=data[_i34]/data2[_i34];}}return result;}if(isNumber)//单数据-数组
9630
- {for(var _i35 in data2){result[_i35]=null;if(this.IsNumber(data)&&this.IsDivideNumber(data2[_i35]))result[_i35]=data/data2[_i35];}}else//数组-单数据
9631
- {for(var _i36 in data){result[_i36]=null;if(this.IsNumber(data[_i36])&&this.IsDivideNumber(data2))result[_i36]=data[_i36]/data2;}}return result;};//大于
9647
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i36=0;_i36<count;++_i36){result[_i36]=null;//初始化
9648
+ if(_i36<data.length&&_i36<data2.length){if(this.IsNumber(data[_i36])&&this.IsDivideNumber(data2[_i36]))result[_i36]=data[_i36]/data2[_i36];}}return result;}if(isNumber)//单数据-数组
9649
+ {for(var _i37 in data2){result[_i37]=null;if(this.IsNumber(data)&&this.IsDivideNumber(data2[_i37]))result[_i37]=data/data2[_i37];}}else//数组-单数据
9650
+ {for(var _i38 in data){result[_i38]=null;if(this.IsNumber(data[_i38])&&this.IsDivideNumber(data2))result[_i38]=data[_i38]/data2;}}return result;};//大于
9632
9651
  this.GT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9633
9652
  if(isNumber&&isNumber2)return data>data2?1:0;//都是数组比较
9634
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i37=0;_i37<count;++_i37){result[_i37]=null;//初始化
9635
- if(_i37<data.length&&_i37<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i37]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i37]))continue;if(!isNaN(data[_i37])&&!isNaN(data2[_i37]))result[_i37]=data[_i37]>data2[_i37]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9636
- {for(var _i38 in data2){result[_i38]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i38]))continue;if(!isNaN(data)&&!isNaN(data2[_i38]))result[_i38]=data>data2[_i38]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9637
- {for(var _i39 in data){result[_i39]=null;if(!IFrameSplitOperator.IsVaild(data[_i39]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;if(!isNaN(data[_i39])&&!isNaN(data2))result[_i39]=data[_i39]>data2?1:0;}}return result;};//大于等于
9653
+ var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i39=0;_i39<count;++_i39){result[_i39]=null;//初始化
9654
+ if(_i39<data.length&&_i39<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i39]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i39]))continue;if(!isNaN(data[_i39])&&!isNaN(data2[_i39]))result[_i39]=data[_i39]>data2[_i39]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9655
+ {for(var _i40 in data2){result[_i40]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i40]))continue;if(!isNaN(data)&&!isNaN(data2[_i40]))result[_i40]=data>data2[_i40]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9656
+ {for(var _i41 in data){result[_i41]=null;if(!IFrameSplitOperator.IsVaild(data[_i41]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;if(!isNaN(data[_i41])&&!isNaN(data2))result[_i41]=data[_i41]>data2?1:0;}}return result;};//大于等于
9638
9657
  this.GTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9639
9658
  if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
9640
- 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;//初始化
9641
- if(_i40<data.length&&_i40<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i40]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i40]))continue;result[_i40]=data[_i40]>=data2[_i40]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9642
- {for(var _i41 in data2){result[_i41]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i41]))continue;result[_i41]=data>=data2[_i41]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9643
- {for(var _i42 in data){result[_i42]=null;if(!IFrameSplitOperator.IsVaild(data[_i42]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i42]=data[_i42]>=data2?1:0;}}return result;};//小于
9659
+ 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;//初始化
9660
+ if(_i42<data.length&&_i42<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i42]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i42]))continue;result[_i42]=data[_i42]>=data2[_i42]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9661
+ {for(var _i43 in data2){result[_i43]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i43]))continue;result[_i43]=data>=data2[_i43]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9662
+ {for(var _i44 in data){result[_i44]=null;if(!IFrameSplitOperator.IsVaild(data[_i44]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i44]=data[_i44]>=data2?1:0;}}return result;};//小于
9644
9663
  this.LT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9645
9664
  if(isNumber&&isNumber2)return data<data2?1:0;//都是数组比较
9646
- 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;//初始化
9647
- 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))//单数据-数组
9648
- {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))//数组-单数据
9649
- {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;};//小于等于
9665
+ 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;//初始化
9666
+ 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))//单数据-数组
9667
+ {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))//数组-单数据
9668
+ {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;};//小于等于
9650
9669
  this.LTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9651
9670
  if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
9652
- 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;//初始化
9653
- 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))//单数据-数组
9654
- {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))//数组-单数据
9655
- {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;};//等于
9671
+ 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;//初始化
9672
+ 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))//单数据-数组
9673
+ {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))//数组-单数据
9674
+ {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;};//等于
9656
9675
  this.EQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9657
9676
  if(isNumber&&isNumber2)return data==data2?1:0;//都是数组比较
9658
- 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;//初始化
9659
- if(_i49<data.length&&_i49<data2.length){if(!isNaN(data[_i49])&&!isNaN(data2[_i49]))result[_i49]=data[_i49]==data2[_i49]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9660
- {for(var _i50 in data2){result[_i50]=null;if(!isNaN(data)&&!isNaN(data2[_i50]))result[_i50]=data==data2[_i50]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9661
- {for(var _i51 in data){result[_i51]=null;if(!isNaN(data[_i51])&&!isNaN(data2))result[_i51]=data[_i51]==data2?1:0;}}return result;};//不等于
9677
+ 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;//初始化
9678
+ if(_i51<data.length&&_i51<data2.length){if(!isNaN(data[_i51])&&!isNaN(data2[_i51]))result[_i51]=data[_i51]==data2[_i51]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9679
+ {for(var _i52 in data2){result[_i52]=null;if(!isNaN(data)&&!isNaN(data2[_i52]))result[_i52]=data==data2[_i52]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9680
+ {for(var _i53 in data){result[_i53]=null;if(!isNaN(data[_i53])&&!isNaN(data2))result[_i53]=data[_i53]==data2?1:0;}}return result;};//不等于
9662
9681
  this.NEQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9663
9682
  if(isNumber&&isNumber2)return data!=data2?1:0;//都是数组比较
9664
- 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;//初始化
9665
- 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))//单数据-数组
9666
- {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))//数组-单数据
9667
- {for(var _i54 in data){result[_i54]=null;if(!isNaN(data[_i54])&&!isNaN(data2))result[_i54]=data[_i54]!=data2?1:0;}}return result;};//AND &&
9683
+ 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;//初始化
9684
+ 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))//单数据-数组
9685
+ {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))//数组-单数据
9686
+ {for(var _i56 in data){result[_i56]=null;if(!isNaN(data[_i56])&&!isNaN(data2))result[_i56]=data[_i56]!=data2?1:0;}}return result;};//AND &&
9668
9687
  this.And=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值 &&
9669
9688
  if(isNumber&&isNumber2)return data&&data2?1:0;//都是数组 &&
9670
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i55=0;_i55<count;++_i55){result[_i55]=null;//初始化
9671
- 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)//单数据-数组
9672
- {for(var _i56 in data2){result[_i56]=null;if(!isNaN(data)&&!isNaN(data2[_i56]))result[_i56]=data&&data2[_i56]?1:0;}}else//数组-单数据
9673
- {for(var _i57 in data){result[_i57]=null;if(!isNaN(data[_i57])&&!isNaN(data2))result[_i57]=data[_i57]&&data2?1:0;}}return result;};//OR ||
9689
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i57=0;_i57<count;++_i57){result[_i57]=null;//初始化
9690
+ 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)//单数据-数组
9691
+ {for(var _i58 in data2){result[_i58]=null;if(!isNaN(data)&&!isNaN(data2[_i58]))result[_i58]=data&&data2[_i58]?1:0;}}else//数组-单数据
9692
+ {for(var _i59 in data){result[_i59]=null;if(!isNaN(data[_i59])&&!isNaN(data2))result[_i59]=data[_i59]&&data2?1:0;}}return result;};//OR ||
9674
9693
  this.Or=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值 &&
9675
9694
  if(isNumber&&isNumber2)return data||data2?1:0;//都是数组 &&
9676
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i58=0;_i58<count;++_i58){result[_i58]=null;//初始化
9677
- 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)//单数据-数组
9678
- {for(var _i59 in data2){result[_i59]=null;if(!isNaN(data)&&!isNaN(data2[_i59]))result[_i59]=data||data2[_i59]?1:0;}}else//数组-单数据
9679
- {for(var _i60 in data){result[_i60]=null;if(!isNaN(data[_i60])&&!isNaN(data2))result[_i60]=data[_i60]||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);//单数值
9695
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i60=0;_i60<count;++_i60){result[_i60]=null;//初始化
9696
+ 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)//单数据-数组
9697
+ {for(var _i61 in data2){result[_i61]=null;if(!isNaN(data)&&!isNaN(data2[_i61]))result[_i61]=data||data2[_i61]?1:0;}}else//数组-单数据
9698
+ {for(var _i62 in data){result[_i62]=null;if(!isNaN(data[_i62])&&!isNaN(data2))result[_i62]=data[_i62]||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);//单数值
9680
9699
  if(isNumber){if(isNumber2&&isNumber3)return data?trueData:falseData;return data?trueData:falseData;}//都是数组
9681
- var result=[];for(var _i61 in data){if(data[_i61]){if(isNumber2)result[_i61]=trueData;else if(isArray2)result[_i61]=trueData[_i61];else result[_i61]=null;}else{if(isNumber3)result[_i61]=falseData;else if(isArray3)result[_i61]=falseData[_i61];else result[_i61]=null;}}return result;};/*
9700
+ var result=[];for(var _i63 in data){if(data[_i63]){if(isNumber2)result[_i63]=trueData;else if(isArray2)result[_i63]=trueData[_i63];else result[_i63]=null;}else{if(isNumber3)result[_i63]=falseData;else if(isArray3)result[_i63]=falseData[_i63];else result[_i63]=null;}}return result;};/*
9682
9701
  根据条件求不同的值,同IF判断相反.
9683
9702
  用法: IFN(X,A,B)若X不为0则返回B,否则返回A
9684
9703
  例如: IFN(CLOSE>OPEN,HIGH,LOW)表示该周期收阴则返回最高值,否则返回最低值
@@ -9689,35 +9708,35 @@ var result=[];for(var _i61 in data){if(data[_i61]){if(isNumber2)result[_i61]=tru
9689
9708
  //例如: REF(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
9690
9709
  this.REF=function(data,n){var result=[];if(typeof n=='number'){if(IFrameSplitOperator.IsNumber(data))//单数值
9691
9710
  {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);//平滑处理
9692
- var firstData=data[0];for(var _i62=0;_i62<n;++_i62){result.unshift(firstData);}}}else//n 为数组的情况
9693
- {for(var _i63=0;_i63<data.length;++_i63){result[_i63]=null;if(_i63>=n.length)continue;var value=n[_i63];if(value>=0&&value<=_i63)result[_i63]=data[_i63-value];else if(_i63)result[_i63]=result[_i63-1];else result[_i63]=data[_i63];}}return result;};//引用若干周期前的数据(未作平滑处理).
9711
+ var firstData=data[0];for(var _i64=0;_i64<n;++_i64){result.unshift(firstData);}}}else//n 为数组的情况
9712
+ {for(var _i65=0;_i65<data.length;++_i65){result[_i65]=null;if(_i65>=n.length)continue;var value=n[_i65];if(value>=0&&value<=_i65)result[_i65]=data[_i65-value];else if(_i65)result[_i65]=result[_i65-1];else result[_i65]=data[_i65];}}return result;};//引用若干周期前的数据(未作平滑处理).
9694
9713
  //用法: REFV(X,A),引用A周期前的X值.A可以是变量.
9695
9714
  //平滑处理:当引用不到数据时进行的操作.
9696
9715
  //例如: REFV(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
9697
- 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 _i64=0;_i64<n;++_i64){//不作平滑处理
9716
+ 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 _i66=0;_i66<n;++_i66){//不作平滑处理
9698
9717
  result.unshift(null);}}else//n 为数组的情况
9699
- {for(var _i65=0;_i65<data.length;++_i65){result[_i65]=null;if(_i65>=n.length)continue;var value=n[_i65];if(value>=0&&value<=_i65)result[_i65]=data[_i65-value];}}return result;};//属于未来函数,引用若干周期后的数据(平滑处理).
9718
+ {for(var _i67=0;_i67<data.length;++_i67){result[_i67]=null;if(_i67>=n.length)continue;var value=n[_i67];if(value>=0&&value<=_i67)result[_i67]=data[_i67-value];}}return result;};//属于未来函数,引用若干周期后的数据(平滑处理).
9700
9719
  //用法: REFX(X,A),引用A周期后的X值.A可以是变量.
9701
9720
  //平滑处理:当引用不到数据时进行的操作.此函数中,平滑时使用上一个周期的引用值.
9702
9721
  //例如: TT:=IF(C>O,1,2);
9703
9722
  // REFX(CLOSE,TT);表示阳线引用下一周期的收盘价,阴线引用日后第二周期的收盘价.
9704
9723
  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];//取最后一个数据
9705
9724
  return result;}result=data.slice(n,data.length);//平滑处理
9706
- var lastData=data[data.length-1];for(var _i66=0;_i66<n;++_i66){result.push(lastData);}}else//n 为数组的情况
9707
- {var dataCount=data.length;for(var _i67=0;_i67<data.length;++_i67){result[_i67]=null;if(_i67>=n.length)continue;var value=n[_i67];if(value>=0&&value+_i67<dataCount)result[_i67]=data[_i67+value];else if(_i67)result[_i67]=result[_i67-1];else result[_i67]=data[_i67];}}return result;};//属于未来函数,引用若干周期后的数据(未作平滑处理).
9725
+ var lastData=data[data.length-1];for(var _i68=0;_i68<n;++_i68){result.push(lastData);}}else//n 为数组的情况
9726
+ {var dataCount=data.length;for(var _i69=0;_i69<data.length;++_i69){result[_i69]=null;if(_i69>=n.length)continue;var value=n[_i69];if(value>=0&&value+_i69<dataCount)result[_i69]=data[_i69+value];else if(_i69)result[_i69]=result[_i69-1];else result[_i69]=data[_i69];}}return result;};//属于未来函数,引用若干周期后的数据(未作平滑处理).
9708
9727
  //用法:REFXV(X,A),引用A周期后的X值.A可以是变量.
9709
9728
  //平滑处理:当引用不到数据时进行的操作.
9710
9729
  //例如: REFXV(CLOSE,1)表示下一周期的收盘价,在日线上就是明天收盘价
9711
9730
  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);//平滑处理
9712
- for(var _i68=0;_i68<n;++_i68){result.push(null);}}else//n 为数组的情况
9713
- {var dataCount=data.length;for(var _i69=0;_i69<data.length;++_i69){result[_i69]=null;if(_i69>=n.length)continue;var value=n[_i69];if(value>=0&&value+_i69<dataCount)result[_i69]=data[_i69+value];}}return result;};//求最大值.
9731
+ for(var _i70=0;_i70<n;++_i70){result.push(null);}}else//n 为数组的情况
9732
+ {var dataCount=data.length;for(var _i71=0;_i71<data.length;++_i71){result[_i71]=null;if(_i71>=n.length)continue;var value=n[_i71];if(value>=0&&value+_i71<dataCount)result[_i71]=data[_i71+value];}}return result;};//求最大值.
9714
9733
  //用法:MAX(A,B,C,D ..... ) 返回A,B,C,D ..... 中的较大值
9715
9734
  //例如: MAX(CLOSE-OPEN,0)表示若收盘价大于开盘价返回它们的差值,否则返回0
9716
9735
  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;};//求最小值.
9717
9736
  //用法:MIN(A,B, C, D .....)返回A,B, C ,D ......中的较小值
9718
9737
  //例如:MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值
9719
9738
  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;};//取正数
9720
- this.ABS=function(data){var result=[];for(var _i70 in data){result[_i70]=null;if(!isNaN(data[_i70]))result[_i70]=Math.abs(data[_i70]);}return result;};this.MA=function(data,dayCount){var result=[];if(dayCount<=0)return result;if(!Array.isArray(dayCount)){dayCount=parseInt(dayCount);//转整形
9739
+ this.ABS=function(data){var result=[];for(var _i72 in data){result[_i72]=null;if(!isNaN(data[_i72]))result[_i72]=Math.abs(data[_i72]);}return result;};this.MA=function(data,dayCount){var result=[];if(dayCount<=0)return result;if(!Array.isArray(dayCount)){dayCount=parseInt(dayCount);//转整形
9721
9740
  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);//复制一份数据出来
9722
9741
  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 _j=dayCount-1;_j>=0;--_j){var value=data[i-_j];if(!this.IsNumber(value)){value=preValue;//空数据就取上一个数据
9723
9742
  data[i-_j]=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)
@@ -9843,14 +9862,14 @@ this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n
9843
9862
  求总的周期数。
9844
9863
  用法: BARSCOUNT(X) 第一个有效数据到当前的天数。
9845
9864
  例如: BARSCOUNT(CLOSE) 对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数。
9846
- */this.BARSCOUNT=function(data){var result=[];var days=null;for(var _i71 in data){result[_i71]=0;if(days==null){if(!this.IsNumber(data[_i71]))continue;days=0;}result[_i71]=days;++days;}return result;};//DEVSQ 数据偏差平方和
9865
+ */this.BARSCOUNT=function(data){var result=[];var days=null;for(var _i73 in data){result[_i73]=0;if(days==null){if(!this.IsNumber(data[_i73]))continue;days=0;}result[_i73]=days;++days;}return result;};//DEVSQ 数据偏差平方和
9847
9866
  //DEVSQ(X,N)  返回数据偏差平方和。
9848
9867
  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))//取最后一个有效数
9849
9868
  {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 取反
9850
9869
  //求逻辑非。
9851
9870
  //用法: NOT(X) 返回非X,即当X=0时返回1,否则返回0。
9852
9871
  //例如: NOT(ISUP) 表示平盘或收阴。
9853
- this.NOT=function(data){var isNumber=typeof data=='number';if(isNumber)return data?0:1;var result=[];for(var _i72 in data){result[_i72]=null;if(this.IsNumber(data[_i72]))result[_i72]=data[_i72]?0:1;}return result;};//FORCAST 线性回归预测值
9872
+ this.NOT=function(data){var isNumber=typeof data=='number';if(isNumber)return data?0:1;var result=[];for(var _i74 in data){result[_i74]=null;if(this.IsNumber(data[_i74]))result[_i74]=data[_i74]?0:1;}return result;};//FORCAST 线性回归预测值
9854
9873
  //FORCAST(X,N)  返回线性回归预测值。
9855
9874
  this.FORCAST=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
9856
9875
  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个周期内的时间序列三角移动平均
@@ -9867,9 +9886,9 @@ this.TSMA=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//
9867
9886
  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 线性回归斜率
9868
9887
  //SLOPE(X,N)  返回线性回归斜率。
9869
9888
  this.SLOPE=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
9870
- if(n<1||!data.length)return result;if(n>=data.length)return result;var start=0;for(var _i73=0;_i73<data.length;++_i73,++start){result[_i73]=null;if(this.IsNumber(data[_i73]))break;}var x=void 0,y=void 0,xy=void 0,xx=void 0;for(var _i74=start+n-1;_i74<data.length;++_i74){result[_i74]=null;x=y=xy=xx=0;for(var j=0;j<n&&j<=_i74;++j){x+=_i74-j;//数据索引相加
9871
- y+=data[_i74-j];//数据相加
9872
- }x=x/n;y=y/n;for(j=0;j<n&&j<=_i74;++j){xy+=(_i74-j-x)*(data[_i74-j]-y);xx+=(_i74-j-x)*(_i74-j-x);}if(xx)result[_i74]=xy/xx;else if(_i74)result[_i74]=result[_i74-1];}return result;};//STDP 总体标准差
9889
+ if(n<1||!data.length)return result;if(n>=data.length)return result;var start=0;for(var _i75=0;_i75<data.length;++_i75,++start){result[_i75]=null;if(this.IsNumber(data[_i75]))break;}var x=void 0,y=void 0,xy=void 0,xx=void 0;for(var _i76=start+n-1;_i76<data.length;++_i76){result[_i76]=null;x=y=xy=xx=0;for(var j=0;j<n&&j<=_i76;++j){x+=_i76-j;//数据索引相加
9890
+ y+=data[_i76-j];//数据相加
9891
+ }x=x/n;y=y/n;for(j=0;j<n&&j<=_i76;++j){xy+=(_i76-j-x)*(data[_i76-j]-y);xx+=(_i76-j-x)*(_i76-j-x);}if(xx)result[_i76]=xy/xx;else if(_i76)result[_i76]=result[_i76-1];}return result;};//STDP 总体标准差
9873
9892
  //STDP(X,N)  返回总体标准差。
9874
9893
  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 估算样本方差
9875
9894
  //VAR(X,N)  返回估算样本方差。
@@ -9877,13 +9896,13 @@ this.VAR=function(data,n){if(this.IsNumber(data)&&this.IsNumber(n))return 0;var
9877
9896
  //VARP(X,N)  返回总体样本方差 。
9878
9897
  this.VARP=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
9879
9898
  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;
9880
- 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 _i75=0;_i75<data.length;++_i75){result[_i75]=null;value=data[_i75];if(!this.IsNumber(value))continue;if(!isNumber2){if(_i75>=range.length)continue;rangeValue=range[_i75];}else{rangeValue=range;}if(!this.IsNumber(rangeValue))continue;if(!isNumber3){if(_i75>=range2.length)continue;rangeValue2=range2[_i75];}else{rangeValue2=range2;}if(!this.IsNumber(rangeValue2))continue;result[_i75]=value>Math.min(rangeValue,rangeValue2)&&value<Math.max(rangeValue,rangeValue2)?1:0;}return result;};/*
9899
+ 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 _i77=0;_i77<data.length;++_i77){result[_i77]=null;value=data[_i77];if(!this.IsNumber(value))continue;if(!isNumber2){if(_i77>=range.length)continue;rangeValue=range[_i77];}else{rangeValue=range;}if(!this.IsNumber(rangeValue))continue;if(!isNumber3){if(_i77>=range2.length)continue;rangeValue2=range2[_i77];}else{rangeValue2=range2;}if(!this.IsNumber(rangeValue2))continue;result[_i77]=value>Math.min(rangeValue,rangeValue2)&&value<Math.max(rangeValue,rangeValue2)?1:0;}return result;};/*
9881
9900
  是否存在.
9882
9901
  例如: EXIST(CLOSE>OPEN,10)
9883
9902
  表示10日内存在着阳线
9884
9903
  */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)//初始化
9885
9904
  {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;//最新满足条件的数据索引
9886
- var result=[];var value;for(var _i76=0;_i76<data.length;++_i76){result[_i76]=null;value=data[_i76];if(this.IsNumber(value)&&value>0)latestID=_i76;if(latestID!=null&&_i76-latestID<n)result[_i76]=1;else result[_i76]=0;}return result;}};/*
9905
+ var result=[];var value;for(var _i78=0;_i78<data.length;++_i78){result[_i78]=null;value=data[_i78];if(this.IsNumber(value)&&value>0)latestID=_i78;if(latestID!=null&&_i78-latestID<n)result[_i78]=1;else result[_i78]=0;}return result;}};/*
9887
9906
  过滤连续出现的信号.
9888
9907
  用法:TFILTER(买入条件,卖出条件,N);过滤掉买入(卖出)信号发出后,下一个反向信号发出前的所有买入(卖出)信号.
9889
9908
 
@@ -9904,16 +9923,16 @@ var result=[];var value;for(var _i76=0;_i76<data.length;++_i76){result[_i76]=nul
9904
9923
  用法:FILTER(X,N):X满足条件后,将其后N周期内的数据置为0,N为常量.
9905
9924
  例如:
9906
9925
  FILTER(CLOSE>OPEN,5)查找阳线,5天内再次出现的阳线不被记录在内
9907
- */this.FILTER=function(data,n){var result=[];for(var _i77=0,_j2=0;_i77<data.length;++_i77){if(data[_i77]){result[_i77]=1;for(_j2=0;_j2<n&&_j2+_i77+1<data.length;++_j2){result[_j2+_i77+1]=0;}_i77+=n;}else{result[_i77]=0;}}return result;};//反向过滤连续出现的信号.
9926
+ */this.FILTER=function(data,n){var result=[];for(var _i79=0,_j2=0;_i79<data.length;++_i79){if(data[_i79]){result[_i79]=1;for(_j2=0;_j2<n&&_j2+_i79+1<data.length;++_j2){result[_j2+_i79+1]=0;}_i79+=n;}else{result[_i79]=0;}}return result;};//反向过滤连续出现的信号.
9908
9927
  //用法:FILTERX(X,N):X满足条件后,将其前N周期内的数据置为0,N为常量.
9909
9928
  //例如:FILTERX(CLOSE>OPEN,5)查找阳线,前5天内出现过的阳线不被记录在内
9910
- this.FILTERX=function(data,n,node){var result=[];for(var _i78=0,_j3=0;_i78<data.length;++_i78){if(data[_i78]){result[_i78]=1;for(_j3=0;_j3<n&&_i78-_j3-1>=0;++_j3){result[_i78-_j3-1]=0;}_i78+=n;}else{result[_i78]=0;}}return result;};//上一次条件成立到当前的周期数.
9929
+ this.FILTERX=function(data,n,node){var result=[];for(var _i80=0,_j3=0;_i80<data.length;++_i80){if(data[_i80]){result[_i80]=1;for(_j3=0;_j3<n&&_i80-_j3-1>=0;++_j3){result[_i80-_j3-1]=0;}_i80+=n;}else{result[_i80]=0;}}return result;};//上一次条件成立到当前的周期数.
9911
9930
  //用法:BARSLAST(X):上一次X不为0到现在的周期数
9912
9931
  //例如:BARSLAST(CLOSE/REF(CLOSE,1)>=1.1)表示上一个涨停板到当前的周期数
9913
- this.BARSLAST=function(data){var result=[];if(!data)return result;var day=null;for(var _i79=0;_i79<data.length;++_i79){result[_i79]=null;if(data[_i79]>0)day=0;else if(day!=null)++day;if(day!=null)result[_i79]=day;}return result;};//倒数第N次成立时距今的周期数.
9932
+ 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;};//倒数第N次成立时距今的周期数.
9914
9933
  //用法:BARSLASTS(X,N):X倒数第N满足到现在的周期数,N支持变量
9915
9934
  this.BARSLASTS=function(data,n,node){var result=[];if(!data)return result;if(n<=0)n=data.length;var day=null;var SingleValue=0;//单词数
9916
- var periodCount=0;for(var _i80=0;_i80<data.length;++_i80){result[_i80]=null;var value=data[_i80];if(value>0){if(day==null){day=0;++periodCount;}else{++periodCount;if(periodCount>n)day-=SingleValue;}SingleValue=0;}else{if(day!=null){++day;++SingleValue;}}if(day!=null)result[_i80]=day;}return result;};/*
9935
+ var periodCount=0;for(var _i82=0;_i82<data.length;++_i82){result[_i82]=null;var value=data[_i82];if(value>0){if(day==null){day=0;++periodCount;}else{++periodCount;if(periodCount>n)day-=SingleValue;}SingleValue=0;}else{if(day!=null){++day;++SingleValue;}}if(day!=null)result[_i82]=day;}return result;};/*
9917
9936
  N周期内第一个条件成立到当前的周期数.
9918
9937
  用法:
9919
9938
  BARSSINCEN(X,N):N周期内第一次X不为0到现在的天数,N为常量
@@ -9925,7 +9944,7 @@ var periodCount=0;for(var _i80=0;_i80<data.length;++_i80){result[_i80]=null;var
9925
9944
  BARSSINCE(X):第一次X不为0到现在的天数
9926
9945
  例如:
9927
9946
  BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数
9928
- */this.BARSSINCE=function(data){var result=[];var day=null;for(var _i81=0;_i81<data.length;++_i81){result[_i81]=null;if(day==null){if(data[_i81])day=0;}else{++day;}if(day)result[_i81]=day;}return result;};/*三角函数调用 func 三角函数
9947
+ */this.BARSSINCE=function(data){var result=[];var day=null;for(var _i83=0;_i83<data.length;++_i83){result[_i83]=null;if(day==null){if(data[_i83])day=0;}else{++day;}if(day)result[_i83]=day;}return result;};/*三角函数调用 func 三角函数
9929
9948
  反正切值. 用法: ATAN(X)返回X的反正切值
9930
9949
  余弦值. 用法: COS(X)返回X的余弦值
9931
9950
  正弦值. 用法: SIN(X)返回X的正弦值
@@ -9935,9 +9954,9 @@ var periodCount=0;for(var _i80=0;_i80<data.length;++_i80){result[_i80]=null;var
9935
9954
  求10为底的对数. 用法: LOG(X)取得X的对数 例如: LOG(100)等于2
9936
9955
  指数. 用法: EXP(X)为e的X次幂 例如: EXP(CLOSE)返回e的CLOSE次幂
9937
9956
  开平方. 用法: SQRT(X)为X的平方根 例如: SQRT(CLOSE)收盘价的平方根
9938
- */this.Trigonometric=function(data,func){if(!Array.isArray(data)){if(this.IsNumber(data))return func(data);return null;}else{var result=[];for(var _i82 in data){var item=data[_i82];if(this.IsNumber(item))result[_i82]=func(item);else result[_i82]=null;}return result;}};//反正弦值. 用法: ASIN(X)返回X的反正弦值
9939
- this.ASIN=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i83 in data){var item=data[_i83];result[_i83]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i83]=Math.asin(item);}else if(_i83-1>=0){var preItem=result[_i83-1];if(this.IsNumber(preItem))result[_i83]=preItem;}}}return result;}};//反余弦值. 用法: ACOS(X)返回X的反余弦值
9940
- this.ACOS=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.acos(item);}else if(_i84-1>=0){var preItem=result[_i84-1];if(this.IsNumber(preItem))result[_i84]=preItem;}}}return result;}};/*
9957
+ */this.Trigonometric=function(data,func){if(!Array.isArray(data)){if(this.IsNumber(data))return func(data);return null;}else{var result=[];for(var _i84 in data){var item=data[_i84];if(this.IsNumber(item))result[_i84]=func(item);else result[_i84]=null;}return result;}};//反正弦值. 用法: ASIN(X)返回X的反正弦值
9958
+ this.ASIN=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.asin(item);}else if(_i85-1>=0){var preItem=result[_i85-1];if(this.IsNumber(preItem))result[_i85]=preItem;}}}return result;}};//反余弦值. 用法: ACOS(X)返回X的反余弦值
9959
+ this.ACOS=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.acos(item);}else if(_i86-1>=0){var preItem=result[_i86-1];if(this.IsNumber(preItem))result[_i86]=preItem;}}}return result;}};/*
9941
9960
  LAST(X,A,B):持续存在.
9942
9961
  用法:
9943
9962
  LAST(CLOSE>OPEN,10,5)
@@ -10140,42 +10159,42 @@ for(var i=startDay,j=0;i<kData.length;++i){var start=i-startDay;if(start<0)conti
10140
10159
  */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});//流通股本
10141
10160
  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;};//计算截至到某一天的历史所有筹码
10142
10161
  this.CalculateChip=function(index,exchangeData,hisData,dRate){var result={Min:null,Max:null,Data:[]};var seed=1;//筹码历史衰减换手系数
10143
- var max=null,min=null;for(var _i85=index;_i85>=0;--_i85){var _item10={};//Vol:量 High:最高 Low:最低
10144
- var kData=hisData[_i85];if(_i85==index)_item10.Vol=kData.Vol*exchangeData[_i85];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[_i85]=_item10;seed*=1-exchangeData[_i85]/100*dRate;//换手率累乘
10162
+ var max=null,min=null;for(var _i87=index;_i87>=0;--_i87){var _item11={};//Vol:量 High:最高 Low:最低
10163
+ var kData=hisData[_i87];if(_i87==index)_item11.Vol=kData.Vol*exchangeData[_i87];else _item11.Vol=kData.Vol*seed;_item11.Date=kData.Date;_item11.High=kData.High;_item11.Low=kData.Low;if(max==null)max=_item11.High;else if(max<_item11.High)max=_item11.High;if(min==null)min=_item11.Low;else if(min<_item11.Low)min=_item11.Low;result.Data[_i87]=_item11;seed*=1-exchangeData[_i87]/100*dRate;//换手率累乘
10145
10164
  }result.Max=max;result.Min=min;return result;};/*
10146
10165
  返回是否连涨周期数.
10147
10166
  用法:
10148
10167
  UPNDAY(CLOSE,M)
10149
10168
  表示连涨M个周期,M为常量
10150
- */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 _i86=0;_i86<data.length;++_i86){result[_i86]=0;if(_i86-1<0)continue;if(!this.IsNumber(data[_i86])||!this.IsNumber(data[_i86-1]))//无效数都不算连涨
10151
- {days=0;continue;}if(data[_i86]>data[_i86-1])++days;else days=0;if(days==n){result[_i86]=1;--days;}}return result;};/*
10169
+ */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 _i88=0;_i88<data.length;++_i88){result[_i88]=0;if(_i88-1<0)continue;if(!this.IsNumber(data[_i88])||!this.IsNumber(data[_i88-1]))//无效数都不算连涨
10170
+ {days=0;continue;}if(data[_i88]>data[_i88-1])++days;else days=0;if(days==n){result[_i88]=1;--days;}}return result;};/*
10152
10171
  返回是否连跌周期.
10153
10172
  用法:
10154
10173
  DOWNNDAY(CLOSE,M)
10155
10174
  表示连跌M个周期,M为常量
10156
- */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 _i87=0;_i87<data.length;++_i87){result[_i87]=0;if(_i87-1<0)continue;if(!this.IsNumber(data[_i87])||!this.IsNumber(data[_i87-1]))//无效数都不算连涨
10157
- {days=0;continue;}if(data[_i87]<data[_i87-1])++days;else days=0;if(days==n){result[_i87]=1;--days;}}return result;};/*
10175
+ */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 _i89=0;_i89<data.length;++_i89){result[_i89]=0;if(_i89-1<0)continue;if(!this.IsNumber(data[_i89])||!this.IsNumber(data[_i89-1]))//无效数都不算连涨
10176
+ {days=0;continue;}if(data[_i89]<data[_i89-1])++days;else days=0;if(days==n){result[_i89]=1;--days;}}return result;};/*
10158
10177
  返回是否持续存在X>Y
10159
10178
  用法:
10160
10179
  NDAY(CLOSE,OPEN,3)
10161
10180
  表示连续3日收阳线
10162
- */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 _i88=0;_i88<count;++_i88){result[_i88]=0;if(_i88>=data.length||_i88>=data2.length)continue;if(!this.IsNumber(data[_i88])||!this.IsNumber(data2[_i88])){days=0;continue;}if(data[_i88]>data2[_i88])++days;else days=0;if(days==n){result[_i88]=1;--days;}}}else if(Array.isArray(data)&&!Array.isArray(data2)){if(n>=data.length||!this.IsNumber(data2))return;var days=0;for(var _i89 in data){result[_i89]=0;if(!this.IsNumber(data[_i89])){days=0;continue;}if(data[_i89]>data2)++days;else days=0;if(days==n){result[_i89]=1;--days;}}}else if(!Array.isArray(data)&&Array.isArray(data2)){if(n>=data2.length||!this.IsNumber(data))return;var days=0;for(var _i90 in data2){result[_i90]=0;if(!this.IsNumber(data2[_i90])){days=0;continue;}if(data>data2[_i90])++days;else days=0;if(days==n){result[_i90]=1;--days;}}}return result;};/*
10181
+ */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 _i90=0;_i90<count;++_i90){result[_i90]=0;if(_i90>=data.length||_i90>=data2.length)continue;if(!this.IsNumber(data[_i90])||!this.IsNumber(data2[_i90])){days=0;continue;}if(data[_i90]>data2[_i90])++days;else days=0;if(days==n){result[_i90]=1;--days;}}}else if(Array.isArray(data)&&!Array.isArray(data2)){if(n>=data.length||!this.IsNumber(data2))return;var days=0;for(var _i91 in data){result[_i91]=0;if(!this.IsNumber(data[_i91])){days=0;continue;}if(data[_i91]>data2)++days;else days=0;if(days==n){result[_i91]=1;--days;}}}else if(!Array.isArray(data)&&Array.isArray(data2)){if(n>=data2.length||!this.IsNumber(data))return;var days=0;for(var _i92 in data2){result[_i92]=0;if(!this.IsNumber(data2[_i92])){days=0;continue;}if(data>data2[_i92])++days;else days=0;if(days==n){result[_i92]=1;--days;}}}return result;};/*
10163
10182
  两条线维持一定周期后交叉.
10164
10183
  用法:LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0
10165
- */this.LONGCROSS=function(data,data2,n){var result=[];var count=Math.max(data.length,data2.length);for(var _i91=0;_i91<count;++_i91){result[_i91]=0;if(_i91-1<0)continue;if(_i91>=data.length||_i91>=data2.length)continue;if(!this.IsNumber(data[_i91])||!this.IsNumber(data2[_i91])||!this.IsNumber(data[_i91-1])||!this.IsNumber(data2[_i91-1]))continue;if(data[_i91]>data2[_i91]&&data[_i91-1]<data2[_i91-1])result[_i91]=1;}for(var _i92=0,_j4=0;_i92<count;++_i92){if(!result[_i92])continue;for(_j4=1;_j4<=n&&_i92-_j4>=0;++_j4){if(data[_i92-_j4]>=data2[_i92-_j4]){result[_i92]=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;}};/*
10184
+ */this.LONGCROSS=function(data,data2,n){var result=[];var count=Math.max(data.length,data2.length);for(var _i93=0;_i93<count;++_i93){result[_i93]=0;if(_i93-1<0)continue;if(_i93>=data.length||_i93>=data2.length)continue;if(!this.IsNumber(data[_i93])||!this.IsNumber(data2[_i93])||!this.IsNumber(data[_i93-1])||!this.IsNumber(data2[_i93-1]))continue;if(data[_i93]>data2[_i93]&&data[_i93-1]<data2[_i93-1])result[_i93]=1;}for(var _i94=0,_j4=0;_i94<count;++_i94){if(!result[_i94])continue;for(_j4=1;_j4<=n&&_i94-_j4>=0;++_j4){if(data[_i94-_j4]>=data2[_i94-_j4]){result[_i94]=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;}};/*
10166
10185
  EXISTR(X,A,B):是否存在(前几日到前几日间).
10167
10186
  例如: EXISTR(CLOSE>OPEN,10,5)
10168
10187
  表示从前10日内到前5日内存在着阳线
10169
10188
  若A为0,表示从第一天开始,B为0,表示到最后日止
10170
- */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 _i93=0,_j5=0;_i93<data.length;++_i93){result[_i93]=null;if(_i93-n<0||_i93-n2<0)continue;result[_i93]=0;for(_j5=n;_j5>=n2;--_j5){var value=data[_i93-_j5];if(this.IsNumber(value)&&value){result[_i93]=1;break;}}}return result;};/*
10189
+ */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 _i95=0,_j5=0;_i95<data.length;++_i95){result[_i95]=null;if(_i95-n<0||_i95-n2<0)continue;result[_i95]=0;for(_j5=n;_j5>=n2;--_j5){var value=data[_i95-_j5];if(this.IsNumber(value)&&value){result[_i95]=1;break;}}}return result;};/*
10171
10190
  RELATE(X,Y,N) 返回X和Y的N周期的相关系数
10172
10191
  RELATE(X,Y,N)=(∑[(Xi-Avg(X))(Yi-Avg(y))])/N ÷ √((∑(Xi-Avg(X))^2)/N * (∑(Yi-Avg(Y))^2)/N)
10173
10192
  其中 avg(x)表示x的N周期均值: avg(X) = (∑Xi)/N
10174
10193
  √(...)表示开平方
10175
- */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 _i94=0,_j6=0;_i94<count;++_i94){result[_i94]=null;if(_i94>=data.length||_i94>=data2.length||_i94>=dataAverage.length||_i94>=data2Average.length)continue;var average=dataAverage[_i94];var average2=data2Average[_i94];var total=0,total2=0,total3=0;for(_j6=_i94-n+1;_j6<=_i94;++_j6){total+=(data[_j6]-average)*(data2[_j6]-average2);//∑[(Xi-Avg(X))(Yi-Avg(y))])
10194
+ */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 _i96=0,_j6=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,total2=0,total3=0;for(_j6=_i96-n+1;_j6<=_i96;++_j6){total+=(data[_j6]-average)*(data2[_j6]-average2);//∑[(Xi-Avg(X))(Yi-Avg(y))])
10176
10195
  total2+=Math.pow(data[_j6]-average,2);//∑(Xi-Avg(X))^2
10177
10196
  total3+=Math.pow(data2[_j6]-average2,2);//∑(Yi-Avg(Y))^2)
10178
- }result[_i94]=total/n/(Math.sqrt(total2/n)*Math.sqrt(total3/n));}return result;};//计算数组n周期内的均值
10197
+ }result[_i96]=total/n/(Math.sqrt(total2/n)*Math.sqrt(total3/n));}return result;};//计算数组n周期内的均值
10179
10198
  this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var total=0;for(var i=0;i<data.length;++i)//去掉开始的无效数
10180
10199
  {if(this.IsNumber(data[i]))break;}for(;i<data.length&&i<n;++i)//计算第1个周期的数据
10181
10200
  {result[i]=null;var value=data[i];if(!this.IsNumber(value))continue;total+=value;}result[i-1]=total/n;for(;i<data.length;++i)//计算后面的周期数据
@@ -10183,7 +10202,7 @@ this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var to
10183
10202
  if(!this.IsNumber(value))value=0;if(!this.IsNumber(preValue))preValue=0;total=total-preValue+value;//当前周期的数据 等于上一个周期数据 去掉上一个周期的第1个数据 加上这个周期的最后1个数据
10184
10203
  result[i]=total/n;}return result;};/*
10185
10204
  COVAR(X,Y,N) 返回X和Y的N周期的协方差
10186
- */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 _i95=0,_j7=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;for(_j7=_i95-n+1;_j7<=_i95;++_j7){total+=(data[_j7]-average)*(data2[_j7]-average2);}result[_i95]=total/n;}return result;};/*
10205
+ */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 _i97=0,_j7=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;for(_j7=_i97-n+1;_j7<=_i97;++_j7){total+=(data[_j7]-average)*(data2[_j7]-average2);}result[_i97]=total/n;}return result;};/*
10187
10206
  求上一高点到当前的周期数.
10188
10207
  用法:
10189
10208
  HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计
@@ -10207,7 +10226,7 @@ for(var i=0;i<data.length;++i){result[i]=null;if(this.IsNumber(data[i])){nMin=i;
10207
10226
  公式=股票和指数协方差/指数方差
10208
10227
  */this.BETA=function(n){var result=[];var stockData=this.SymbolData.Data;var indexData=this.SymbolData.IndexData;if(n<=0)n=1;var stockProfit=[];//股票涨幅
10209
10228
  var indexProfit=[];//指数涨幅
10210
- for(var _i96=0;_i96<stockData.Data.length;++_i96){stockProfit[_i96]=0;indexProfit[_i96]=0;var stockItem=stockData.Data[_i96];var indexItem=indexData.Data[_i96];if(stockItem.Close>0&&stockItem.YClose>0)stockProfit[_i96]=(stockItem.Close-stockItem.YClose)/stockItem.YClose;if(indexItem.Close>0&&indexItem.YClose>0)indexProfit[_i96]=(indexItem.Close-indexItem.YClose)/indexItem.YClose;}//计算均值数组
10229
+ for(var _i98=0;_i98<stockData.Data.length;++_i98){stockProfit[_i98]=0;indexProfit[_i98]=0;var stockItem=stockData.Data[_i98];var indexItem=indexData.Data[_i98];if(stockItem.Close>0&&stockItem.YClose>0)stockProfit[_i98]=(stockItem.Close-stockItem.YClose)/stockItem.YClose;if(indexItem.Close>0&&indexItem.YClose>0)indexProfit[_i98]=(indexItem.Close-indexItem.YClose)/indexItem.YClose;}//计算均值数组
10211
10230
  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;//协方差
10212
10231
  var variance=0;//方差
10213
10232
  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;
@@ -10255,8 +10274,8 @@ this.CON2STR=function(data,n){var result=[];if(Array.isArray(data)){for(var i=da
10255
10274
  //用法: VAR2STR(C,3)表示取收盘价,以3位小数转为字符串
10256
10275
  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';//单数值
10257
10276
  if(isNumber&&isNumber2){return JSAlgorithm.MOD(data,data2);}else if(!isNumber&&!isNumber2)//都是数组相加
10258
- {var count=Math.max(data.length,data2.length);for(var _i97=0;_i97<count;++_i97){result[_i97]=null;//初始化
10259
- if(_i97<data.length&&_i97<data2.length){if(this.IsNumber(data[_i97])&&this.IsNumber(data2[_i97]))result[_i97]=JSAlgorithm.MOD(data[_i97],data2[_i97]);}}return result;}else if(isNumber&&!isNumber2)//单数字 数组
10277
+ {var count=Math.max(data.length,data2.length);for(var _i99=0;_i99<count;++_i99){result[_i99]=null;//初始化
10278
+ if(_i99<data.length&&_i99<data2.length){if(this.IsNumber(data[_i99])&&this.IsNumber(data2[_i99]))result[_i99]=JSAlgorithm.MOD(data[_i99],data2[_i99]);}}return result;}else if(isNumber&&!isNumber2)//单数字 数组
10260
10279
  {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)//数组 单数字
10261
10280
  {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;}};/*
10262
10281
  FRACPART(A) 取得小数部分
@@ -10424,20 +10443,20 @@ var IsNumber=typeof data=="number";var IsNumber2=typeof data2=="number";if(Array
10424
10443
  用法: DRAWLINE(COND1,PRICE1,COND2,PRICE2,EXPAND)
10425
10444
  当COND1条件满足时,在PRICE1位置画直线起点,当COND2条件满足时,在PRICE2位置画直线终点,EXPAND为延长类型。
10426
10445
  例如: DRAWLINE(HIGH>=HHV(HIGH,20),HIGH,LOW<=LLV(LOW,20),LOW,1) 表示在创20天新高与创20天新低之间画直线并且向右延长。
10427
- */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 _i98=0;_i98<count;++_i98){drawData[_i98]=null;if(_i98<condition.length&&_i98<condition2.length){if(bFirstPoint==false&&bSecondPont==false){if(condition[_i98]==null||!condition[_i98])continue;bFirstPoint=true;lineCache.Start={ID:_i98,Value:data[_i98]};//第1个点
10428
- }else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[_i98]!=null&&condition2[_i98];//条件2
10429
- if(!bCondition2){if(condition[_i98])//条件1满足
10430
- lineCache.Start={ID:_i98,Value:data[_i98]};//移动第1个点
10431
- continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:_i98,Value:data2[_i98]};//第2个点
10432
- }}else if(bFirstPoint==true&&bSecondPont==true){var bCondition2=condition2[_i98]!=null&&condition2[_i98];//条件2
10446
+ */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 _i100=0;_i100<count;++_i100){drawData[_i100]=null;if(_i100<condition.length&&_i100<condition2.length){if(bFirstPoint==false&&bSecondPont==false){if(condition[_i100]==null||!condition[_i100])continue;bFirstPoint=true;lineCache.Start={ID:_i100,Value:data[_i100]};//第1个点
10447
+ }else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[_i100]!=null&&condition2[_i100];//条件2
10448
+ if(!bCondition2){if(condition[_i100])//条件1满足
10449
+ lineCache.Start={ID:_i100,Value:data[_i100]};//移动第1个点
10450
+ continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:_i100,Value:data2[_i100]};//第2个点
10451
+ }}else if(bFirstPoint==true&&bSecondPont==true){var bCondition2=condition2[_i100]!=null&&condition2[_i100];//条件2
10433
10452
  if(bCondition2)//条件2满足
10434
- {lineCache.End={ID:_i98,Value:data2[_i98]};//移动第2个点
10435
- }else if(condition[_i98])//条件1满足
10453
+ {lineCache.End={ID:_i100,Value:data2[_i100]};//移动第2个点
10454
+ }else if(condition[_i100])//条件1满足
10436
10455
  {var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
10437
- for(var _j8 in lineData){var _item11=lineData[_j8];drawData[_item11.ID]=_item11.Value;}if(expand==1)this.CalculateDrawDataExtendLine(drawData,lineCache.Start.ID-2);//右延长线
10438
- bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:_i98,Value:data[_i98]};//第1个点
10456
+ for(var _j8 in lineData){var _item12=lineData[_j8];drawData[_item12.ID]=_item12.Value;}if(expand==1)this.CalculateDrawDataExtendLine(drawData,lineCache.Start.ID-2);//右延长线
10457
+ bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:_i100,Value:data[_i100]};//第1个点
10439
10458
  }}}//最后一组线
10440
- 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);//右延长线
10459
+ if(bFirstPoint==true&&bSecondPont==true){var _lineData=this.CalculateDrawLine(lineCache);for(var _j9 in _lineData){var _item13=_lineData[_j9];drawData[_item13.ID]=_item13.Value;}}}if(expand==1)this.CalculateDrawDataExtendLine(drawData);//右延长线
10441
10460
  return result;};/*
10442
10461
  画出带状线.
10443
10462
  用法: DRAWBAND(VAL1,COLOR1,VAL2,COLOR2),当VAL1>VAL2时,在VAL1和VAL2之间填充COLOR1;当VAL1<VAL2时,填充COLOR2,这里的颜色均使用RGB函数计算得到.
@@ -10450,8 +10469,8 @@ if(color)result.Color[0]=color.toLowerCase();if(color2)result.Color[1]=color2.to
10450
10469
  {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线长度为数据长度
10451
10470
  {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).
10452
10471
  //用法:以HIGH为最高价,OPEN为开盘价,LOW为最低,CLOSE收盘画K线
10453
- 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 _i99=0;_i99<count;++_i99){var _item13={Open:null,High:null,Low:null,Close:null};if(_i99<high.length&&_i99<open.length&&_i99<low.length&&_i99<close.length){_item13.Open=open[_i99];_item13.High=high[_i99];_item13.Low=low[_i99];_item13.Close=close[_i99];}drawData[_i99]=_item13;}return result;};//满足条件画一根K线
10454
- 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 _i100=0;_i100<count;++_i100){var _item14={Open:null,High:null,Low:null,Close:null};if(_i100<high.length&&_i100<open.length&&_i100<low.length&&_i100<close.length&&_i100<condition.length){if(condition[_i100]){_item14.Open=open[_i100];_item14.High=high[_i100];_item14.Low=low[_i100];_item14.Close=close[_i100];}}drawData[_i100]=_item14;}return result;};//叠加一个K线
10472
+ 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 _i101=0;_i101<count;++_i101){var _item14={Open:null,High:null,Low:null,Close:null};if(_i101<high.length&&_i101<open.length&&_i101<low.length&&_i101<close.length){_item14.Open=open[_i101];_item14.High=high[_i101];_item14.Low=low[_i101];_item14.Close=close[_i101];}drawData[_i101]=_item14;}return result;};//满足条件画一根K线
10473
+ 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 _i102=0;_i102<count;++_i102){var _item15={Open:null,High:null,Low:null,Close:null};if(_i102<high.length&&_i102<open.length&&_i102<low.length&&_i102<close.length&&_i102<condition.length){if(condition[_i102]){_item15.Open=open[_i102];_item15.High=high[_i102];_item15.Low=low[_i102];_item15.Close=close[_i102];}}drawData[_i102]=_item15;}return result;};//叠加一个K线
10455
10474
  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;};/*
10456
10475
  DRAWCOLORKLINE 绘制K线
10457
10476
  用法:
@@ -10475,11 +10494,11 @@ this.DRAWOVERLAYKLINE=function(open,high,low,close){var drawData=[];var result={
10475
10494
  }else if(bFirstPoint==true&&bSecondPont==false){if(!this.IsNumber(data[i]))continue;lineCache.End={ID:parseInt(i),Value:data[i]};//第2个点
10476
10495
  //根据起始点和结束点 计算中间各个点的数据
10477
10496
  var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
10478
- 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 _i101 in condition){drawData[_i101]=null;if(bFirstPoint==false&&bSecondPont==false){if(condition[_i101]==null||!condition[_i101])continue;if(_i101>=data.length||!this.IsNumber(data[_i101]))continue;bFirstPoint=true;_lineCache.Start={ID:parseInt(_i101),Value:data[_i101]};//第1个点
10479
- }else if(bFirstPoint==true&&bSecondPont==false){if(condition[_i101]==null||!condition[_i101])continue;if(_i101>=data.length||!this.IsNumber(data[_i101]))continue;_lineCache.End={ID:parseInt(_i101),Value:data[_i101]};//第2个点
10497
+ for(var _j10 in lineData){var _item16=lineData[_j10];drawData[_item16.ID]=_item16.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 _i103 in condition){drawData[_i103]=null;if(bFirstPoint==false&&bSecondPont==false){if(condition[_i103]==null||!condition[_i103])continue;if(_i103>=data.length||!this.IsNumber(data[_i103]))continue;bFirstPoint=true;_lineCache.Start={ID:parseInt(_i103),Value:data[_i103]};//第1个点
10498
+ }else if(bFirstPoint==true&&bSecondPont==false){if(condition[_i103]==null||!condition[_i103])continue;if(_i103>=data.length||!this.IsNumber(data[_i103]))continue;_lineCache.End={ID:parseInt(_i103),Value:data[_i103]};//第2个点
10480
10499
  //根据起始点和结束点 计算中间各个点的数据
10481
10500
  var _lineData2=this.CalculateDrawLine(_lineCache);//计算2个点的线上 其他点的数值
10482
- 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)
10501
+ for(var _j11 in _lineData2){var _item17=_lineData2[_j11];drawData[_item17.ID]=_item17.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)
10483
10502
  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;}}};/*
10484
10503
  画出数字.
10485
10504
  用法:
@@ -10684,8 +10703,8 @@ this.DRAWLASTBARTEXT=function(data,text){var drawItem={Value:null,Text:text};if(
10684
10703
  //DRAWLASTBARNUMBER(L,REF(C,1),2,COLORRED),ALIGN0,VALIGN0;//表示最后一根k线的最低价处以红色显示昨收盘价数值(精确2位小数),标注文字居左,居上对齐。
10685
10704
  this.DRAWLASTBARNUMBER=function(data,value,dec,color){var drawItem={Value:null,Text:null,Color:color};if(IFrameSplitOperator.IsNonEmptyArray(data))drawItem.Value=data[data.length-1];else drawItem.Value=data;var precision=2;if(IFrameSplitOperator.IsNumber(dec))precision=parseInt(dec);if(IFrameSplitOperator.IsNumber(value)){drawItem.Text=value.toFixed(precision);}else if(IFrameSplitOperator.IsNonEmptyArray(value)){var lastValue=value[value.length-1];if(IFrameSplitOperator.IsNumber(lastValue))drawItem.Text=lastValue.toFixed(precision);}var result={DrawData:drawItem,DrawType:'DRAWLASTBARNUMBER'};return result;};//表格
10686
10705
  this.TABLE_CELL=function(data,color,textAlign,bgColor){var text=null;if(IFrameSplitOperator.IsString(data)){text=data;}else if(IFrameSplitOperator.IsNonEmptyArray(data)){var precision=2;var lastValue=data[data.length-1];if(IFrameSplitOperator.IsNumber(lastValue))text=lastValue.toFixed(precision);else if(IFrameSplitOperator.IsString(lastValue))text=lastValue;}var cellItem={Text:text};if(color)cellItem.Color=color;if(bgColor)cellItem.BGColor=bgColor;if(IFrameSplitOperator.IsString(textAlign)){var strValue=textAlign.toLowerCase();//转小写
10687
- cellItem.TextAlign=strValue;}return cellItem;};this.TABLE_ROW=function(aryData){var aryCell=[];for(var i=0;i<aryData.length;++i){var item=aryData[i];aryCell.push(item);}return aryCell;};this.DRAWTABLE=function(aryData){var tableData=[];for(var i=0;i<aryData.length;++i){var item=aryData[i];tableData.push({AryCell:item});}return result={DrawData:{TableData:tableData},DrawType:'DRAW_SIMPLE_TABLE'};};}JSDraw.prototype.CalculateDrawLine=function(lineCache){lineCache.List=[];for(var _i102=lineCache.Start.ID;_i102<=lineCache.End.ID;++_i102){lineCache.List.push(_i102);}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个点
10688
- if(lineCache.Start.Value>lineCache.End.Value){for(var _i103=1;_i103<lineCache.List.length-1;++_i103){var value=height*(lineCache.List.length-1-_i103)/width+lineCache.End.Value;result.push({ID:lineCache.List[_i103],Value:value});}}else{for(var _i104=1;_i104<lineCache.List.length-1;++_i104){var value=height*_i104/width+lineCache.Start.Value;result.push({ID:lineCache.List[_i104],Value:value});}}result.push({ID:lineCache.End.ID,Value:lineCache.End.Value});//最后一个点
10706
+ cellItem.TextAlign=strValue;}return cellItem;};this.TABLE_ROW=function(aryData){var aryCell=[];for(var i=0;i<aryData.length;++i){var item=aryData[i];aryCell.push(item);}return aryCell;};this.DRAWTABLE=function(aryData){var tableData=[];for(var i=0;i<aryData.length;++i){var item=aryData[i];tableData.push({AryCell:item});}return result={DrawData:{TableData:tableData},DrawType:'DRAW_SIMPLE_TABLE'};};}JSDraw.prototype.CalculateDrawLine=function(lineCache){lineCache.List=[];for(var _i104=lineCache.Start.ID;_i104<=lineCache.End.ID;++_i104){lineCache.List.push(_i104);}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个点
10707
+ if(lineCache.Start.Value>lineCache.End.Value){for(var _i105=1;_i105<lineCache.List.length-1;++_i105){var value=height*(lineCache.List.length-1-_i105)/width+lineCache.End.Value;result.push({ID:lineCache.List[_i105],Value:value});}}else{for(var _i106=1;_i106<lineCache.List.length-1;++_i106){var value=height*_i106/width+lineCache.Start.Value;result.push({ID:lineCache.List[_i106],Value:value});}}result.push({ID:lineCache.End.ID,Value:lineCache.End.Value});//最后一个点
10689
10708
  return result;};//是否有是有效的数字
10690
10709
  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","DRAWLASTBARICON","DRAWLASTBARNUMBER","DRAWLASTBARTEXT","DRAWTABLE"]);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
10691
10710
  var DYNAINFO_ARGUMENT_ID={YCLOSE:3,OPEN:4,HIGH:5,LOW:6,CLOSE:7,VOL:8,AMOUNT:10,AMPLITUDE:13,//振幅
@@ -10842,12 +10861,12 @@ if(periodInfo.Period==0)hisData=dayData.Data;else hisData=dayData.GetPeriodData(
10842
10861
  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');//日线
10843
10862
  if(periodInfo.Period==0)hisData=dayData;else hisData=dayData.GetPeriodData(periodInfo.Period);//日线周期
10844
10863
  }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)//日线数据才复权
10845
- {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 _i105=lCount-1;_i105>=0;--_i105){result.push(_i105+1);}//数据从0开始
10864
+ {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 _i107=lCount-1;_i107>=0;--_i107){result.push(_i107+1);}//数据从0开始
10846
10865
  return result;};//BARPOS 返回从第一根K线开始到当前的周期数。
10847
10866
  //注:
10848
10867
  //1、BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
10849
10868
  //2、本机已有的第一根K线上返回值为1。
10850
- 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 _i106=0;_i106<lCount;++_i106){result.push(_i106+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 _i107=0;_i107<lCount;++_i107){if(_i107==lCount-1)result.push(1);else result.push(0);}return result;};//BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置.
10869
+ 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 _i108=0;_i108<lCount;++_i108){result.push(_i108+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 _i109=0;_i109<lCount;++_i109){if(_i109==lCount-1)result.push(1);else result.push(0);}return result;};//BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置.
10851
10870
  //例如:BARSTATUS=2表示当天是该数据的最后一个周期.
10852
10871
  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;};//求真实波幅, (最高-最低),(最高-昨收),(最低-昨收)三者绝对值中的最大值.
10853
10872
  //用法:
@@ -10868,7 +10887,7 @@ case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
10868
10887
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
10869
10888
  fieldList.push("margin.sell");break;}//请求数据
10870
10889
  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个数据
10871
- for(var _i108 in stock.stockday){var item=stock.stockday[_i108];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;//融资融券余额
10890
+ for(var _i110 in stock.stockday){var item=stock.stockday[_i110];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;//融资融券余额
10872
10891
  aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE:if(!this.IsNumber(marginData.rate))continue;indexData.Value=marginData.rate;//融资占比
10873
10892
  aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE://买入信息-融资余额
10874
10893
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
@@ -10878,9 +10897,9 @@ var buyData=marginData.buy;if(!buyData)continue;if(!this.IsNumber(buyData.balanc
10878
10897
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME://卖出信息-卖出量
10879
10898
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
10880
10899
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
10881
- 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 _i109 in allData){var aryFixedData=this.SourceData.GetFittingData(allData[_i109].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10900
+ 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 _i111 in allData){var aryFixedData=this.SourceData.GetFittingData(allData[_i111].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10882
10901
  if(bindData.Period>0)//周期数据
10883
- {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data2=bindData.GetValue();this.MarginData.set(allData[_i109].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)//变量 !!只支持默认的变量值
10902
+ {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data2=bindData.GetValue();this.MarginData.set(allData[_i111].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)//变量 !!只支持默认的变量值
10884
10903
  {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)//下载全市场数据
10885
10904
  this.GetHKToSHSZMarketData(code,job);else this.GetHKToSHSZStockData(code,job);//下载个股数据
10886
10905
  };this.GetHKToSHSZStockData=function(symbol,job){if(this.HKToSHSZData.has(symbol))return this.Execute.RunNextJob();var upperSymbol=symbol.toLowerCase();//代码小写
@@ -10893,9 +10912,9 @@ if(bindData.Period>0)//周期数据
10893
10912
  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{//请求数据
10894
10913
  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;//单位是百万
10895
10914
  var SZValue=data.hk2sz[i]*1000000;//单位是百万
10896
- 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 _i110 in allData){var aryFixedData=this.Data.GetFittingData(allData[_i110].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10915
+ 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 _i112 in allData){var aryFixedData=this.Data.GetFittingData(allData[_i112].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10897
10916
  if(bindData.Period>0)//周期数据
10898
- {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data3=bindData.GetValue();this.HKToSHSZData.set(allData[_i110].ID,_data3);}};this.RecvMulitMinuteHKToSHSZData=function(data,job)//多日分时图北上资金
10917
+ {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data3=bindData.GetValue();this.HKToSHSZData.set(allData[_i112].ID,_data3);}};this.RecvMulitMinuteHKToSHSZData=function(data,job)//多日分时图北上资金
10899
10918
  {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;//日期加时间
10900
10919
  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);}};//北上资金函数
10901
10920
  this.GetHKToSHSZCacheData=function(code,node){//if (!this.HKToSHSZData.has(code)) this.Execute.ThrowUnexpectedNode(node,`不支持HK2SHSZ(${code})`);
@@ -11027,11 +11046,11 @@ this.Execute.ThrowUnexpectedNode(node,funcName+'() Error: '+indexInfo.Error);}va
11027
11046
  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];//原始单位股
11028
11047
  item.Amount=list[i][amount];//上涨 下跌家数
11029
11048
  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;//停牌的数据剔除
11030
- 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];//原始单位股
11031
- _item17.Amount=list[i][amount];_item17.Time=list[i][time];// if (isNaN(item.Open) || item.Open<=0) continue; //停牌的数据剔除
11032
- aryDayData.push(_item17);}// 无效数据处理
11033
- for(var _i111=0;_i111<aryDayData.length;++_i111){var minData=aryDayData[_i111];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(_i111==0){if(minData.YClose>0){minData.Open=minData.YClose;minData.High=minData.YClose;minData.Low=minData.YClose;minData.Close=minData.YClose;}}else// 用前一个有效数据填充
11034
- {for(var _j12=_i111-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[]
11049
+ 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 _item18=new HistoryData();_item18.Date=list[i][date];_item18.Open=list[i][open];_item18.YClose=list[i][yclose];_item18.Close=list[i][close];_item18.High=list[i][high];_item18.Low=list[i][low];_item18.Vol=list[i][vol];//原始单位股
11050
+ _item18.Amount=list[i][amount];_item18.Time=list[i][time];// if (isNaN(item.Open) || item.Open<=0) continue; //停牌的数据剔除
11051
+ aryDayData.push(_item18);}// 无效数据处理
11052
+ for(var _i113=0;_i113<aryDayData.length;++_i113){var minData=aryDayData[_i113];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(_i113==0){if(minData.YClose>0){minData.Open=minData.YClose;minData.High=minData.YClose;minData.Low=minData.YClose;minData.Close=minData.YClose;}}else// 用前一个有效数据填充
11053
+ {for(var _j12=_i113-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[]
11035
11054
  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;//股
11036
11055
  item.Amount=jsData.amount;if(i==0)//第1个数据 写死9:25
11037
11056
  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[];
@@ -11049,23 +11068,23 @@ if(item.Open<=0)item.Open=null;if(item.Close<=0)item.Close=null;if(item.AvPrice<
11049
11068
  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;};/*
11050
11069
  SETCODE 市场类型
11051
11070
  0:深圳 1:上海,47:中金所期货 28:郑州商品 29:大连商品 30:上海商品,27:香港指数 31:香港主板,48:香港创业板...
11052
- */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 _i112 in this.Data.Data){var item=this.Data.Data[_i112];result[_i112]=item.Date-19000000;}return result;};this.YEAR=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];if(this.IsNumber(item.Date))result[_i113]=parseInt(item.Date/10000);else result[_i113]=null;}return result;};this.DAY=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%100);else result[_i114]=null;}return result;};this.MONTH=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%10000/100);else result[_i115]=null;}return result;};this.TIME=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i116=0;_i116<this.Data.Data.length;++_i116){var item=this.Data.Data[_i116];if(this.IsNumber(item.Time))result[_i116]=item.Time;else result[_i116]=0;}return result;};/*
11071
+ */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 _i114 in this.Data.Data){var item=this.Data.Data[_i114];result[_i114]=item.Date-19000000;}return result;};this.YEAR=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/10000);else result[_i115]=null;}return result;};this.DAY=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%100);else result[_i116]=null;}return result;};this.MONTH=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%10000/100);else result[_i117]=null;}return result;};this.TIME=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;else result[_i118]=0;}return result;};/*
11053
11072
  取得该周期的时分秒,适用于日线以下周期.
11054
11073
  用法: TIME2
11055
11074
  函数返回有效值范围为(000000-235959)
11056
- */this.TIME2=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*100;else result[_i117]=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
11057
- this.WEEK=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var tempDate=new Date();for(var _i118 in this.Data.Data){var item=this.Data.Data[_i118];result[_i118]=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[_i118]=tempDate.getDay();}return result;};/*
11075
+ */this.TIME2=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*100;else result[_i119]=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
11076
+ this.WEEK=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var tempDate=new Date();for(var _i120 in this.Data.Data){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;tempDate.setFullYear(year,month-1,day);result[_i120]=tempDate.getDay();}return result;};/*
11058
11077
  取得该周期的日期离今天的天数.
11059
11078
  用法: DAYSTOTODAY
11060
- */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 _i119=0;_i119<this.Data.Data.length;++_i119){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;var beginDate=new Date(year,month-1,day);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));result[_i119]=diffDays;}return result;};/*
11079
+ */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 _i121=0;_i121<this.Data.Data.length;++_i121){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 beginDate=new Date(year,month-1,day);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));result[_i121]=diffDays;}return result;};/*
11061
11080
  取得该周是年内第几个周.
11062
11081
  用法:WEEKOFYEAR
11063
- */this.WEEKOFYEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i120 in this.Data.Data){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 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[_i120]=value;}return result;};this.GetYearWeek=function(endDate){var beginDate=new Date(endDate.getFullYear(),0,1);//星期从0-6,0代表星期天,6代表星期六
11082
+ */this.WEEKOFYEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i122 in this.Data.Data){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 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[_i122]=value;}return result;};this.GetYearWeek=function(endDate){var beginDate=new Date(endDate.getFullYear(),0,1);//星期从0-6,0代表星期天,6代表星期六
11064
11083
  var endWeek=endDate.getDay();if(endWeek==0)endWeek=7;var beginWeek=beginDate.getDay();if(beginWeek==0)beginWeek=7;//计算两个日期的天数差
11065
- 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 _i121 in this.Data.Data)//查找日期对应的索引
11066
- {if(this.Data.Data[_i121].Date==findDate){index=parseInt(_i121);break;}}if(index==null||index>=data.length)return null;return data[index];};//用法:结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年
11084
+ 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 _i123 in this.Data.Data)//查找日期对应的索引
11085
+ {if(this.Data.Data[_i123].Date==findDate){index=parseInt(_i123);break;}}if(index==null||index>=data.length)return null;return data[index];};//用法:结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年
11067
11086
  this.PERIOD=function(){//Period周期 0=日线 1=周线 2=月线 3=年线 9=季线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟
11068
- 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 _i122 in this.Data.Data){result[_i122]=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;};/*
11087
+ 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 _i124 in this.Data.Data){result[_i124]=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;};/*
11069
11088
  飞狐函数 SYSPARAM
11070
11089
  SYSPARAM(1)画面上光标位置(K线序号)
11071
11090
  SYSPARAM(2)主图可见K线最初位置
@@ -11074,7 +11093,7 @@ var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_M
11074
11093
  SYSPARAM(5)主图可见K线最低价,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
11075
11094
  SYSPARAM(6)画面上光标数值,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
11076
11095
  */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[];};}//是否有是有效的数字
11077
- 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 _i123=1;_i123<=4;++_i123){switch(_i123){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天公布多个报告期数据 只取最新的一个公告期数据
11096
+ 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 _i125=1;_i125<=4;++_i125){switch(_i125){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天公布多个报告期数据 只取最新的一个公告期数据
11078
11097
  {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线数据
11079
11098
  JOB_DOWNLOAD_INDEX_DATA:2,//下载大盘的K线数据
11080
11099
  JOB_DOWNLOAD_SYMBOL_LATEST_DATA:3,//最新的股票行情数据
@@ -11254,8 +11273,8 @@ this.ConstVarTable=new _map2.default([//个股数据
11254
11273
  this.UpdateUICallback=null;//回调
11255
11274
  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;//调试模式信息
11256
11275
  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();//绘图变量表
11257
- JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i124 in this.Arguments)//预定义的变量
11258
- {var _item18=this.Arguments[_i124];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://量比
11276
+ JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i126 in this.Arguments)//预定义的变量
11277
+ {var _item19=this.Arguments[_i126];this.VarTable.set(_item19.Name,_item19.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://量比
11259
11278
  return this.SymbolData.GetVolRateData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_OTHER_SYMBOL_DATA://指定股票数据
11260
11279
  return this.SymbolData.GetOtherSymbolData(jobItem);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://买入信息-融资余额
11261
11280
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
@@ -11287,7 +11306,7 @@ case'INDEXA':case'INDEXC':case'INDEXH':case'INDEXH':case'INDEXO':case'INDEXV':ca
11287
11306
  this.ReadVariable=function(name,node){if(this.ConstVarTable.has(name)){var data=this.ConstVarTable.get(name);if(data==null)//动态加载,用到再加载
11288
11307
  {data=this.ReadSymbolData(name,node);this.ConstVarTable.set(name,data);}return data;}if(g_JSComplierResource.IsCustomVariant(name))return this.ReadCustomVariant(name,node);//读取自定义变量
11289
11308
  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;};//单数据转成数组 个数和历史数据一致
11290
- this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var _i125=0;_i125<count;++_i125){result[_i125]=value;}return result;};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i126=0;_i126<this.AST.Body.length;++_i126){var _item19=this.AST.Body[_i126];this.RunASTNode(_item19,_i126);if(this.Interrupt&&this.Interrupt.Exit){JSConsole.Complier.Log('[JSExecute::RunAST] Interrupt',this.Interrupt);//中断退出
11309
+ this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var _i127=0;_i127<count;++_i127){result[_i127]=value;}return result;};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i128=0;_i128<this.AST.Body.length;++_i128){var _item20=this.AST.Body[_i128];this.RunASTNode(_item20,_i128);if(this.Interrupt&&this.Interrupt.Exit){JSConsole.Complier.Log('[JSExecute::RunAST] Interrupt',this.Interrupt);//中断退出
11291
11310
  break;}}JSConsole.Complier.Log('[JSExecute::RunAST]',this.VarTable);return this.OutVarTable;};this.RunASTNode=function(item,lineID){this.VisitNode(item);var i=lineID;//输出变量
11292
11311
  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))//绘图函数赋值
11293
11312
  {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)//常量
@@ -11321,7 +11340,7 @@ else if(_value4.indexOf("FONTSIZE")==0){var strFontSize=_value4.replace("FONTSIZ
11321
11340
  {var _outVar14=this.VarTable.get(_varName3);var _value12={Name:_varName3,Data:_outVar14,Color:color,Type:2};if(lineWidth)_value12.LineWidth=lineWidth;if(color)_value12.Color=color;if(upColor)_value12.UpColor=upColor;if(downColor)_value12.DownColor=downColor;this.OutVarTable.push(_value12);}else if(_varName3&&color&&!_draw3){var _outVar15=this.VarTable.get(_varName3);if(!Array.isArray(_outVar15))_outVar15=this.SingleDataToArrayData(_outVar15);var _value13={Name:_varName3,Data:_outVar15,Color:color,Type:0};if(lineWidth)_value13.LineWidth=lineWidth;if(isShow==false)_value13.IsShow=false;if(isExData==true)_value13.IsExData=true;if(isDotLine==true)_value13.IsDotLine=true;if(IFrameSplitOperator.IsNonEmptyArray(lineDash))_value13.LineDash=lineDash;if(isOverlayLine==true)_value13.IsOverlayLine=true;if(isSingleLine==true)_value13.IsSingleLine=true;if(isNoneName==true)_value13.NoneName=true;if(isShowTitle==false)_value13.IsShowTitle=false;if(stepLine==true)_value13.Type=7;this.OutVarTable.push(_value13);}else if(_draw3)//画图函数
11322
11341
  {var outVar={Name:_draw3.Name,Draw:_draw3,Type:1};if(color)outVar.Color=color;if(isDotLine==true)outVar.IsDotLine=true;if(IFrameSplitOperator.IsNonEmptyArray(lineDash))outVar.LineDash=lineDash;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;if(IFrameSplitOperator.IsNumber(klineType))outVar.KLineType=klineType;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar16=this.VarTable.get(_varName3);var _value14={Name:_varName3,Data:_outVar16,Type:0};if(color)_value14.Color=color;if(lineWidth)_value14.LineWidth=lineWidth;if(isShow==false)_value14.IsShow=false;if(isExData==true)_value14.IsExData=true;if(isDotLine==true)_value14.IsDotLine=true;if(IFrameSplitOperator.IsNonEmptyArray(lineDash))_value14.LineDash=lineDash;if(isOverlayLine==true)_value14.IsOverlayLine=true;if(isSingleLine==true)_value14.IsSingleLine=true;if(isShowTitle==false)_value14.IsShowTitle=false;if(stepLine==true)_value14.Type=7;this.OutVarTable.push(_value14);}}}};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();//执行脚本
11323
11342
  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模式
11324
- 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 _i127 in node.Expression){var _item20=node.Expression[_i127];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);//周期
11343
+ 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 _i129 in node.Expression){var _item21=node.Expression[_i129];this.VisitNode(_item21);}};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);//周期
11325
11344
  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;};//函数调用
11326
11345
  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个条件参数
11327
11346
  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表达式.
@@ -11361,8 +11380,8 @@ this.ConstVarTable=new _map2.default([//个股数据
11361
11380
  ['HYBLOCK',"所属行业"],//所属行业板块
11362
11381
  ['DYBLOCK',"所属地域"],//所属地域板块
11363
11382
  ['GNBLOCK',"所属概念"],//所属概念
11364
- ["FGBLOCK","所属风格板块"],["ZSBLOCK","所属指数板块"],["ZHBLOCK",'所属组合板块'],["ZDBLOCK",'所属自定义板块'],["HYZSCODE","所属行业的板块指数代码"],["GNBLOCKNUM","所属概念板块的个数"],["FGBLOCKNUM","所属风格板块的个数"],["ZSBLOCKNUM","所属指数板块的个数"],["ZHBLOCKNUM","所属组合板块的个数"],["ZDBLOCKNUM","所属自定义板块的个数"],["HYSYL","指数市盈率或个股所属行业的市盈率"],["HYSJL","指数市净率或个股所属行业的市净率"],['DRAWNULL',"无效数据"],["TR","求真实波幅"],["LARGEINTRDVOL","逐笔买入大单成交量"],["LARGEOUTTRDVOL","逐笔卖出大单成交量"],["TRADENUM","逐笔成交总单数"],["TRADEINNUM","逐笔买入成交单数"],["TRADEOUTNUM","逐笔卖出成交单数"],["LARGETRDINNUM","逐笔买入大单成交单数"],["LARGETRDOUTNUM","逐笔卖出大单成交单数"],["CUR_BUYORDER","总委买量"],["CUR_SELLORDER","总委卖量"],["ACTINVOL","主动买成交量"],["ACTOUTVOL","主动卖成交量"],["BIDORDERVOL","累计总有效委买量"],["BIDCANCELVOL","累计总有效撤买量"],["AVGBIDPX","最新委买均价"],["OFFERORDERVOL","累计总有效委卖量"],["OFFERCANCELVOL","累计总有效撤卖量"],["AVGOFFERPX","最新委卖均价"],['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);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 _i128 in this.Arguments)//预定义的变量
11365
- {var _item21=this.Arguments[_i128];this.VarTable.set(_item21.Name,_item21.Value);}var data=this.RunAST();//执行脚本
11383
+ ["FGBLOCK","所属风格板块"],["ZSBLOCK","所属指数板块"],["ZHBLOCK",'所属组合板块'],["ZDBLOCK",'所属自定义板块'],["HYZSCODE","所属行业的板块指数代码"],["GNBLOCKNUM","所属概念板块的个数"],["FGBLOCKNUM","所属风格板块的个数"],["ZSBLOCKNUM","所属指数板块的个数"],["ZHBLOCKNUM","所属组合板块的个数"],["ZDBLOCKNUM","所属自定义板块的个数"],["HYSYL","指数市盈率或个股所属行业的市盈率"],["HYSJL","指数市净率或个股所属行业的市净率"],['DRAWNULL',"无效数据"],["TR","求真实波幅"],["LARGEINTRDVOL","逐笔买入大单成交量"],["LARGEOUTTRDVOL","逐笔卖出大单成交量"],["TRADENUM","逐笔成交总单数"],["TRADEINNUM","逐笔买入成交单数"],["TRADEOUTNUM","逐笔卖出成交单数"],["LARGETRDINNUM","逐笔买入大单成交单数"],["LARGETRDOUTNUM","逐笔卖出大单成交单数"],["CUR_BUYORDER","总委买量"],["CUR_SELLORDER","总委卖量"],["ACTINVOL","主动买成交量"],["ACTOUTVOL","主动卖成交量"],["BIDORDERVOL","累计总有效委买量"],["BIDCANCELVOL","累计总有效撤买量"],["AVGBIDPX","最新委买均价"],["OFFERORDERVOL","累计总有效委卖量"],["OFFERCANCELVOL","累计总有效撤卖量"],["AVGOFFERPX","最新委卖均价"],['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);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 _i130 in this.Arguments)//预定义的变量
11384
+ {var _item22=this.Arguments[_i130];this.VarTable.set(_item22.Name,_item22.Value);}var data=this.RunAST();//执行脚本
11366
11385
  JSConsole.Complier.Log('[JSExplainer.Run] explain finish',data);if(this.UpdateUICallback)//回调发送结果, 可以支持异步
11367
11386
  {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 i=0;i<this.AST.Body.length;++i){//console.log(`[JSExplainer::RunAST] ${i}`);
11368
11387
  var item=this.AST.Body[i];this.VisitNode(item);//输出变量
@@ -11385,9 +11404,9 @@ else if(_value16.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(_value16.i
11385
11404
  {outValue+=",画柱状线";var _value20={Name:_varName8,Draw:outValue,Type:5};this.OutVarTable.push(_value20);}else if(volStick&&_varName8)//VOLSTICK 画彩色柱状线
11386
11405
  {outValue+=",画成交量柱状线";var _value21={Name:_varName8,Draw:outValue,Type:6};this.OutVarTable.push(_value21);}else if(_varName8&&color){var _value22={Name:_varName8,Data:outValue,Color:color,Type:0};this.OutVarTable.push(_value22);}else if(draw)//画图函数
11387
11406
  {var outVar={Name:_drawName,Draw:outValue,Type:1};this.OutVarTable.push(outVar);}else if(colorStick&&_varName8)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
11388
- {outValue+=",画彩色柱状线";var _value23={Name:_varName8,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value23);}else if(_varName8){var _value24={Name:_varName8,Data:outValue,Type:0};this.OutVarTable.push(_value24);}}}}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 _i129 in node.Expression){var _item22=node.Expression[_i129];this.VisitNode(_item22);}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var _value25=this.GetNodeValueEx(node.Argument);return'-'+_value25;}return node.Argument.Value;};//函数调用
11389
- this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i130 in node.Arguments){var _item23=node.Arguments[_i130];var _value26=void 0;if(_item23.Type==Syntax.BinaryExpression||_item23.Type==Syntax.LogicalExpression)_value26=this.VisitBinaryExpression(_item23);else if(_item23.Type==Syntax.CallExpression)_value26=this.VisitCallExpression(_item23);else _value26=this.GetNodeValue(_item23);args.push(_value26);}if(node.Callee.Type==Syntax.Literal){var dynamicName=node.Callee.Value;node.Out='\u6307\u6807\u5F15\u7528\''+dynamicName+'\'';return node.Out;}if(JS_EXECUTE_DEBUG_LOG)JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var functionInfo=g_JSComplierResource.CustomFunction.Data.get(funcName);if(!functionInfo.Description)node.Out='\u81EA\u5B9A\u4E49\u51FD\u6570'+funcName;else node.Out=functionInfo.Description;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';}}],["BARSLASTS",{Name:"BARSLASTS",Param:{Count:2},ToString:function ToString(args){return'\u5012\u6570\u7B2CN\u6B21\u6210\u7ACB\u65F6\u8DDD\u4ECA\u7684\u5468\u671F\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';}}],//字符串函数
11390
- ["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';}}],["L2_VOLNUM",{Name:"L2_VOLNUM",Param:{Count:2},ToString:function ToString(args){return'\u5355\u6570\u5206\u6863';}}],["L2_VOL",{Name:"L2_VOL",Param:{Count:2},ToString:function ToString(args){return'\u6210\u4EA4\u91CF\u5206\u6863';}}],["L2_AMO",{Name:"L2_AMO",Param:{Count:2},ToString:function ToString(args){return'\u6210\u4EA4\u989D\u5206\u6863';}}]]);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)//动态参数
11407
+ {outValue+=",画彩色柱状线";var _value23={Name:_varName8,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value23);}else if(_varName8){var _value24={Name:_varName8,Data:outValue,Type:0};this.OutVarTable.push(_value24);}}}}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 _item23=node.Expression[_i131];this.VisitNode(_item23);}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var _value25=this.GetNodeValueEx(node.Argument);return'-'+_value25;}return node.Argument.Value;};//函数调用
11408
+ this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i132 in node.Arguments){var _item24=node.Arguments[_i132];var _value26=void 0;if(_item24.Type==Syntax.BinaryExpression||_item24.Type==Syntax.LogicalExpression)_value26=this.VisitBinaryExpression(_item24);else if(_item24.Type==Syntax.CallExpression)_value26=this.VisitCallExpression(_item24);else _value26=this.GetNodeValue(_item24);args.push(_value26);}if(node.Callee.Type==Syntax.Literal){var dynamicName=node.Callee.Value;node.Out='\u6307\u6807\u5F15\u7528\''+dynamicName+'\'';return node.Out;}if(JS_EXECUTE_DEBUG_LOG)JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var functionInfo=g_JSComplierResource.CustomFunction.Data.get(funcName);if(!functionInfo.Description)node.Out='\u81EA\u5B9A\u4E49\u51FD\u6570'+funcName;else node.Out=functionInfo.Description;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';}}],["BARSLASTS",{Name:"BARSLASTS",Param:{Count:2},ToString:function ToString(args){return'\u5012\u6570\u7B2CN\u6B21\u6210\u7ACB\u65F6\u8DDD\u4ECA\u7684\u5468\u671F\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';}}],//字符串函数
11409
+ ["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';}}],["L2_VOLNUM",{Name:"L2_VOLNUM",Param:{Count:2},ToString:function ToString(args){return'\u5355\u6570\u5206\u6863';}}],["L2_VOL",{Name:"L2_VOL",Param:{Count:2},ToString:function ToString(args){return'\u6210\u4EA4\u91CF\u5206\u6863';}}],["L2_AMO",{Name:"L2_AMO",Param:{Count:2},ToString:function ToString(args){return'\u6210\u4EA4\u989D\u5206\u6863';}}],["TABLE_CELL",{Name:"TABLE_CELL",Param:{Dynamic:true},ToString:function ToString(args){return'\u521B\u5EFA\u8868\u683C\u5355\u5143\u683C';}}],["TABLE_ROW",{Name:"TABLE_ROW",Param:{Dynamic:true},ToString:function ToString(args){return'\u521B\u5EFA\u8868\u683C\u884C';}}],["DRAWTABLE",{Name:"DRAWTABLE",Param:{Dynamic:true},ToString:function ToString(args){return'\u7ED8\u5236\u8868\u683C';}}]]);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)//动态参数
11391
11410
  {}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);//绘图函数
11392
11411
  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"DRAWLASTBARNUMBER":return"在最后一根k线输出数值";case"DRAWLASTBARTEXT":return"在最后一根k线显示文字";case"DRAWLASTBARICON":return"在最后一根k线绘制图标";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"STICKTYPE":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 自定义色
11393
11412
  //格式为COLOR+“RRGGBB”:RR、GG、BB表示红色、绿色和蓝色的分量,每种颜色的取值范围是00-FF,采用了16进制。
@@ -11571,11 +11590,11 @@ chart.KLineColor=varItem.Draw.DrawData.KLine;if(varItem.Color)chart.Color=varIte
11571
11590
  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线
11572
11591
  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)//绑定指示指标
11573
11592
  {if(this.OutVar==null||this.OutVar.length<0)return;//参数
11574
- var indexParam='';for(var _i131 in this.Arguments){var _item24=this.Arguments[_i131];if(indexParam.length>0)indexParam+=',';indexParam+=_item24.Value.toString();}if(indexParam.length>0)indexParam='('+indexParam+')';if(this.InstructionType==2)//五彩K线
11593
+ var indexParam='';for(var _i133 in this.Arguments){var _item25=this.Arguments[_i133];if(indexParam.length>0)indexParam+=',';indexParam+=_item25.Value.toString();}if(indexParam.length>0)indexParam='('+indexParam+')';if(this.InstructionType==2)//五彩K线
11575
11594
  {var varItem=this.OutVar[this.OutVar.length-1];//取最后一组数据作为指示数据
11576
11595
  hqChart.SetInstructionData(this.InstructionType,{Data:varItem.Data,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
11577
11596
  return true;}else if(this.InstructionType==1)//交易系统
11578
- {var buyData,sellData;for(var i in this.OutVar){var _item25=this.OutVar[i];if(_item25.Name=='ENTERLONG')buyData=_item25.Data;else if(_item25.Name=='EXITLONG')sellData=_item25.Data;}hqChart.SetInstructionData(this.InstructionType,{Buy:buyData,Sell:sellData,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
11597
+ {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});//设置指示数据
11579
11598
  return true;}};this.BindData=function(hqChart,windowIndex,hisData){if(windowIndex==0&&this.InstructionType){this.BindInstructionData(hqChart,windowIndex,hisData);return;}//清空主指标图形
11580
11599
  hqChart.DeleteIndexPaint(windowIndex);if(windowIndex==0)hqChart.ShowKLine(true);if(this.OutVar==null||this.OutVar.length<0)return;//叠加一个K线背景
11581
11600
  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轴刻度格式 默认跟标题栏一致
@@ -11589,12 +11608,12 @@ if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.Y
11589
11608
  var testData={ Name:'MULTI_LINE', Type:1,Draw:{ DrawType:'MULTI_LINE', DrawData:[point1,point2] } };
11590
11609
  this.OutVar.push(testData);
11591
11610
  }
11592
- */for(var _i132=0;_i132<this.OutVar.length;++_i132){var _item26=this.OutVar[_i132];if(_item26.IsExData===true)continue;//扩展数据不显示图形
11593
- if(_item26.Type==1000||_item26.Type==1001)continue;//数据集合, 字符串
11594
- if(_item26.Type==0){if(_item26.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item26,_i132,_item26.Type);else if(_item26.IsSingleLine)this.CreateSingleLine(hqChart,windowIndex,_item26,_i132,_item26.Type);else this.CreateLine(hqChart,windowIndex,_item26,_i132,_item26.Type);}else if(_item26.Type==1){switch(_item26.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item26,_i132);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item26,_i132);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item26,_i132);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item26,_i132);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item26,_i132);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item26,_i132);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item26,_i132);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item26,_i132);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item26,_i132);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item26,_i132);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item26,_i132);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item26,_i132);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item26,_i132);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item26,_i132);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item26,_i132);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item26,_i132);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item26,_i132);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item26,_i132);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item26,_i132);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item26,_i132);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item26,_i132);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item26,_i132);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item26,_i132);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item26,_i132);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item26,_i132);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item26,_i132);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item26,_i132);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item26,_i132);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item26,_i132);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item26,_i132);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item26,_i132);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item26,_i132);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item26,_i132);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item26,_i132);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item26,_i132);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item26,_i132);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item26,_i132);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item26,_i132);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item26,_i132);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item26,_i132);break;case"DRAW_SIMPLE_TABLE":this.CreateSimpleTable(hqChart,windowIndex,_item26,_i132);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item26,_i132);break;case"DRAWLASTBARICON":case"DRAWLASTBARNUMBER":case"DRAWLASTBARTEXT":this.CreateDrawLastBarText(hqChart,windowIndex,_item26,_i132);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item26,_i132);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item26,_i132);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item26,_i132);break;case SCRIPT_CHART_NAME.CLIP_COLOR_STICK:this.CreateClipColorStick(hqChart,windowIndex,_item26,_i132);break;default:{var find=g_ScriptIndexChartFactory.Get(_item26.Draw.DrawType);//外部挂接
11595
- if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item26,_i132,this);}break;}}else if(_item26.Type==2){this.CreateMACD(hqChart,windowIndex,_item26,_i132);}else if(_item26.Type==3){this.CreatePointDot(hqChart,windowIndex,_item26,_i132,hisData);}else if(_item26.Type==4){this.CreateLineStick(hqChart,windowIndex,_item26,_i132);}else if(_item26.Type==5){this.CreateStick(hqChart,windowIndex,_item26,_i132);}else if(_item26.Type==6){this.CreateVolStick(hqChart,windowIndex,_item26,_i132,hisData);}else if(_item26.Type==7){this.CreateLine(hqChart,windowIndex,_item26,_i132,_item26.Type);}else if(_item26.Type==8){this.CreateLine(hqChart,windowIndex,_item26,_i132,_item26.Type);}else if(_item26.Type==9){this.CreateArea(hqChart,windowIndex,_item26,_i132);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i132<titlePaint.Data.length)//设置标题数值 小数位数和格式
11596
- {if(this.StringFormat>0)titlePaint.Data[_i132].StringFormat=this.StringFormat;if(this.FloatPrecision>=0)titlePaint.Data[_i132].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
11597
- titlePaint.ArgumentsText=null;titlePaint.Script=this;titlePaint.IsShowMainIndexTitle=this.IsShowIndexTitle;if(!this.IsShortTitle){var indexParam='';for(var _i133=0;_i133<this.Arguments.length;++_i133){var _item27=this.Arguments[_i133];if(indexParam.length>0)indexParam+=',';indexParam+=_item27.Value.toString();}if(indexParam.length>0)titlePaint.ArgumentsText='('+indexParam+')';}if(this.TitleFont)titlePaint.Font=this.TitleFont;return true;};//给一个默认的颜色
11611
+ */for(var _i134=0;_i134<this.OutVar.length;++_i134){var _item27=this.OutVar[_i134];if(_item27.IsExData===true)continue;//扩展数据不显示图形
11612
+ if(_item27.Type==1000||_item27.Type==1001)continue;//数据集合, 字符串
11613
+ if(_item27.Type==0){if(_item27.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item27,_i134,_item27.Type);else if(_item27.IsSingleLine)this.CreateSingleLine(hqChart,windowIndex,_item27,_i134,_item27.Type);else this.CreateLine(hqChart,windowIndex,_item27,_i134,_item27.Type);}else if(_item27.Type==1){switch(_item27.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item27,_i134);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item27,_i134);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item27,_i134);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item27,_i134);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item27,_i134);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item27,_i134);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item27,_i134);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item27,_i134);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item27,_i134);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item27,_i134);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item27,_i134);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item27,_i134);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item27,_i134);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item27,_i134);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item27,_i134);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item27,_i134);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item27,_i134);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item27,_i134);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item27,_i134);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item27,_i134);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item27,_i134);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item27,_i134);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item27,_i134);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item27,_i134);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item27,_i134);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item27,_i134);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item27,_i134);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item27,_i134);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item27,_i134);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item27,_i134);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item27,_i134);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item27,_i134);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item27,_i134);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item27,_i134);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item27,_i134);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item27,_i134);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item27,_i134);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item27,_i134);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item27,_i134);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item27,_i134);break;case"DRAW_SIMPLE_TABLE":this.CreateSimpleTable(hqChart,windowIndex,_item27,_i134);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item27,_i134);break;case"DRAWLASTBARICON":case"DRAWLASTBARNUMBER":case"DRAWLASTBARTEXT":this.CreateDrawLastBarText(hqChart,windowIndex,_item27,_i134);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item27,_i134);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item27,_i134);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item27,_i134);break;case SCRIPT_CHART_NAME.CLIP_COLOR_STICK:this.CreateClipColorStick(hqChart,windowIndex,_item27,_i134);break;default:{var find=g_ScriptIndexChartFactory.Get(_item27.Draw.DrawType);//外部挂接
11614
+ if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item27,_i134,this);}break;}}else if(_item27.Type==2){this.CreateMACD(hqChart,windowIndex,_item27,_i134);}else if(_item27.Type==3){this.CreatePointDot(hqChart,windowIndex,_item27,_i134,hisData);}else if(_item27.Type==4){this.CreateLineStick(hqChart,windowIndex,_item27,_i134);}else if(_item27.Type==5){this.CreateStick(hqChart,windowIndex,_item27,_i134);}else if(_item27.Type==6){this.CreateVolStick(hqChart,windowIndex,_item27,_i134,hisData);}else if(_item27.Type==7){this.CreateLine(hqChart,windowIndex,_item27,_i134,_item27.Type);}else if(_item27.Type==8){this.CreateLine(hqChart,windowIndex,_item27,_i134,_item27.Type);}else if(_item27.Type==9){this.CreateArea(hqChart,windowIndex,_item27,_i134);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i134<titlePaint.Data.length)//设置标题数值 小数位数和格式
11615
+ {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
11616
+ 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 _item28=this.Arguments[_i135];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;};//给一个默认的颜色
11598
11617
  this.GetDefaultColor=function(id){var COLOR_ARRAY=null;//使用全局线段配置
11599
11618
  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)];};//获取颜色
11600
11619
  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)';/*
@@ -11631,11 +11650,11 @@ this.OverlayIndex=null;// { IsOverlay:true, Identify:overlayFrame.Identify, Wind
11631
11650
  //显示指标不符合条件
11632
11651
  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轴分割方式
11633
11652
  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);}//指标名字
11634
- 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 _item28=this.Arguments[i];if(indexParam.length>0)indexParam+=',';indexParam+=_item28.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;//给子框架设置标题
11653
+ 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;//给子框架设置标题
11635
11654
  if(hqChart.Frame.SubFrame[windowIndex]){var mainFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(mainFrame)this.OverlayIndex.Frame.Frame.XPointCount=mainFrame.XPointCount;//跟主窗口同步下页面显示数据个数
11636
- }for(var i=0;i<this.OutVar.length;++i){var _item29=this.OutVar[i];if(_item29.IsExData===true)continue;//扩展数据不显示图形
11637
- if(_item29.Type==0){this.CreateLine(hqChart,windowIndex,_item29,i,_item29.Type);}else if(_item29.Type==1){switch(_item29.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item29,i);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item29,i);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item29,i);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item29,i);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item29,i);break;case'DRAWKLINE':this.CreateKLine(hqChart,windowIndex,_item29,i);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item29,i);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item29,i);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item29,i);break;case'DRAWNUMBER':case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item29,i);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item29,i);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item29,i);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item29,i);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item29,i);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item29,i);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item29,i);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item29,i);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item29,i);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item29,i);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item29,i);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item29,i);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item29,i);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item29,i);break;case"DRAW_SIMPLE_TABLE":this.CreateSimpleTable(hqChart,windowIndex,_item29,i);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item29,i);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item29,i);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item29,i);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item29,i);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item29,i);break;default:{var find=g_ScriptIndexChartFactory.Get(_item29.Draw.DrawType);//外部挂接
11638
- if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item29,i,this);}break;}}else if(_item29.Type==2){this.CreateMACD(hqChart,windowIndex,_item29,i);}else if(_item29.Type==3){this.CreatePointDot(hqChart,windowIndex,_item29,i,hisData);}else if(_item29.Type==4){this.CreateLineStick(hqChart,windowIndex,_item29,i);}else if(_item29.Type==5){this.CreateStick(hqChart,windowIndex,_item29,i);}else if(_item29.Type==6){this.CreateVolStick(hqChart,windowIndex,_item29,i,hisData);}else if(_item29.Type==7){this.CreateLine(hqChart,windowIndex,_item29,i,_item29.Type);}else if(_item29.Type==8){this.CreateLine(hqChart,windowIndex,_item29,i,_item29.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;}}/*
11655
+ }for(var i=0;i<this.OutVar.length;++i){var _item30=this.OutVar[i];if(_item30.IsExData===true)continue;//扩展数据不显示图形
11656
+ 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"DRAW_SIMPLE_TABLE":this.CreateSimpleTable(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;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item30,i);break;default:{var find=g_ScriptIndexChartFactory.Get(_item30.Draw.DrawType);//外部挂接
11657
+ 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;}}/*
11639
11658
  hqChart.TitlePaint[titleIndex].Title=this.Name;
11640
11659
 
11641
11660
  let indexParam='';
@@ -13806,10 +13825,10 @@ this.InputStatus=0;//0=空闲 1=输入中
13806
13825
  this.BGColor=g_JSChartResource.DialogPopKeyboard.BGColor;this.TitleColor=g_JSChartResource.DialogPopKeyboard.TitleColor;this.TitleBGColor=g_JSChartResource.DialogPopKeyboard.TitleBGColor;this.BorderColor=g_JSChartResource.DialogPopKeyboard.BorderColor;this.InputBGColor=g_JSChartResource.DialogPopKeyboard.Input.BGColor;this.InputTextColor=g_JSChartResource.DialogPopKeyboard.Input.TextColor;this.Keyboard={Option:JSPopKeyboard.GetOption(),JSChart:null};this.Inital=function(){var _this90=this;window.addEventListener('mousedown',function(e){_this90.OnWindowMouseDown(e);});};this.OnWindowMouseDown=function(e){if(!this.DivDialog)return;console.log("[JSPopKeyboard::OnWindowMouseDown] e=",e);if(!this.DivDialog.contains(e.target)){this.Hide();}};this.Create=function(){var _this91=this;var divDom=document.createElement('div');divDom.className='jchart_pop_keyboard_dailog';divDom.id=this.ID;var divTitle=document.createElement("div");divTitle.className='jschart_keyboard_Title_Div';divTitle.onmousedown=function(e){_this91.OnMouseDownTitle(e);};divDom.appendChild(divTitle);var divInfoText=document.createElement("div");divInfoText.className="jschart_keyboard_Title";divInfoText.innerText=this.Title;this.DivInfoText=divInfoText;divTitle.appendChild(divInfoText);var divClose=document.createElement("div");divClose.className='jschart_keyboard_Close_Div';divClose.innerText="x";divClose.onmousedown=function(e){_this91.Hide();};divTitle.appendChild(divClose);this.TitleBox={DivTitle:divTitle,DivName:divInfoText,DivClose:divClose};var divInput=document.createElement("div");divInput.className='jschart_keyboard_Input_Div';divDom.appendChild(divInput);var input=document.createElement("input");input.className="jschart_keyboard_input";input.addEventListener("keydown",function(event){_this91.OnKeydown(event);});input.addEventListener("keyup",function(event){_this91.OnKeyup(event);});input.addEventListener("compositionstart",function(event){_this91.OnCompositionStart(event);});input.addEventListener("compositionupdate",function(event){_this91.OnCompositionUpdate(event);});input.addEventListener("compositionend",function(event){_this91.OnCompositionEnd(event);});divInput.appendChild(input);var divChart=document.createElement("div");divChart.className="jschart_keyboard_Chart_Div";divDom.appendChild(divChart);this.DivDialog=divDom;this.InputDOM=input;var chart=JSKeyboardChart.Init(divChart);this.Keyboard.JSChart=chart;this.Keyboard.Option.OnCreatedCallback=function(chart){_this91.OnCreateHQChart(chart);};chart.SetOption(this.Keyboard.Option);//设置K线配置
13807
13826
  chart.AddEventCallback({event:JSCHART_EVENT_ID.ON_KEYBOARD_MOUSEUP,callback:function callback(event,data,chart){_this91.OnChartMouseUp(event,data,chart);}});this.UpdateStyle();document.body.appendChild(divDom);};this.OnCreateHQChart=function(chart){};this.OnCompositionStart=function(event){this.InputStatus=1;};this.OnCompositionUpdate=function(event){};this.OnCompositionEnd=function(event){this.InputStatus=0;};this.OnKeydown=function(event){if(this.InputStatus!=0)return;var aryKey=new _set2.default([40,38,13,33,34]);if(aryKey.has(event.keyCode)){this.Keyboard.JSChart.OnKeyDown(event);}if(event.keyCode==27){this.Hide();}};this.OnKeyup=function(event){if(this.InputStatus!=0)return;var code=event.keyCode;if(code==8)//删除
13808
13827
  {var strText=this.InputDOM.value;if(strText.length==0){this.Hide();//只有按了删除 才能隐藏
13809
- return;}}if(code>=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122||code==8){var strText=this.InputDOM.value;strText=strText.toUpperCase();this.Keyboard.JSChart.Search(strText);}};this.OnMouseDownTitle=function(e){var _this92=this;if(!this.DivDialog)return;var dragData={X:e.clientX,Y:e.clientY};dragData.YOffset=e.clientX-this.DivDialog.offsetLeft;dragData.XOffset=e.clientY-this.DivDialog.offsetTop;this.DragTitle=dragData;document.onmousemove=function(e){_this92.DocOnMouseMoveTitle(e);};document.onmouseup=function(e){_this92.DocOnMouseUpTitle(e);};};this.DocOnMouseMoveTitle=function(e){if(!this.DragTitle)return;var left=e.clientX-this.DragTitle.YOffset;var top=e.clientY-this.DragTitle.XOffset;var right=left+this.DivDialog.offsetWidth;var bottom=top+this.DivDialog.offsetHeight;if(right+5>=window.innerWidth)left=window.innerWidth-this.DivDialog.offsetWidth-5;if(bottom+5>=window.innerHeight)top=window.innerHeight-this.DivDialog.offsetHeight-5;this.DivDialog.style.left=left+'px';this.DivDialog.style.top=top+'px';if(e.preventDefault)e.preventDefault();};this.DocOnMouseUpTitle=function(e){this.DragTitle=null;this.onmousemove=null;this.onmouseup=null;};this.SetSymbolData=function(data){if(!this.Keyboard.JSChart)return false;this.Keyboard.JSChart.SetSymbolData(data);};this.Show=function(){if(!this.DivDialog)return;//显示在右下方
13828
+ return;}}if(code>=48&&code<=57||code>=65&&code<=90||code>=96&&code<=122||code==8){var strText=this.InputDOM.value;strText=strText.toUpperCase();this.Keyboard.JSChart.Search(strText);}};this.OnMouseDownTitle=function(e){var _this92=this;if(!this.DivDialog)return;var dragData={X:e.clientX,Y:e.clientY};dragData.YOffset=e.clientX-this.DivDialog.offsetLeft;dragData.XOffset=e.clientY-this.DivDialog.offsetTop;this.DragTitle=dragData;document.onmousemove=function(e){_this92.DocOnMouseMoveTitle(e);};document.onmouseup=function(e){_this92.DocOnMouseUpTitle(e);};};this.DocOnMouseMoveTitle=function(e){if(!this.DragTitle)return;var left=e.clientX-this.DragTitle.YOffset;var top=e.clientY-this.DragTitle.XOffset;var right=left+this.DivDialog.offsetWidth;var bottom=top+this.DivDialog.offsetHeight;if(right+5>=window.innerWidth)left=window.innerWidth-this.DivDialog.offsetWidth-5;if(bottom+5>=window.innerHeight)top=window.innerHeight-this.DivDialog.offsetHeight-5;this.DivDialog.style.left=left+'px';this.DivDialog.style.top=top+'px';if(e.preventDefault)e.preventDefault();};this.DocOnMouseUpTitle=function(e){this.DragTitle=null;this.onmousemove=null;this.onmouseup=null;};this.SetSymbolData=function(data){if(!this.Keyboard.JSChart)return false;this.Keyboard.JSChart.SetSymbolData(data);};this.Show=function(){if(!this.DivDialog)return;//显示在右下方
13810
13829
  var height=this.DivDialog.offsetHeight;var width=this.DivDialog.offsetWidth;var xRight=window.innerWidth-5;var ybottom=window.innerHeight-5;var x=xRight-width;var y=ybottom-height;this.DivDialog.style.visibility='visible';this.DivDialog.style.top=y+"px";this.DivDialog.style.left=x+"px";};this.Hide=function(){if(!this.DivDialog)return;this.DivDialog.style.visibility='hidden';this.InputDOM.value="";this.Keyboard.JSChart.ClearSearch();if(this.ActiveDOM){if(this.ActiveDOM.focus)this.ActiveDOM.focus();//把焦点换回去
13811
13830
  this.ActiveDOM=null;}};this.IsShow=function(){if(!this.DivDialog)return false;return this.DivDialog.style.visibility==='visible';};this.OnGlobalKeydown=function(event){if(!this.DivDialog)return;var code=event.keyCode;if(code==116)return;//F5不处理
13812
- if(!this.IsShow()&&code>=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122){this.Show();this.InputDOM.focus();if(this.InputDOM.value==""){this.InputDOM.value=event.key;event.preventDefault();}if(event.target)this.ActiveDOM=event.target;}else if(code==27&&this.IsShow()){this.Hide();}};this.OnGlobalMouseDown=function(event){if(!this.DivDialog)return;if(this.DivDialog.style.display=='none')return;if(!this.DivDialog.contains(event.target)){this.Hide();}};this.OnChartMouseUp=function(event,data,chart){this.InputDOM.focus();};this.UpdateStyle=function(){if(!this.DivDialog)return;if(this.BGColor)this.DivDialog.style['background-color']=this.BGColor;if(this.BorderColor)this.DivDialog.style['border-color']=this.BorderColor;if(this.InputBGColor)this.InputDOM.style['background-color']=this.InputBGColor;if(this.InputTextColor)this.InputDOM.style['color']=this.InputTextColor;if(this.TitleBGColor)this.TitleBox.DivTitle.style['background-color']=this.TitleBGColor;if(this.TitleColor){this.TitleBox.DivName.style['color']=this.TitleColor;this.TitleBox.DivClose.style['color']=this.TitleColor;}};this.ReloadResource=function(option){this.BGColor=g_JSChartResource.DialogPopKeyboard.BGColor;this.TitleColor=g_JSChartResource.DialogPopKeyboard.TitleColor;this.TitleBGColor=g_JSChartResource.DialogPopKeyboard.TitleBGColor;this.BorderColor=g_JSChartResource.DialogPopKeyboard.BorderColor;this.InputBGColor=g_JSChartResource.DialogPopKeyboard.Input.BGColor;this.InputTextColor=g_JSChartResource.DialogPopKeyboard.Input.TextColor;if(this.Keyboard.JSChart){this.Keyboard.JSChart.ReloadResource();this.Keyboard.JSChart.Draw();}if(!this.DivDialog)return;this.UpdateStyle();};}JSPopKeyboard.GetOption=function(){var option={Type:'键盘精灵',//创建图形类型
13831
+ if(!this.IsShow()&&code>=48&&code<=57||code>=65&&code<=90||code>=96&&code<=122){this.Show();this.InputDOM.focus();if(this.InputDOM.value==""){this.InputDOM.value=event.key;event.preventDefault();}if(event.target)this.ActiveDOM=event.target;}else if(code==27&&this.IsShow()){this.Hide();}};this.OnGlobalMouseDown=function(event){if(!this.DivDialog)return;if(this.DivDialog.style.display=='none')return;if(!this.DivDialog.contains(event.target)){this.Hide();}};this.OnChartMouseUp=function(event,data,chart){this.InputDOM.focus();};this.UpdateStyle=function(){if(!this.DivDialog)return;if(this.BGColor)this.DivDialog.style['background-color']=this.BGColor;if(this.BorderColor)this.DivDialog.style['border-color']=this.BorderColor;if(this.InputBGColor)this.InputDOM.style['background-color']=this.InputBGColor;if(this.InputTextColor)this.InputDOM.style['color']=this.InputTextColor;if(this.TitleBGColor)this.TitleBox.DivTitle.style['background-color']=this.TitleBGColor;if(this.TitleColor){this.TitleBox.DivName.style['color']=this.TitleColor;this.TitleBox.DivClose.style['color']=this.TitleColor;}};this.ReloadResource=function(option){this.BGColor=g_JSChartResource.DialogPopKeyboard.BGColor;this.TitleColor=g_JSChartResource.DialogPopKeyboard.TitleColor;this.TitleBGColor=g_JSChartResource.DialogPopKeyboard.TitleBGColor;this.BorderColor=g_JSChartResource.DialogPopKeyboard.BorderColor;this.InputBGColor=g_JSChartResource.DialogPopKeyboard.Input.BGColor;this.InputTextColor=g_JSChartResource.DialogPopKeyboard.Input.TextColor;if(this.Keyboard.JSChart){this.Keyboard.JSChart.ReloadResource();this.Keyboard.JSChart.Draw();}if(!this.DivDialog)return;this.UpdateStyle();};}JSPopKeyboard.GetOption=function(){var option={Type:'键盘精灵',//创建图形类型
13813
13832
  Border://边框
13814
13833
  {Left:1,//左边间距
13815
13834
  Right:1,//右边间距
@@ -14071,7 +14090,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
14071
14090
  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);};}/********************************************************************************
14072
14091
  * 版本信息输出
14073
14092
  *
14074
- */var HQCHART_VERSION="1.1.14294";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
14093
+ */var HQCHART_VERSION="1.1.14298";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
14075
14094
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
14076
14095
  // BaseIndex:BaseIndex,
14077
14096
  // ChartLine:ChartLine,