hqchart 1.1.12886 → 1.1.12893

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.
@@ -1457,21 +1457,14 @@ this.CreateDepthChartContainer=function(option){var chart=null;chart=new DepthCh
1457
1457
  }if(item.IsShowXLine==false)chart.Frame.IsShowXLine=item.IsShowXLine;if(item.IsShowYLine==false)chart.Frame.IsShowYLine=item.IsShowYLine;if(IFrameSplitOperator.IsNumber(item.XSplitCount))chart.Frame.XSplitOperator.SplitCount=item.XSplitCount;//X轴刻度个数 半边的
1458
1458
  }return chart;};//根据option内容绘制图形
1459
1459
  this.SetOption=function(option){//toolbar按钮风格
1460
- if(IFrameSplitOperator.IsNumber(option.ToolbarButtonStyle))g_JSChartResource.ToolbarButtonStyle=option.ToolbarButtonStyle;var chart=null;switch(option.Type){case"历史K线图":case'历史K线图横屏':chart=this.CreateKLineChartContainer(option);break;case"自定义指数历史K线图":chart=this.CreateCustomKLineChartContainer(option);break;case"分钟走势图":case"分钟走势图横屏":chart=this.CreateMinuteChartContainer(option);break;case"迷你分钟走势图":chart=this.CreateMinMinuteChartContainer(option);break;case"历史分钟走势图":chart=this.CreateHistoryMinuteChartContainer(option);break;case'K线训练':case'K线训练横屏':case"简单K线训练":case"简单K线训练横屏":chart=this.CreateKLineTrainChartContainer(option);break;case"深度图":chart=this.CreateDepthChartContainer(option);break;case"简单图形":return this.CreateSimpleChart(option);case"饼图":case'雷达图':return this.CreatePieChart(option);case'地图':return this.CreateMapChart(option);default:return false;}if(!chart)return false;this.JSChartContainer=chart;if(option.DefaultCursor)chart.DefaultCursor=option.DefaultCursor;if(option.OnCreatedCallback)option.OnCreatedCallback(chart);//是否自动更新
1460
+ if(IFrameSplitOperator.IsNumber(option.ToolbarButtonStyle))g_JSChartResource.ToolbarButtonStyle=option.ToolbarButtonStyle;var chart=null;switch(option.Type){case"历史K线图":case'历史K线图横屏':chart=this.CreateKLineChartContainer(option);break;case"自定义指数历史K线图":chart=this.CreateCustomKLineChartContainer(option);break;case"分钟走势图":case"分钟走势图横屏":chart=this.CreateMinuteChartContainer(option);break;case"迷你分钟走势图":chart=this.CreateMinMinuteChartContainer(option);break;case"历史分钟走势图":chart=this.CreateHistoryMinuteChartContainer(option);break;case'K线训练':case'K线训练横屏':case"简单K线训练":case"简单K线训练横屏":chart=this.CreateKLineTrainChartContainer(option);break;case"深度图":chart=this.CreateDepthChartContainer(option);break;default:return false;}if(!chart)return false;this.JSChartContainer=chart;if(option.DefaultCursor)chart.DefaultCursor=option.DefaultCursor;if(option.OnCreatedCallback)option.OnCreatedCallback(chart);//是否自动更新
1461
1461
  if(option.IsAutoUpdate!=null)chart.IsAutoUpdate=option.IsAutoUpdate;if(option.AutoUpdateFrequency>0)chart.AutoUpdateFrequency=option.AutoUpdateFrequency;//注册事件
1462
1462
  if(option.EventCallback){for(var i=0;i<option.EventCallback.length;++i){var item=option.EventCallback[i];chart.AddEventCallback(item);}}//设置股票代码
1463
1463
  if(!option.Symbol){chart.DrawEmpty();this.JSChartContainer=chart;this.DivElement.JSChart=this;//div中保存一份
1464
1464
  }else{chart.Draw();chart.ChangeSymbol(option.Symbol);this.JSChartContainer=chart;this.DivElement.JSChart=this;//div中保存一份
1465
1465
  this.JSChartContainer.Draw();}if(IFrameSplitOperator.IsBool(option.CheckLatestVerion)&&option.CheckLatestVerion==false){}else if(JSChart.LastVersion==null){if(chart&&typeof chart.GetLatestVersion=='function'){//由于域名都要备案,获取最新版本接口停止使用
1466
1466
  //chart.GetLatestVersion();
1467
- }}};this.CreateSimpleChart=function(option){var chart=new SimlpleChartContainer(this.CanvasElement);if(option.MainDataControl)chart.MainDataControl=option.MainDataControl;chart.Create();if(option.Border)//边框设置
1468
- {if(!isNaN(option.Border.Left))chart.Frame.ChartBorder.Left=option.Border.Left;if(!isNaN(option.Border.Right))chart.Frame.ChartBorder.Right=option.Border.Right;if(!isNaN(option.Border.Top))chart.Frame.ChartBorder.Top=option.Border.Top;}chart.Draw();chart.RequestData();this.JSChartContainer=chart;this.DivElement.JSChart=this;//div中保存一份
1469
- this.JSChartContainer.Draw();};//创建饼图
1470
- this.CreatePieChart=function(option){var chart=new PieChartContainer(this.CanvasElement);if(option.MainDataControl)chart.MainDataControl=option.MainDataControl;if(option.Radius)chart.Radius=option.Radius;chart.Create();if(option.Border)//边框设置
1471
- {if(!isNaN(option.Border.Left))chart.Frame.ChartBorder.Left=option.Border.Left;if(!isNaN(option.Border.Right))chart.Frame.ChartBorder.Right=option.Border.Right;if(!isNaN(option.Border.Top))chart.Frame.ChartBorder.Top=option.Border.Top;}this.AdjustChartBorder(chart);if(option.Frame){if(option.Frame[0].IsShowBorder==false)chart.Frame.IsShowBorder=option.Frame[0].IsShowBorder;}chart.Draw();chart.RequestData();this.JSChartContainer=chart;this.DivElement.JSChart=this;//div中保存一份
1472
- this.JSChartContainer.Draw();};this.CreateMapChart=function(option){var chart=new MapChartContainer(this.CanvasElement);if(option.MainDataControl)chart.MainDataControl=option.MainDataControl;chart.Create();if(option.Border)//边框设置
1473
- {if(!isNaN(option.Border.Left))chart.Frame.ChartBorder.Left=option.Border.Left;if(!isNaN(option.Border.Right))chart.Frame.ChartBorder.Right=option.Border.Right;if(!isNaN(option.Border.Top))chart.Frame.ChartBorder.Top=option.Border.Top;}chart.Draw();chart.RequestData();this.JSChartContainer=chart;this.DivElement.JSChart=this;//div中保存一份
1474
- this.JSChartContainer.Draw();};//创建工具条
1467
+ }}};//创建工具条
1475
1468
  this.CreateToolbar=function(option){};//创建设置div窗口
1476
1469
  this.CreateSettingDiv=function(option){};this.Focus=function(){if(this.CanvasElement)this.CanvasElement.focus();};//切换股票代码接口
1477
1470
  this.ChangeSymbol=function(symbol,option){if(this.JSChartContainer)this.JSChartContainer.ChangeSymbol(symbol,option);};//K线切换指标
@@ -2922,15 +2915,7 @@ this.Snapshot=function(){this.ScreenImageData=this.Canvas.getImageData(0,0,this.
2922
2915
  this.Position={X:this.ChartBorder.UIElement.offsetLeft,Y:this.ChartBorder.UIElement.offsetTop,W:this.ChartBorder.UIElement.clientWidth,H:this.ChartBorder.UIElement.clientHeight};};this.PtInFrame=function(x,y)//鼠标哪个指标窗口
2923
2916
  {var left=this.ChartBorder.GetLeft();var top=this.ChartBorder.GetTop();var width=this.ChartBorder.GetWidth();var height=this.ChartBorder.GetHeight();this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);if(this.Canvas.isPointInPath(x,y))return 0;return-1;};this.PtInFrameBorder=function(x,y){return null;};this.ZoomUp=function()//放大
2924
2917
  {var xRange=this.VerticalRange;var differ=xRange.Differ;var minDiffer=xRange.MaxDiffer*this.MinZoom;if(differ<minDiffer)return false;var offsetDiffer=xRange.Differ*xRange.Step;differ-=offsetDiffer;xRange.Differ=differ;xRange.Min=xRange.Center-xRange.Differ;xRange.Max=xRange.Center+xRange.Differ;return true;};this.ZoomDown=function()//缩小
2925
- {var xRange=this.VerticalRange;var differ=xRange.Differ;if(differ==xRange.MaxDiffer)return false;var offsetDiffer=xRange.Differ*xRange.Step;differ+=offsetDiffer;if(differ>xRange.MaxDiffer)differ=xRange.MaxDiffer;xRange.Differ=differ;xRange.Min=xRange.Center-xRange.Differ;xRange.Max=xRange.Center+xRange.Differ;return true;};}function SimpleChartFrame(){this.newMethod=AverageWidthFrame;//派生
2926
- this.newMethod();delete this.newMethod;this.ScreenImageData;//截图
2927
- this.Position;//画布的位置
2928
- this.DrawFrame=function(){if(this.XPointCount>0){var dInterval=this.ChartBorder.GetWidth()/(6*this.XPointCount);//分6份, 数据4 间距2
2929
- this.DistanceWidth=2*dInterval;this.DataWidth=4*dInterval;}this.SplitXYCoordinate();this.DrawHorizontal();this.DrawVertical();};this.GetXFromIndex=function(index){if(index<0)index=0;if(index>this.xPointCount-1)index=this.xPointCount-1;var offset=this.ChartBorder.GetLeft()+2+this.DistanceWidth/2+this.DataWidth/2;for(var i=1;i<=index;++i){offset+=this.DistanceWidth+this.DataWidth;}return offset;};//分割x,y轴坐标信息
2930
- this.SplitXYCoordinate=function(){if(this.XYSplit==false)return;if(this.YSplitOperator!=null)this.YSplitOperator.Operator();if(this.XSplitOperator!=null)this.XSplitOperator.Operator();};//图形快照
2931
- this.Snapshot=function(){this.ScreenImageData=this.Canvas.getImageData(0,0,this.ChartBorder.GetChartWidth(),this.ChartBorder.GetChartHeight());};this.SetSizeChage=function(sizeChange){this.SizeChange=sizeChange;//画布的位置
2932
- this.Position={X:this.ChartBorder.UIElement.offsetLeft,Y:this.ChartBorder.UIElement.offsetTop,W:this.ChartBorder.UIElement.clientWidth,H:this.ChartBorder.UIElement.clientHeight};};this.PtInFrame=function(x,y)//鼠标哪个指标窗口
2933
- {var left=this.ChartBorder.GetLeft();var top=this.ChartBorder.GetTop();var width=this.ChartBorder.GetWidth();var height=this.ChartBorder.GetHeight();this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);if(this.Canvas.isPointInPath(x,y))return 0;return-1;};this.PtInFrameBorder=function(x,y){return null;};}//历史K线数据
2918
+ {var xRange=this.VerticalRange;var differ=xRange.Differ;if(differ==xRange.MaxDiffer)return false;var offsetDiffer=xRange.Differ*xRange.Step;differ+=offsetDiffer;if(differ>xRange.MaxDiffer)differ=xRange.MaxDiffer;xRange.Differ=differ;xRange.Min=xRange.Center-xRange.Differ;xRange.Max=xRange.Center+xRange.Differ;return true;};}//历史K线数据
2934
2919
  function HistoryData(){this.Date;this.YClose;this.Open;this.Close;this.High;this.Low;this.Vol;this.Amount;this.Time;//mmhh 或者 mmhhss
2935
2920
  this.FlowCapital=null;//流通股本
2936
2921
  this.Position=null;//持仓量
@@ -4379,44 +4364,6 @@ function ChartOrderbookDepth(){this.newMethod=IChartPainting;//派生
4379
4364
  this.newMethod();delete this.newMethod;this.ClassName="ChartOrderbookDepth";this.Data=null;this.AskColor={Line:g_JSChartResource.DepthChart.AskColor.Line,Area:g_JSChartResource.DepthChart.AskColor.Area//卖
4380
4365
  };this.BidColor={Line:g_JSChartResource.DepthChart.BidColor.Line,Area:g_JSChartResource.DepthChart.BidColor.Area//买
4381
4366
  };this.LineWidth=g_JSChartResource.DepthChart.LineWidth;this.Draw=function(){if(!this.Data)return;var lineWidthBackup=this.Canvas.lineWidth;this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();this.DrawArea(this.Data.Bids,this.BidColor.Line,this.BidColor.Area,true);this.DrawArea(this.Data.Asks,this.AskColor.Line,this.AskColor.Area,false);this.Canvas.lineWidth=lineWidthBackup;};this.DrawArea=function(aryData,colorLine,colorArea,isLeft){var xRange=this.ChartFrame.VerticalRange;var aryPoint=[];for(var i in aryData){var item=aryData[i];if(isLeft){if(item.Price<xRange.Min)break;}else{if(item.Price>xRange.Max)break;}var x=this.ChartFrame.GetXFromIndex(item.Price);var y=this.ChartFrame.GetYFromData(item.Vol);aryPoint.push({X:x,Y:y});}if(aryPoint.length<=1)return;var left=this.ChartBorder.GetLeft();var bottom=this.ChartBorder.GetBottom();var right=this.ChartBorder.GetRight();this.Canvas.beginPath();this.Canvas.moveTo(aryPoint[0].X,bottom);for(var i in aryPoint){var item=aryPoint[i];this.Canvas.lineTo(item.X,item.Y);}this.Canvas.lineTo(isLeft?left:right,aryPoint[aryPoint.length-1].Y);this.Canvas.lineTo(isLeft?left:right,bottom);this.Canvas.lineTo(aryPoint[0].X,bottom);this.Canvas.closePath();this.Canvas.fillStyle=colorArea;this.Canvas.fill();this.Canvas.beginPath();this.Canvas.moveTo(aryPoint[0].X,bottom);for(var i in aryPoint){var item=aryPoint[i];this.Canvas.lineTo(item.X,item.Y);}this.Canvas.lineTo(isLeft?left:right,aryPoint[aryPoint.length-1].Y);this.Canvas.strokeStyle=colorLine;this.Canvas.stroke();};this.GetMaxMin=function(){var range={Min:null,Max:null,XMin:null,XMax:null};var xRange=this.ChartFrame.VerticalRange;for(var i in this.Data.Asks){var item=this.Data.Asks[i];if(item.Price>xRange.Max)break;if(range.XMin==null||range.XMin>item.Price)range.XMin=item.Price;if(range.XMax==null||range.XMax<item.Price)range.XMax=item.Price;if(range.Min==null||range.Min>item.Vol)range.Min=item.Vol;if(range.Max==null||range.Max<item.Vol)range.Max=item.Vol;}for(var i in this.Data.Bids){var item=this.Data.Bids[i];if(item.Price<xRange.Min)break;if(range.XMin==null||range.XMin>item.Price)range.XMin=item.Price;if(range.XMax==null||range.XMax<item.Price)range.XMax=item.Price;if(range.Min==null||range.Min>item.Vol)range.Min=item.Vol;if(range.Max==null||range.Max<item.Vol)range.Max=item.Vol;}return range;};}/*
4382
- 饼图
4383
- */function ChartPie(){this.newMethod=IChartPainting;//派生
4384
- this.newMethod();delete this.newMethod;this.Radius=100;//半径默认值
4385
- this.Distance=30;//指示线超出圆饼的距离
4386
- this.txtLine=20;// 文本下划线
4387
- this.paddingX=20/3;// 设置文本的移动
4388
- // return;
4389
- 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;//求和
4390
- for(var _i7 in this.Data.Data){totalValue+=this.Data.Data[_i7].Value;}var start=0;var end=0;//画饼图
4391
- for(var _i8 in this.Data.Data){var _item4=this.Data.Data[_i8];var _rate=(_item4.Value/totalValue).toFixed(2);//占比
4392
- //JSConsole.Chart.Log('[ChartPie::Draw]', i, rate, item);
4393
- // 绘制扇形
4394
- this.Canvas.beginPath();this.Canvas.moveTo(0,0);end+=_rate*2*Math.PI;//终止角度
4395
- this.Canvas.strokeStyle="white";this.Canvas.fillStyle=_item4.Color;this.Canvas.arc(0,0,this.Radius,start,end);this.Canvas.fill();this.Canvas.closePath();this.Canvas.stroke();// 绘制直线
4396
- this.Canvas.beginPath();this.Canvas.strokeStyle=_item4.Color;this.Canvas.moveTo(0,0);var _x=(this.Radius+this.Distance)*Math.cos(end-(end-start)/2);var _y2=(this.Radius+this.Distance)*Math.sin(end-(end-start)/2);this.Canvas.lineTo(_x,_y2);// JSConsole.Chart.Log(x,y,"xy")
4397
- // 绘制横线
4398
- 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,_y2);this.Canvas.stroke();// 写文字
4399
- if(_item4.Text){this.Canvas.fillText(_item4.Text,_x+txtLine+paddingX,_y2);}else{var _text=_item4.Name+':'+_item4.Value;this.Canvas.fillText(_text,_x+txtLine+paddingX,_y2);}start+=_rate*2*Math.PI;//起始角度
4400
- }this.Canvas.restore();};//空数据
4401
- this.DrawEmptyData=function(){JSConsole.Chart.Log('[ChartPie::DrawEmptyData]');};}/*
4402
- 雷达图
4403
- */function ChartRadar(){this.newMethod=IChartPainting;//派生
4404
- this.newMethod();delete this.newMethod;this.BorderPoint=[];//边框点
4405
- this.DataPoint=[];//数据点
4406
- this.CenterPoint={};this.StartAngle=0;this.Color='rgb(198,198,198)';this.AreaColor='rgba(242,154,118,0.4)';//面积图颜色
4407
- this.AreaLineColor='rgb(242,154,118)';this.TitleFont=24*GetDevicePixelRatio()+'px 微软雅黑';this.TitleColor='rgb(102,102,102)';this.BGColor=['rgb(255,255,255)','rgb(224,224,224)'];//背景色
4408
- this.DrawBorder=function()//画边框
4409
- {if(this.BorderPoint.length<=0)return;this.Canvas.font=this.TitleFont;this.Canvas.strokeStyle=this.Color;var aryBorder=[1,0.8,0.6,0.4,0.2];for(var _j in aryBorder){var rate=aryBorder[_j];var isFirstDraw=true;for(var _i9 in this.BorderPoint){var item=this.BorderPoint[_i9];item.X=this.CenterPoint.X+item.Radius*Math.cos(item.Angle*Math.PI/180)*rate;item.Y=this.CenterPoint.Y+item.Radius*Math.sin(item.Angle*Math.PI/180)*rate;if(isFirstDraw){this.Canvas.beginPath();this.Canvas.moveTo(item.X,item.Y);isFirstDraw=false;}else{this.Canvas.lineTo(item.X,item.Y);}}this.Canvas.closePath();this.Canvas.stroke();this.Canvas.fillStyle=this.BGColor[_j%2==0?0:1];this.Canvas.fill();}this.Canvas.beginPath();for(var _i10 in this.BorderPoint){var item=this.BorderPoint[_i10];item.X=this.CenterPoint.X+item.Radius*Math.cos(item.Angle*Math.PI/180);item.Y=this.CenterPoint.Y+item.Radius*Math.sin(item.Angle*Math.PI/180);this.Canvas.moveTo(this.CenterPoint.X,this.CenterPoint.Y);this.Canvas.lineTo(item.X,item.Y);this.DrawText(item);}this.Canvas.stroke();};this.DrawArea=function(){if(!this.DataPoint||this.DataPoint.length<=0)return;this.Canvas.fillStyle=this.AreaColor;this.Canvas.strokeStyle=this.AreaLineColor;this.Canvas.beginPath();var isFirstDraw=true;for(var _i11 in this.DataPoint){var item=this.DataPoint[_i11];if(isFirstDraw){this.Canvas.beginPath();this.Canvas.moveTo(item.X,item.Y);isFirstDraw=false;}else{this.Canvas.lineTo(item.X,item.Y);}}this.Canvas.closePath();this.Canvas.fill();this.Canvas.stroke();};this.DrawText=function(item){if(!item.Text)return;//JSConsole.Chart.Log(item.Text, item.Angle);
4410
- this.Canvas.fillStyle=this.TitleColor;var xText=item.X,yText=item.Y;//显示每个角度的位置
4411
- if(item.Angle>0&&item.Angle<45){this.Canvas.textAlign='left';this.Canvas.textBaseline='middle';xText+=2;}else if(item.Angle>=0&&item.Angle<90){this.Canvas.textAlign='left';this.Canvas.textBaseline='top';xText+=2;}else if(item.Angle>=90&&item.Angle<135){this.Canvas.textAlign='right';this.Canvas.textBaseline='top';xText-=2;}else if(item.Angle>=135&&item.Angle<180){this.Canvas.textAlign='right';this.Canvas.textBaseline='top';xText-=2;}else if(item.Angle>=180&&item.Angle<225){this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';xText-=2;}else if(item.Angle>=225&&item.Angle<=270){this.Canvas.textAlign='center';this.Canvas.textBaseline='bottom';}else if(item.Angle>270&&item.Angle<315){this.Canvas.textAlign='left';this.Canvas.textBaseline='bottom';xText+=2;}else{this.Canvas.textAlign='left';this.Canvas.textBaseline='middle';xText+=2;}this.Canvas.fillText(item.Text,xText,yText);};this.Draw=function(){this.BorderPoint=[];this.DataPoint=[];this.CenterPoint={};if(!this.Data||!this.Data.Data||!(this.Data.Data.length>0))this.CalculatePoints(null);else this.CalculatePoints(this.Data.Data);this.DrawBorder();this.DrawArea();};this.CalculatePoints=function(data){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();var ptCenter={X:left+width/2,Y:top+height/2};//中心点
4412
- var radius=Math.min(width/2,height/2)-2;//半径
4413
- var count=Math.max(5,data?data.length:0);var averageAngle=360/count;for(var _i12=0;_i12<count;++_i12){var ptBorder={Index:_i12,Radius:radius,Angle:_i12*averageAngle+this.StartAngle};var angle=ptBorder.Angle;if(data&&_i12<data.length){var item=data[_i12];var ptData={Index:_i12,Text:item.Text};ptBorder.Text=item.Name;if(!item.Value){ptData.X=ptCenter.X;ptData.Y=ptCenter.Y;}else{var value=item.Value;if(value>=1)value=1;var dataRadius=radius*value;ptData.X=ptCenter.X+dataRadius*Math.cos(angle*Math.PI/180);ptData.Y=ptCenter.Y+dataRadius*Math.sin(angle*Math.PI/180);}this.DataPoint.push(ptData);}this.BorderPoint.push(ptBorder);}this.CenterPoint=ptCenter;};//空数据
4414
- this.DrawEmptyData=function(){JSConsole.Chart.Log('[ChartPie::DrawEmptyData]');};}/*
4415
- 中国地图
4416
- */function ChartChinaMap(){this.newMethod=IChartPainting;//派生
4417
- this.newMethod();delete this.newMethod;this.ImageData=null;this.Left;this.Top;this.Width;this.Height;this.ImageWidth;this.ImageHeight;this.DefaultColor=[217,222,239];this.Color=[{Name:'海南',Color:'rgb(217,222,223)'},{Name:'内蒙古',Color:'rgb(217,222,225)'},{Name:'新疆',Color:'rgb(217,222,226)'},{Name:'青海',Color:'rgb(217,222,227)'},{Name:'西藏',Color:'rgb(217,222,228)'},{Name:'云南',Color:'rgb(217,222,229)'},{Name:'黑龙江',Color:'rgb(217,222,230)'},{Name:'吉林',Color:'rgb(217,222,231)'},{Name:'辽宁',Color:'rgb(217,222,232)'},{Name:'河北',Color:'rgb(217,222,233)'},{Name:'山东',Color:'rgb(217,222,234)'},{Name:'江苏',Color:'rgb(217,222,235)'},{Name:'浙江',Color:'rgb(217,222,236)'},{Name:'福建',Color:'rgb(217,222,237)'},{Name:'广东',Color:'rgb(217,222,238)'},{Name:'广西',Color:'rgb(217,222,239)'},{Name:'贵州',Color:'rgb(217,222,240)'},{Name:'湖南',Color:'rgb(217,222,241)'},{Name:'江西',Color:'rgb(217,222,242)'},{Name:'安徽',Color:'rgb(217,222,243)'},{Name:'湖北',Color:'rgb(217,222,244)'},{Name:'重庆',Color:'rgb(217,222,245)'},{Name:'四川',Color:'rgb(217,222,246)'},{Name:'甘肃',Color:'rgb(217,222,247)'},{Name:'陕西',Color:'rgb(217,222,248)'},{Name:'山西',Color:'rgb(217,222,249)'},{Name:'河南',Color:'rgb(217,222,250)'}];this.Draw=function(){var left=this.ChartBorder.GetLeft()+1;var right=this.ChartBorder.GetRight()-1;var top=this.ChartBorder.GetTop()+1;var bottom=this.ChartBorder.GetBottom()-1;var width=this.ChartBorder.GetWidth()-2;var height=this.ChartBorder.GetHeight()-2;var imageWidth=CHINA_MAP_IMAGE.width;var imageHeight=CHINA_MAP_IMAGE.height;var drawImageWidth=imageWidth;var drawImageHeight=imageHeight;if(height<drawImageHeight||width<drawImageWidth){this.ImageData=null;return;}if(this.Left!=left||this.Top!=top||this.Width!=width||this.Height!=height||this.ImageWidth!=imageWidth||this.ImageHeight!=imageHeight){this.ImageData=null;this.ImageWidth=imageWidth;this.ImageHeight=imageHeight;this.Left=left;this.Top=top;this.Width=width;this.Height=height;JSConsole.Chart.Log(imageWidth,imageHeight);}if(this.ImageData==null){this.Canvas.drawImage(CHINA_MAP_IMAGE,0,0,imageWidth,imageHeight,left,top,drawImageWidth,drawImageHeight);this.ImageData=this.Canvas.getImageData(left,top,drawImageWidth,drawImageHeight);var defaultColorSet=new _set2.default();//默认颜色填充的色块
4418
- var colorMap=new _map2.default();//定义颜色填充的色块
4419
- var nameMap=new _map2.default();if(this.Data.length>0){for(var _i13 in this.Data){var _item5=this.Data[_i13];nameMap.set(_item5.Name,_item5.Color);}}JSConsole.Chart.Log(this.Data);for(var _i14 in this.Color){var _item6=this.Color[_i14];if(nameMap.has(_item6.Name)){colorMap.set(_item6.Color,nameMap.get(_item6.Name));}else{defaultColorSet.add(_item6.Color);}}var color;for(var _i15=0;_i15<this.ImageData.data.length;_i15+=4){color='rgb('+this.ImageData.data[_i15]+','+this.ImageData.data[_i15+1]+','+this.ImageData.data[_i15+2]+')';if(defaultColorSet.has(color)){this.ImageData.data[_i15]=this.DefaultColor[0];this.ImageData.data[_i15+1]=this.DefaultColor[1];this.ImageData.data[_i15+2]=this.DefaultColor[2];}else if(colorMap.has(color)){var colorValue=colorMap.get(color);this.ImageData.data[_i15]=colorValue[0];this.ImageData.data[_i15+1]=colorValue[1];this.ImageData.data[_i15+2]=colorValue[2];}}this.Canvas.clearRect(left,top,drawImageWidth,drawImageHeight);this.Canvas.putImageData(this.ImageData,left,top,0,0,drawImageWidth,drawImageHeight);}else{this.Canvas.putImageData(this.ImageData,left,top,0,0,drawImageWidth,drawImageHeight);}};}/*
4420
4367
  扩展图形
4421
4368
  */function ExtendChartPaintFactory(){this.DataMap=new _map2.default([["FrameSplitPaint",{Create:function Create(){return new FrameSplitPaint();}}],["RectSelectPaint",{Create:function Create(){return new RectSelectPaint();}}],["DragMovePaint",{Create:function Create(){return new DragMovePaint();}}]]);this.SetCallbackDraw=new _set2.default();this.Create=function(name){if(!this.DataMap.has(name))return null;var item=this.DataMap.get(name);return item.Create();};this.Add=function(name,option){this.DataMap.set(name,{Create:option.Create});};this.AddCallbackDrawClassName=function(className){if(!className)return;this.SetCallbackDraw.add(className);};this.IsCallbackDraw=function(className){return this.SetCallbackDraw.has(className);};}var g_ExtendChartPaintFactory=new ExtendChartPaintFactory();function IExtendChartPainting(){this.Canvas;//画布
4422
4369
  this.ChartBorder;//边框信息
@@ -4813,9 +4760,9 @@ for(var i=0;i<this.Data.AllChip.length;++i){var vol=this.Data.AllChip[i];if(!vol
4813
4760
  {if(!this.HQChart)return false;if(!this.HQChart.FlowCapitalReady)return false;var symbol=this.HQChart.Symbol;if(!symbol)return false;if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))return false;//指数暂时不支持移动筹码
4814
4761
  var bindData=this.HQChart.ChartPaint[0].Data;//if (bindData.Period>=4) return false; //分钟K线不支持, 没时间做,以后再做吧
4815
4762
  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);
4816
- var rate=1;var aryVol=[];var seed=1,vol,maxPrice,minPrice;for(var _i16=count;_i16>=0;--_i16){var item=bindData.Data[_i16];var changeRate=1;//换手率
4817
- if(item.FlowCapital>0)changeRate=item.Vol/item.FlowCapital;if(_i16==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);
4818
- 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 _i17=0;_i17<=dataCount;++_i17){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 _i18 in aryVol){var item=aryVol[_i18];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(_i18==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 _i19=aryVol.length-1;_i19>=0;--_i19){var item=aryVol[_i19];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(_i19==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 _i20 in aryVol){var item=aryVol[_i20];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轴成交量坐标
4763
+ 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;//换手率
4764
+ 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);
4765
+ 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轴成交量坐标
4819
4766
  {if(this.IsShowX==false)return;if(this.Data.MaxVol<=0)return;var isDrawXFrame=this.HQChart.Frame.SubFrame.length===1?false:true;//是否画X轴,如果只有1个窗口就不画
4820
4767
  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)//最后一个刻度不要画线了
4821
4768
  {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();};}//画图工具条
@@ -6764,47 +6711,8 @@ LANGUAGE_TRADITIONAL_CHINESE_ID:2//繁体中文 TC
6764
6711
  ["Depth-Price",{CN:"委托价",EN:"Price",TC:'委托價'}],["Depth-Sum",{CN:"累计",EN:"Sum",TC:'累計'}],//工具栏提示信息
6765
6712
  ["Toolbar-"+JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM,{CN:"调整指标参数",EN:"Change indicator parameters",TC:"调整指标参数"}],["Toolbar-"+JSCHART_BUTTON_ID.CHANGE_INDEX,{CN:"选择指标",EN:"Change indicator",TC:"切换指标"}],["Toolbar-"+JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW,{CN:"关闭窗口",EN:"Delete window",TC:"关闭指标窗口"}],["Toolbar-"+JSCHART_BUTTON_ID.OVERLAY_INDEX,{CN:"叠加指标",EN:"Overlay indicator",TC:"叠加指标"}],["Toolbar-"+JSCHART_BUTTON_ID.MODIFY_OVERLAY_INDEX_PARAM,{CN:"调整叠加指标参数",EN:"Change overlay indicator parameters",TC:"调整叠加指标参数"}],["Toolbar-"+JSCHART_BUTTON_ID.MAX_MIN_WINDOW,{CN:"最大化",EN:"Maximize",TC:"最大化"}],["Toolbar-"+JSCHART_BUTTON_ID.TITLE_WINDOW,{CN:"折叠窗口",EN:"Collapse window",TC:"折叠窗口"}],["Toolbar-"+JSCHART_BUTTON_ID.EXPORT_DATA,{CN:"数据导出",EN:"Export data",TC:"数据导出"}],["Toolbar-"+JSCHART_BUTTON_ID.CLOSE_BEFOREOPEN_ID,{CN:"关闭集合竞价",EN:"Close call auction",TC:"关闭集合竞价"}],["Toolbar-"+JSCHART_BUTTON_ID.CLOSE_OVERLAY_INDEX,{CN:"关闭叠加指标",EN:"Delte overlay indicator",TC:"关闭叠加指标"}],["Toolbar-"+JSCHART_BUTTON_ID.CHIP_RECENT,{CN:"近期成本分布",EN:"Recent chip",TC:"近期成本分布"}],["Toolbar-"+JSCHART_BUTTON_ID.CHIP_LONG,{CN:"远期成本分布",EN:"Long chip",TC:"远期成本分布"}],["Toolbar-"+JSCHART_BUTTON_ID.CHIP_DEFULT,{CN:"默认筹码分布",EN:"Default chip",TC:"默认筹码分布"}],["Toolbar-"+JSCHART_BUTTON_ID.DRAW_PICTURE_DELETE,{CN:"删除",EN:"Delete",TC:"删除"}],["Toolbar-"+JSCHART_BUTTON_ID.DRAW_PICTURE_SETTING,{CN:"设置",EN:"Setting",TC:"设置"}]]);this.GetText=function(key,language){var item=this.TextResource.get(key);if(!item)return'';switch(language){case JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID:return item.CN;case JSCHART_LANGUAGE_ID.LANGUAGE_ENGLISH_ID:return item.EN;case JSCHART_LANGUAGE_ID.LANGUAGE_TRADITIONAL_CHINESE_ID:return item.TC;default:return item.CN;}};this.SetTextResource=function(key,value){this.TextResource.set(key,value);};this.GetLanguageID=function(languageName){var languageID=null;switch(languageName){case'EN':languageID=JSCHART_LANGUAGE_ID.LANGUAGE_ENGLISH_ID;break;case'CN':languageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;break;case"TC":languageID=JSCHART_LANGUAGE_ID.LANGUAGE_TRADITIONAL_CHINESE_ID;break;default:break;}return languageID;};};var g_JSChartLocalization=new JSChartLocalization();/*
6766
6713
  指标列表 指标信息都在这里,不够后面再加字段
6767
- */function JSIndexMap(){}JSIndexMap.Get=function(id){var indexMap=new _map2.default([//公司自己的指标
6768
- ["市场多空",{IsMainIndex:false,Create:function Create(){return new MarketLongShortIndex();}}],["市场择时",{IsMainIndex:false,Create:function Create(){return new MarketTimingIndex();}}],["市场关注度",{IsMainIndex:false,Create:function Create(){return new MarketAttentionIndex();}}],["指数热度",{IsMainIndex:false,Create:function Create(){return new MarketHeatIndex();}}],["财务粉饰",{IsMainIndex:false,Create:function Create(){return new BenfordIndex();}}],["自定义指数热度",{IsMainIndex:false,Create:function Create(){return new CustonIndexHeatIndex();},Name:'自定义指数热度'}],//废弃
6769
- ['CJL',{IsMainIndex:false,Create:function Create(){return new JSIndex_CJL();}}],//期货指标
6770
- ["OX",{IsMainIndex:false,Create:function Create(){return new JSIndex_OX();}}],["可视范围成交量分布图",{IsMainIndex:true,Create:function Create(option){return new VolProfileVisibleRangeIndex(option);}}]]);return indexMap.get(id);};////////////////////////////////////////////////////////////////////////////////////////////////
6771
- // 指标计算方法
6772
- //
6773
- //
6774
- //
6775
- function HQIndexFormula(){}//指数平均数指标 EMA(close,10)
6776
- HQIndexFormula.EMA=function(data,dayCount){var result=[];var offset=0;if(offset>=data.length)return result;//取首个有效数据
6777
- for(;offset<data.length;++offset){if(data[offset]!=null&&!isNaN(data[offset]))break;}var p1Index=offset;var p2Index=offset+1;result[p1Index]=data[p1Index];for(var i=offset+1;i<data.length;++i,++p1Index,++p2Index){result[p2Index]=(2*data[p2Index]+(dayCount-1)*result[p1Index])/(dayCount+1);}return result;};HQIndexFormula.SMA=function(data,n,m){var result=[];var i=0;var lastData=null;for(;i<data.length;++i){if(data[i]==null||isNaN(data[i]))continue;lastData=data[i];result[i]=lastData;//第一天的数据
6778
- break;}for(++i;i<data.length;++i){result[i]=(m*data[i]+(n-m)*lastData)/n;lastData=result[i];}return result;};/*
6779
- 求动态移动平均.
6780
- 用法: DMA(X,A),求X的动态移动平均.
6781
- 算法: 若Y=DMA(X,A)则 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必须小于1.
6782
- 例如:DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价
6783
- */HQIndexFormula.DMA=function(data,data2){var result=[];if(data.length<0||data.length!=data2.length)return result;var index=0;for(;index<data.length;++index){if(data[index]!=null&&!isNaN(data[index])&&data2[index]!=null&&!isNaN(data2[index])){result[index]=data[index];break;}}for(index=index+1;index<data.length;++index){if(data[index]==null||data2[index]==null)result[index]=null;else{if(data[index]<1)result[index]=data2[index]*data[index]+(1-data2[index])*result[index-1];else result[index]=data[index];}}return result;};HQIndexFormula.HHV=function(data,n){var result=[];if(n>data.length)return result;var max=-10000;for(var i=n,j=0;i<data.length;++i,++j){if(i<n+max){max=data[i]<data[max]?max:i;}else{for(j=(max=i-n+1)+1;j<=i;++j){if(data[j]>data[max])max=j;}}result[i]=data[max];}return result;};HQIndexFormula.LLV=function(data,n){var result=[];if(n>data.length)return result;var min=-10000;for(var i=n;i<data.length;++i,++j){if(i<n+min){min=data[i]>data[min]?min:i;}else{for(var j=(min=i-n+1)+1;j<=i;++j){if(data[j]<data[min])min=j;}}result[i]=data[min];}return result;};HQIndexFormula.REF=function(data,n){var result=[];if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(0,data.length-n);for(var i=0;i<n;++i){result.unshift(null);}return result;};HQIndexFormula.REFDATE=function(data,n){var result=[];if(data.length<=0)return result;//暂时写死取最后一个
6784
- n=data.length-1;for(var i in data){result[i]=data[n];}return result;};HQIndexFormula.SUM=function(data,n){var result=[];if(n==0){result[0]=data[0];for(var i=1;i<data.length;++i){result[i]=result[i-1]+data[i];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]+=data[k+j];}}}return result;};//两个数组相减
6785
- HQIndexFormula.ARRAY_SUBTRACT=function(data,data2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){if(data[i]==null||isNaN(data[i]))result[i]=null;else result[i]=data[i]-data2;}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length){if(data[i]==null||data2[i]==null)result[i]=null;else result[i]=data[i]-data2[i];}else result[i]=null;}}return result;};//数组 data>data2比较 返回 0/1 数组
6786
- HQIndexFormula.ARRAY_GT=function(data,data2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){result[i]=data[i]>data2?1:0;}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length)result[i]=data[i]>data2[i]?1:0;else result[i]=null;}}return result;};//数组 data>=data2比较 返回 0/1 数组
6787
- HQIndexFormula.ARRAY_GTE=function(data,data2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){result[i]=data[i]>=data2?1:0;}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length)result[i]=data[i]>=data2[i]?1:0;else result[i]=null;}}return result;};//数组 data<data2比较 返回 0/1 数组
6788
- HQIndexFormula.ARRAY_LT=function(data,data2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){result[i]=data[i]<data2?1:0;}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length)result[i]=data[i]<data2[i]?1:0;else result[i]=null;}}return result;};//数组 data<=data2比较 返回 0/1 数组
6789
- HQIndexFormula.ARRAY_LTE=function(data,data2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){result[i]=data[i]<=data2?1:0;}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length)result[i]=data[i]<=data2[i]?1:0;else result[i]=null;}}return result;};//数组 data==data2比较 返回 0/1 数组
6790
- HQIndexFormula.ARRAY_EQ=function(data,data2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){result[i]=data[i]==data2?1:0;}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length)result[i]=data[i]==data2[i]?1:0;else result[i]=null;}}return result;};HQIndexFormula.ARRAY_IF=function(data,trueData,falseData){var result=[];var IsNumber=[typeof trueData=="number",typeof falseData=="number"];for(var i in data){if(data[i]){if(IsNumber[0])result[i]=trueData;else result[i]=trueData[i];}else{if(IsNumber[1])result[i]=falseData;else result[i]=falseData[i];}}return result;};HQIndexFormula.ARRAY_AND=function(data,data2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){result[i]=data[i]&&data2?1:0;}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length)result[i]=data[i]&&data2[i]?1:0;else result[i]=0;}}return result;};HQIndexFormula.ARRAY_OR=function(data,data2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){result[i]=data[i]||data2?1:0;}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&data[i]){result[i]=1;continue;}if(i<data2.length&&data2[i]){result[i]=1;continue;}result[i]=0;}}return result;};//数组相乘
6791
- //支持多个参数累乘 如:HQIndexFormula.ARRAY_MULTIPLY(data,data2,data3,data3) =data*data2*data3*data4
6792
- HQIndexFormula.ARRAY_MULTIPLY=function(data,data2){if(arguments.length==2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){if(data[i]==null||isNaN(data[i]))result[i]=null;else result[i]=data[i]*data2;}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length)result[i]=data[i]*data2[i];else result[i]=null;}}return result;}var result=HQIndexFormula.ARRAY_MULTIPLY(arguments[0],arguments[1]);for(var i=2;i<arguments.length;++i){result=HQIndexFormula.ARRAY_MULTIPLY(result,arguments[i]);}return result;};//数组相除
6793
- HQIndexFormula.ARRAY_DIVIDE=function(data,data2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){result[i]=data[i]/data2;}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length){if(data[i]==null||data2[i]==null||isNaN(data[i])||isNaN(data2[i]))result[i]=null;else if(data2[i]==0)result[i]=null;else result[i]=data[i]/data2[i];}else result[i]=null;}}return result;};//数组相加
6794
- //支持多个参数累加 如:HQIndexFormula.ARRAY_ADD(data,data2,data3,data3) =data+data2+data3+data4
6795
- HQIndexFormula.ARRAY_ADD=function(data,data2){if(arguments.length==2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){result[i]=data[i]+data2;}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length){if(data[i]==null||data2[i]==null||isNaN(data[i])||isNaN(data2[i]))result[i]=null;else result[i]=data[i]+data2[i];}else{result[i]=null;}}}return result;}var result=HQIndexFormula.ARRAY_ADD(arguments[0],arguments[1]);for(var i=2;i<arguments.length;++i){result=HQIndexFormula.ARRAY_ADD(result,arguments[i]);}return result;};HQIndexFormula.MAX=function(data,data2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){if(data[i]==null)result[i]=null;else result[i]=Math.max(data[i],data2);}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length){if(data[i]==null||data2[i]==null)result[i]=null;else result[i]=Math.max(data[i],data2[i]);}else result[i]=null;}}return result;};HQIndexFormula.MIN=function(data,data2){var result=[];var IsNumber=typeof data2=="number";if(IsNumber){for(var i in data){if(data[i]==null)result[i]=null;else result[i]=Math.min(data[i],data2);}}else{var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){if(i<data.length&&i<data2.length){if(data[i]==null||data2[i]==null)result[i]=null;else result[i]=Math.min(data[i],data2[i]);}else result[i]=null;}}return result;};HQIndexFormula.ABS=function(data){var result=[];for(var i in data){if(data[i]==null)result[i]=null;else result[i]=Math.abs(data[i]);}return result;};HQIndexFormula.MA=function(data,dayCount){var result=[];for(var i=0,len=data.length;i<len;i++){if(i<dayCount){result[i]=null;continue;}var sum=0;for(var j=0;j<dayCount;j++){sum+=data[i-j];}result[i]=sum/dayCount;}return result;};/*
6796
- 加权移动平均
6797
- 返回加权移动平均
6798
- 用法:EXPMA(X,M):X的M日加权移动平均
6799
- EXPMA[i]=buffer[i]*para+(1-para)*EXPMA[i-1] para=2/(1+__para)
6800
- */HQIndexFormula.EXPMA=function(data,dayCount){var result=[];if(dayCount>=data.length)return result;var i=dayCount;for(;i<data.length;++i)//获取第1个有效数据
6801
- {if(data[i]!=null){result[i]=data[i];break;}}for(i=i+1;i<data.length;++i){if(result[i-1]!=null&&data[i]!=null)result[i]=(2*data[i]+(dayCount-1)*result[i-1])/(dayCount+1);else if(result[i-1]!=null)result[i]=result[i-1];}return result;};//加权平滑平均,MEMA[i]=SMA[i]*para+(1-para)*SMA[i-1] para=2/(1+__para)
6802
- HQIndexFormula.EXPMEMA=function(data,dayCount){var result=[];if(dayCount>=data.length)return result;var index=0;for(;index<data.length;++index){if(data[index]&&!isNaN(data[index]))break;}var sum=0;for(var i=0;index<data.length&&i<dayCount;++i,++index){if(data[index]&&!isNaN(data[index]))sum+=data[index];else sum+=data[index-1];}result[index-1]=sum/dayCount;for(;index<data.length;++index){if(result[index-1]!=null&&data[index]!=null)result[index]=(2*data[index]+(dayCount-1)*result[index-1])/(dayCount+1);else if(result[index-1]!=null)result[index]=result[index-1];}return result;};HQIndexFormula.STD=function(data,n){var result=[];var total=0;var averageData=[];//平均值
6803
- for(var i=n-1;i<data.length;++i){total=0;for(var j=0;j<n;++j){total+=data[i-j];}averageData[i]=total/n;}for(var i=n-1;i<data.length;++i){total=0;for(var j=0;j<n;++j){total+=Math.pow(data[i-j]-averageData[i],2);}result[i]=Math.sqrt(total/n);}return result;};//平均绝对方差
6804
- HQIndexFormula.AVEDEV=function(data,n){var result=[];var total=0;var averageData=[];//平均值
6805
- for(var i=n-1;i<data.length;++i){total=0;for(var j=0;j<n;++j){total+=data[i-j];}averageData[i]=total/n;}for(var i=n-1;i<data.length;++i){total=0;for(var j=0;j<n;++j){total+=Math.abs(data[i-j]-averageData[i]);}result[i]=total/n;}return result;};HQIndexFormula.COUNT=function(data,n){var result=[];for(var i=n-1;i<data.length;++i){var count=0;for(var j=0;j<n;++j){if(data[i-j])++count;}result[i]=count;}return result;};//上穿
6806
- HQIndexFormula.CROSS=function(data,data2){var result=[];if(data.length!=data2.length)return result=[];var index=0;for(;index<data.length;++index){if(data[index]!=null&&!isNaN(data[index])&&data2[index]!=null&&isNaN(data2[index]))break;}for(++index;index<data.length;++index){result[index]=data[index]>data2[index]&&data[index-1]<data2[index-1]?1:0;}return result;};//累乘
6807
- HQIndexFormula.MULAR=function(data,n){var result=[];if(data.length<n)return result;var index=n;for(;index<data.length;++index){if(data[index]!=null&&!isNaN(data[index])){result[index]=data[index];break;}}for(++index;index<data.length;++index){result[index]=result[index-1]*data[index];}return result;};HQIndexFormula.STICKLINE=function(data,price1,price2){var result=[];if(data.length<=0)return result;var IsNumber=typeof price1=="number";var IsNumber2=typeof price2=="number";for(var i in data){result[i]=null;if(isNaN(data[i]))continue;if(!data[i])continue;if(IsNumber&&IsNumber2){result[i]={Value:price1,Value2:price2};}else if(IsNumber&&!IsNumber2){if(isNaN(price2[i]))continue;result[i]={Value:price1,Value2:price2[i]};}else if(!IsNumber&&IsNumber2){if(isNaN(price1[i]))continue;result[i]={Value:price1[i],Value2:price2};}else{if(isNaN(price1[i])||isNaN(price2[i]))continue;result[i]={Value:price1[i],Value2:price2[i]};}}return result;};// 定制K线计算
6714
+ */function JSIndexMap(){}JSIndexMap.Get=function(id){var indexMap=new _map2.default([['CJL',{IsMainIndex:false,Create:function Create(){return new JSIndex_CJL();}}],//期货指标
6715
+ ["OX",{IsMainIndex:false,Create:function Create(){return new JSIndex_OX();}}],["可视范围成交量分布图",{IsMainIndex:true,Create:function Create(option){return new VolProfileVisibleRangeIndex(option);}}]]);return indexMap.get(id);};// 定制K线计算
6808
6716
  function KLineCustomCalulate(){this.DataMap=new _map2.default([["RenkoCalculate",{Create:function Create(){return new RenkoCalculate();}}],["HeikinAshiCalculate",{Create:function Create(){return new HeikinAshiCalculate();}}],["LineBreakCalcuate",{Create:function Create(){return new LineBreakCalcuate();}}],["KagiCalculate",{Create:function Create(){return new RenkoCalculate();}}]]);this.Create=function(name){if(!this.DataMap.has(name))return null;var item=this.DataMap.get(name);return item.Create();};}var g_KLineCustomCalulate=new KLineCustomCalulate();///////////////////////////////////////////////////////////////////
6809
6717
  // renko candle
6810
6718
  //
@@ -7305,7 +7213,7 @@ this.ClearIndexPaint();this.ResetOverlaySymbolStatus();this.ResetScrollBar();thi
7305
7213
  }}};//设置第1屏的起始日期
7306
7214
  this.SetFirstShowDate=function(obj){if(!obj||!obj.Date)return;var option={ID:JSCHART_OPERATOR_ID.OP_GOTO,Date:obj.Date};if(IFrameSplitOperator.IsNumber(obj.Time))option.Time=obj.Time;if(IFrameSplitOperator.IsNumber(obj.PageSize))option.PageSize=obj.PageSize;this.ChartOperator(option);};//删除某一个窗口的指标, bCallDestory=是否调用图形销毁函数
7307
7215
  this.DeleteIndexPaint=function(windowIndex,bCallDestroy){var paint=new Array();//踢出当前窗口的指标画法
7308
- for(var _i21 in this.ChartPaint){var _item7=this.ChartPaint[_i21];if(_i21==0||_item7.ChartFrame!=this.Frame.SubFrame[windowIndex].Frame){paint.push(_item7);}else{if(bCallDestroy===true){if(_item7&&_item7.OnDestroy)_item7.OnDestroy();//图形销毁
7216
+ for(var _i12 in this.ChartPaint){var _item4=this.ChartPaint[_i12];if(_i12==0||_item4.ChartFrame!=this.Frame.SubFrame[windowIndex].Frame){paint.push(_item4);}else{if(bCallDestroy===true){if(_item4&&_item4.OnDestroy)_item4.OnDestroy();//图形销毁
7309
7217
  }}}var subFrame=this.Frame.SubFrame[windowIndex].Frame;subFrame.YSpecificMaxMin=null;//清空指定最大最小值
7310
7218
  subFrame.IsLocked=false;//解除上锁
7311
7219
  subFrame.YSplitScale=null;//清空固定刻度
@@ -7431,7 +7339,7 @@ chart.SetOption(option);this.ExtendChartPaint.push(chart);this.Frame.ChartBorder
7431
7339
  return chart;case'KLineTooltip':if(option.Create&&typeof option.Create=='function')chart=option.Create();else chart=new KLineTooltipPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;option.LanguageID=this.LanguageID;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"深度图":chart=new DepthMapPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"K线Y轴背景图":chart=new KLineYAxisBGPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case'背景图':chart=new BackgroundPaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);return chart;case"FrameSplitPaint"://框架分割
7432
7340
  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)//手势离开十字光标消失
7433
7341
  {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:回调 }
7434
- this.LockIndex=function(lockData){if(!lockData)return;if(!lockData.IndexName)return;for(var _i22 in this.WindowIndex){var _item8=this.WindowIndex[_i22];if(!_item8)conintue;if(_item8.Name==lockData.IndexName){_item8.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;//单词拼错了, 还没替换完
7342
+ this.LockIndex=function(lockData){if(!lockData)return;if(!lockData.IndexName)return;for(var _i13 in this.WindowIndex){var _item5=this.WindowIndex[_i13];if(!_item5)conintue;if(_item5.Name==lockData.IndexName){_item5.SetLock(lockData);this.Update();break;}}};this.TryClickLock=function(x,y){for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];if(!item.Frame.IsLocked)continue;if(!item.Frame.LockPaint)continue;var tooltip=new TooltipData();if(!item.Frame.LockPaint.GetTooltipData(x,y,tooltip))continue;tooltip.HQChart=this;if(tooltip.Data.Callback)tooltip.Data.Callback(tooltip);return true;}return false;};this.TryClickIndexTitle=function(x,y){for(var i in this.TitlePaint){var item=this.TitlePaint[i];if(!item.IsClickTitle)continue;if(!item.IsClickTitle(x,y))continue;var data={Point:{X:x,Y:y},Title:item.Title,FrameID:item.Frame.Identify};JSConsole.Chart.Log('[KLineChartContainer::TryClickIndexTitle] click title ',data);var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CLICK_INDEXTITLE);if(event&&event.Callback)event.Callback(event,data,this);return true;}return false;};this.SetSizeChange=function(bChanged){this.Frame.SetSizeChage(bChanged);for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];item.SizeChange=bChanged;}};this.SetSizeChage=this.SetSizeChange;//单词拼错了, 还没替换完
7435
7343
  this.Update=function(option)//option: { UpdateCursorIndexType:更新十字光标方式 }
7436
7344
  {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))//复权(日线数据复权)
7437
7345
  {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)//复权(分钟数据复权, 复权因子模式)
@@ -7511,13 +7419,13 @@ bNeedDonloadData=false;if(this.EnableFlowCapital)//强制下载流通股
7511
7419
  {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',//类名::
7512
7420
  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;//已被上层替换,不调用默认的网络请求
7513
7421
  }//请求数据
7514
- 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 _i23 in stock.stockday){var item=stock.stockday[_i23];var indexData=new SingleData();indexData.Date=item.date;var financeData=item.capital;if(!financeData)continue;if(financeData.a>0){indexData.Value=financeData.a;//流通股本(股)
7422
+ JSNetwork.HttpRequest({url:this.StockHistoryDayApiUrl,data:{"field":fieldList,"symbol":[this.Symbol],"orderfield":"date"},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvFlowCapitalData(recvData);}});};this.RecvFlowCapitalData=function(data){if(!data.stock||data.stock.length!=1)return;var stock=data.stock[0];if(this.EnableVerifyRecvData&&stock.symbol!=this.Symbol){JSConsole.Chart.Warn('[MinuteChartContainer::RecvFlowCapitalData] recv data symbol not match. HQChart['+this.Symbol+'] , Recv['+stock.symbol+']');return;}var aryData=new Array();for(var _i14 in stock.stockday){var item=stock.stockday[_i14];var indexData=new SingleData();indexData.Date=item.date;var financeData=item.capital;if(!financeData)continue;if(financeData.a>0){indexData.Value=financeData.a;//流通股本(股)
7515
7423
  aryData.push(indexData);}}if(this.IsApiPeriod){var klineData=this.ChartPaint[0].Data;var aryFixedData=null;if(ChartData.IsMinutePeriod(this.Period,true))//分钟数据
7516
7424
  {aryFixedData=klineData.GetMinuteFittingFinanceData(aryData);}else if(ChartData.IsDayPeriod(this.Period,true))//日线数据
7517
7425
  {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))//分钟数据
7518
7426
  {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)//复权
7519
7427
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsMinutePeriod(bindData.Period,false))//周期数据
7520
- {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;}else{var aryFixedData=this.SourceData.GetFittingFinanceData(aryData);for(var _i24 in this.SourceData.Data){var item=this.SourceData.Data[_i24];if(aryFixedData[_i24]&&IFrameSplitOperator.IsNumber(aryFixedData[_i24].Value))item.FlowCapital=aryFixedData[_i24].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0)//复权
7428
+ {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;}else{var aryFixedData=this.SourceData.GetFittingFinanceData(aryData);for(var _i15 in this.SourceData.Data){var item=this.SourceData.Data[_i15];if(aryFixedData[_i15]&&IFrameSplitOperator.IsNumber(aryFixedData[_i15].Value))item.FlowCapital=aryFixedData[_i15].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0)//复权
7521
7429
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsDayPeriod(bindData.Period,false))//周期数据
7522
7430
  {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();};//创建画图工具
7523
7431
  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图标
@@ -7895,7 +7803,7 @@ for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Fr
7895
7803
  this.Frame.SetSizeChage(true);if(this.UpdateXShowText)this.UpdateXShowText();this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
7896
7804
  this.Draw();return index;};this.UpdateXShowText=function(){var bLastFrame=true;for(var i=this.Frame.SubFrame.length-1;i>=0;--i){var item=this.Frame.SubFrame[i].Frame;var subFrame=this.Frame.SubFrame[i];if(bLastFrame){item.XSplitOperator.ShowText=true;if(subFrame.Height>0)bLastFrame=false;}else{item.XSplitOperator.ShowText=false;}}};//删除某一个窗口的指标
7897
7805
  this.DeleteIndexPaint=function(windowIndex,bCallDestroy){var paint=new Array();//踢出当前窗口的指标画法
7898
- for(var _i25 in this.ChartPaint){var _item9=this.ChartPaint[_i25];if(_i25==0||_item9.ChartFrame!=this.Frame.SubFrame[windowIndex].Frame){paint.push(_item9);}else{if(bCallDestroy===true){if(_item9&&_item9.OnDestroy)_item9.OnDestroy();//图形销毁
7806
+ for(var _i16 in this.ChartPaint){var _item6=this.ChartPaint[_i16];if(_i16==0||_item6.ChartFrame!=this.Frame.SubFrame[windowIndex].Frame){paint.push(_item6);}else{if(bCallDestroy===true){if(_item6&&_item6.OnDestroy)_item6.OnDestroy();//图形销毁
7899
7807
  }}}//清空指定最大最小值
7900
7808
  var subFrame=this.Frame.SubFrame[windowIndex].Frame;subFrame.YSpecificMaxMin=null;subFrame.IsLocked=false;//解除上锁
7901
7809
  subFrame.YSplitOperator.SplitType=subFrame.YSplitOperator.DefaultSplitType;//还原Y坐标分割模式
@@ -8002,7 +7910,7 @@ if(this.DayOffset.ShowDayCount==-1)this.DayOffset.ShowDayCount=this.DayData.leng
8002
7910
  if(this.DayOffset.Offset==-8888)this.DayOffset.Offset=this.DayOffset.DayCount-this.DayOffset.ShowDayCount;//最后一页
8003
7911
  var showDayCount=this.DayOffset.ShowDayCount;this.Frame.SetDayCount(showDayCount);}else{this.DayOffset.Offset=0;this.DayOffset.ShowDayCount=this.DayData.length;var showDayCount=this.DayOffset.ShowDayCount;this.Frame.SetDayCount(this.DayData.length);}var upperSymbol=this.Symbol.toUpperCase();var yClose=this.DayData[0].YClose;var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);if(IFrameSplitOperator.IsNumber(this.DayData[0].YClearing)&&isFutures)yClose=this.DayData[0].YClearing;//期货使用前结算价
8004
7912
  this.BindMainData(sourceData,yClose);//外汇 均线暂时不用
8005
- if(MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol))this.ChartPaint[1].Data=null;for(var _i26=0;_i26<this.Frame.SubFrame.length;++_i26){var item=this.Frame.SubFrame[_i26];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=showDayCount;item.Frame.XSplitOperator.DayData=this.DayData;item.Frame.XSplitOperator.Operator();//调整X轴个数
7913
+ 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轴个数
8006
7914
  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轴个数同步
8007
7915
  {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();//调整坐标最大 最小值
8008
7916
  //执行脚本
@@ -8028,7 +7936,7 @@ this.UpdateLatestMinuteDataV2(minuteData);var sourceData=this.SourceData;var ary
8028
7936
  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)//盘前, 盘后成交量公用坐标
8029
7937
  {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;//期货使用前结算价
8030
7938
  this.CaclutateLimitPrice(yClose,minuteData.LimitPrice);//计算涨停价格
8031
- 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 _i27=0;_i27<this.Frame.SubFrame.length;++_i27){var item=this.Frame.SubFrame[_i27];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=1;item.Frame.XSplitOperator.Operator();//调整X轴个数
7939
+ 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轴个数
8032
7940
  item.Frame.YSplitOperator.Symbol=this.Symbol;if(IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)){for(var j=0;j<item.OverlayIndex.length;++j)//子坐标X轴个数同步
8033
7941
  {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;//数据绑定到信息地雷上
8034
7942
  this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"});this.RequestMinuteInfoData();this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
@@ -8043,7 +7951,7 @@ var sourceData=new ChartData();sourceData.Data=aryMinuteData;sourceData.UpdateTi
8043
7951
  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)//盘前, 盘后成交量公用坐标
8044
7952
  {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;//期货使用前结算价
8045
7953
  this.CaclutateLimitPrice(yClose,data.stock[0].limitprice);//计算涨停价格
8046
- 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 _i28 in this.Frame.SubFrame){var item=this.Frame.SubFrame[_i28];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=1;item.Frame.XSplitOperator.Operator();//调整X轴个数
7954
+ 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轴个数
8047
7955
  item.Frame.YSplitOperator.Symbol=this.Symbol;for(var j in item.OverlayIndex)//子坐标X轴个数同步
8048
7956
  {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;//数据绑定到信息地雷上
8049
7957
  this.RecvMinuteDataEvent({FunctionName:"RecvMinuteData"});this.RequestMinuteInfoData();this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
@@ -8060,7 +7968,7 @@ Explain:'叠加股票最新分时数据',Request:{Url:this.HistoryMinuteApiUrl,D
8060
7968
  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]);
8061
7969
  self.RecvOverlayMinuteData(data,item);}});};//请求叠加数据 (主数据下载完再下载))
8062
7970
  this.RequestOverlayMinuteData=function(){var self=this;var date=this.TradeDate;//最后一个交易日期
8063
- for(var i=0;i<this.OverlayChartPaint.length;++i){var _item10=this.OverlayChartPaint[i];if(!_item10.MainData)continue;if(_item10.Status!=OVERLAY_STATUS_ID.STATUS_NONE_ID)continue;var symbol=_item10.Symbol;if(!symbol)continue;this.RequestSingleOverlayMinuteData(symbol,date,_item10);/*
7971
+ 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);/*
8064
7972
  item.Status=OVERLAY_STATUS_ID.STATUS_REQUESTDATA_ID;
8065
7973
 
8066
7974
  if (this.NetworkFilter)
@@ -8378,14 +8286,14 @@ var pageSize=this.Frame.GetCurrentPageSize();if(IFrameSplitOperator.IsNumber(pag
8378
8286
  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是否立即绘制图标
8379
8287
  {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;//数据索引
8380
8288
  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: } }
8381
- {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 _i29 in stock.stockday){var item=stock.stockday[_i29];var indexData=new SingleData();indexData.Date=item.date;var financeData=item.capital;if(!financeData)continue;if(financeData.a>0){indexData.Value=financeData.a;//流通股本(股)
8289
+ {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;//流通股本(股)
8382
8290
  aryData.push(indexData);}}if(ChartData.IsMinutePeriod(this.Period,true))//分钟数据
8383
- {var aryFixedData=this.SourceData.GetMinuteFittingFinanceData(aryData);for(var _i30 in this.SourceData.Data){var item=this.SourceData.Data[_i30];if(!aryFixedData[_i30])continue;item.FlowCapital=aryFixedData[_i30].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(ChartData.IsMinutePeriod(bindData.Period,false))//周期数据
8291
+ {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))//周期数据
8384
8292
  {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;var aryFixedData=this.KLineSourceData.GetMinuteFittingFinanceData(aryData);//数据添加到备份数据中
8385
- for(var _i31 in this.KLineSourceData.Data){var item=this.KLineSourceData.Data[_i31];if(!aryFixedData[_i31])continue;item.FlowCapital=aryFixedData[_i31].Value;}}else{var aryFixedData=this.SourceData.GetFittingFinanceData(aryData);for(var _i32 in this.SourceData.Data){var item=this.SourceData.Data[_i32];if(!aryFixedData[_i32])continue;item.FlowCapital=aryFixedData[_i32].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0)//复权
8293
+ 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)//复权
8386
8294
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsDayPeriod(bindData.Period,false))//周期数据
8387
8295
  {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;var aryFixedData=this.KLineSourceData.GetFittingFinanceData(aryData);//数据添加到备份数据中
8388
- for(var _i33 in this.KLineSourceData.Data){var item=this.KLineSourceData.Data[_i33];if(!aryFixedData[_i33])continue;item.FlowCapital=aryFixedData[_i33].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;//派生
8296
+ 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;//派生
8389
8297
  this.newMethod(uielement,bHScreen);delete this.newMethod;this.IsHScreen=bHScreen;this.IsZoomLockRight=true;this.RightSpaceCount=0;this.RecvFlowCapitalData=function(data){this.Super_RecvFlowCapitalData(data);};this.BeforeBindMainData=function(funcName){};this.UpdateLastDataIcon=function(){if(!this.ChartPaintEx[0])return;var chart=this.ChartPaintEx[0];chart.LastDataIndex=this.TrainInfo.End.Index;};this.AfterBindMainData=function(funcName){if(!this.ChartPaintEx[0]){this.CreateBuySellPaint();this.ChartPaintEx[0].LastDataDrawType=1;}if(funcName!="Update"){var hisData=this.ChartOperator_Temp_GetHistroyData();if(!hisData)return false;var count=hisData.Data.length;var lEnd=count-this.TrainDataCount-20;var xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;var findIndex=this.GetKDataIndexByDateTime(hisData.Data,this.TrainStartDate);if(findIndex>=0){lEnd=findIndex+1;if(count-lEnd<this.TrainDataCount)this.TrainDataCount=count-lEnd;}var xOffset=lEnd-xPointcount;hisData.DataOffset=xOffset;var index=lEnd-1;var kItem=hisData.Data[index];//最后一个显示数据
8390
8298
  this.TrainInfo.LastShowData=kItem;this.TrainInfo.LastData=kItem;//训练起始日期
8391
8299
  this.TrainInfo.Start.Index=index;this.TrainInfo.Start.Date=kItem.Date;this.TrainInfo.Start.Time=kItem.Time;//训练结束日期
@@ -8504,58 +8412,7 @@ xRange.Ask=ask;xRange.Bid=bid;if(!IFrameSplitOperator.IsNumber(xRange.Differ))xR
8504
8412
  {this.CancelAutoUpdate();if(!this.IsAutoUpdate)return;if(!this.Symbol)return;var self=this;var marketStatus=MARKET_SUFFIX_NAME.GetMarketStatus(this.Symbol);if(marketStatus==0||marketStatus==3)return;//闭市,盘后
8505
8413
  var frequency=this.AutoUpdateFrequency;if(marketStatus==1)//盘前
8506
8414
  {this.AutoUpdateTimer=setTimeout(function(){self.AutoUpdate();},frequency);}else if(marketStatus==2)//盘中
8507
- {this.AutoUpdateTimer=setTimeout(function(){self.RequestDepthData();},frequency);}};}////////////////////////////////////////////////////////////////////////////////
8508
- // 简单的图形框架
8509
- //
8510
- function SimlpleChartContainer(uielement){this.newMethod=JSChartContainer;//派生
8511
- this.newMethod(uielement);delete this.newMethod;this.MainDataControl;//主数据类(对外的接口类)
8512
- //this.SubDataControl=new Array();
8513
- //创建
8514
- this.Create=function(){this.UIElement.JSChartContainer=this;//创建十字光标
8515
- //this.ChartCorssCursor=new ChartCorssCursor();
8516
- //this.ChartCorssCursor.Canvas=this.Canvas;
8517
- //this.ChartCorssCursor.StringFormatX=new HQDateStringFormat();
8518
- //this.ChartCorssCursor.StringFormatY=new HQPriceStringFormat();
8519
- //创建等待提示
8520
- this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;//创建框架容器
8521
- this.Frame=new SimpleChartFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;if(this.ChartCorssCursor)this.ChartCorssCursor.Frame=this.Frame;//十字光标绑定框架
8522
- this.ChartSplashPaint.Frame=this.Frame;this.CreateMainChart();this.UIElement.addEventListener("keydown",OnKeyDown,true);//键盘消息
8523
- };this.SetMainDataConotrl=function(dataControl){if(!dataControl)return;this.MainDataControl=dataControl;this.ChartPaint=[];//图形
8524
- this.CreateMainChart();this.Draw();this.RequestData();};//创建主数据画法
8525
- this.CreateMainChart=function(){if(!this.MainDataControl)return;for(var _i34 in this.MainDataControl.DataType){var _item11=this.MainDataControl.DataType[_i34];if(_item11.Type=="BAR"){var chartItem=new ChartBar();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name=_item11.Name;if(_item11.Color)chartItem.UpBarColor=_item11.Color;if(_item11.Color2)chartItem.DownBarColor=_item11.Color2;this.ChartPaint.push(chartItem);}else if(_item11.Type=="LINE"){var chartItem=new ChartLine();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name=_item11.Name;if(_item11.Color)chartItem.Color=_item11.Color;this.ChartPaint.push(chartItem);}}this.Frame.YSplitOperator=new FrameSplitY();this.Frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');this.Frame.YSplitOperator.Frame=this.Frame;this.Frame.YSplitOperator.ChartBorder=this.Frame.ChartBorder;this.Frame.XSplitOperator=new FrameSplitXData();this.Frame.XSplitOperator.Frame=this.Frame;this.Frame.XSplitOperator.ChartBorder=this.Frame.ChartBorder;// this.TitlePaint[0]=new DynamicKLineTitlePainting();
8526
- // this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;
8527
- // this.TitlePaint[0].Canvas=this.Canvas;
8528
- };this.RequestData=function(){if(!this.MainDataControl)return;this.MainDataControl.JSChartContainer=this;this.MainDataControl.RequestData();};this.UpdateMainData=function(dataControl){var lCount=0;for(var _i35 in dataControl.Data){var itemData=new ChartData();itemData.Data=dataControl.Data[_i35];this.ChartPaint[_i35].Data=itemData;if(lCount<itemData.Data.length)lCount=itemData.Data.length;}this.Frame.XPointCount=lCount;this.Frame.Data=this.ChartPaint[0].Data;this.Frame.XData=dataControl.XData;this.UpdateFrameMaxMin();//调整坐标最大 最小值
8529
- this.Frame.SetSizeChage(true);this.Draw();};}////////////////////////////////////////////////////////////////////////////////
8530
- // 饼图图形框架
8531
- //
8532
- function PieChartContainer(uielement){this.Radius;//半径
8533
- this.newMethod=JSChartContainer;//派生
8534
- this.newMethod(uielement);delete this.newMethod;this.MainDataControl;//主数据类(对外的接口类)
8535
- //鼠标移动
8536
- this.OnMouseMove=function(x,y,e){};//创建
8537
- this.Create=function(){this.UIElement.JSChartContainer=this;//创建等待提示
8538
- this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;//创建框架容器
8539
- this.Frame=new NoneFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.ChartSplashPaint.Frame=this.Frame;this.CreateMainChart();};this.SetMainDataConotrl=function(dataControl){if(!dataControl)return;this.MainDataControl=dataControl;this.ChartPaint=[];//图形
8540
- this.CreateMainChart();this.Draw();this.RequestData();};//创建主数据画法
8541
- this.CreateMainChart=function(){if(!this.MainDataControl)return;for(var _i36 in this.MainDataControl.DataType){var _item12=this.MainDataControl.DataType[_i36];if(_item12.Type=="PIE")//饼图
8542
- {var chartItem=new ChartPie();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name=_item12.Name;if(this.Radius)chartItem.Radius=this.Radius;this.ChartPaint.push(chartItem);}else if(_item12.Type=='RADAR')//雷达图
8543
- {var chartItem=new ChartRadar();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name=_item12.Name;if(_item12.StartAngle)chartItem.StartAngle=_item12.StartAngle;this.ChartPaint.push(chartItem);}}// this.TitlePaint[0]=new DynamicKLineTitlePainting();
8544
- // this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;
8545
- // this.TitlePaint[0].Canvas=this.Canvas;
8546
- };this.RequestData=function(){if(!this.MainDataControl)return;this.MainDataControl.JSChartContainer=this;this.MainDataControl.RequestData();};this.UpdateMainData=function(dataControl){for(var _i37 in dataControl.Data){var itemData=new ChartData();itemData.Data=dataControl.Data[_i37];this.ChartPaint[_i37].Data=itemData;}this.Frame.SetSizeChage(true);this.Draw();};}//地图
8547
- function MapChartContainer(uielement){this.newMethod=JSChartContainer;//派生
8548
- this.newMethod(uielement);delete this.newMethod;this.MainDataControl;//主数据类(对外的接口类)
8549
- //鼠标移动
8550
- this.OnMouseMove=function(x,y,e){};//创建
8551
- this.Create=function(){this.UIElement.JSChartContainer=this;//创建等待提示
8552
- this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;//创建框架容器
8553
- this.Frame=new NoneFrame();this.Frame.ChartBorder=new ChartBorder();this.Frame.ChartBorder.UIElement=this.UIElement;this.Frame.ChartBorder.Top=30;this.Frame.ChartBorder.Left=5;this.Frame.ChartBorder.Bottom=20;this.Frame.Canvas=this.Canvas;this.ChartSplashPaint.Frame=this.Frame;this.CreateMainChart();};this.SetMainDataConotrl=function(dataControl){if(!dataControl)return;this.MainDataControl=dataControl;this.ChartPaint=[];//图形
8554
- this.CreateMainChart();this.Draw();this.RequestData();};//创建主数据画法
8555
- this.CreateMainChart=function(){if(!this.MainDataControl)return;var chartItem=new ChartChinaMap();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name=this.MainDataControl.DataType[0].Name;if(this.Radius)chartItem.Radius=this.Radius;this.ChartPaint.push(chartItem);// this.TitlePaint[0]=new DynamicKLineTitlePainting();
8556
- // this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;
8557
- // this.TitlePaint[0].Canvas=this.Canvas;
8558
- };this.RequestData=function(){if(!this.MainDataControl)return;this.MainDataControl.JSChartContainer=this;this.MainDataControl.RequestData();};this.UpdateMainData=function(dataControl){this.ChartPaint[0].Data=dataControl.Data[0];this.Frame.SetSizeChage(true);this.Draw();};}//////////////////////////////////////////////////////////
8415
+ {this.AutoUpdateTimer=setTimeout(function(){self.RequestDepthData();},frequency);}};}//////////////////////////////////////////////////////////
8559
8416
  //
8560
8417
  // 指标信息
8561
8418
  //
@@ -8612,87 +8469,14 @@ var titleData=new DynamicTitleData(chart.Data,"VPVR",chart.Data);titleData.Chart
8612
8469
  this.newMethod('CJL');delete this.newMethod;this.Index=new Array(new IndexInfo("VOL",null),new IndexInfo("OPID",null));this.Index[0].LineColor=g_JSChartResource.Index.LineColor[0];this.Index[1].LineColor=g_JSChartResource.Index.LineColor[1];this.CreateChart=function(id){if(id==0){var chart=new ChartVolStick();return chart;}else if(id==1){var chart=new ChartSubLine();chart.LineWidth=1*GetDevicePixelRatio();return chart;}};//请求数据
8613
8470
  this.RequestData=function(hqChart,windowIndex,hisData){this.BindData(hqChart,windowIndex,hisData);hqChart.UpdataDataoffset();//更新数据偏移
8614
8471
  hqChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8615
- hqChart.Draw();return true;};this.BindData=function(hqChart,windowIndex,hisData){var paint=this.CreatePaints(hqChart,windowIndex);var isOverlay=this.IsOverlay();if(paint.length!=this.Index.length)return false;var vol=hisData.GetVol();var position=hisData.GetPosition();paint[0].HistoryData=hisData;paint[0].Data.Data=vol;paint[1].Data.Data=position;var titleIndex=windowIndex+1;if(isOverlay){var titlePaint=hqChart.TitlePaint[titleIndex];var titleInfo={Data:[],Title:''};titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);for(var i in paint){var titleData=new DynamicTitleData(paint[i].Data,this.Index[i].Name,this.Index[i].LineColor);titlePaint.OverlayIndex.get(this.OverlayIndex.Identify).Data[i]=titleData;}}else{hqChart.TitlePaint[titleIndex].Data[0]=new DynamicTitleData(paint[0].Data,this.Index[0].Name,this.Index[0].LineColor);hqChart.TitlePaint[titleIndex].Data[1]=new DynamicTitleData(paint[1].Data,this.Index[1].Name,this.Index[1].LineColor);hqChart.TitlePaint[titleIndex].Title=this.Name;}return true;};}//市场多空
8616
- function MarketLongShortIndex(){this.newMethod=BaseIndex;//派生
8617
- this.newMethod('Long-Short');delete this.newMethod;this.Index=new Array(new IndexInfo("多头区域",null),new IndexInfo("空头区域",null),new IndexInfo("市场多空指标",null));this.Index[0].LineColor=g_JSChartResource.UpBarColor;this.Index[1].LineColor=g_JSChartResource.DownBarColor;this.Index[2].LineColor=g_JSChartResource.Index.LineColor[0];this.LongShortData;//多空数据
8618
- this.CreateChart=function(id){if(id==2){var newChartLine=new ChartLine();newChartLine.LineWidth=2;return newChartLine;}return new ChartStraightLine();};this.GetOutData=function(){return{LongShortData:this.LongShortData};};//请求数据
8619
- this.RequestData=function(hqChart,windowIndex,hisData){var self=this;var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData};this.LongShortData=[];if(param.HQChart.Period>0)//周期数据
8620
- {this.NotSupport(param.HQChart,param.WindowIndex,"不支持周期切换");param.HQChart.Draw();this.SendEvent(hqChart,windowIndex,hisData,"不支持周期切换");return false;}//请求数据
8621
- JSNetwork.HttpRequest({url:g_JSChartResource.Index.MarketLongShortApiUrl,data:{},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvData(recvData,param);self.SendEvent(hqChart,windowIndex,hisData);}});return true;};this.RecvData=function(recvData,param){if(recvData.data.length<=0)return;var aryData=new Array();for(var i in recvData.data){var item=recvData.data[i];var indexData=new SingleData();indexData.Date=item[0];indexData.Value=item[1];aryData.push(indexData);}var aryFittingData=param.HistoryData.GetFittingData(aryData);var bindData=new ChartData();bindData.Data=aryFittingData;bindData.Period=param.HQChart.Period;//周期
8622
- bindData.Right=param.HQChart.Right;//复权
8623
- this.LongShortData=bindData.GetValue();this.BindData(param.HQChart,param.WindowIndex,param.HistoryData);param.HQChart.UpdataDataoffset();//更新数据偏移
8624
- param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8625
- param.HQChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){var paint=this.CreatePaints(hqChart,windowIndex);var isOverlay=this.IsOverlay();if(paint.length!=this.Index.length)return false;//paint[0].Data.Data=SWLData;
8626
- paint[2].Data.Data=this.LongShortData;paint[0].Data.Data[0]=8;paint[1].Data.Data[0]=1;var titleIndex=windowIndex+1;//指定[0,9]
8627
- if(isOverlay){this.OverlayIndex.Frame.Frame.YSpecificMaxMin={Max:9,Min:0,Count:3};var titlePaint=hqChart.TitlePaint[titleIndex];var titleInfo={Data:[],Title:''};titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);for(var i in paint){var titleData=new DynamicTitleData(paint[i].Data,this.Index[i].Name,this.Index[i].LineColor);if(i!=2)titleData.DataType="StraightLine";titlePaint.OverlayIndex.get(this.OverlayIndex.Identify).Data[i]=titleData;}}else{hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin={Max:9,Min:0,Count:3};for(var i in paint){hqChart.TitlePaint[titleIndex].Data[i]=new DynamicTitleData(paint[i].Data,this.Index[i].Name,this.Index[i].LineColor);if(i!=2)hqChart.TitlePaint[titleIndex].Data[i].DataType="StraightLine";}}return true;};}//市场择时
8628
- function MarketTimingIndex(){this.newMethod=BaseIndex;//派生
8629
- this.newMethod('Market-Timing');delete this.newMethod;this.Index=new Array(new IndexInfo("因子择时",null));this.TimingData;//择时数据
8630
- this.TitleColor=g_JSChartResource.FrameSplitTextColor;this.CreateChart=function(id){return new ChartMACD();};this.GetOutData=function(){return{TimingData:this.TimingData};};//请求数据
8631
- this.RequestData=function(hqChart,windowIndex,hisData){var self=this;var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData};this.LongShortData=[];if(param.HQChart.Period>0)//周期数据
8632
- {this.NotSupport(param.HQChart,param.WindowIndex,"不支持周期切换");param.HQChart.Draw();this.SendEvent(hqChart,windowIndex,hisData,"不支持周期切换");return false;}//请求数据
8633
- JSNetwork.HttpRequest({url:g_JSChartResource.Index.MarketLongShortApiUrl,data:{},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvData(recvData,param);self.SendEvent(hqChart,windowIndex,hisData);}});return true;};this.RecvData=function(recvData,param){if(recvData.data.length<=0)return;var aryData=new Array();for(var i in recvData.data){var item=recvData.data[i];var indexData=new SingleData();indexData.Date=item[0];indexData.Value=item[2];aryData.push(indexData);}var aryFittingData=param.HistoryData.GetFittingData(aryData);var bindData=new ChartData();bindData.Data=aryFittingData;bindData.Period=param.HQChart.Period;//周期
8634
- bindData.Right=param.HQChart.Right;//复权
8635
- this.TimingData=bindData.GetValue();this.BindData(param.HQChart,param.WindowIndex,param.HistoryData);param.HQChart.UpdataDataoffset();//更新数据偏移
8636
- param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8637
- param.HQChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){var paint=this.CreatePaints(hqChart,windowIndex);var isOverlay=this.IsOverlay();if(paint.length!=this.Index.length)return false;//paint[0].Data.Data=SWLData;
8638
- paint[0].Data.Data=this.TimingData;paint[0].NotSupportMessage=null;var titleIndex=windowIndex+1;if(isOverlay){var titlePaint=hqChart.TitlePaint[titleIndex];var titleInfo={Data:[],Title:''};titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);for(var i in paint){var titleData=new DynamicTitleData(paint[i].Data,this.Index[i].Name,this.Index[i].LineColor);titleData.StringFormat=STRING_FORMAT_TYPE.THOUSANDS;titleData.FloatPrecision=0;titlePaint.OverlayIndex.get(this.OverlayIndex.Identify).Data[i]=titleData;}}else{for(var i in paint){hqChart.TitlePaint[titleIndex].Data[i]=new DynamicTitleData(paint[i].Data,this.Index[i].Name,this.TitleColor);hqChart.TitlePaint[titleIndex].Data[i].StringFormat=STRING_FORMAT_TYPE.THOUSANDS;hqChart.TitlePaint[titleIndex].Data[i].FloatPrecision=0;}}return true;};}//市场关注度
8639
- function MarketAttentionIndex(){this.newMethod=BaseIndex;//派生
8640
- this.newMethod('Market-Attention');delete this.newMethod;this.Index=new Array(new IndexInfo("市场关注度",null));this.Data;//关注度数据
8641
- this.TitleColor=g_JSChartResource.FrameSplitTextColor;this.ApiUrl=g_JSChartResource.Index.MarketAttentionApiUrl;this.CreateChart=function(id){return new ChartMACD();};this.GetOutData=function(){return{Data:this.Data};};//调整框架
8642
- this.SetFrame=function(hqChart,windowIndex,hisData){var isOverlay=this.IsOverlay();if(isOverlay)this.OverlayIndex.Frame.Frame.YSpecificMaxMin={Max:6,Min:0,Count:3};else hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin={Max:6,Min:0,Count:3};};//请求数据
8643
- this.RequestData=function(hqChart,windowIndex,hisData){var self=this;var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData};this.Data=[];if(param.HQChart.Period>0)//周期数据
8644
- {this.NotSupport(param.HQChart,param.WindowIndex,"不支持周期切换");param.HQChart.Draw();this.SendEvent(hqChart,windowIndex,hisData,"不支持周期切换");return false;}//请求数据
8645
- JSNetwork.HttpRequest({url:this.ApiUrl,data:{"symbol":param.HQChart.Symbol,"startdate":20100101},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvData(recvData,param);self.SendEvent(hqChart,windowIndex,hisData);}});return true;};this.RecvData=function(recvData,param){if(recvData.date.length<0)return;var aryData=new Array();for(var i in recvData.date){var indexData=new SingleData();indexData.Date=recvData.date[i];indexData.Value=recvData.value[i];aryData.push(indexData);}var aryFittingData=param.HistoryData.GetFittingData(aryData);var bindData=new ChartData();bindData.Data=aryFittingData;bindData.Period=param.HQChart.Period;//周期
8646
- bindData.Right=param.HQChart.Right;//复权
8647
- this.Data=bindData.GetValue();this.BindData(param.HQChart,param.WindowIndex,param.HistoryData);this.SetFrame(param.HQChart,param.WindowIndex,param.HistoryData);param.HQChart.UpdataDataoffset();//更新数据偏移
8648
- param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8649
- param.HQChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){var paint=this.CreatePaints(hqChart,windowIndex);var isOverlay=this.IsOverlay();if(paint.length!=this.Index.length)return false;//paint[0].Data.Data=SWLData;
8650
- paint[0].Data.Data=this.Data;paint[0].NotSupportMessage=null;var titleIndex=windowIndex+1;if(isOverlay){var titlePaint=hqChart.TitlePaint[titleIndex];var titleInfo={Data:[],Title:''};titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);for(var i in paint){var titleData=new DynamicTitleData(paint[i].Data,this.Index[i].Name,this.Index[i].LineColor);titleData.StringFormat=STRING_FORMAT_TYPE.THOUSANDS;titleData.FloatPrecision=0;titlePaint.OverlayIndex.get(this.OverlayIndex.Identify).Data[i]=titleData;}}else{for(var i in paint){hqChart.TitlePaint[titleIndex].Data[i]=new DynamicTitleData(paint[i].Data,this.Index[i].Name,this.TitleColor);hqChart.TitlePaint[titleIndex].Data[i].StringFormat=STRING_FORMAT_TYPE.THOUSANDS;hqChart.TitlePaint[titleIndex].Data[i].FloatPrecision=0;}}return true;};}/*
8651
- 行业,指数热度
8652
- */function MarketHeatIndex(){this.newMethod=BaseIndex;//派生
8653
- this.newMethod('Market-Heat');delete this.newMethod;this.Index=new Array(new IndexInfo("热度",5),new IndexInfo('MA',10),new IndexInfo('MA',null));this.Data;//关注度数据
8654
- this.ApiUrl=g_JSChartResource.Index.MarketHeatApiUrl;this.Index[0].LineColor=g_JSChartResource.FrameSplitTextColor;this.Index[1].LineColor=g_JSChartResource.Index.LineColor[0];this.Index[2].LineColor=g_JSChartResource.Index.LineColor[1];this.CreateChart=function(id){if(id==0)return new ChartMACD();return new ChartLine();};//请求数据
8655
- this.RequestData=function(hqChart,windowIndex,hisData){var self=this;var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData};this.Data=[];if(param.HQChart.Period>0)//周期数据
8656
- {this.NotSupport(param.HQChart,param.WindowIndex,"不支持周期切换");param.HQChart.Draw();return false;}//请求数据
8657
- JSNetwork.HttpRequest({url:this.ApiUrl,data:{"symbol":param.HQChart.Symbol,"startdate":20100101},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvData(recvData,param);}});return true;};this.RecvData=function(recvData,param){if(recvData.date.length<0)return;var aryData=new Array();for(var i in recvData.date){var indexData=new SingleData();indexData.Date=recvData.date[i];indexData.Value=recvData.value[i];aryData.push(indexData);}var aryFittingData=param.HistoryData.GetFittingData(aryData);var bindData=new ChartData();bindData.Data=aryFittingData;bindData.Period=param.HQChart.Period;//周期
8658
- bindData.Right=param.HQChart.Right;//复权
8659
- this.Data=bindData.GetValue();this.BindData(param.HQChart,param.WindowIndex,param.HistoryData);param.HQChart.UpdataDataoffset();//更新数据偏移
8660
- param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8661
- param.HQChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){var paint=this.CreatePaints(hqChart,windowIndex);var isOverlay=this.IsOverlay();if(paint.length!=this.Index.length)return false;paint[0].Data.Data=this.Data;paint[0].NotSupportMessage=null;var MA=HQIndexFormula.MA(this.Data,this.Index[0].Param);paint[1].Data.Data=MA;var MA2=HQIndexFormula.MA(this.Data,this.Index[1].Param);paint[2].Data.Data=MA2;var titleIndex=windowIndex+1;if(isOverlay){var titlePaint=hqChart.TitlePaint[titleIndex];var titleInfo={Data:[],Title:''};titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);for(var i in paint){var name='';if(i==0)name=hqChart.Name+this.Index[i].Name;else name="MA"+this.Index[i-1].Param;var titleData=new DynamicTitleData(paint[i].Data,name,this.Index[i].LineColor);titleData.StringFormat=STRING_FORMAT_TYPE.DEFAULT;titleData.FloatPrecision=2;titlePaint.OverlayIndex.get(this.OverlayIndex.Identify).Data[i]=titleData;}}else{for(var i in paint){var name="";//显示的名字特殊处理
8662
- if(i==0)name=hqChart.Name+this.Index[i].Name;else name="MA"+this.Index[i-1].Param;hqChart.TitlePaint[titleIndex].Data[i]=new DynamicTitleData(paint[i].Data,name,this.Index[i].LineColor);hqChart.TitlePaint[titleIndex].Data[i].StringFormat=STRING_FORMAT_TYPE.DEFAULT;hqChart.TitlePaint[titleIndex].Data[i].FloatPrecision=2;}}//hqChart.TitlePaint[titleIndex].Explain="热度说明";
8663
- return true;};}//自定义指数热度
8664
- function CustonIndexHeatIndex(){this.newMethod=BaseIndex;//派生
8665
- this.newMethod('Market-Heat');delete this.newMethod;this.Index=new Array(new IndexInfo('区域',3),new IndexInfo("热度指数",10),new IndexInfo('MA',5),new IndexInfo('MA',10));this.Data;//关注度数据
8666
- this.ApiUrl=g_JSChartResource.Index.CustomIndexHeatApiUrl;this.Index[1].LineColor=g_JSChartResource.Index.LineColor[1];this.Index[2].LineColor=g_JSChartResource.Index.LineColor[2];this.Index[3].LineColor=g_JSChartResource.Index.LineColor[3];this.Create=function(hqChart,windowIndex){for(var i in this.Index){var paint=null;if(i==0){paint=new ChartStraightArea();}else{paint=new ChartLine();paint.Color=this.Index[i].LineColor;}paint.Canvas=hqChart.Canvas;paint.Name=this.Name+"-"+i.toString();paint.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;paint.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;hqChart.ChartPaint.push(paint);}};//请求数据
8667
- this.RequestData=function(hqChart,windowIndex,hisData){var self=this;var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData};this.Data=[];if(param.HQChart.Period>0)//周期数据
8668
- {this.NotSupport(param.HQChart,param.WindowIndex,"不支持周期切换");param.HQChart.Draw();return false;}//请求数据
8669
- JSNetwork.HttpRequest({url:this.ApiUrl,data:{"stock":param.HQChart.CustomStock,"date":{"startdate":param.HQChart.QueryDate.Start,"enddate":param.HQChart.QueryDate.End},"day":[this.Index[0].Param,this.Index[1].Param]},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvData(recvData,param);}});return true;};this.RecvData=function(recvData,param){if(recvData.data==null||recvData.data.length<0)return;//JSConsole.Chart.Log(recvData.data);
8670
- var aryData=new Array();for(var _i38 in recvData.data){var _item13=recvData.data[_i38];var indexData=new SingleData();indexData.Date=_item13[0];indexData.Value=_item13[1];aryData.push(indexData);}var aryFittingData=param.HistoryData.GetFittingData(aryData);var bindData=new ChartData();bindData.Data=aryFittingData;bindData.Period=param.HQChart.Period;//周期
8671
- bindData.Right=param.HQChart.Right;//复权
8672
- this.Data=bindData.GetValue();this.BindData(param.HQChart,param.WindowIndex,param.HistoryData);param.HQChart.UpdataDataoffset();//更新数据偏移
8673
- param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8674
- param.HQChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){var paint=hqChart.GetChartPaint(windowIndex);if(paint.length!=this.Index.length)return false;paint[0].NotSupportMessage=null;paint[0].Data.Data=[{Value:0,Value2:0.2,Color:'rgb(50,205,50)',Title:'热度1',TitleColor:'rgb(245,255 ,250)'},{Value:0.2,Value2:0.4,Color:'rgb(255,140,0)',Title:'热度2',TitleColor:'rgb(245,255 ,250)'},{Value:0.4,Value2:0.8,Color:'rgb(255,106,106)',Title:'热度3',TitleColor:'rgb(245,255 ,250)'},{Value:0.8,Value2:1,Color:'rgb(208, 32 ,144)',Title:'热度4',TitleColor:'rgb(245,255 ,250)'}];paint[1].Data.Data=this.Data;var MA=HQIndexFormula.MA(this.Data,this.Index[2].Param);paint[2].Data.Data=MA;var MA2=HQIndexFormula.MA(this.Data,this.Index[3].Param);paint[3].Data.Data=MA2;//指定框架最大最小[0,1]
8675
- hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin={Max:1,Min:0,Count:3};var titleIndex=windowIndex+1;for(var _i39=1;_i39<paint.length;++_i39){var name=this.Index[_i39].Name;//显示的名字特殊处理
8676
- if(name=='MA')name="MA"+this.Index[_i39].Param;hqChart.TitlePaint[titleIndex].Data[_i39]=new DynamicTitleData(paint[_i39].Data,name,this.Index[_i39].LineColor);hqChart.TitlePaint[titleIndex].Data[_i39].StringFormat=STRING_FORMAT_TYPE.DEFAULT;hqChart.TitlePaint[titleIndex].Data[_i39].FloatPrecision=2;}hqChart.TitlePaint[titleIndex].Title='热度'+'('+this.Index[0].Param+','+this.Index[1].Param+','+this.Index[2].Param+','+this.Index[3].Param+')';return true;};}/*
8677
- 本福特系数(财务粉饰)
8678
- */function BenfordIndex(){this.newMethod=BaseIndex;//派生
8679
- this.newMethod('财务粉饰');delete this.newMethod;this.Index=new Array(new IndexInfo('区域',null),new IndexInfo("系数",null));this.Data;//财务数据
8680
- this.ApiUrl=g_JSChartResource.Index.StockHistoryDayApiUrl;this.Index[0].LineColor=g_JSChartResource.Index.LineColor[0];this.Index[1].LineColor='rgb(105,105,105)';this.CreateChart=function(id){if(id==0)return new ChartStraightArea();return new ChartLineMultiData();};this.GetOutData=function(){return{Data:this.Data};};//请求数据
8681
- this.RequestData=function(hqChart,windowIndex,hisData){var self=this;var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData};this.Data=[];if(param.HQChart.Period!=2)//周期数据
8682
- {this.NotSupport(param.HQChart,param.WindowIndex,"只支持月线");param.HQChart.Draw();this.SendEvent(hqChart,windowIndex,hisData,"只支持月线");return false;}var aryField=["finance.benford","announcement2.quarter","announcement1.quarter","announcement3.quarter","announcement4.quarter"];var aryCondition=[{item:["date","int32","gte","20130101"]},{item:["announcement1.year","int32","gte",0,"announcement2.year","int32","gte",0,"announcement3.year","int32","gte",0,"announcement4.year","int32","gte",0,"or"]}];//请求数据
8683
- JSNetwork.HttpRequest({url:this.ApiUrl,data:{"symbol":[param.HQChart.Symbol],"field":aryField,"condition":aryCondition},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvData(recvData,param);self.SendEvent(hqChart,windowIndex,hisData);}});return true;};this.JsonDataToMapSingleData=function(recvData){var stockData=recvData.stock[0].stockday;var mapData=new _map2.default();for(var i in stockData){var item=stockData[i];var indexData=new SingleData();indexData.Date=item.date;indexData.Value=new Array();if(item.finance1!=null&&item.announcement1!=null){var year=item.announcement1.year;var quarter=item.announcement1.quarter;var value=item.finance1.benford;indexData.Value.push({Year:year,Quarter:quarter,Value:value});}if(item.finance2!=null&&item.announcement2!=null){var _year=item.announcement2.year;var _quarter=item.announcement2.quarter;var _value=item.finance2.benford;indexData.Value.push({Year:_year,Quarter:_quarter,Value:_value});}if(item.finance3!=null&&item.announcement3!=null){var _year2=item.announcement3.year;var _quarter2=item.announcement3.quarter;var _value2=item.finance3.benford;indexData.Value.push({Year:_year2,Quarter:_quarter2,Value:_value2});}if(item.finance4!=null&&item.announcement4!=null){var _year3=item.announcement4.year;var _quarter3=item.announcement4.quarter;var _value3=item.finance4.benford;indexData.Value.push({Year:_year3,Quarter:_quarter3,Value:_value3});}mapData.set(indexData.Date,indexData);}var aryData=new Array();var _iteratorNormalCompletion15=true;var _didIteratorError15=false;var _iteratorError15=undefined;try{for(var _iterator15=(0,_getIterator3.default)(mapData),_step15;!(_iteratorNormalCompletion15=(_step15=_iterator15.next()).done);_iteratorNormalCompletion15=true){var item=_step15.value;aryData.push(item[1]);}}catch(err){_didIteratorError15=true;_iteratorError15=err;}finally{try{if(!_iteratorNormalCompletion15&&_iterator15.return){_iterator15.return();}}finally{if(_didIteratorError15){throw _iteratorError15;}}}return aryData;};this.RecvData=function(recvData,param){JSConsole.Chart.Log(recvData);if(recvData.stock==null||recvData.stock.length<=0)return;var aryData=this.JsonDataToMapSingleData(recvData);var aryFittingData=param.HistoryData.GetFittingMonthData(aryData);var bindData=new ChartData();bindData.Data=aryFittingData;bindData.Period=param.HQChart.Period;//周期
8684
- bindData.Right=param.HQChart.Right;//复权
8685
- this.Data=bindData.GetValue();this.BindData(param.HQChart,param.WindowIndex,param.HistoryData);param.HQChart.UpdataDataoffset();//更新数据偏移
8686
- param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8687
- param.HQChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){var paint=this.CreatePaints(hqChart,windowIndex);if(paint.length!=this.Index.length)return false;paint[0].NotSupportMessage=null;paint[0].Data.Data=[{Value:0,Value2:0.2,Color:'rgb(50,205,50)',Title:'安全区',TitleColor:'rgb(245,255 ,250)'},{Value:0.2,Value2:0.4,Color:'rgb(255,140,0)',Title:'预警区',TitleColor:'rgb(245,255 ,250)'},{Value:0.4,Value2:1,Color:'rgb(255,106,106)',Title:'警示区',TitleColor:'rgb(245,255 ,250)'}];paint[1].Data.Data=this.Data;//指定框架最大最小[0,1]
8688
- hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin={Max:1,Min:0,Count:3};var titleIndex=windowIndex+1;hqChart.TitlePaint[titleIndex].Data[1]=new DynamicTitleData(paint[1].Data,this.Index[1].Name,this.Index[1].LineColor);hqChart.TitlePaint[titleIndex].Data[1].DataType="MultiReport";hqChart.TitlePaint[titleIndex].Title=this.FormatIndexTitle();return true;};}/*
8472
+ hqChart.Draw();return true;};this.BindData=function(hqChart,windowIndex,hisData){var paint=this.CreatePaints(hqChart,windowIndex);var isOverlay=this.IsOverlay();if(paint.length!=this.Index.length)return false;var vol=hisData.GetVol();var position=hisData.GetPosition();paint[0].HistoryData=hisData;paint[0].Data.Data=vol;paint[1].Data.Data=position;var titleIndex=windowIndex+1;if(isOverlay){var titlePaint=hqChart.TitlePaint[titleIndex];var titleInfo={Data:[],Title:''};titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);for(var i in paint){var titleData=new DynamicTitleData(paint[i].Data,this.Index[i].Name,this.Index[i].LineColor);titlePaint.OverlayIndex.get(this.OverlayIndex.Identify).Data[i]=titleData;}}else{hqChart.TitlePaint[titleIndex].Data[0]=new DynamicTitleData(paint[0].Data,this.Index[0].Name,this.Index[0].LineColor);hqChart.TitlePaint[titleIndex].Data[1]=new DynamicTitleData(paint[1].Data,this.Index[1].Name,this.Index[1].LineColor);hqChart.TitlePaint[titleIndex].Title=this.Name;}return true;};}/*
8689
8473
  py指标 服务器端执行
8690
8474
  */function PyScriptIndex(name,script,args,option){this.newMethod=BaseIndex;//派生
8691
8475
  this.newMethod(name);delete this.newMethod;this.Script=script;//脚本
8692
8476
  this.Arguments=[];//参数
8693
8477
  this.OutVar=[];//输出数据
8694
8478
  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};//参数
8695
- var strParam='';for(var _i40 in this.Arguments){if(strParam.length>0)strParam+=',';var item=this.Arguments[_i40];strParam+='"'+item.Name+'"'+':'+item.Value;}strParam='{'+strParam+'}';var indexParam=JSON.parse(strParam);var data=(0,_stringify2.default)({code:this.Script,//脚本
8479
+ 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,//脚本
8696
8480
  symbol:param.HQChart.Symbol,//股票代码
8697
8481
  period:param.HQChart.Period,//周期 0=日线 1=周线 2=月线 3=年线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟
8698
8482
  right:param.HQChart.Right,//复权 0 不复权 1 前复权 2 后复权
@@ -8708,47 +8492,16 @@ var indexInfo={Name:item.name,Type:item.graph,LineWidth:item.width,Data:bindData
8708
8492
  param.HQChart.UpdataDataoffset();//更新数据偏移
8709
8493
  param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8710
8494
  param.HQChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){hqChart.DeleteIndexPaint(windowIndex);//清空指标图形
8711
- for(var _i41 in this.OutVar){var _item14=this.OutVar[_i41];switch(_item14.Type){case'line':this.CreateLine(hqChart,windowIndex,_item14,_i41);break;case'colorstick'://上下柱子
8712
- this.CreateColorStock(hqChart,windowIndex,_item14,_i41);break;}}var titleIndex=windowIndex+1;hqChart.TitlePaint[titleIndex].Title=this.Name;//这是指标名称
8495
+ for(var _i26 in this.OutVar){var _item8=this.OutVar[_i26];switch(_item8.Type){case'line':this.CreateLine(hqChart,windowIndex,_item8,_i26);break;case'colorstick'://上下柱子
8496
+ this.CreateColorStock(hqChart,windowIndex,_item8,_i26);break;}}var titleIndex=windowIndex+1;hqChart.TitlePaint[titleIndex].Title=this.Name;//这是指标名称
8713
8497
  var indexParam='';//指标参数
8714
- for(var _i42 in this.Arguments){var _item15=this.Arguments[_i42];if(indexParam.length>0)indexParam+=',';indexParam+=_item15.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);};//给一个默认的颜色
8498
+ for(var _i27 in this.Arguments){var _item9=this.Arguments[_i27];if(indexParam.length>0)indexParam+=',';indexParam+=_item9.Value.toString();}if(indexParam.length>0)hqChart.TitlePaint[titleIndex].Title=this.Name+'('+indexParam+')';return true;};this.CreateLine=function(hqChart,windowIndex,varItem,id){var line=new ChartLine();line.Canvas=hqChart.Canvas;line.DrawType=1;line.Name=varItem.Name;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)line.Color=varItem.Color;else line.Color=this.GetDefaultColor(id);if(varItem.LineWidth>0)line.LineWidth=varItem.LineWidth;if(varItem.IsShow==false)line.IsShow=false;var titleIndex=windowIndex+1;line.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);hqChart.ChartPaint.push(line);};this.CreateColorStock=function(hqChart,windowIndex,varItem,id){var chart=new ChartMACD();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chart.Data,varItem.Name,this.GetDefaultColor(id));hqChart.ChartPaint.push(chart);};//给一个默认的颜色
8715
8499
  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)];};}/*
8716
8500
  json格式数据指标 用来显示本地数据
8717
8501
  */function JsonDataIndex(name,script,args,option){this.newMethod=PyScriptIndex;//派生
8718
8502
  this.newMethod(name);delete this.newMethod;this.JsonData;//json格式数据
8719
8503
  if(option.JsonData)this.JsonData=option.JsonData;this.RequestData=function(hqChart,windowIndex,hisData){if(!this.JsonData){console.warn("[PyScriptIndex::RequestData] JsonData is null");if(param.HQChart.ScriptErrorCallback)param.HQChart.ScriptErrorCallback('json 数据不能为空');}else{var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData};this.JsonData.code=0;var recvData=this.JsonData;this.RecvData(recvData,param);}};}//给一个默认的颜色
8720
8504
  PyScriptIndex.prototype.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)];};/*
8721
- 点位研判函数
8722
-
8723
- HJ_1:=REF(LOW,1);
8724
- HJ_2:=SMA(ABS(LOW-HJ_1),13,1)/SMA(MAX(LOW-HJ_1,0),13,1)*100;
8725
- HJ_3:=EMA(IF(CLOSE*1.2,HJ_2*13,HJ_2/13),13);
8726
- HJ_4:=LLV(LOW,34);
8727
- HJ_5:=HHV(HJ_3,34);
8728
- HJ_6:=IF(LLV(LOW,56),1,0);
8729
- HJ_7:=EMA(IF(LOW<=HJ_4,(HJ_3+HJ_5*2)/2,0),3)/618*HJ_6;
8730
- HJ_8:=HJ_7>REF(HJ_7,1);
8731
- HJ_9:=REF(LLV(LOW,100),3);
8732
- HJ_10:=REFDATE(HJ_9,DATE);
8733
- HJ_11:=LOW=HJ_10;
8734
- HJ_12:=HJ_8 AND HJ_11;
8735
- HJ_13:=HJ_12>REF(HJ_12,1);
8736
- 启动买点:HJ_13>REF(HJ_13,1),COLORRED,LINETHICK1;
8737
- */function LighterIndex3(){this.newMethod=BaseIndex;//派生
8738
- this.newMethod('点位研判函数');delete this.newMethod;this.Index=new Array(new IndexInfo("启动买点",null));this.Index[0].LineColor='rgb(255,0,0)';this.BindData=function(hqChart,windowIndex,hisData){var paint=hqChart.GetChartPaint(windowIndex);if(paint.length!=this.Index.length)return false;var closeData=hisData.GetClose();var highData=hisData.GetHigh();var lowData=hisData.GetLow();//HJ_1:=REF(LOW,1);
8739
- var hj_1=HQIndexFormula.REF(lowData,1);//HJ_2:=SMA(ABS(LOW-HJ_1),13,1)/SMA(MAX(LOW-HJ_1,0),13,1)*100;
8740
- var hj_2=HQIndexFormula.ARRAY_MULTIPLY(HQIndexFormula.ARRAY_DIVIDE(HQIndexFormula.SMA(HQIndexFormula.ABS(HQIndexFormula.ARRAY_SUBTRACT(lowData,hj_1)),13,1),HQIndexFormula.SMA(HQIndexFormula.MAX(HQIndexFormula.ARRAY_SUBTRACT(lowData,hj_1),0),13,1)),100);//HJ_3:=EMA(IF(CLOSE*1.2,HJ_2*13,HJ_2/13),13);
8741
- var hj_3=HQIndexFormula.EMA(HQIndexFormula.ARRAY_IF(HQIndexFormula.ARRAY_MULTIPLY(closeData,1.2),HQIndexFormula.ARRAY_MULTIPLY(hj_2,13),HQIndexFormula.ARRAY_DIVIDE(hj_2,13)),13);//HJ_4:=LLV(LOW,34);
8742
- var hj_4=HQIndexFormula.LLV(lowData,34);//HJ_5:=HHV(HJ_3,34);
8743
- var hj_5=HQIndexFormula.HHV(hj_3,34);//HJ_6:=IF(LLV(LOW,56),1,0);
8744
- var hj_6=HQIndexFormula.ARRAY_IF(HQIndexFormula.LLV(lowData,56),1,0);//HJ_7:=EMA(IF(LOW<=HJ_4,(HJ_3+HJ_5*2)/2,0),3)/618*HJ_6;
8745
- //hj_7_temp=(HJ_3+HJ_5*2)/2,0) 太长了 这部分单独算下
8746
- var hj_7_temp=HQIndexFormula.ARRAY_DIVIDE(HQIndexFormula.ARRAY_ADD(hj_3,HQIndexFormula.ARRAY_MULTIPLY(hj_5,2)),2);var hj_7=HQIndexFormula.ARRAY_MULTIPLY(HQIndexFormula.ARRAY_DIVIDE(HQIndexFormula.EMA(HQIndexFormula.ARRAY_IF(HQIndexFormula.ARRAY_LTE(lowData,hj_4),hj_7_temp,0),3),618),hj_6);//HJ_8:=HJ_7>REF(HJ_7,1);
8747
- var hj_8=HQIndexFormula.ARRAY_GT(hj_7,HQIndexFormula.REF(hj_7,1));//HJ_9:=REF(LLV(LOW,100),3);
8748
- var hj_9=HQIndexFormula.REF(HQIndexFormula.LLV(lowData,100),3);//HJ_10:=REFDATE(HJ_9,DATE); 用当日的数据 产生数组
8749
- var hj_10=HQIndexFormula.REFDATE(hj_9,-1);//HJ_11:=LOW=HJ_10;
8750
- var hj_11=HQIndexFormula.ARRAY_EQ(lowData,hj_10);//HJ_12:=HJ_8 AND HJ_11;
8751
- var hj_12=HQIndexFormula.ARRAY_AND(hj_8,hj_11);var buyData=null;paint[0].Data.Data=hj_12;var titleIndex=windowIndex+1;for(var i in paint){hqChart.TitlePaint[titleIndex].Data[i]=new DynamicTitleData(paint[i].Data,this.Index[i].Name,this.Index[i].LineColor);}hqChart.TitlePaint[titleIndex].Title=this.FormatIndexTitle();return true;};}/*
8752
8505
  信息地雷
8753
8506
  *//*
8754
8507
  信息地雷列表
@@ -8995,8 +8748,8 @@ this.Dialog;this.HQChart;this.PageData;//分页数据
8995
8748
  //隐藏窗口
8996
8749
  this.Close=function(){this.DivElement.removeChild(this.Dialog);};//创建
8997
8750
  this.Create=function(){this.ID=Guid();var div=document.createElement('div');div.className='jchart-kline-match-box';div.id=this.ID;div.innerHTML='<div class=\'parameter jchart-kline-match-box\'>\n <div class=\'parameter-header\'>\n <span>\u5F62\u6001\u5339\u914D</span>\n <strong id=\'close\' class=\'icon iconfont icon-close\'></strong>\n </div>\n <div class=\'parameter-content\'>\n <p class=\'dataCount\'></p>\n <table class=\'matchTable\'>\n <thead>\n <tr>\n <td>\u80A1\u7968\u540D\u79F0</td>\n <td>\u5339\u914D\u5EA6</td>\n <td>\u65F6\u95F4\u6BB5</td>\n </tr>\n </thead>\n <tbody>\n </tbody>\n </table>\n <div class=\'pagination\' data-current=\'1\'></div>\n </div>\n <div class=\'parameter-footer\'>\n <button id=\'close\' class=\'submit\' >\u786E\u5B9A</button>\n </div>\n </div>'.trim();this.DivElement.appendChild(div);this.Dialog=div;//关闭按钮
8998
- (0,_jquery2.default)("#"+this.ID+" #close").click({divBox:this},function(event){event.data.divBox.Close();});};this.BindData=function(){JSConsole.Chart.Log('[KLineMatchDialog::BindData] \u5F62\u6001\u6E90: '+this.Sample.Stock.Name+' \u533A\u95F4:'+this.Sample.Date.Start+' - '+this.Sample.Date.End);var count=this.MatchData.length+1;var pageData={NewData:{},MetaData:[],PageCount:0,Count:count};var pageCount=0;var paginationHtml='';(0,_jquery2.default)('#'+this.ID+' .dataCount').html('个数:'+count);for(var _i43=0;_i43<count;_i43++){var dataObj={};if(_i43==0){dataObj={Symbol:this.Sample.Stock.Symbol,Name:this.Sample.Stock.Name,Rate:'形态源',Color:'red',Date:this.Sample.Date.Start+'-'+this.Sample.Date.End};}else{var dataItem=this.MatchData[_i43-1];dataObj={Symbol:dataItem.Symbol,Name:dataItem.Name,Rate:Number(dataItem.Similar*100).toFixed(2),Color:'',Date:dataItem.Start+'-'+dataItem.End};}pageData.MetaData.push(dataObj);}if(pageData.Count%10==0){pageCount=pageData.Count/10;}else{pageCount=Math.floor(pageData.Count/10)+1;}pageData.PageCount=pageCount;this.PaginationMetaData(pageData);this.PageData=pageData;JSConsole.Chart.Log('[KLineMatchDialog::DoModal pageData]',pageData);this.RenderDom(1);this.PaginationInit('#'+this.ID,pageData.PageCount,this.paginationCallback);// $('#' + this.ID + ' .pagination').html(paginationHtml);
8999
- };this.RenderDom=function(page){var currentPageData=this.PageData.NewData[page];JSConsole.Chart.Log('[KLineMatchDialog::RenderDom currentPageData]',currentPageData);var bodyHtml='';for(var _i44=0;_i44<currentPageData.length;_i44++){bodyHtml+=('<tr>\n <td class='+currentPageData[_i44].Color+'>'+currentPageData[_i44].Name+'</td>\n <td class='+currentPageData[_i44].Color+'>'+currentPageData[_i44].Rate+'</td>\n <td class='+currentPageData[_i44].Color+'>'+currentPageData[_i44].Date+'</td>\n </tr>').trim();}(0,_jquery2.default)('#'+this.ID+' .matchTable tbody').html(bodyHtml);};var _this=this;this.paginationCallback=function(page){_this.RenderDom(page);_this.PaginationInit('#'+_this.ID,_this.PageData.PageCount,_this.paginationCallback);//更新UI
8751
+ (0,_jquery2.default)("#"+this.ID+" #close").click({divBox:this},function(event){event.data.divBox.Close();});};this.BindData=function(){JSConsole.Chart.Log('[KLineMatchDialog::BindData] \u5F62\u6001\u6E90: '+this.Sample.Stock.Name+' \u533A\u95F4:'+this.Sample.Date.Start+' - '+this.Sample.Date.End);var count=this.MatchData.length+1;var pageData={NewData:{},MetaData:[],PageCount:0,Count:count};var pageCount=0;var paginationHtml='';(0,_jquery2.default)('#'+this.ID+' .dataCount').html('个数:'+count);for(var _i28=0;_i28<count;_i28++){var dataObj={};if(_i28==0){dataObj={Symbol:this.Sample.Stock.Symbol,Name:this.Sample.Stock.Name,Rate:'形态源',Color:'red',Date:this.Sample.Date.Start+'-'+this.Sample.Date.End};}else{var dataItem=this.MatchData[_i28-1];dataObj={Symbol:dataItem.Symbol,Name:dataItem.Name,Rate:Number(dataItem.Similar*100).toFixed(2),Color:'',Date:dataItem.Start+'-'+dataItem.End};}pageData.MetaData.push(dataObj);}if(pageData.Count%10==0){pageCount=pageData.Count/10;}else{pageCount=Math.floor(pageData.Count/10)+1;}pageData.PageCount=pageCount;this.PaginationMetaData(pageData);this.PageData=pageData;JSConsole.Chart.Log('[KLineMatchDialog::DoModal pageData]',pageData);this.RenderDom(1);this.PaginationInit('#'+this.ID,pageData.PageCount,this.paginationCallback);// $('#' + this.ID + ' .pagination').html(paginationHtml);
8752
+ };this.RenderDom=function(page){var currentPageData=this.PageData.NewData[page];JSConsole.Chart.Log('[KLineMatchDialog::RenderDom currentPageData]',currentPageData);var bodyHtml='';for(var _i29=0;_i29<currentPageData.length;_i29++){bodyHtml+=('<tr>\n <td class='+currentPageData[_i29].Color+'>'+currentPageData[_i29].Name+'</td>\n <td class='+currentPageData[_i29].Color+'>'+currentPageData[_i29].Rate+'</td>\n <td class='+currentPageData[_i29].Color+'>'+currentPageData[_i29].Date+'</td>\n </tr>').trim();}(0,_jquery2.default)('#'+this.ID+' .matchTable tbody').html(bodyHtml);};var _this=this;this.paginationCallback=function(page){_this.RenderDom(page);_this.PaginationInit('#'+_this.ID,_this.PageData.PageCount,_this.paginationCallback);//更新UI
9000
8753
  };this.PaginationInit=function(id,maxPageNum,callback){//初始化分页
9001
8754
  var spanStr="";var currentPageNum=(0,_jquery2.default)(id+" .pagination").data("current");var lastPageNum=0;var showCountPage=5;//只显示5个数字项
9002
8755
  if(currentPageNum<showCountPage){//当前页小于预显示页数
@@ -9009,7 +8762,7 @@ spanStr+=i!=currentPageNum?"<span>"+i+"</span>":"<span class='active'>"+i+"</spa
9009
8762
  var text=(0,_jquery2.default)(this).text();JSConsole.Chart.Log('[::PaginationCurrentIndex text]',text);var currentPageNum=Number((0,_jquery2.default)(this).parent().data("current"));var maxPageNum=event.data.maxpage;var callback=event.data.Callback;var flag=1;if(text==="上一页"){flag=currentPageNum===1?currentPageNum:currentPageNum-1;}else if(text==="下一页"){flag=currentPageNum===maxPageNum?currentPageNum:currentPageNum+1;}else{flag=Number(text);}(0,_jquery2.default)(this).parent().data("current",flag);//将当前页存到dom上
9010
8763
  callback(flag);};this.PaginationMetaData=function(data){//假分页数据,每页10条数据
9011
8764
  // data = {NewData:{},MetaData:[],PageCount:0,Callback:null};
9012
- var newData={};var metaData=data.MetaData;var pageCount=data.PageCount;for(var _i45=0;_i45<pageCount;_i45++){var itemArr=[];for(var _j2=0;_j2<10;_j2++){var itemIndex=10*_i45+_j2;if(itemIndex<=metaData.length-1){var item=metaData[itemIndex];itemArr.push(item);}else{break;}}newData[_i45+1]=itemArr;}data.NewData=newData;};//显示
8765
+ var newData={};var metaData=data.MetaData;var pageCount=data.PageCount;for(var _i30=0;_i30<pageCount;_i30++){var itemArr=[];for(var _j=0;_j<10;_j++){var itemIndex=10*_i30+_j;if(itemIndex<=metaData.length-1){var item=metaData[itemIndex];itemArr.push(item);}else{break;}}newData[_i30+1]=itemArr;}data.NewData=newData;};//显示
9013
8766
  this.DoModal=function(event){var chart=event.data.Chart;if(this.ID==null)this.Create();//第1次 需要创建div
9014
8767
  this.MatchData=event.data.MatchData;this.Sample=event.data.Sample;this.HQChart=chart;this.BindData();//居中显示
9015
8768
  var border=chart.Frame.ChartBorder;var scrollPos=GetScrollPosition();var left=border.GetWidth()/2;var top=border.GetHeight()/2;this.Show(left,top,200,200);//显示
@@ -9798,11 +9551,11 @@ this.ErrorHandler=ErrorHandler;this.GetDataJobList=function()//下载数据任
9798
9551
  {var jobs=[];if(this.IsNeedSymbolData)jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_DATA});if(this.IsNeedIndexData)jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA});if(this.IsNeedLatestIndexData)jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA});//最新的个股行情数据
9799
9552
  for(var i=0;i<this.Dynainfo.length;++i){var item=this.Dynainfo[i];jobs.push(item);}//涨跌停家数统计
9800
9553
  for(var i in this.NeedBlockIncreaseData){jobs.push(this.NeedBlockIncreaseData[i]);}//加载融资融券
9801
- var _iteratorNormalCompletion16=true;var _didIteratorError16=false;var _iteratorError16=undefined;try{for(var _iterator16=(0,_getIterator3.default)(this.IsNeedMarginData),_step16;!(_iteratorNormalCompletion16=(_step16=_iterator16.next()).done);_iteratorNormalCompletion16=true){var jobID=_step16.value;jobs.push({ID:jobID});}//加载北上资金
9802
- }catch(err){_didIteratorError16=true;_iteratorError16=err;}finally{try{if(!_iteratorNormalCompletion16&&_iterator16.return){_iterator16.return();}}finally{if(_didIteratorError16){throw _iteratorError16;}}}for(var i in this.NeedHK2SHSZData){jobs.push(this.NeedHK2SHSZData[i]);}//加载新闻统计
9803
- var _iteratorNormalCompletion17=true;var _didIteratorError17=false;var _iteratorError17=undefined;try{for(var _iterator17=(0,_getIterator3.default)(this.IsNeedNewsAnalysisData),_step17;!(_iteratorNormalCompletion17=(_step17=_iterator17.next()).done);_iteratorNormalCompletion17=true){var jobID=_step17.value;jobs.push({ID:jobID});}//行情其他数据
9804
- }catch(err){_didIteratorError17=true;_iteratorError17=err;}finally{try{if(!_iteratorNormalCompletion17&&_iterator17.return){_iterator17.return();}}finally{if(_didIteratorError17){throw _iteratorError17;}}}var _iteratorNormalCompletion18=true;var _didIteratorError18=false;var _iteratorError18=undefined;try{for(var _iterator18=(0,_getIterator3.default)(this.IsNeedSymbolExData),_step18;!(_iteratorNormalCompletion18=(_step18=_iterator18.next()).done);_iteratorNormalCompletion18=true){var jobID=_step18.value;jobs.push({ID:jobID});}//获取截面数据下载任务
9805
- }catch(err){_didIteratorError18=true;_iteratorError18=err;}finally{try{if(!_iteratorNormalCompletion18&&_iterator18.return){_iterator18.return();}}finally{if(_didIteratorError18){throw _iteratorError18;}}}var _iteratorNormalCompletion19=true;var _didIteratorError19=false;var _iteratorError19=undefined;try{for(var _iterator19=(0,_getIterator3.default)(this.IsNeedSectionFinance),_step19;!(_iteratorNormalCompletion19=(_step19=_iterator19.next()).done);_iteratorNormalCompletion19=true){var item=_step19.value;jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_SF,SF:item});}}catch(err){_didIteratorError19=true;_iteratorError19=err;}finally{try{if(!_iteratorNormalCompletion19&&_iterator19.return){_iterator19.return();}}finally{if(_didIteratorError19){throw _iteratorError19;}}}for(var i in this.IsAPIData){var item=this.IsAPIData[i];jobs.push(item);}for(var i in this.ExecuteIndex){var item=this.ExecuteIndex[i];jobs.push(item);}for(var i in this.OtherSymbolData){var item=this.OtherSymbolData[i];jobs.push(item);}for(var i in this.PeriodSymbolData){var item=this.PeriodSymbolData[i];jobs.push(item);}for(var i in this.FunctionData){var item=this.FunctionData[i];jobs.push(item);}return jobs;};this.VerifySymbolVariable=function(varName,token){var setIndexName=new _set2.default(['INDEXA','INDEXC','INDEXH','INDEXL',"INDEXO","INDEXV",'INDEXDEC','INDEXADV']);if(setIndexName.has(varName)){this.IsNeedIndexData=true;return;}var setSymbolDataName=new _set2.default(['CLOSE','C','VOL','V','OPEN','O','HIGH','H','LOW','L','AMOUNT','AMO','VOLINSTK']);if(setSymbolDataName.has(varName)){this.IsNeedSymbolData=true;return;}if(varName==='VOLR'){if(!this.IsNeedSymbolExData.has(JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA))this.IsNeedSymbolExData.add(JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA);}//CAPITAL流通股本(手), EXCHANGE 换手率, TOTALCAPITAL 总股本(手)
9554
+ var _iteratorNormalCompletion15=true;var _didIteratorError15=false;var _iteratorError15=undefined;try{for(var _iterator15=(0,_getIterator3.default)(this.IsNeedMarginData),_step15;!(_iteratorNormalCompletion15=(_step15=_iterator15.next()).done);_iteratorNormalCompletion15=true){var jobID=_step15.value;jobs.push({ID:jobID});}//加载北上资金
9555
+ }catch(err){_didIteratorError15=true;_iteratorError15=err;}finally{try{if(!_iteratorNormalCompletion15&&_iterator15.return){_iterator15.return();}}finally{if(_didIteratorError15){throw _iteratorError15;}}}for(var i in this.NeedHK2SHSZData){jobs.push(this.NeedHK2SHSZData[i]);}//加载新闻统计
9556
+ var _iteratorNormalCompletion16=true;var _didIteratorError16=false;var _iteratorError16=undefined;try{for(var _iterator16=(0,_getIterator3.default)(this.IsNeedNewsAnalysisData),_step16;!(_iteratorNormalCompletion16=(_step16=_iterator16.next()).done);_iteratorNormalCompletion16=true){var jobID=_step16.value;jobs.push({ID:jobID});}//行情其他数据
9557
+ }catch(err){_didIteratorError16=true;_iteratorError16=err;}finally{try{if(!_iteratorNormalCompletion16&&_iterator16.return){_iterator16.return();}}finally{if(_didIteratorError16){throw _iteratorError16;}}}var _iteratorNormalCompletion17=true;var _didIteratorError17=false;var _iteratorError17=undefined;try{for(var _iterator17=(0,_getIterator3.default)(this.IsNeedSymbolExData),_step17;!(_iteratorNormalCompletion17=(_step17=_iterator17.next()).done);_iteratorNormalCompletion17=true){var jobID=_step17.value;jobs.push({ID:jobID});}//获取截面数据下载任务
9558
+ }catch(err){_didIteratorError17=true;_iteratorError17=err;}finally{try{if(!_iteratorNormalCompletion17&&_iterator17.return){_iterator17.return();}}finally{if(_didIteratorError17){throw _iteratorError17;}}}var _iteratorNormalCompletion18=true;var _didIteratorError18=false;var _iteratorError18=undefined;try{for(var _iterator18=(0,_getIterator3.default)(this.IsNeedSectionFinance),_step18;!(_iteratorNormalCompletion18=(_step18=_iterator18.next()).done);_iteratorNormalCompletion18=true){var item=_step18.value;jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_SF,SF:item});}}catch(err){_didIteratorError18=true;_iteratorError18=err;}finally{try{if(!_iteratorNormalCompletion18&&_iterator18.return){_iterator18.return();}}finally{if(_didIteratorError18){throw _iteratorError18;}}}for(var i in this.IsAPIData){var item=this.IsAPIData[i];jobs.push(item);}for(var i in this.ExecuteIndex){var item=this.ExecuteIndex[i];jobs.push(item);}for(var i in this.OtherSymbolData){var item=this.OtherSymbolData[i];jobs.push(item);}for(var i in this.PeriodSymbolData){var item=this.PeriodSymbolData[i];jobs.push(item);}for(var i in this.FunctionData){var item=this.FunctionData[i];jobs.push(item);}return jobs;};this.VerifySymbolVariable=function(varName,token){var setIndexName=new _set2.default(['INDEXA','INDEXC','INDEXH','INDEXL',"INDEXO","INDEXV",'INDEXDEC','INDEXADV']);if(setIndexName.has(varName)){this.IsNeedIndexData=true;return;}var setSymbolDataName=new _set2.default(['CLOSE','C','VOL','V','OPEN','O','HIGH','H','LOW','L','AMOUNT','AMO','VOLINSTK']);if(setSymbolDataName.has(varName)){this.IsNeedSymbolData=true;return;}if(varName==='VOLR'){if(!this.IsNeedSymbolExData.has(JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA))this.IsNeedSymbolExData.add(JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA);}//CAPITAL流通股本(手), EXCHANGE 换手率, TOTALCAPITAL 总股本(手)
9806
9559
  var setVariantName=new _set2.default(["CAPITAL","TOTALCAPITAL","EXCHANGE","HYBLOCK","DYBLOCK","GNBLOCK","FGBLOCK","ZSBLOCK","ZHBLOCK","ZDBLOCK","HYZSCODE","GNBLOCKNUM","FGBLOCKNUM","ZSBLOCKNUM","ZHBLOCKNUM","ZDBLOCKNUM","HYSYL","HYSJL","FROMOPEN"]);if(setVariantName.has(varName)){var item={ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VARIANT,VariantName:varName};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.FunctionData.push(item);return;}if(varName=='ADVANCE'||varName=="DECLINE"){var item={ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_INCREASE_DATA,IsSelfSymbol:true,FunctionName:varName};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.NeedBlockIncreaseData.push(item);return;}if(varName.indexOf('#')>0){var aryWrods=varName.split('#');if(aryWrods.length!=2){var errorMessage=varName+', \u8DE8\u5468\u671F\u8BED\u6CD5\u9519\u8BEF, \u53D8\u91CF\u540D#\u5468\u671F';this.ThrowUnexpectedToken(token,errorMessage);}else{var VAR_NAME=["C","CLOSE","O","OPEN","H","HIGH","L","LOW","AMOUNT","AMO","VOL","V","VOLINSTK"];if(VAR_NAME.indexOf(aryWrods[0])<0){var errorMessage=varName+', \u8DE8\u5468\u671F\u8BED\u6CD5\u9519\u8BEF, \u6570\u636E\u53EA\u652F\u6301\'OPEN,HIGH,LOW,CLOSE,VOL,AMOUNT,VOLINSTK\'';this.ThrowUnexpectedToken(token,errorMessage);}var VAR_PERIOD_NAME=["MIN1","MIN5","MIN15","MIN30","MIN60","MIN120","MIN240","DAY","WEEK","MONTH","SEASON","YEAR","HALFYEAR","WEEK2","MULTIDAY","DAY2","DAY3","DAY4","DAY5","DAY6","DAY7","DAY8","DAY9","DAY10","DAY11","DAY12","DAY13","DAY14","DAY15"];if(VAR_PERIOD_NAME.indexOf(aryWrods[1])<0){var errorMessage=varName+', \u8DE8\u5468\u671F\u8BED\u6CD5\u9519\u8BEF\uFF0C \u5468\u671F\u53EA\u652F\u6301\'MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH,SEASON,YEAR\'';this.ThrowUnexpectedToken(token,errorMessage);}var item={ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_PERIOD_DATA,VarName:varName,ValueName:aryWrods[0],PeriodName:aryWrods[1]};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.PeriodSymbolData.push(item);}return;}if(g_JSComplierResource.IsCustomVariant(varName))//自定义函数
9807
9560
  {var item={VariantName:varName,ID:JS_EXECUTE_JOB_ID.JOB_CUSTOM_VARIANT_DATA};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.FunctionData.push(item);return;}};this.VerifySymbolLiteral=function(value,token){if(IFrameSplitOperator.IsString(value)){if(value.indexOf('$')>0){var aryValue=value.split('$');if(aryValue.length!=2)return;var item={Literal:value,ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_OTHER_SYMBOL_DATA};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.OtherSymbolData.push(item);}}};this.VerifySymbolFunction=function(callee,args,token){//自定义函数 可以覆盖系统内置函数
9808
9561
  if(g_JSComplierResource.IsCustomFunction(callee.Name)){var item={FunctionName:callee.Name,ID:JS_EXECUTE_JOB_ID.JOB_CUSTOM_FUNCTION_DATA,Args:args};if(token)item.Token={Index:token.Start,Line:token.LineNumber};this.FunctionData.push(item);return;}if(callee.Name=='DYNAINFO'){var item={ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA,Args:args,FunctionName:callee.Name};this.Dynainfo.push(item);return;}//财务函数
@@ -9830,7 +9583,7 @@ this.ParseStatement=function(){var statement=void 0;switch(this.LookAhead.Type){
9830
9583
  this.ParseEmptyStatement=function(){var node=this.CreateNode();this.Expect(';');return this.Finalize(node,this.Node.EmptyStatement());};//https://tc39.github.io/ecma262/#sec-labelled-statements
9831
9584
  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
9832
9585
  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
9833
- stack.push(this.NextToken().Value);precedences.push(prec);markers.push(this.LookAhead);stack.push(this.IsolateCoverGrammar(this.ParseExponentiationExpression));}var _i46=stack.length-1;expr=stack[_i46];var lastMarker=markers.pop();while(_i46>1){var marker=markers.pop();var lastLineStart=lastMarker&&lastMarker.LineStart;var _node=this.StartNode(marker,lastLineStart);var _operator=stack[_i46-1];expr=this.Finalize(_node,this.Node.BinaryExpression(_operator,stack[_i46-2],expr));_i46-=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
9586
+ stack.push(this.NextToken().Value);precedences.push(prec);markers.push(this.LookAhead);stack.push(this.IsolateCoverGrammar(this.ParseExponentiationExpression));}var _i31=stack.length-1;expr=stack[_i31];var lastMarker=markers.pop();while(_i31>1){var marker=markers.pop();var lastLineStart=lastMarker&&lastMarker.LineStart;var _node=this.StartNode(marker,lastLineStart);var _operator=stack[_i31-1];expr=this.Finalize(_node,this.Node.BinaryExpression(_operator,stack[_i31-2],expr));_i31-=2;lastMarker=marker;}}return expr;};this.ParseExponentiationExpression=function(){var startToken=this.LookAhead;var expr=this.InheritCoverGrammar(this.ParseUnaryExpression);return expr;};this.ParseUnaryExpression=function(){var expr=void 0;if(this.Match('+')||this.Match('-')){var node=this.StartNode(this.LookAhead);var token=this.NextToken();expr=this.InheritCoverGrammar(this.ParseUnaryExpression);expr=this.Finalize(node,this.Node.UnaryExpression(token.Value,expr));this.Context.IsAssignmentTarget=false;this.Context.IsBindingElement=false;}else{expr=this.ParseUpdateExpression();}return expr;};// https://tc39.github.io/ecma262/#sec-update-expressions
9834
9587
  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();//解析 调用参数
9835
9588
  expr=this.Finalize(this.StartNode(startToken),this.Node.CallExpression(expr,args,startToken));}else{break;}}return expr;};/*
9836
9589
  BooleanLiteral = 1,
@@ -9859,77 +9612,77 @@ this.LastMarker.Index=this.StartMarker.Index;this.LastMarker.Line=this.StartMark
9859
9612
  //相加
9860
9613
  this.Add=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相加
9861
9614
  if(isNumber&&isNumber2)return data+data2;//都是数组相加
9862
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i47=0;_i47<count;++_i47){result[_i47]=null;//初始化
9863
- if(_i47<data.length&&_i47<data2.length){if(this.IsNumber(data[_i47])&&this.IsNumber(data2[_i47]))result[_i47]=data[_i47]+data2[_i47];}}return result;}//单数据和数组相加
9864
- var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i48 in aryData){result[_i48]=null;if(this.IsNumber(aryData[_i48])&&this.IsNumber(value))result[_i48]=value+aryData[_i48];}return result;};//相减
9615
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i32=0;_i32<count;++_i32){result[_i32]=null;//初始化
9616
+ if(_i32<data.length&&_i32<data2.length){if(this.IsNumber(data[_i32])&&this.IsNumber(data2[_i32]))result[_i32]=data[_i32]+data2[_i32];}}return result;}//单数据和数组相加
9617
+ 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;};//相减
9865
9618
  this.Subtract=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相减
9866
9619
  if(isNumber&&isNumber2)return data-data2;//都是数组相减
9867
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i49=0;_i49<count;++_i49){result[_i49]=null;//初始化
9868
- if(_i49<data.length&&_i49<data2.length){if(this.IsNumber(data[_i49])&&this.IsNumber(data2[_i49]))result[_i49]=data[_i49]-data2[_i49];}}return result;}if(isNumber)//单数据-数组
9869
- {for(var _i50 in data2){result[_i50]=null;if(this.IsNumber(data)&&this.IsNumber(data2[_i50]))result[_i50]=data-data2[_i50];}}else//数组-单数据
9870
- {for(var _i51 in data){result[_i51]=null;if(this.IsNumber(data[_i51])&&this.IsNumber(data2))result[_i51]=data[_i51]-data2;}}return result;};//相乘
9620
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i34=0;_i34<count;++_i34){result[_i34]=null;//初始化
9621
+ if(_i34<data.length&&_i34<data2.length){if(this.IsNumber(data[_i34])&&this.IsNumber(data2[_i34]))result[_i34]=data[_i34]-data2[_i34];}}return result;}if(isNumber)//单数据-数组
9622
+ {for(var _i35 in data2){result[_i35]=null;if(this.IsNumber(data)&&this.IsNumber(data2[_i35]))result[_i35]=data-data2[_i35];}}else//数组-单数据
9623
+ {for(var _i36 in data){result[_i36]=null;if(this.IsNumber(data[_i36])&&this.IsNumber(data2))result[_i36]=data[_i36]-data2;}}return result;};//相乘
9871
9624
  this.Multiply=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相乘
9872
9625
  if(isNumber&&isNumber2)return data*data2;//都是数组相乘
9873
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i52=0;_i52<count;++_i52){result[_i52]=null;//初始化
9874
- if(_i52<data.length&&_i52<data2.length){if(this.IsNumber(data[_i52])&&this.IsNumber(data2[_i52]))result[_i52]=data[_i52]*data2[_i52];}}return result;}//单数据和数组相乘
9875
- var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i53 in aryData){result[_i53]=null;if(this.IsNumber(aryData[_i53])&&this.IsNumber(value))result[_i53]=value*aryData[_i53];}return result;};//相除
9626
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i37=0;_i37<count;++_i37){result[_i37]=null;//初始化
9627
+ if(_i37<data.length&&_i37<data2.length){if(this.IsNumber(data[_i37])&&this.IsNumber(data2[_i37]))result[_i37]=data[_i37]*data2[_i37];}}return result;}//单数据和数组相乘
9628
+ var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i38 in aryData){result[_i38]=null;if(this.IsNumber(aryData[_i38])&&this.IsNumber(value))result[_i38]=value*aryData[_i38];}return result;};//相除
9876
9629
  this.Divide=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相除
9877
9630
  if(isNumber&&isNumber2){if(data2==0)return null;//除0判断
9878
9631
  return data/data2;}//都是数组相除
9879
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i54=0;_i54<count;++_i54){result[_i54]=null;//初始化
9880
- if(_i54<data.length&&_i54<data2.length){if(this.IsNumber(data[_i54])&&this.IsDivideNumber(data2[_i54]))result[_i54]=data[_i54]/data2[_i54];}}return result;}if(isNumber)//单数据-数组
9881
- {for(var _i55 in data2){result[_i55]=null;if(this.IsNumber(data)&&this.IsDivideNumber(data2[_i55]))result[_i55]=data/data2[_i55];}}else//数组-单数据
9882
- {for(var _i56 in data){result[_i56]=null;if(this.IsNumber(data[_i56])&&this.IsDivideNumber(data2))result[_i56]=data[_i56]/data2;}}return result;};//大于
9632
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i39=0;_i39<count;++_i39){result[_i39]=null;//初始化
9633
+ if(_i39<data.length&&_i39<data2.length){if(this.IsNumber(data[_i39])&&this.IsDivideNumber(data2[_i39]))result[_i39]=data[_i39]/data2[_i39];}}return result;}if(isNumber)//单数据-数组
9634
+ {for(var _i40 in data2){result[_i40]=null;if(this.IsNumber(data)&&this.IsDivideNumber(data2[_i40]))result[_i40]=data/data2[_i40];}}else//数组-单数据
9635
+ {for(var _i41 in data){result[_i41]=null;if(this.IsNumber(data[_i41])&&this.IsDivideNumber(data2))result[_i41]=data[_i41]/data2;}}return result;};//大于
9883
9636
  this.GT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9884
9637
  if(isNumber&&isNumber2)return data>data2?1:0;//都是数组比较
9885
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i57=0;_i57<count;++_i57){result[_i57]=null;//初始化
9886
- if(_i57<data.length&&_i57<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i57]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i57]))continue;if(!isNaN(data[_i57])&&!isNaN(data2[_i57]))result[_i57]=data[_i57]>data2[_i57]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9887
- {for(var _i58 in data2){result[_i58]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i58]))continue;if(!isNaN(data)&&!isNaN(data2[_i58]))result[_i58]=data>data2[_i58]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9888
- {for(var _i59 in data){result[_i59]=null;if(!IFrameSplitOperator.IsVaild(data[_i59]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;if(!isNaN(data[_i59])&&!isNaN(data2))result[_i59]=data[_i59]>data2?1:0;}}return result;};//大于等于
9638
+ 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;//初始化
9639
+ if(_i42<data.length&&_i42<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i42]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i42]))continue;if(!isNaN(data[_i42])&&!isNaN(data2[_i42]))result[_i42]=data[_i42]>data2[_i42]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9640
+ {for(var _i43 in data2){result[_i43]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i43]))continue;if(!isNaN(data)&&!isNaN(data2[_i43]))result[_i43]=data>data2[_i43]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9641
+ {for(var _i44 in data){result[_i44]=null;if(!IFrameSplitOperator.IsVaild(data[_i44]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;if(!isNaN(data[_i44])&&!isNaN(data2))result[_i44]=data[_i44]>data2?1:0;}}return result;};//大于等于
9889
9642
  this.GTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9890
9643
  if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
9891
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i60=0;_i60<count;++_i60){result[_i60]=null;//初始化
9892
- if(_i60<data.length&&_i60<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i60]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i60]))continue;result[_i60]=data[_i60]>=data2[_i60]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9893
- {for(var _i61 in data2){result[_i61]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i61]))continue;result[_i61]=data>=data2[_i61]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9894
- {for(var _i62 in data){result[_i62]=null;if(!IFrameSplitOperator.IsVaild(data[_i62]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i62]=data[_i62]>=data2?1:0;}}return result;};//小于
9644
+ 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;//初始化
9645
+ 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))//单数据-数组
9646
+ {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))//数组-单数据
9647
+ {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;};//小于
9895
9648
  this.LT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9896
9649
  if(isNumber&&isNumber2)return data<data2?1:0;//都是数组比较
9897
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i63=0;_i63<count;++_i63){result[_i63]=null;//初始化
9898
- if(_i63<data.length&&_i63<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i63]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i63]))continue;result[_i63]=data[_i63]<data2[_i63]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9899
- {for(var _i64 in data2){result[_i64]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i64]))continue;result[_i64]=data<data2[_i64]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9900
- {for(var _i65 in data){result[_i65]=null;if(!IFrameSplitOperator.IsVaild(data[_i65]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i65]=data[_i65]<data2?1:0;}}return result;};//小于等于
9650
+ 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;//初始化
9651
+ 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))//单数据-数组
9652
+ {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))//数组-单数据
9653
+ {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;};//小于等于
9901
9654
  this.LTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9902
9655
  if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
9903
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i66=0;_i66<count;++_i66){result[_i66]=null;//初始化
9904
- if(_i66<data.length&&_i66<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i66]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i66]))continue;result[_i66]=data[_i66]<=data2[_i66]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9905
- {for(var _i67 in data2){result[_i67]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i67]))continue;result[_i67]=data<=data2[_i67]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9906
- {for(var _i68 in data){result[_i68]=null;if(!IFrameSplitOperator.IsVaild(data[_i68]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i68]=data[_i68]<=data2?1:0;}}return result;};//等于
9656
+ 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;//初始化
9657
+ if(_i51<data.length&&_i51<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i51]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i51]))continue;result[_i51]=data[_i51]<=data2[_i51]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9658
+ {for(var _i52 in data2){result[_i52]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i52]))continue;result[_i52]=data<=data2[_i52]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9659
+ {for(var _i53 in data){result[_i53]=null;if(!IFrameSplitOperator.IsVaild(data[_i53]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i53]=data[_i53]<=data2?1:0;}}return result;};//等于
9907
9660
  this.EQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9908
9661
  if(isNumber&&isNumber2)return data==data2?1:0;//都是数组比较
9909
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i69=0;_i69<count;++_i69){result[_i69]=null;//初始化
9910
- if(_i69<data.length&&_i69<data2.length){if(!isNaN(data[_i69])&&!isNaN(data2[_i69]))result[_i69]=data[_i69]==data2[_i69]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9911
- {for(var _i70 in data2){result[_i70]=null;if(!isNaN(data)&&!isNaN(data2[_i70]))result[_i70]=data==data2[_i70]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9912
- {for(var _i71 in data){result[_i71]=null;if(!isNaN(data[_i71])&&!isNaN(data2))result[_i71]=data[_i71]==data2?1:0;}}return result;};//不等于
9662
+ 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;//初始化
9663
+ 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))//单数据-数组
9664
+ {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))//数组-单数据
9665
+ {for(var _i56 in data){result[_i56]=null;if(!isNaN(data[_i56])&&!isNaN(data2))result[_i56]=data[_i56]==data2?1:0;}}return result;};//不等于
9913
9666
  this.NEQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9914
9667
  if(isNumber&&isNumber2)return data!=data2?1:0;//都是数组比较
9915
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i72=0;_i72<count;++_i72){result[_i72]=null;//初始化
9916
- if(_i72<data.length&&_i72<data2.length){if(!isNaN(data[_i72])&&!isNaN(data2[_i72]))result[_i72]=data[_i72]!=data2[_i72]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9917
- {for(var _i73 in data2){result[_i73]=null;if(!isNaN(data)&&!isNaN(data2[_i73]))result[_i73]=data!=data2[_i73]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9918
- {for(var _i74 in data){result[_i74]=null;if(!isNaN(data[_i74])&&!isNaN(data2))result[_i74]=data[_i74]!=data2?1:0;}}return result;};//AND &&
9668
+ var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i57=0;_i57<count;++_i57){result[_i57]=null;//初始化
9669
+ if(_i57<data.length&&_i57<data2.length){if(!isNaN(data[_i57])&&!isNaN(data2[_i57]))result[_i57]=data[_i57]!=data2[_i57]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9670
+ {for(var _i58 in data2){result[_i58]=null;if(!isNaN(data)&&!isNaN(data2[_i58]))result[_i58]=data!=data2[_i58]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9671
+ {for(var _i59 in data){result[_i59]=null;if(!isNaN(data[_i59])&&!isNaN(data2))result[_i59]=data[_i59]!=data2?1:0;}}return result;};//AND &&
9919
9672
  this.And=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值 &&
9920
9673
  if(isNumber&&isNumber2)return data&&data2?1:0;//都是数组 &&
9921
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i75=0;_i75<count;++_i75){result[_i75]=null;//初始化
9922
- if(_i75<data.length&&_i75<data2.length){if(!isNaN(data[_i75])&&!isNaN(data2[_i75]))result[_i75]=data[_i75]&&data2[_i75]?1:0;}}return result;}if(isNumber)//单数据-数组
9923
- {for(var _i76 in data2){result[_i76]=null;if(!isNaN(data)&&!isNaN(data2[_i76]))result[_i76]=data&&data2[_i76]?1:0;}}else//数组-单数据
9924
- {for(var _i77 in data){result[_i77]=null;if(!isNaN(data[_i77])&&!isNaN(data2))result[_i77]=data[_i77]&&data2?1:0;}}return result;};//OR ||
9674
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i60=0;_i60<count;++_i60){result[_i60]=null;//初始化
9675
+ 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)//单数据-数组
9676
+ {for(var _i61 in data2){result[_i61]=null;if(!isNaN(data)&&!isNaN(data2[_i61]))result[_i61]=data&&data2[_i61]?1:0;}}else//数组-单数据
9677
+ {for(var _i62 in data){result[_i62]=null;if(!isNaN(data[_i62])&&!isNaN(data2))result[_i62]=data[_i62]&&data2?1:0;}}return result;};//OR ||
9925
9678
  this.Or=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值 &&
9926
9679
  if(isNumber&&isNumber2)return data||data2?1:0;//都是数组 &&
9927
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i78=0;_i78<count;++_i78){result[_i78]=null;//初始化
9928
- if(_i78<data.length&&_i78<data2.length){if(!isNaN(data[_i78])&&!isNaN(data2[_i78]))result[_i78]=data[_i78]||data2[_i78]?1:0;}}return result;}if(isNumber)//单数据-数组
9929
- {for(var _i79 in data2){result[_i79]=null;if(!isNaN(data)&&!isNaN(data2[_i79]))result[_i79]=data||data2[_i79]?1:0;}}else//数组-单数据
9930
- {for(var _i80 in data){result[_i80]=null;if(!isNaN(data[_i80])&&!isNaN(data2))result[_i80]=data[_i80]||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
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i63=0;_i63<count;++_i63){result[_i63]=null;//初始化
9681
+ if(_i63<data.length&&_i63<data2.length){if(!isNaN(data[_i63])&&!isNaN(data2[_i63]))result[_i63]=data[_i63]||data2[_i63]?1:0;}}return result;}if(isNumber)//单数据-数组
9682
+ {for(var _i64 in data2){result[_i64]=null;if(!isNaN(data)&&!isNaN(data2[_i64]))result[_i64]=data||data2[_i64]?1:0;}}else//数组-单数据
9683
+ {for(var _i65 in data){result[_i65]=null;if(!isNaN(data[_i65])&&!isNaN(data2))result[_i65]=data[_i65]||data2?1:0;}}return result;};this.IF=function(data,trueData,falseData){var isNumber=this.IsNumber(data);var isNumber2=this.IsNumber(trueData);var isNumber3=this.IsNumber(falseData);var isArray2=Array.isArray(trueData);var isArray3=Array.isArray(falseData);//单数值
9931
9684
  if(isNumber){if(isNumber2&&isNumber3)return data?trueData:falseData;return data?trueData:falseData;}//都是数组
9932
- var result=[];for(var _i81 in data){if(data[_i81]){if(isNumber2)result[_i81]=trueData;else if(isArray2)result[_i81]=trueData[_i81];else result[_i81]=null;}else{if(isNumber3)result[_i81]=falseData;else if(isArray3)result[_i81]=falseData[_i81];else result[_i81]=null;}}return result;};/*
9685
+ var result=[];for(var _i66 in data){if(data[_i66]){if(isNumber2)result[_i66]=trueData;else if(isArray2)result[_i66]=trueData[_i66];else result[_i66]=null;}else{if(isNumber3)result[_i66]=falseData;else if(isArray3)result[_i66]=falseData[_i66];else result[_i66]=null;}}return result;};/*
9933
9686
  根据条件求不同的值,同IF判断相反.
9934
9687
  用法: IFN(X,A,B)若X不为0则返回B,否则返回A
9935
9688
  例如: IFN(CLOSE>OPEN,HIGH,LOW)表示该周期收阴则返回最高值,否则返回最低值
@@ -9940,37 +9693,37 @@ var result=[];for(var _i81 in data){if(data[_i81]){if(isNumber2)result[_i81]=tru
9940
9693
  //例如: REF(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
9941
9694
  this.REF=function(data,n){var result=[];if(typeof n=='number'){if(IFrameSplitOperator.IsNumber(data))//单数值
9942
9695
  {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);//平滑处理
9943
- var firstData=data[0];for(var _i82=0;_i82<n;++_i82){result.unshift(firstData);}}}else//n 为数组的情况
9944
- {for(var _i83=0;_i83<data.length;++_i83){result[_i83]=null;if(_i83>=n.length)continue;var value=n[_i83];if(value>=0&&value<=_i83)result[_i83]=data[_i83-value];else if(_i83)result[_i83]=result[_i83-1];else result[_i83]=data[_i83];}}return result;};//引用若干周期前的数据(未作平滑处理).
9696
+ var firstData=data[0];for(var _i67=0;_i67<n;++_i67){result.unshift(firstData);}}}else//n 为数组的情况
9697
+ {for(var _i68=0;_i68<data.length;++_i68){result[_i68]=null;if(_i68>=n.length)continue;var value=n[_i68];if(value>=0&&value<=_i68)result[_i68]=data[_i68-value];else if(_i68)result[_i68]=result[_i68-1];else result[_i68]=data[_i68];}}return result;};//引用若干周期前的数据(未作平滑处理).
9945
9698
  //用法: REFV(X,A),引用A周期前的X值.A可以是变量.
9946
9699
  //平滑处理:当引用不到数据时进行的操作.
9947
9700
  //例如: REFV(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
9948
- 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 _i84=0;_i84<n;++_i84){//不作平滑处理
9701
+ this.REFV=function(data,n){var result=[];if(typeof n=='number'){if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(0,data.length-n);for(var _i69=0;_i69<n;++_i69){//不作平滑处理
9949
9702
  result.unshift(null);}}else//n 为数组的情况
9950
- {for(var _i85=0;_i85<data.length;++_i85){result[_i85]=null;if(_i85>=n.length)continue;var value=n[_i85];if(value>=0&&value<=_i85)result[_i85]=data[_i85-value];}}return result;};//属于未来函数,引用若干周期后的数据(平滑处理).
9703
+ {for(var _i70=0;_i70<data.length;++_i70){result[_i70]=null;if(_i70>=n.length)continue;var value=n[_i70];if(value>=0&&value<=_i70)result[_i70]=data[_i70-value];}}return result;};//属于未来函数,引用若干周期后的数据(平滑处理).
9951
9704
  //用法: REFX(X,A),引用A周期后的X值.A可以是变量.
9952
9705
  //平滑处理:当引用不到数据时进行的操作.此函数中,平滑时使用上一个周期的引用值.
9953
9706
  //例如: TT:=IF(C>O,1,2);
9954
9707
  // REFX(CLOSE,TT);表示阳线引用下一周期的收盘价,阴线引用日后第二周期的收盘价.
9955
9708
  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];//取最后一个数据
9956
9709
  return result;}result=data.slice(n,data.length);//平滑处理
9957
- var lastData=data[data.length-1];for(var _i86=0;_i86<n;++_i86){result.push(lastData);}}else//n 为数组的情况
9958
- {var dataCount=data.length;for(var _i87=0;_i87<data.length;++_i87){result[_i87]=null;if(_i87>=n.length)continue;var value=n[_i87];if(value>=0&&value+_i87<dataCount)result[_i87]=data[_i87+value];else if(_i87)result[_i87]=result[_i87-1];else result[_i87]=data[_i87];}}return result;};//属于未来函数,引用若干周期后的数据(未作平滑处理).
9710
+ var lastData=data[data.length-1];for(var _i71=0;_i71<n;++_i71){result.push(lastData);}}else//n 为数组的情况
9711
+ {var dataCount=data.length;for(var _i72=0;_i72<data.length;++_i72){result[_i72]=null;if(_i72>=n.length)continue;var value=n[_i72];if(value>=0&&value+_i72<dataCount)result[_i72]=data[_i72+value];else if(_i72)result[_i72]=result[_i72-1];else result[_i72]=data[_i72];}}return result;};//属于未来函数,引用若干周期后的数据(未作平滑处理).
9959
9712
  //用法:REFXV(X,A),引用A周期后的X值.A可以是变量.
9960
9713
  //平滑处理:当引用不到数据时进行的操作.
9961
9714
  //例如: REFXV(CLOSE,1)表示下一周期的收盘价,在日线上就是明天收盘价
9962
9715
  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);//平滑处理
9963
- for(var _i88=0;_i88<n;++_i88){result.push(null);}}else//n 为数组的情况
9964
- {var dataCount=data.length;for(var _i89=0;_i89<data.length;++_i89){result[_i89]=null;if(_i89>=n.length)continue;var value=n[_i89];if(value>=0&&value+_i89<dataCount)result[_i89]=data[_i89+value];}}return result;};//求最大值.
9716
+ for(var _i73=0;_i73<n;++_i73){result.push(null);}}else//n 为数组的情况
9717
+ {var dataCount=data.length;for(var _i74=0;_i74<data.length;++_i74){result[_i74]=null;if(_i74>=n.length)continue;var value=n[_i74];if(value>=0&&value+_i74<dataCount)result[_i74]=data[_i74+value];}}return result;};//求最大值.
9965
9718
  //用法:MAX(A,B,C,D ..... ) 返回A,B,C,D ..... 中的较大值
9966
9719
  //例如: MAX(CLOSE-OPEN,0)表示若收盘价大于开盘价返回它们的差值,否则返回0
9967
9720
  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;};//求最小值.
9968
9721
  //用法:MIN(A,B, C, D .....)返回A,B, C ,D ......中的较小值
9969
9722
  //例如:MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值
9970
9723
  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;};//取正数
9971
- this.ABS=function(data){var result=[];for(var _i90 in data){result[_i90]=null;if(!isNaN(data[_i90]))result[_i90]=Math.abs(data[_i90]);}return result;};this.MA=function(data,dayCount){var result=[];if(dayCount<=0)return result;if(!Array.isArray(dayCount)){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);//复制一份数据出来
9972
- 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 _j3=dayCount-1;_j3>=0;--_j3){var value=data[i-_j3];if(!this.IsNumber(value)){value=preValue;//空数据就取上一个数据
9973
- data[i-_j3]=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)
9724
+ this.ABS=function(data){var result=[];for(var _i75 in data){result[_i75]=null;if(!isNaN(data[_i75]))result[_i75]=Math.abs(data[_i75]);}return result;};this.MA=function(data,dayCount){var result=[];if(dayCount<=0)return result;if(!Array.isArray(dayCount)){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);//复制一份数据出来
9725
+ for(var days=0;i<data.length;++i,++days){if(days<dayCount-1){result[i]=null;continue;}var preValue=data[i-(dayCount-1)];var _sum=0;for(var _j2=dayCount-1;_j2>=0;--_j2){var value=data[i-_j2];if(!this.IsNumber(value)){value=preValue;//空数据就取上一个数据
9726
+ data[i-_j2]=value;}else{preValue=value;}_sum+=value;}result[i]=_sum/dayCount;}}else{for(var i=0;i<data.length;++i){result[i]=null;if(i>=dayCount.length)continue;var sumCount=dayCount[i];if(!this.IsNumber(sumCount))continue;if(sumCount<=0)continue;var sum=0;var count=0;for(var j=i,k=0;j>=0&&k<sumCount;--j,++k){sum+=data[j];++count;}if(count>0)result[i]=sum/count;}}return result;};//指数平均数指标 EMA(close,10)
9974
9727
  //N 支持周期数组
9975
9728
  this.EMA=function(data,dayCount){var result=[];if(data.length<=0)return result;if(Array.isArray(dayCount)){for(var i=0;i<dayCount.length;++i){var period=dayCount[i];if(!this.IsNumber(period))continue;period=parseInt(period);//周期用整数
9976
9729
  if(period<=0)continue;if(period>i+1)period=i+1;//EMA(N) = 2/(N+1)*C + (N-1)/(N+1)*EMA', EMA'为前一天的ema
@@ -10092,14 +9845,14 @@ this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n
10092
9845
  求总的周期数。
10093
9846
  用法: BARSCOUNT(X) 第一个有效数据到当前的天数。
10094
9847
  例如: BARSCOUNT(CLOSE) 对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数。
10095
- */this.BARSCOUNT=function(data){var result=[];var days=null;for(var _i91 in data){result[_i91]=0;if(days==null){if(!this.IsNumber(data[_i91]))continue;days=0;}result[_i91]=days;++days;}return result;};//DEVSQ 数据偏差平方和
9848
+ */this.BARSCOUNT=function(data){var result=[];var days=null;for(var _i76 in data){result[_i76]=0;if(days==null){if(!this.IsNumber(data[_i76]))continue;days=0;}result[_i76]=days;++days;}return result;};//DEVSQ 数据偏差平方和
10096
9849
  //DEVSQ(X,N)  返回数据偏差平方和。
10097
9850
  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))//取最后一个有效数
10098
9851
  {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 取反
10099
9852
  //求逻辑非。
10100
9853
  //用法: NOT(X) 返回非X,即当X=0时返回1,否则返回0。
10101
9854
  //例如: NOT(ISUP) 表示平盘或收阴。
10102
- this.NOT=function(data){var isNumber=typeof data=='number';if(isNumber)return data?0:1;var result=[];for(var _i92 in data){result[_i92]=null;if(this.IsNumber(data[_i92]))result[_i92]=data[_i92]?0:1;}return result;};//FORCAST 线性回归预测值
9855
+ this.NOT=function(data){var isNumber=typeof data=='number';if(isNumber)return data?0:1;var result=[];for(var _i77 in data){result[_i77]=null;if(this.IsNumber(data[_i77]))result[_i77]=data[_i77]?0:1;}return result;};//FORCAST 线性回归预测值
10103
9856
  //FORCAST(X,N)  返回线性回归预测值。
10104
9857
  this.FORCAST=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
10105
9858
  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个周期内的时间序列三角移动平均
@@ -10116,9 +9869,9 @@ this.TSMA=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//
10116
9869
  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 线性回归斜率
10117
9870
  //SLOPE(X,N)  返回线性回归斜率。
10118
9871
  this.SLOPE=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
10119
- if(n<1||!data.length)return result;if(n>=data.length)return result;var start=0;for(var _i93=0;_i93<data.length;++_i93,++start){result[_i93]=null;if(this.IsNumber(data[_i93]))break;}var x=void 0,y=void 0,xy=void 0,xx=void 0;for(var _i94=start+n-1;_i94<data.length;++_i94){result[_i94]=null;x=y=xy=xx=0;for(var j=0;j<n&&j<=_i94;++j){x+=_i94-j;//数据索引相加
10120
- y+=data[_i94-j];//数据相加
10121
- }x=x/n;y=y/n;for(j=0;j<n&&j<=_i94;++j){xy+=(_i94-j-x)*(data[_i94-j]-y);xx+=(_i94-j-x)*(_i94-j-x);}if(xx)result[_i94]=xy/xx;else if(_i94)result[_i94]=result[_i94-1];}return result;};//STDP 总体标准差
9872
+ if(n<1||!data.length)return result;if(n>=data.length)return result;var start=0;for(var _i78=0;_i78<data.length;++_i78,++start){result[_i78]=null;if(this.IsNumber(data[_i78]))break;}var x=void 0,y=void 0,xy=void 0,xx=void 0;for(var _i79=start+n-1;_i79<data.length;++_i79){result[_i79]=null;x=y=xy=xx=0;for(var j=0;j<n&&j<=_i79;++j){x+=_i79-j;//数据索引相加
9873
+ y+=data[_i79-j];//数据相加
9874
+ }x=x/n;y=y/n;for(j=0;j<n&&j<=_i79;++j){xy+=(_i79-j-x)*(data[_i79-j]-y);xx+=(_i79-j-x)*(_i79-j-x);}if(xx)result[_i79]=xy/xx;else if(_i79)result[_i79]=result[_i79-1];}return result;};//STDP 总体标准差
10122
9875
  //STDP(X,N)  返回总体标准差。
10123
9876
  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 估算样本方差
10124
9877
  //VAR(X,N)  返回估算样本方差。
@@ -10126,13 +9879,13 @@ this.VAR=function(data,n){if(this.IsNumber(data)&&this.IsNumber(n))return 0;var
10126
9879
  //VARP(X,N)  返回总体样本方差 。
10127
9880
  this.VARP=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
10128
9881
  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;
10129
- 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 _i95=0;_i95<data.length;++_i95){result[_i95]=null;value=data[_i95];if(!this.IsNumber(value))continue;if(!isNumber2){if(_i95>=range.length)continue;rangeValue=range[_i95];}else{rangeValue=range;}if(!this.IsNumber(rangeValue))continue;if(!isNumber3){if(_i95>=range2.length)continue;rangeValue2=range2[_i95];}else{rangeValue2=range2;}if(!this.IsNumber(rangeValue2))continue;result[_i95]=value>Math.min(rangeValue,rangeValue2)&&value<Math.max(rangeValue,rangeValue2)?1:0;}return result;};/*
9882
+ this.RANGE=function(data,range,range2){var isNumber=typeof data=='number';var isNumber2=typeof range=='number';var isNumber3=typeof range2=='number';if(isNumber&&isNumber2&&isNumber3){if(data>Math.min(range,range2)&&data<Math.max(range,range2))return 1;else return 0;}var result=[];var value=void 0,rangeValue=void 0,rangValue2=void 0;for(var _i80=0;_i80<data.length;++_i80){result[_i80]=null;value=data[_i80];if(!this.IsNumber(value))continue;if(!isNumber2){if(_i80>=range.length)continue;rangeValue=range[_i80];}else{rangeValue=range;}if(!this.IsNumber(rangeValue))continue;if(!isNumber3){if(_i80>=range2.length)continue;rangeValue2=range2[_i80];}else{rangeValue2=range2;}if(!this.IsNumber(rangeValue2))continue;result[_i80]=value>Math.min(rangeValue,rangeValue2)&&value<Math.max(rangeValue,rangeValue2)?1:0;}return result;};/*
10130
9883
  是否存在.
10131
9884
  例如: EXIST(CLOSE>OPEN,10)
10132
9885
  表示10日内存在着阳线
10133
9886
  */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)//初始化
10134
9887
  {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;//最新满足条件的数据索引
10135
- var result=[];var value;for(var _i96=0;_i96<data.length;++_i96){result[_i96]=null;value=data[_i96];if(this.IsNumber(value)&&value>0)latestID=_i96;if(latestID!=null&&_i96-latestID<n)result[_i96]=1;else result[_i96]=0;}return result;}};/*
9888
+ var result=[];var value;for(var _i81=0;_i81<data.length;++_i81){result[_i81]=null;value=data[_i81];if(this.IsNumber(value)&&value>0)latestID=_i81;if(latestID!=null&&_i81-latestID<n)result[_i81]=1;else result[_i81]=0;}return result;}};/*
10136
9889
  过滤连续出现的信号.
10137
9890
  用法:TFILTER(买入条件,卖出条件,N);过滤掉买入(卖出)信号发出后,下一个反向信号发出前的所有买入(卖出)信号.
10138
9891
 
@@ -10153,7 +9906,7 @@ var result=[];var value;for(var _i96=0;_i96<data.length;++_i96){result[_i96]=nul
10153
9906
  用法:FILTER(X,N):X满足条件后,将其后N周期内的数据置为0,N为常量.
10154
9907
  例如:
10155
9908
  FILTER(CLOSE>OPEN,5)查找阳线,5天内再次出现的阳线不被记录在内
10156
- */this.FILTER=function(data,n){var result=[];for(var _i97=0,_j4=0;_i97<data.length;++_i97){if(data[_i97]){result[_i97]=1;for(_j4=0;_j4<n&&_j4+_i97+1<data.length;++_j4){result[_j4+_i97+1]=0;}_i97+=n;}else{result[_i97]=0;}}return result;};this.BARSLAST=function(data){var result=[];if(!data)return result;var day=null;for(var _i98=0;_i98<data.length;++_i98){result[_i98]=null;if(data[_i98]>0)day=0;else if(day!=null)++day;if(day!=null)result[_i98]=day;}return result;};/*
9909
+ */this.FILTER=function(data,n){var result=[];for(var _i82=0,_j3=0;_i82<data.length;++_i82){if(data[_i82]){result[_i82]=1;for(_j3=0;_j3<n&&_j3+_i82+1<data.length;++_j3){result[_j3+_i82+1]=0;}_i82+=n;}else{result[_i82]=0;}}return result;};this.BARSLAST=function(data){var result=[];if(!data)return result;var day=null;for(var _i83=0;_i83<data.length;++_i83){result[_i83]=null;if(data[_i83]>0)day=0;else if(day!=null)++day;if(day!=null)result[_i83]=day;}return result;};/*
10157
9910
  N周期内第一个条件成立到当前的周期数.
10158
9911
  用法:
10159
9912
  BARSSINCEN(X,N):N周期内第一次X不为0到现在的天数,N为常量
@@ -10165,7 +9918,7 @@ var result=[];var value;for(var _i96=0;_i96<data.length;++_i96){result[_i96]=nul
10165
9918
  BARSSINCE(X):第一次X不为0到现在的天数
10166
9919
  例如:
10167
9920
  BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数
10168
- */this.BARSSINCE=function(data){var result=[];var day=null;for(var _i99=0;_i99<data.length;++_i99){result[_i99]=null;if(day==null){if(data[_i99])day=0;}else{++day;}if(day)result[_i99]=day;}return result;};/*三角函数调用 func 三角函数
9921
+ */this.BARSSINCE=function(data){var result=[];var day=null;for(var _i84=0;_i84<data.length;++_i84){result[_i84]=null;if(day==null){if(data[_i84])day=0;}else{++day;}if(day)result[_i84]=day;}return result;};/*三角函数调用 func 三角函数
10169
9922
  反正切值. 用法: ATAN(X)返回X的反正切值
10170
9923
  余弦值. 用法: COS(X)返回X的余弦值
10171
9924
  正弦值. 用法: SIN(X)返回X的正弦值
@@ -10175,9 +9928,9 @@ var result=[];var value;for(var _i96=0;_i96<data.length;++_i96){result[_i96]=nul
10175
9928
  求10为底的对数. 用法: LOG(X)取得X的对数 例如: LOG(100)等于2
10176
9929
  指数. 用法: EXP(X)为e的X次幂 例如: EXP(CLOSE)返回e的CLOSE次幂
10177
9930
  开平方. 用法: SQRT(X)为X的平方根 例如: SQRT(CLOSE)收盘价的平方根
10178
- */this.Trigonometric=function(data,func){if(!Array.isArray(data)){if(this.IsNumber(data))return func(data);return null;}else{var result=[];for(var _i100 in data){var item=data[_i100];if(this.IsNumber(item))result[_i100]=func(item);else result[_i100]=null;}return result;}};//反正弦值. 用法: ASIN(X)返回X的反正弦值
10179
- this.ASIN=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i101 in data){var item=data[_i101];result[_i101]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i101]=Math.asin(item);}else if(_i101-1>=0){var preItem=result[_i101-1];if(this.IsNumber(preItem))result[_i101]=preItem;}}}return result;}};//反余弦值. 用法: ACOS(X)返回X的反余弦值
10180
- this.ACOS=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i102 in data){var item=data[_i102];result[_i102]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i102]=Math.acos(item);}else if(_i102-1>=0){var preItem=result[_i102-1];if(this.IsNumber(preItem))result[_i102]=preItem;}}}return result;}};/*
9931
+ */this.Trigonometric=function(data,func){if(!Array.isArray(data)){if(this.IsNumber(data))return func(data);return null;}else{var result=[];for(var _i85 in data){var item=data[_i85];if(this.IsNumber(item))result[_i85]=func(item);else result[_i85]=null;}return result;}};//反正弦值. 用法: ASIN(X)返回X的反正弦值
9932
+ this.ASIN=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i86 in data){var item=data[_i86];result[_i86]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i86]=Math.asin(item);}else if(_i86-1>=0){var preItem=result[_i86-1];if(this.IsNumber(preItem))result[_i86]=preItem;}}}return result;}};//反余弦值. 用法: ACOS(X)返回X的反余弦值
9933
+ this.ACOS=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i87 in data){var item=data[_i87];result[_i87]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i87]=Math.acos(item);}else if(_i87-1>=0){var preItem=result[_i87-1];if(this.IsNumber(preItem))result[_i87]=preItem;}}}return result;}};/*
10181
9934
  LAST(X,A,B):持续存在.
10182
9935
  用法:
10183
9936
  LAST(CLOSE>OPEN,10,5)
@@ -10380,42 +10133,42 @@ for(var i=startDay,j=0;i<kData.length;++i){var start=i-startDay;if(start<0)conti
10380
10133
  */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});//流通股本
10381
10134
  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;};//计算截至到某一天的历史所有筹码
10382
10135
  this.CalculateChip=function(index,exchangeData,hisData,dRate){var result={Min:null,Max:null,Data:[]};var seed=1;//筹码历史衰减换手系数
10383
- var max=null,min=null;for(var _i103=index;_i103>=0;--_i103){var _item16={};//Vol:量 High:最高 Low:最低
10384
- var kData=hisData[_i103];if(_i103==index)_item16.Vol=kData.Vol*exchangeData[_i103];else _item16.Vol=kData.Vol*seed;_item16.Date=kData.Date;_item16.High=kData.High;_item16.Low=kData.Low;if(max==null)max=_item16.High;else if(max<_item16.High)max=_item16.High;if(min==null)min=_item16.Low;else if(min<_item16.Low)min=_item16.Low;result.Data[_i103]=_item16;seed*=1-exchangeData[_i103]/100*dRate;//换手率累乘
10136
+ var max=null,min=null;for(var _i88=index;_i88>=0;--_i88){var _item10={};//Vol:量 High:最高 Low:最低
10137
+ var kData=hisData[_i88];if(_i88==index)_item10.Vol=kData.Vol*exchangeData[_i88];else _item10.Vol=kData.Vol*seed;_item10.Date=kData.Date;_item10.High=kData.High;_item10.Low=kData.Low;if(max==null)max=_item10.High;else if(max<_item10.High)max=_item10.High;if(min==null)min=_item10.Low;else if(min<_item10.Low)min=_item10.Low;result.Data[_i88]=_item10;seed*=1-exchangeData[_i88]/100*dRate;//换手率累乘
10385
10138
  }result.Max=max;result.Min=min;return result;};/*
10386
10139
  返回是否连涨周期数.
10387
10140
  用法:
10388
10141
  UPNDAY(CLOSE,M)
10389
10142
  表示连涨M个周期,M为常量
10390
- */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 _i104=0;_i104<data.length;++_i104){result[_i104]=0;if(_i104-1<0)continue;if(!this.IsNumber(data[_i104])||!this.IsNumber(data[_i104-1]))//无效数都不算连涨
10391
- {days=0;continue;}if(data[_i104]>data[_i104-1])++days;else days=0;if(days==n){result[_i104]=1;--days;}}return result;};/*
10143
+ */this.UPNDAY=function(data,n){var result=[];if(n<1)return result;if(data==null||n>data.length)return result;var days=0;for(var _i89=0;_i89<data.length;++_i89){result[_i89]=0;if(_i89-1<0)continue;if(!this.IsNumber(data[_i89])||!this.IsNumber(data[_i89-1]))//无效数都不算连涨
10144
+ {days=0;continue;}if(data[_i89]>data[_i89-1])++days;else days=0;if(days==n){result[_i89]=1;--days;}}return result;};/*
10392
10145
  返回是否连跌周期.
10393
10146
  用法:
10394
10147
  DOWNNDAY(CLOSE,M)
10395
10148
  表示连跌M个周期,M为常量
10396
- */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 _i105=0;_i105<data.length;++_i105){result[_i105]=0;if(_i105-1<0)continue;if(!this.IsNumber(data[_i105])||!this.IsNumber(data[_i105-1]))//无效数都不算连涨
10397
- {days=0;continue;}if(data[_i105]<data[_i105-1])++days;else days=0;if(days==n){result[_i105]=1;--days;}}return result;};/*
10149
+ */this.DOWNNDAY=function(data,n){var result=[];if(n<1)return result;if(data==null||n>data.length)return result;var days=0;for(var _i90=0;_i90<data.length;++_i90){result[_i90]=0;if(_i90-1<0)continue;if(!this.IsNumber(data[_i90])||!this.IsNumber(data[_i90-1]))//无效数都不算连涨
10150
+ {days=0;continue;}if(data[_i90]<data[_i90-1])++days;else days=0;if(days==n){result[_i90]=1;--days;}}return result;};/*
10398
10151
  返回是否持续存在X>Y
10399
10152
  用法:
10400
10153
  NDAY(CLOSE,OPEN,3)
10401
10154
  表示连续3日收阳线
10402
- */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 _i106=0;_i106<count;++_i106){result[_i106]=0;if(_i106>=data.length||_i106>=data2.length)continue;if(!this.IsNumber(data[_i106])||!this.IsNumber(data2[_i106])){days=0;continue;}if(data[_i106]>data2[_i106])++days;else days=0;if(days==n){result[_i106]=1;--days;}}}else if(Array.isArray(data)&&!Array.isArray(data2)){if(n>=data.length||!this.IsNumber(data2))return;var days=0;for(var _i107 in data){result[_i107]=0;if(!this.IsNumber(data[_i107])){days=0;continue;}if(data[_i107]>data2)++days;else days=0;if(days==n){result[_i107]=1;--days;}}}else if(!Array.isArray(data)&&Array.isArray(data2)){if(n>=data2.length||!this.IsNumber(data))return;var days=0;for(var _i108 in data2){result[_i108]=0;if(!this.IsNumber(data2[_i108])){days=0;continue;}if(data>data2[_i108])++days;else days=0;if(days==n){result[_i108]=1;--days;}}}return result;};/*
10155
+ */this.NDAY=function(data,data2,n){var result=[];if(n<1)return result;if(!Array.isArray(data)&&!Array.isArray(data2))return result;if(data==null||data2==null)return result;if(Array.isArray(data)&&Array.isArray(data2)){if(n>=data.length||n>=data2.length)return result;var count=Math.max(data.length,data2.length);var days=0;for(var _i91=0;_i91<count;++_i91){result[_i91]=0;if(_i91>=data.length||_i91>=data2.length)continue;if(!this.IsNumber(data[_i91])||!this.IsNumber(data2[_i91])){days=0;continue;}if(data[_i91]>data2[_i91])++days;else days=0;if(days==n){result[_i91]=1;--days;}}}else if(Array.isArray(data)&&!Array.isArray(data2)){if(n>=data.length||!this.IsNumber(data2))return;var days=0;for(var _i92 in data){result[_i92]=0;if(!this.IsNumber(data[_i92])){days=0;continue;}if(data[_i92]>data2)++days;else days=0;if(days==n){result[_i92]=1;--days;}}}else if(!Array.isArray(data)&&Array.isArray(data2)){if(n>=data2.length||!this.IsNumber(data))return;var days=0;for(var _i93 in data2){result[_i93]=0;if(!this.IsNumber(data2[_i93])){days=0;continue;}if(data>data2[_i93])++days;else days=0;if(days==n){result[_i93]=1;--days;}}}return result;};/*
10403
10156
  两条线维持一定周期后交叉.
10404
10157
  用法:LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0
10405
- */this.LONGCROSS=function(data,data2,n){var result=[];var count=Math.max(data.length,data2.length);for(var _i109=0;_i109<count;++_i109){result[_i109]=0;if(_i109-1<0)continue;if(_i109>=data.length||_i109>=data2.length)continue;if(!this.IsNumber(data[_i109])||!this.IsNumber(data2[_i109])||!this.IsNumber(data[_i109-1])||!this.IsNumber(data2[_i109-1]))continue;if(data[_i109]>data2[_i109]&&data[_i109-1]<data2[_i109-1])result[_i109]=1;}for(var _i110=0,_j5=0;_i110<count;++_i110){if(!result[_i110])continue;for(_j5=1;_j5<=n&&_i110-_j5>=0;++_j5){if(data[_i110-_j5]>=data2[_i110-_j5]){result[_i110]=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;}};/*
10158
+ */this.LONGCROSS=function(data,data2,n){var result=[];var count=Math.max(data.length,data2.length);for(var _i94=0;_i94<count;++_i94){result[_i94]=0;if(_i94-1<0)continue;if(_i94>=data.length||_i94>=data2.length)continue;if(!this.IsNumber(data[_i94])||!this.IsNumber(data2[_i94])||!this.IsNumber(data[_i94-1])||!this.IsNumber(data2[_i94-1]))continue;if(data[_i94]>data2[_i94]&&data[_i94-1]<data2[_i94-1])result[_i94]=1;}for(var _i95=0,_j4=0;_i95<count;++_i95){if(!result[_i95])continue;for(_j4=1;_j4<=n&&_i95-_j4>=0;++_j4){if(data[_i95-_j4]>=data2[_i95-_j4]){result[_i95]=0;break;}}}return result;};this.ISVALID=function(data){if(Array.isArray(data)){var result=[];for(var i=0;i<data.length;++i){var item=data[i];if(item)result[i]=1;else result[i]=0;}return result;}else{if(data)return 1;else return 0;}};/*
10406
10159
  EXISTR(X,A,B):是否存在(前几日到前几日间).
10407
10160
  例如: EXISTR(CLOSE>OPEN,10,5)
10408
10161
  表示从前10日内到前5日内存在着阳线
10409
10162
  若A为0,表示从第一天开始,B为0,表示到最后日止
10410
- */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 _i111=0,_j6=0;_i111<data.length;++_i111){result[_i111]=null;if(_i111-n<0||_i111-n2<0)continue;result[_i111]=0;for(_j6=n;_j6>=n2;--_j6){var value=data[_i111-_j6];if(this.IsNumber(value)&&value){result[_i111]=1;break;}}}return result;};/*
10163
+ */this.EXISTR=function(data,n,n2){var result=[];if(!Array.isArray(data))return result;n=parseInt(n);n2=parseInt(n2);if(n<=0)n=data.length;if(n2<=0)n2=1;if(n2>n)return result;var result=[];var value;for(var _i96=0,_j5=0;_i96<data.length;++_i96){result[_i96]=null;if(_i96-n<0||_i96-n2<0)continue;result[_i96]=0;for(_j5=n;_j5>=n2;--_j5){var value=data[_i96-_j5];if(this.IsNumber(value)&&value){result[_i96]=1;break;}}}return result;};/*
10411
10164
  RELATE(X,Y,N) 返回X和Y的N周期的相关系数
10412
10165
  RELATE(X,Y,N)=(∑[(Xi-Avg(X))(Yi-Avg(y))])/N ÷ √((∑(Xi-Avg(X))^2)/N * (∑(Yi-Avg(Y))^2)/N)
10413
10166
  其中 avg(x)表示x的N周期均值: avg(X) = (∑Xi)/N
10414
10167
  √(...)表示开平方
10415
- */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 _i112=0,_j7=0;_i112<count;++_i112){result[_i112]=null;if(_i112>=data.length||_i112>=data2.length||_i112>=dataAverage.length||_i112>=data2Average.length)continue;var average=dataAverage[_i112];var average2=data2Average[_i112];var total=0,total2=0,total3=0;for(_j7=_i112-n+1;_j7<=_i112;++_j7){total+=(data[_j7]-average)*(data2[_j7]-average2);//∑[(Xi-Avg(X))(Yi-Avg(y))])
10416
- total2+=Math.pow(data[_j7]-average,2);//∑(Xi-Avg(X))^2
10417
- total3+=Math.pow(data2[_j7]-average2,2);//∑(Yi-Avg(Y))^2)
10418
- }result[_i112]=total/n/(Math.sqrt(total2/n)*Math.sqrt(total3/n));}return result;};//计算数组n周期内的均值
10168
+ */this.RELATE=function(data,data2,n){var result=[];if(n<1)n=1;if(!Array.isArray(data)||!Array.isArray(data2))return result;var dataAverage=this.CalculateAverage(data,n);var data2Average=this.CalculateAverage(data2,n);var count=Math.max(data.length,data2.length);for(var _i97=0,_j6=0;_i97<count;++_i97){result[_i97]=null;if(_i97>=data.length||_i97>=data2.length||_i97>=dataAverage.length||_i97>=data2Average.length)continue;var average=dataAverage[_i97];var average2=data2Average[_i97];var total=0,total2=0,total3=0;for(_j6=_i97-n+1;_j6<=_i97;++_j6){total+=(data[_j6]-average)*(data2[_j6]-average2);//∑[(Xi-Avg(X))(Yi-Avg(y))])
10169
+ total2+=Math.pow(data[_j6]-average,2);//∑(Xi-Avg(X))^2
10170
+ total3+=Math.pow(data2[_j6]-average2,2);//∑(Yi-Avg(Y))^2)
10171
+ }result[_i97]=total/n/(Math.sqrt(total2/n)*Math.sqrt(total3/n));}return result;};//计算数组n周期内的均值
10419
10172
  this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var total=0;for(var i=0;i<data.length;++i)//去掉开始的无效数
10420
10173
  {if(this.IsNumber(data[i]))break;}for(;i<data.length&&i<n;++i)//计算第1个周期的数据
10421
10174
  {result[i]=null;var value=data[i];if(!this.IsNumber(value))continue;total+=value;}result[i-1]=total/n;for(;i<data.length;++i)//计算后面的周期数据
@@ -10423,7 +10176,7 @@ this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var to
10423
10176
  if(!this.IsNumber(value))value=0;if(!this.IsNumber(preValue))preValue=0;total=total-preValue+value;//当前周期的数据 等于上一个周期数据 去掉上一个周期的第1个数据 加上这个周期的最后1个数据
10424
10177
  result[i]=total/n;}return result;};/*
10425
10178
  COVAR(X,Y,N) 返回X和Y的N周期的协方差
10426
- */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 _i113=0,_j8=0;_i113<count;++_i113){result[_i113]=null;if(_i113>=data.length||_i113>=data2.length||_i113>=dataAverage.length||_i113>=data2Average.length)continue;var average=dataAverage[_i113];var average2=data2Average[_i113];var total=0;for(_j8=_i113-n+1;_j8<=_i113;++_j8){total+=(data[_j8]-average)*(data2[_j8]-average2);}result[_i113]=total/n;}return result;};/*
10179
+ */this.COVAR=function(data,data2,n){if(this.IsNumber(data)||this.IsNumber(data2))return 0;var result=[];if(n<1)n=1;if(!Array.isArray(data)||!Array.isArray(data2))return result;var dataAverage=this.CalculateAverage(data,n);var data2Average=this.CalculateAverage(data2,n);var count=Math.max(data.length,data2.length);var count=Math.max(data.length,data2.length);for(var _i98=0,_j7=0;_i98<count;++_i98){result[_i98]=null;if(_i98>=data.length||_i98>=data2.length||_i98>=dataAverage.length||_i98>=data2Average.length)continue;var average=dataAverage[_i98];var average2=data2Average[_i98];var total=0;for(_j7=_i98-n+1;_j7<=_i98;++_j7){total+=(data[_j7]-average)*(data2[_j7]-average2);}result[_i98]=total/n;}return result;};/*
10427
10180
  求上一高点到当前的周期数.
10428
10181
  用法:
10429
10182
  HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计
@@ -10447,7 +10200,7 @@ for(var i=0;i<data.length;++i){result[i]=null;if(this.IsNumber(data[i])){nMin=i;
10447
10200
  公式=股票和指数协方差/指数方差
10448
10201
  */this.BETA=function(n){var result=[];var stockData=this.SymbolData.Data;var indexData=this.SymbolData.IndexData;if(n<=0)n=1;var stockProfit=[];//股票涨幅
10449
10202
  var indexProfit=[];//指数涨幅
10450
- for(var _i114=0;_i114<stockData.Data.length;++_i114){stockProfit[_i114]=0;indexProfit[_i114]=0;var stockItem=stockData.Data[_i114];var indexItem=indexData.Data[_i114];if(stockItem.Close>0&&stockItem.YClose>0)stockProfit[_i114]=(stockItem.Close-stockItem.YClose)/stockItem.YClose;if(indexItem.Close>0&&indexItem.YClose>0)indexProfit[_i114]=(indexItem.Close-indexItem.YClose)/indexItem.YClose;}//计算均值数组
10203
+ for(var _i99=0;_i99<stockData.Data.length;++_i99){stockProfit[_i99]=0;indexProfit[_i99]=0;var stockItem=stockData.Data[_i99];var indexItem=indexData.Data[_i99];if(stockItem.Close>0&&stockItem.YClose>0)stockProfit[_i99]=(stockItem.Close-stockItem.YClose)/stockItem.YClose;if(indexItem.Close>0&&indexItem.YClose>0)indexProfit[_i99]=(indexItem.Close-indexItem.YClose)/indexItem.YClose;}//计算均值数组
10451
10204
  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;//协方差
10452
10205
  var variance=0;//方差
10453
10206
  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;
@@ -10495,8 +10248,8 @@ this.CON2STR=function(data,n){var result=[];if(Array.isArray(data)){for(var i=da
10495
10248
  //用法: VAR2STR(C,3)表示取收盘价,以3位小数转为字符串
10496
10249
  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';//单数值
10497
10250
  if(isNumber&&isNumber2){return JSAlgorithm.MOD(data,data2);}else if(!isNumber&&!isNumber2)//都是数组相加
10498
- {var count=Math.max(data.length,data2.length);for(var _i115=0;_i115<count;++_i115){result[_i115]=null;//初始化
10499
- if(_i115<data.length&&_i115<data2.length){if(this.IsNumber(data[_i115])&&this.IsNumber(data2[_i115]))result[_i115]=JSAlgorithm.MOD(data[_i115],data2[_i115]);}}return result;}else if(isNumber&&!isNumber2)//单数字 数组
10251
+ {var count=Math.max(data.length,data2.length);for(var _i100=0;_i100<count;++_i100){result[_i100]=null;//初始化
10252
+ if(_i100<data.length&&_i100<data2.length){if(this.IsNumber(data[_i100])&&this.IsNumber(data2[_i100]))result[_i100]=JSAlgorithm.MOD(data[_i100],data2[_i100]);}}return result;}else if(isNumber&&!isNumber2)//单数字 数组
10500
10253
  {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)//数组 单数字
10501
10254
  {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;}};/*
10502
10255
  FRACPART(A) 取得小数部分
@@ -10630,7 +10383,7 @@ this.ALL=function(data,n){if(n<=0)n=1;var result=[];if(Array.isArray(data)){if(n
10630
10383
  }return result;};//格式化字符串 "{0}-{1}", C, O; 小数位数 {0:0.00}
10631
10384
  this.STRFORMAT=function(strFormat,args,node){var aryParam=strFormat.match(/{[0-9.:]+}/g);if(!IFrameSplitOperator.IsNonEmptyArray(aryParam))return null;var mapParam=new _map2.default();//key=index, value={Text}
10632
10385
  var maxIndex=-1;for(var i=0;i<aryParam.length;++i){var item=aryParam[i];if(item.length<3)continue;var value=item.slice(1,item.length-1);var index=-1,decimal=-1;if(value.indexOf(":")>0){var aryTemp=value.split(":");if(aryTemp){if(aryTemp[0])index=parseInt(aryTemp[0]);if(aryTemp[1]){if(aryTemp[1].indexOf(".")>=0){var zeroCount=0;var strTemp=aryTemp[1];for(var j=strTemp.length-1;j>=0;--j){if(strTemp[j]=="0")++zeroCount;else break;}if(zeroCount>0)decimal=zeroCount;}else if(aryTemp[1]=="0"){decimal=0;}}}}else{index=parseInt(value);}if(index<0)continue;var paramItem={Src:item,Index:index,Text:null,Decimal:null};if(decimal>=0)paramItem.Decimal=decimal;if(maxIndex<index)maxIndex=index;mapParam.set(index,paramItem);}var isArray=false;//是否输出数组字符串
10633
- var maxCount=0;for(var i=1;i<args.length;++i){var item=args[i];if(Array.isArray(item)){isArray=true;if(maxCount<item.length)maxCount=item.length;}}if(isArray){var result=[];for(var i=0;i<maxCount;++i){var strItem=strFormat;var _iteratorNormalCompletion20=true;var _didIteratorError20=false;var _iteratorError20=undefined;try{for(var _iterator20=(0,_getIterator3.default)(mapParam),_step20;!(_iteratorNormalCompletion20=(_step20=_iterator20.next()).done);_iteratorNormalCompletion20=true){var item=_step20.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){if(Array.isArray(paramItem)){var value=paramItem[i];if(value){if(IFrameSplitOperator.IsNumber(paramInfo.Decimal))text=''+value.toFixed(paramInfo.Decimal);else text=''+value;}}else{text=''+paramItem;}}strItem=strItem.replace(paramInfo.Src,text);}}catch(err){_didIteratorError20=true;_iteratorError20=err;}finally{try{if(!_iteratorNormalCompletion20&&_iterator20.return){_iterator20.return();}}finally{if(_didIteratorError20){throw _iteratorError20;}}}result[i]=strItem;}return result;}else{var result=strFormat;var _iteratorNormalCompletion21=true;var _didIteratorError21=false;var _iteratorError21=undefined;try{for(var _iterator21=(0,_getIterator3.default)(mapParam),_step21;!(_iteratorNormalCompletion21=(_step21=_iterator21.next()).done);_iteratorNormalCompletion21=true){var item=_step21.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){text=''+paramItem;}result=result.replace(paramInfo.Src,text);}}catch(err){_didIteratorError21=true;_iteratorError21=err;}finally{try{if(!_iteratorNormalCompletion21&&_iterator21.return){_iterator21.return();}}finally{if(_didIteratorError21){throw _iteratorError21;}}}return result;}};//函数调用
10386
+ var maxCount=0;for(var i=1;i<args.length;++i){var item=args[i];if(Array.isArray(item)){isArray=true;if(maxCount<item.length)maxCount=item.length;}}if(isArray){var result=[];for(var i=0;i<maxCount;++i){var strItem=strFormat;var _iteratorNormalCompletion19=true;var _didIteratorError19=false;var _iteratorError19=undefined;try{for(var _iterator19=(0,_getIterator3.default)(mapParam),_step19;!(_iteratorNormalCompletion19=(_step19=_iterator19.next()).done);_iteratorNormalCompletion19=true){var item=_step19.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){if(Array.isArray(paramItem)){var value=paramItem[i];if(value){if(IFrameSplitOperator.IsNumber(paramInfo.Decimal))text=''+value.toFixed(paramInfo.Decimal);else text=''+value;}}else{text=''+paramItem;}}strItem=strItem.replace(paramInfo.Src,text);}}catch(err){_didIteratorError19=true;_iteratorError19=err;}finally{try{if(!_iteratorNormalCompletion19&&_iterator19.return){_iterator19.return();}}finally{if(_didIteratorError19){throw _iteratorError19;}}}result[i]=strItem;}return result;}else{var result=strFormat;var _iteratorNormalCompletion20=true;var _didIteratorError20=false;var _iteratorError20=undefined;try{for(var _iterator20=(0,_getIterator3.default)(mapParam),_step20;!(_iteratorNormalCompletion20=(_step20=_iterator20.next()).done);_iteratorNormalCompletion20=true){var item=_step20.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){text=''+paramItem;}result=result.replace(paramInfo.Src,text);}}catch(err){_didIteratorError20=true;_iteratorError20=err;}finally{try{if(!_iteratorNormalCompletion20&&_iterator20.return){_iterator20.return();}}finally{if(_didIteratorError20){throw _iteratorError20;}}}return result;}};//函数调用
10634
10387
  this.CallFunction=function(name,args,node,symbolData){switch(name){case'MAX':case"MAX6":return this.MAX(args,node);case'MIN':case"MIN6":return this.MIN(args,node);case'REF':return this.REF(args[0],args[1]);case"REFV":return this.REFV(args[0],args[1]);case'REFX':return this.REFX(args[0],args[1]);case"REFXV":return this.REFXV(args[0],args[1]);case"REFX1"://文华函数
10635
10388
  return this.REFX(args[0],args[1]);case'ABS':return this.ABS(args[0]);case'MA':return this.MA(args[0],args[1]);case"EMA":return this.EMA(args[0],args[1]);case"SMA":return this.SMA(args[0],args[1],args[2]);case"DMA":return this.DMA(args[0],args[1]);case"XMA":return this.XMA(args[0],args[1]);case'EXPMA':return this.EXPMA(args[0],args[1]);case'EXPMEMA':return this.EXPMEMA(args[0],args[1]);case'COUNT':return this.COUNT(args[0],args[1]);case'LLV':return this.LLV(args[0],args[1]);case"LV":return this.LV(args[0],args[1]);case'LLVBARS':return this.LLVBARS(args[0],args[1]);case'HHV':return this.HHV(args[0],args[1]);case'HV':return this.HV(args[0],args[1]);case'HHVBARS':return this.HHVBARS(args[0],args[1]);case'MULAR':return this.MULAR(args[0],args[1]);case'CROSS':return this.CROSS(args[0],args[1]);case'LONGCROSS':return this.LONGCROSS(args[0],args[1],args[2]);case"ISVALID":return this.ISVALID(args[0]);case"CROSSDOWN":return this.CROSSDOWN(args[0],args[1]);case"CROSSUP":return this.CROSSUP(args[0],args[1]);case'AVEDEV':return this.AVEDEV(args[0],args[1]);case'STD':return this.STD(args[0],args[1]);case"STDDEV":return this.STDDEV(args[0],args[1]);case'IF':case'IFF':case"IFELSE":return this.IF(args[0],args[1],args[2]);case'IFN':return this.IFN(args[0],args[1],args[2]);case'NOT':return this.NOT(args[0]);case'SUM':return this.SUM(args[0],args[1]);case'RANGE':return this.RANGE(args[0],args[1],args[2]);case'EXIST':return this.EXIST(args[0],args[1]);case'EXISTR':return this.EXISTR(args[0],args[1],args[2]);case'FILTER':return this.FILTER(args[0],args[1]);case'TFILTER':return this.TFILTER(args[0],args[1],args[2]);case'SLOPE':return this.SLOPE(args[0],args[1]);case'BARSLAST':return this.BARSLAST(args[0]);case'BARSCOUNT':return this.BARSCOUNT(args[0]);case'BARSSINCEN':return this.BARSSINCEN(args[0],args[1]);case'BARSSINCE':return this.BARSSINCE(args[0]);case'LAST':return this.LAST(args[0],args[1],args[2]);case'EVERY':return this.EVERY(args[0],args[1]);case'DEVSQ':return this.DEVSQ(args[0],args[1]);case'ZIG':return this.ZIG(args[0],args[1]);case'TROUGHBARS':return this.TROUGHBARS(args[0],args[1],args[2]);case"TROUGH":return this.TROUGH(args[0],args[1],args[2]);case'PEAKBARS':return this.PEAKBARS(args[0],args[1],args[2]);case'PEAK':return this.PEAK(args[0],args[1],args[2]);case'COST':return this.COST(args[0]);case'WINNER':return this.WINNER(args[0],node);case'PPART':return this.PPART(args[0],node);case"COSTEX":return this.COSTEX(args[0],args[1],node);case"LWINNER":return this.LWINNER(args[0],args[1],node);case"PWINNER":return this.PWINNER(args[0],args[1],node);case'FORCAST':return this.FORCAST(args[0],args[1]);case"TSMA":return this.TSMA(args[0],args[1]);case'STDP':return this.STDP(args[0],args[1]);case'VAR':return this.VAR(args[0],args[1]);case'VARP':return this.VARP(args[0],args[1]);case'UPNDAY':return this.UPNDAY(args[0],args[1]);case'DOWNNDAY':return this.DOWNNDAY(args[0],args[1]);case'NDAY':return this.NDAY(args[0],args[1],args[2]);case'RELATE':return this.RELATE(args[0],args[1],args[2]);case'COVAR':return this.COVAR(args[0],args[1],args[2]);case'BETA':return this.BETA(args[0]);case'BETA2':return this.BETA2(args[0],args[1],args[2]);case'WMA':return this.WMA(args[0],args[1]);case'MEMA':return this.MEMA(args[0],args[1]);case'SUMBARS':return this.SUMBARS(args[0],args[1]);case'REVERSE':return this.REVERSE(args[0]);case'SAR':return this.SAR(args[0],args[1],args[2]);case'SARTURN':return this.SARTURN(args[0],args[1],args[2]);case'BACKSET':return this.BACKSET(args[0],args[1]);case'BETWEEN':return this.BETWEEN(args[0],args[1],args[2]);case'STRCAT':return this.STRCAT(args[0],args[1]);case'CON2STR':return this.CON2STR(args[0],args[1]);case"VAR2STR":return this.VAR2STR(args[0],args[1]);case"VARCAT":return this.VARCAT(args[0],args[1]);case"STRSPACE":return this.STRSPACE(args[0]);case"FINDSTR":return this.FINDSTR(args[0],args[1]);case"STRCMP":return this.STRCMP(args[0],args[1]);case"STRLEN":return this.STRLEN(args[0]);case"STRFORMAT":return this.STRFORMAT(args[0],args,node);case'DTPRICE':return this.DTPRICE(args[0],args[1]);case'ZTPRICE':return this.ZTPRICE(args[0],args[1]);case'MOD':return this.MOD(args[0],args[1]);case'POW':return this.POW(args[0],args[1]);case'CEILING':return this.CEILING(args[0]);case'FLOOR':return this.FLOOR(args[0]);case'FRACPART':return this.FRACPART(args[0]);case"SIGN":return this.SIGN(args[0]);case'BARSLASTCOUNT':return this.BARSLASTCOUNT(args[0]);case'INTPART':return this.INTPART(args[0]);case"CONST":return this.CONST(args[0]);case"TOPRANGE":return this.TOPRANGE(args[0]);case"LOWRANGE":return this.LOWRANGE(args[0]);case"FINDLOW":return this.FINDLOW(args[0],args[1],args[2],args[3]);case"FINDLOWBARS":return this.FINDLOWBARS(args[0],args[1],args[2],args[3]);case"FINDHIGH":return this.FINDHIGH(args[0],args[1],args[2],args[3]);case"FINDHIGHBARS":return this.FINDHIGHBARS(args[0],args[1],args[2],args[3]);case"BARSNEXT":return this.BARSNEXT(args[0]);case"HOD":return this.HOD(args[0],args[1]);case"LOD":return this.LOD(args[0],args[1]);case"AMA":return this.AMA(args[0],args[1]);case"TMA":return this.TMA(args[0],args[1],args[2]);case"ROUND":return this.ROUND(args[0]);case"ROUND2":return this.ROUND2(args[0],args[1]);case"TRMA":return this.TRMA(args[0],args[1]);case"VALUEWHEN":return this.VALUEWHEN(args[0],args[1]);case"HARMEAN":return this.HARMEAN(args[0],args[1]);case"DATETODAY":return this.DATETODAY(args[0]);case"DAYTODATE":return this.DAYTODATE(args[0]);case"TIMETOSEC":return this.TIMETOSEC(args[0]);case"SECTOTIME":return this.SECTOTIME(args[0]);case"ANY":return this.ANY(args[0],args[1]);case"ALL":return this.ALL(args[0],args[1]);case"TESTSKIP":return this.TESTSKIP(args[0],node);case"SUMBARS":return this.SUMBARS(args[0],args[1]);case"ALIGNRIGHT":return this.ALIGNRIGHT(args[0]);//三角函数
10636
10389
  case'ATAN':return this.Trigonometric(args[0],Math.atan);case'ACOS':return this.ACOS(args[0]);case'ASIN':return this.ASIN(args[0]);case'COS':return this.Trigonometric(args[0],Math.cos);case'SIN':return this.Trigonometric(args[0],Math.sin);case'TAN':return this.Trigonometric(args[0],Math.tan);case'LN':return this.Trigonometric(args[0],Math.log);case'LOG':return this.Trigonometric(args[0],_log2.default);case'EXP':return this.Trigonometric(args[0],Math.exp);case'SQRT':return this.Trigonometric(args[0],Math.sqrt);case"RAND":return this.RAND(args[0]);default:this.ThrowUnexpectedNode(node,'函数'+name+'不存在',name);}};//调用自定义函数 返回数据格式{Out:输出数据, Draw:绘图数据(可选)}
@@ -10663,20 +10416,20 @@ var IsNumber=typeof data=="number";var IsNumber2=typeof data2=="number";if(Array
10663
10416
  用法: DRAWLINE(COND1,PRICE1,COND2,PRICE2,EXPAND)
10664
10417
  当COND1条件满足时,在PRICE1位置画直线起点,当COND2条件满足时,在PRICE2位置画直线终点,EXPAND为延长类型。
10665
10418
  例如: DRAWLINE(HIGH>=HHV(HIGH,20),HIGH,LOW<=LLV(LOW,20),LOW,1) 表示在创20天新高与创20天新低之间画直线并且向右延长。
10666
- */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 _i116=0;_i116<count;++_i116){drawData[_i116]=null;if(_i116<condition.length&&_i116<condition2.length){if(bFirstPoint==false&&bSecondPont==false){if(condition[_i116]==null||!condition[_i116])continue;bFirstPoint=true;lineCache.Start={ID:_i116,Value:data[_i116]};//第1个点
10667
- }else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[_i116]!=null&&condition2[_i116];//条件2
10668
- if(!bCondition2){if(condition[_i116])//条件1满足
10669
- lineCache.Start={ID:_i116,Value:data[_i116]};//移动第1个点
10670
- continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:_i116,Value:data2[_i116]};//第2个点
10671
- }}else if(bFirstPoint==true&&bSecondPont==true){var bCondition2=condition2[_i116]!=null&&condition2[_i116];//条件2
10419
+ */this.DRAWLINE=function(condition,data,condition2,data2,expand){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWLINE',Expand:expand};if(condition.length<=0)return result;var count=Math.max(condition.length,condition2.length);var bFirstPoint=false;var bSecondPont=false;var lineCache={Start:{},End:{},List:new Array()};for(var _i101=0;_i101<count;++_i101){drawData[_i101]=null;if(_i101<condition.length&&_i101<condition2.length){if(bFirstPoint==false&&bSecondPont==false){if(condition[_i101]==null||!condition[_i101])continue;bFirstPoint=true;lineCache.Start={ID:_i101,Value:data[_i101]};//第1个点
10420
+ }else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[_i101]!=null&&condition2[_i101];//条件2
10421
+ if(!bCondition2){if(condition[_i101])//条件1满足
10422
+ lineCache.Start={ID:_i101,Value:data[_i101]};//移动第1个点
10423
+ continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:_i101,Value:data2[_i101]};//第2个点
10424
+ }}else if(bFirstPoint==true&&bSecondPont==true){var bCondition2=condition2[_i101]!=null&&condition2[_i101];//条件2
10672
10425
  if(bCondition2)//条件2满足
10673
- {lineCache.End={ID:_i116,Value:data2[_i116]};//移动第2个点
10674
- }else if(condition[_i116])//条件1满足
10426
+ {lineCache.End={ID:_i101,Value:data2[_i101]};//移动第2个点
10427
+ }else if(condition[_i101])//条件1满足
10675
10428
  {var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
10676
- for(var _j9 in lineData){var _item17=lineData[_j9];drawData[_item17.ID]=_item17.Value;}if(expand==1)this.CalculateDrawDataExtendLine(drawData,lineCache.Start.ID-2);//右延长线
10677
- bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:_i116,Value:data[_i116]};//第1个点
10429
+ for(var _j8 in lineData){var _item11=lineData[_j8];drawData[_item11.ID]=_item11.Value;}if(expand==1)this.CalculateDrawDataExtendLine(drawData,lineCache.Start.ID-2);//右延长线
10430
+ bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:_i101,Value:data[_i101]};//第1个点
10678
10431
  }}}//最后一组线
10679
- if(bFirstPoint==true&&bSecondPont==true){var _lineData=this.CalculateDrawLine(lineCache);for(var _j10 in _lineData){var _item18=_lineData[_j10];drawData[_item18.ID]=_item18.Value;}}}if(expand==1)this.CalculateDrawDataExtendLine(drawData);//右延长线
10432
+ 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);//右延长线
10680
10433
  return result;};/*
10681
10434
  画出带状线.
10682
10435
  用法: DRAWBAND(VAL1,COLOR1,VAL2,COLOR2),当VAL1>VAL2时,在VAL1和VAL2之间填充COLOR1;当VAL1<VAL2时,填充COLOR2,这里的颜色均使用RGB函数计算得到.
@@ -10689,8 +10442,8 @@ if(color)result.Color[0]=color.toLowerCase();if(color2)result.Color[1]=color2.to
10689
10442
  {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线长度为数据长度
10690
10443
  {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).
10691
10444
  //用法:以HIGH为最高价,OPEN为开盘价,LOW为最低,CLOSE收盘画K线
10692
- 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 _i117=0;_i117<count;++_i117){var _item19={Open:null,High:null,Low:null,Close:null};if(_i117<high.length&&_i117<open.length&&_i117<low.length&&_i117<close.length){_item19.Open=open[_i117];_item19.High=high[_i117];_item19.Low=low[_i117];_item19.Close=close[_i117];}drawData[_i117]=_item19;}return result;};//满足条件画一根K线
10693
- 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 _i118=0;_i118<count;++_i118){var _item20={Open:null,High:null,Low:null,Close:null};if(_i118<high.length&&_i118<open.length&&_i118<low.length&&_i118<close.length&&_i118<condition.length){if(condition[_i118]){_item20.Open=open[_i118];_item20.High=high[_i118];_item20.Low=low[_i118];_item20.Close=close[_i118];}}drawData[_i118]=_item20;}return result;};//叠加一个K线
10445
+ this.DRAWKLINE=function(high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE'};var count=Math.max(high.length,open.length,low.length,close.length);for(var _i102=0;_i102<count;++_i102){var _item13={Open:null,High:null,Low:null,Close:null};if(_i102<high.length&&_i102<open.length&&_i102<low.length&&_i102<close.length){_item13.Open=open[_i102];_item13.High=high[_i102];_item13.Low=low[_i102];_item13.Close=close[_i102];}drawData[_i102]=_item13;}return result;};//满足条件画一根K线
10446
+ this.DRAWKLINE_IF=function(condition,high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE_IF'};var count=Math.max(condition.length,high.length,open.length,low.length,close.length);for(var _i103=0;_i103<count;++_i103){var _item14={Open:null,High:null,Low:null,Close:null};if(_i103<high.length&&_i103<open.length&&_i103<low.length&&_i103<close.length&&_i103<condition.length){if(condition[_i103]){_item14.Open=open[_i103];_item14.High=high[_i103];_item14.Low=low[_i103];_item14.Close=close[_i103];}}drawData[_i103]=_item14;}return result;};//叠加一个K线
10694
10447
  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;};/*
10695
10448
  DRAWCOLORKLINE 绘制K线
10696
10449
  用法:
@@ -10714,11 +10467,11 @@ this.DRAWOVERLAYKLINE=function(open,high,low,close){var drawData=[];var result={
10714
10467
  }else if(bFirstPoint==true&&bSecondPont==false){if(!this.IsNumber(data[i]))continue;lineCache.End={ID:parseInt(i),Value:data[i]};//第2个点
10715
10468
  //根据起始点和结束点 计算中间各个点的数据
10716
10469
  var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
10717
- for(var _j11 in lineData){var _item21=lineData[_j11];drawData[_item21.ID]=_item21.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 _i119 in condition){drawData[_i119]=null;if(bFirstPoint==false&&bSecondPont==false){if(condition[_i119]==null||!condition[_i119])continue;if(_i119>=data.length||!this.IsNumber(data[_i119]))continue;bFirstPoint=true;_lineCache.Start={ID:parseInt(_i119),Value:data[_i119]};//第1个点
10718
- }else if(bFirstPoint==true&&bSecondPont==false){if(condition[_i119]==null||!condition[_i119])continue;if(_i119>=data.length||!this.IsNumber(data[_i119]))continue;_lineCache.End={ID:parseInt(_i119),Value:data[_i119]};//第2个点
10470
+ for(var _j10 in lineData){var _item15=lineData[_j10];drawData[_item15.ID]=_item15.Value;}var start={ID:lineCache.End.ID,Value:lineCache.End.Value};lineCache={Start:start,End:{}};}}this.CalculateDrawDataExtendLine(drawData);}else{var _lineCache={Start:{},End:{},List:[]};for(var _i104 in condition){drawData[_i104]=null;if(bFirstPoint==false&&bSecondPont==false){if(condition[_i104]==null||!condition[_i104])continue;if(_i104>=data.length||!this.IsNumber(data[_i104]))continue;bFirstPoint=true;_lineCache.Start={ID:parseInt(_i104),Value:data[_i104]};//第1个点
10471
+ }else if(bFirstPoint==true&&bSecondPont==false){if(condition[_i104]==null||!condition[_i104])continue;if(_i104>=data.length||!this.IsNumber(data[_i104]))continue;_lineCache.End={ID:parseInt(_i104),Value:data[_i104]};//第2个点
10719
10472
  //根据起始点和结束点 计算中间各个点的数据
10720
10473
  var _lineData2=this.CalculateDrawLine(_lineCache);//计算2个点的线上 其他点的数值
10721
- for(var _j12 in _lineData2){var _item22=_lineData2[_j12];drawData[_item22.ID]=_item22.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)
10474
+ 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)
10722
10475
  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;}}};/*
10723
10476
  画出数字.
10724
10477
  用法:
@@ -10880,8 +10633,8 @@ this.CKLINE=function(color,lineWidth,lineType,lineDotted){var drawData={Color:co
10880
10633
  this.BUY=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(0,255,0)",Type:"SVG",Icon:'\uE660'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='BUY';return result;};this.BUYSHORT=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(0,255,0)",Type:"SVG",Icon:'\uE660'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='BUYSHORT';return result;};//多头平仓(卖出平仓).
10881
10634
  //参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
10882
10635
  //例如: SELL(CROSS(A,B),HIGH),当A上穿B时,在HIGH处画标记,同时突出提示或直接下单,如果HIGH改为DRAWNULL,就不画标记.(分时图上不支持)
10883
- this.SELL=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(255,0,0)",Type:"SVG",Icon:'\uE661'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='SELL';return result;};this.SELLSHORT=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(255,0,0)",Type:"SVG",Icon:'\uE661'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='SELLSHORT';return result;};this.CalculateTradeData=function(condition,data,IconInfo){var aryData=[];var aryIcon=[];var result={DrawData:{Data:aryData,Icons:aryIcon}};if(Array.isArray(condition)){var isAryPosition=Array.isArray(data);for(var i=0;i<condition.length;++i){aryData[i]=0;aryIcon[i]=null;if(!condition[i])continue;aryData[i]=1;if(isAryPosition)aryIcon[i]={Value:data[i],Type:IconInfo.Type,Color:IconInfo.Color,Icon:IconInfo.Icon};else aryIcon[i]={Value:data,Type:IconInfo.Type,Color:IconInfo.Color,Icon:IconInfo.Icon};}}else if(IFrameSplitOperator.IsNumber(condition)&&condition>0){}return result;};}JSDraw.prototype.CalculateDrawLine=function(lineCache){lineCache.List=[];for(var _i120=lineCache.Start.ID;_i120<=lineCache.End.ID;++_i120){lineCache.List.push(_i120);}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个点
10884
- if(lineCache.Start.Value>lineCache.End.Value){for(var _i121=1;_i121<lineCache.List.length-1;++_i121){var value=height*(lineCache.List.length-1-_i121)/width+lineCache.End.Value;result.push({ID:lineCache.List[_i121],Value:value});}}else{for(var _i122=1;_i122<lineCache.List.length-1;++_i122){var value=height*_i122/width+lineCache.Start.Value;result.push({ID:lineCache.List[_i122],Value:value});}}result.push({ID:lineCache.End.ID,Value:lineCache.End.Value});//最后一个点
10636
+ this.SELL=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(255,0,0)",Type:"SVG",Icon:'\uE661'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='SELL';return result;};this.SELLSHORT=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(255,0,0)",Type:"SVG",Icon:'\uE661'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='SELLSHORT';return result;};this.CalculateTradeData=function(condition,data,IconInfo){var aryData=[];var aryIcon=[];var result={DrawData:{Data:aryData,Icons:aryIcon}};if(Array.isArray(condition)){var isAryPosition=Array.isArray(data);for(var i=0;i<condition.length;++i){aryData[i]=0;aryIcon[i]=null;if(!condition[i])continue;aryData[i]=1;if(isAryPosition)aryIcon[i]={Value:data[i],Type:IconInfo.Type,Color:IconInfo.Color,Icon:IconInfo.Icon};else aryIcon[i]={Value:data,Type:IconInfo.Type,Color:IconInfo.Color,Icon:IconInfo.Icon};}}else if(IFrameSplitOperator.IsNumber(condition)&&condition>0){}return result;};}JSDraw.prototype.CalculateDrawLine=function(lineCache){lineCache.List=[];for(var _i105=lineCache.Start.ID;_i105<=lineCache.End.ID;++_i105){lineCache.List.push(_i105);}var height=Math.abs(lineCache.Start.Value-lineCache.End.Value);var width=lineCache.List.length-1;var result=[];result.push({ID:lineCache.Start.ID,Value:lineCache.Start.Value});//第1个点
10637
+ if(lineCache.Start.Value>lineCache.End.Value){for(var _i106=1;_i106<lineCache.List.length-1;++_i106){var value=height*(lineCache.List.length-1-_i106)/width+lineCache.End.Value;result.push({ID:lineCache.List[_i106],Value:value});}}else{for(var _i107=1;_i107<lineCache.List.length-1;++_i107){var value=height*_i107/width+lineCache.Start.Value;result.push({ID:lineCache.List[_i107],Value:value});}}result.push({ID:lineCache.End.ID,Value:lineCache.End.Value});//最后一个点
10885
10638
  return result;};//是否有是有效的数字
10886
10639
  JSDraw.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSDraw.prototype.IsDrawFunction=function(name){var setFunctionName=new _set2.default(["STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF',"DRAWCOLORKLINE",'PLOYLINE',"DRAWOVERLAYKLINE",'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS","DRAWTEXTREL",'DRAWOVERLAYLINE',"FILLRGN","FILLRGN2","FILLTOPRGN","FILLBOTTOMRGN","FILLVERTICALRGN","FLOATRGN","DRAWSL","DRAWGBK2","DRAWGBK_DIV","VERTLINE","HORLINE","TIPICON","BUY","SELL","SELLSHORT","BUYSHORT"]);if(setFunctionName.has(name))return true;return false;};JSDraw.prototype.RemoveZero=function(strValue){while(strValue.length>0){var index=strValue.length-1;var ch=strValue[index];if(ch=="0"){strValue=strValue.substr(0,index);}else if(ch=="."){strValue=strValue.substr(0,index);break;}else{break;}}return strValue;};//http://www.newone.com.cn/helpcontroller/index?code=zszy_pc
10887
10640
  var DYNAINFO_ARGUMENT_ID={YCLOSE:3,OPEN:4,HIGH:5,LOW:6,CLOSE:7,VOL:8,AMOUNT:10,AMPLITUDE:13,//振幅
@@ -11041,12 +10794,12 @@ if(periodInfo.Period==0)hisData=dayData.Data;else hisData=dayData.GetPeriodData(
11041
10794
  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');//日线
11042
10795
  if(periodInfo.Period==0)hisData=dayData;else hisData=dayData.GetPeriodData(periodInfo.Period);//日线周期
11043
10796
  }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)//日线数据才复权
11044
- {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 _i123=lCount-1;_i123>=0;--_i123){result.push(_i123+1);}//数据从0开始
10797
+ {var rightData=bindData.GetRightData(bindData.Right);bindData.Data=rightData;}hisData=bindData.GetPeriodData(periodInfo.Period);}}var data=this.Data.ConverPeriod(hisData,this.Period,periodInfo.Period);var result=new ChartData();result.Data=data;}if(IFrameSplitOperator.IsPlusNumber(n)){var refResult=new ChartData();var data=result.GetRef(n);refResult.Data=data;result=refResult;}var upperSymbol=this.Symbol.toUpperCase();switch(valueName){case'C':case"CLOSE":return result.GetClose();case'O':case"OPEN":return result.GetOpen();case'H':case"HIGH":return result.GetHigh();case'L':case"LOW":return result.GetLow();case'AMO':case"AMOUNT":return result.GetAmount();case'V':case"VOL":if(MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))return result.GetVol(100);return result.GetVol();case"VOLINSTK":return result.GetPosition();default:return null;}};this.GetCurrBarsCount=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i108=lCount-1;_i108>=0;--_i108){result.push(_i108+1);}//数据从0开始
11045
10798
  return result;};//BARPOS 返回从第一根K线开始到当前的周期数。
11046
10799
  //注:
11047
10800
  //1、BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
11048
10801
  //2、本机已有的第一根K线上返回值为1。
11049
- 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 _i124=0;_i124<lCount;++_i124){result.push(_i124+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 _i125=0;_i125<lCount;++_i125){if(_i125==lCount-1)result.push(1);else result.push(0);}return result;};//BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置.
10802
+ this.GetBarPos=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i109=0;_i109<lCount;++_i109){result.push(_i109+1);}return result;};this.GetTotalTradeMinuteCount=function(){var data=g_MinuteCoordinateData.GetCoordinateData(this.Symbol);if(data&&data.Count>0)return data.Count-1;return 242;};this.GetTotalBarsCount=function(){var lCount=this.Data.Data.length;return lCount;};this.GetIsLastBar=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i110=0;_i110<lCount;++_i110){if(_i110==lCount-1)result.push(1);else result.push(0);}return result;};//BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置.
11050
10803
  //例如:BARSTATUS=2表示当天是该数据的最后一个周期.
11051
10804
  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;};//求真实波幅, (最高-最低),(最高-昨收),(最低-昨收)三者绝对值中的最大值.
11052
10805
  //用法:
@@ -11067,7 +10820,7 @@ case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
11067
10820
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
11068
10821
  fieldList.push("margin.sell");break;}//请求数据
11069
10822
  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个数据
11070
- for(var _i126 in stock.stockday){var item=stock.stockday[_i126];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;//融资融券余额
10823
+ for(var _i111 in stock.stockday){var item=stock.stockday[_i111];var marginData=item.margin;if(!marginData)continue;var indexData=new SingleData();indexData.Date=item.date;switch(jobID){case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE:if(!this.IsNumber(marginData.balance))continue;indexData.Value=marginData.balance;//融资融券余额
11071
10824
  aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE:if(!this.IsNumber(marginData.rate))continue;indexData.Value=marginData.rate;//融资占比
11072
10825
  aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE://买入信息-融资余额
11073
10826
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
@@ -11077,9 +10830,9 @@ var buyData=marginData.buy;if(!buyData)continue;if(!this.IsNumber(buyData.balanc
11077
10830
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME://卖出信息-卖出量
11078
10831
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
11079
10832
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
11080
- 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 _i127 in allData){var aryFixedData=this.SourceData.GetFittingData(allData[_i127].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10833
+ var sellData=marginData.sell;if(!sellData)continue;if(!this.IsNumber(sellData.balance)||!this.IsNumber(sellData.volume)||!this.IsNumber(sellData.repay)||!this.IsNumber(sellData.net))continue;indexData.Value=buyData.balance;var indexData2=new SingleData();indexData2.Date=item.date;indexData2.Value=buyData.volume;var indexData3=new SingleData();indexData3.Date=item.date;indexData3.Value=buyData.repay;var indexData4=new SingleData();indexData4.Date=item.date;indexData4.Value=buyData.net;aryData.push(indexData);aryData2.push(indexData2);aryData3.push(indexData3);aryData4.push(indexData4);break;default:continue;}}var allData=[];if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE){allData.push({JobID:jobID,Data:aryData});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET,Data:aryData4});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET,Data:aryData4});}for(var _i112 in allData){var aryFixedData=this.SourceData.GetFittingData(allData[_i112].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
11081
10834
  if(bindData.Period>0)//周期数据
11082
- {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data2=bindData.GetValue();this.MarginData.set(allData[_i127].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)//变量 !!只支持默认的变量值
10835
+ {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data2=bindData.GetValue();this.MarginData.set(allData[_i112].JobID,_data2);}};this.GetNewsAnalysisCacheData=function(id,node){var jobID=JS_EXECUTE_JOB_ID.GetNewsAnalysisID(id);if(!jobID)this.Execute.ThrowUnexpectedNode(node,'不支持NEWS('+id+')');if(this.NewsAnalysisData.has(jobID))return this.NewsAnalysisData.get(jobID);return[];};this.GetHKToSHSZData=function(job){var args=job.Args;var code=this.Symbol;if(args.length>0){var item=args[0];if(item.Type==Syntax.Literal){code=item.Value;}else if(item.Type==Syntax.Identifier)//变量 !!只支持默认的变量值
11083
10836
  {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)//下载全市场数据
11084
10837
  this.GetHKToSHSZMarketData(code,job);else this.GetHKToSHSZStockData(code,job);//下载个股数据
11085
10838
  };this.GetHKToSHSZStockData=function(symbol,job){if(this.HKToSHSZData.has(symbol))return this.Execute.RunNextJob();var upperSymbol=symbol.toLowerCase();//代码小写
@@ -11092,9 +10845,9 @@ if(bindData.Period>0)//周期数据
11092
10845
  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{//请求数据
11093
10846
  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;//单位是百万
11094
10847
  var SZValue=data.hk2sz[i]*1000000;//单位是百万
11095
- 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 _i128 in allData){var aryFixedData=this.Data.GetFittingData(allData[_i128].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10848
+ var total=SHValue+SZValue;var itemSHSZData=new SingleData();itemSHSZData.Date=date;itemSHSZData.Value=total;var itemSHData=new SingleData();itemSHData.Date=date;itemSHData.Value=SHValue;var itemSZData=new SingleData();itemSZData.Date=date;itemSZData.Value=SZValue;arySHSZData.push(itemSHSZData);arySHData.push(itemSHData);arySZData.push(itemSZData);}var allData=[{Data:arySHSZData,ID:1},{Data:arySHData,ID:2},{Data:arySZData,ID:3}];for(var _i113 in allData){var aryFixedData=this.Data.GetFittingData(allData[_i113].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
11096
10849
  if(bindData.Period>0)//周期数据
11097
- {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data3=bindData.GetValue();this.HKToSHSZData.set(allData[_i128].ID,_data3);}};this.RecvMulitMinuteHKToSHSZData=function(data,job)//多日分时图北上资金
10850
+ {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data3=bindData.GetValue();this.HKToSHSZData.set(allData[_i113].ID,_data3);}};this.RecvMulitMinuteHKToSHSZData=function(data,job)//多日分时图北上资金
11098
10851
  {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;//日期加时间
11099
10852
  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);}};//北上资金函数
11100
10853
  this.GetHKToSHSZCacheData=function(code,node){//if (!this.HKToSHSZData.has(code)) this.Execute.ThrowUnexpectedNode(node,`不支持HK2SHSZ(${code})`);
@@ -11217,11 +10970,11 @@ this.Execute.ThrowUnexpectedNode(node,funcName+'() Error: '+indexInfo.Error);}va
11217
10970
  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];//原始单位股
11218
10971
  item.Amount=list[i][amount];//上涨 下跌家数
11219
10972
  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;//停牌的数据剔除
11220
- 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 _item23=new HistoryData();_item23.Date=list[i][date];_item23.Open=list[i][open];_item23.YClose=list[i][yclose];_item23.Close=list[i][close];_item23.High=list[i][high];_item23.Low=list[i][low];_item23.Vol=list[i][vol];//原始单位股
11221
- _item23.Amount=list[i][amount];_item23.Time=list[i][time];// if (isNaN(item.Open) || item.Open<=0) continue; //停牌的数据剔除
11222
- aryDayData.push(_item23);}// 无效数据处理
11223
- for(var _i129=0;_i129<aryDayData.length;++_i129){var minData=aryDayData[_i129];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(_i129==0){if(minData.YClose>0){minData.Open=minData.YClose;minData.High=minData.YClose;minData.Low=minData.YClose;minData.Close=minData.YClose;}}else// 用前一个有效数据填充
11224
- {for(var _j13=_i129-1;_j13>=0;--_j13){var minData2=aryDayData[_j13];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[]
10973
+ 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];//原始单位股
10974
+ _item17.Amount=list[i][amount];_item17.Time=list[i][time];// if (isNaN(item.Open) || item.Open<=0) continue; //停牌的数据剔除
10975
+ aryDayData.push(_item17);}// 无效数据处理
10976
+ for(var _i114=0;_i114<aryDayData.length;++_i114){var minData=aryDayData[_i114];if(minData==null)coninue;if(isNaN(minData.Open)||minData.Open<=0||isNaN(minData.High)||minData.High<=0||isNaN(minData.Low)||minData.Low<=0||isNaN(minData.Close)||minData.Close<=0||isNaN(minData.YClose)||minData.YClose<=0){if(_i114==0){if(minData.YClose>0){minData.Open=minData.YClose;minData.High=minData.YClose;minData.Low=minData.YClose;minData.Close=minData.YClose;}}else// 用前一个有效数据填充
10977
+ {for(var _j12=_i114-1;_j12>=0;--_j12){var minData2=aryDayData[_j12];if(minData2==null)coninue;if(minData2.Open>0&&minData2.High>0&&minData2.Low>0&&minData2.Close>0){if(minData.YClose<=0)minData.YClose=minData2.Close;minData.Open=minData2.Open;minData.High=minData2.High;minData.Low=minData2.Low;minData.Close=minData2.Close;break;}}}}}return aryDayData;};//API 返回数据 转化为array[]
11225
10978
  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;//股
11226
10979
  item.Amount=jsData.amount;if(i==0)//第1个数据 写死9:25
11227
10980
  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[];
@@ -11239,23 +10992,23 @@ if(item.Open<=0)item.Open=null;if(item.Close<=0)item.Close=null;if(item.AvPrice<
11239
10992
  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;};/*
11240
10993
  SETCODE 市场类型
11241
10994
  0:深圳 1:上海,47:中金所期货 28:郑州商品 29:大连商品 30:上海商品,27:香港指数 31:香港主板,48:香港创业板...
11242
- */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 _i130 in this.Data.Data){var item=this.Data.Data[_i130];result[_i130]=item.Date-19000000;}return result;};this.YEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i131 in this.Data.Data){var item=this.Data.Data[_i131];if(this.IsNumber(item.Date))result[_i131]=parseInt(item.Date/10000);else result[_i131]=null;}return result;};this.DAY=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i132 in this.Data.Data){var item=this.Data.Data[_i132];if(this.IsNumber(item.Date))result[_i132]=parseInt(item.Date%100);else result[_i132]=null;}return result;};this.MONTH=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i133 in this.Data.Data){var item=this.Data.Data[_i133];if(this.IsNumber(item.Date))result[_i133]=parseInt(item.Date%10000/100);else result[_i133]=null;}return result;};this.TIME=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i134=0;_i134<this.Data.Data.length;++_i134){var item=this.Data.Data[_i134];if(this.IsNumber(item.Time))result[_i134]=item.Time;else result[_i134]=0;}return result;};/*
10995
+ */this.SETCODE=function(){if(this.Symbol.indexOf('.sh'))return 1;if(this.Symbol.indexOf('.sz'))return 0;return 0;};this.GetSymbol=function(){return this.Symbol;};this.GetName=function(){return this.Name;};this.DATE=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i115 in this.Data.Data){var item=this.Data.Data[_i115];result[_i115]=item.Date-19000000;}return result;};this.YEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i116 in this.Data.Data){var item=this.Data.Data[_i116];if(this.IsNumber(item.Date))result[_i116]=parseInt(item.Date/10000);else result[_i116]=null;}return result;};this.DAY=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i117 in this.Data.Data){var item=this.Data.Data[_i117];if(this.IsNumber(item.Date))result[_i117]=parseInt(item.Date%100);else result[_i117]=null;}return result;};this.MONTH=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i118 in this.Data.Data){var item=this.Data.Data[_i118];if(this.IsNumber(item.Date))result[_i118]=parseInt(item.Date%10000/100);else result[_i118]=null;}return result;};this.TIME=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i119=0;_i119<this.Data.Data.length;++_i119){var item=this.Data.Data[_i119];if(this.IsNumber(item.Time))result[_i119]=item.Time;else result[_i119]=0;}return result;};/*
11243
10996
  取得该周期的时分秒,适用于日线以下周期.
11244
10997
  用法: TIME2
11245
10998
  函数返回有效值范围为(000000-235959)
11246
- */this.TIME2=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i135=0;_i135<this.Data.Data.length;++_i135){var item=this.Data.Data[_i135];if(this.IsNumber(item.Time))result[_i135]=item.Time*100;else result[_i135]=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
11247
- this.WEEK=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var tempDate=new Date();for(var _i136 in this.Data.Data){var item=this.Data.Data[_i136];result[_i136]=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[_i136]=tempDate.getDay();}return result;};/*
10999
+ */this.TIME2=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i120=0;_i120<this.Data.Data.length;++_i120){var item=this.Data.Data[_i120];if(this.IsNumber(item.Time))result[_i120]=item.Time*100;else result[_i120]=0;}return result;};this.DateTime=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var isKLineMinute=ChartData.IsMinutePeriod(this.Period,true);for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(isKLineMinute){result[i]=item.Date*10000+item.Time;}else{result[i]=item.Date;}}return result;};//星期 1-7
11000
+ this.WEEK=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var tempDate=new Date();for(var _i121 in this.Data.Data){var item=this.Data.Data[_i121];result[_i121]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;tempDate.setFullYear(year,month-1,day);result[_i121]=tempDate.getDay();}return result;};/*
11248
11001
  取得该周期的日期离今天的天数.
11249
11002
  用法: DAYSTOTODAY
11250
- */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 _i137=0;_i137<this.Data.Data.length;++_i137){var item=this.Data.Data[_i137];result[_i137]=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[_i137]=diffDays;}return result;};/*
11003
+ */this.DAYSTOTODAY=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var nowDate=new Date();var endDate=new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate());for(var _i122=0;_i122<this.Data.Data.length;++_i122){var item=this.Data.Data[_i122];result[_i122]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;var beginDate=new Date(year,month-1,day);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));result[_i122]=diffDays;}return result;};/*
11251
11004
  取得该周是年内第几个周.
11252
11005
  用法:WEEKOFYEAR
11253
- */this.WEEKOFYEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i138 in this.Data.Data){var item=this.Data.Data[_i138];result[_i138]=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[_i138]=value;}return result;};this.GetYearWeek=function(endDate){var beginDate=new Date(endDate.getFullYear(),0,1);//星期从0-6,0代表星期天,6代表星期六
11006
+ */this.WEEKOFYEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i123 in this.Data.Data){var item=this.Data.Data[_i123];result[_i123]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;var endDate=new Date(year,month-1,day);var beginDate=new Date(year,0,1);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));diffDays+=beginDate.getDay()+1-1;var week=Math.ceil(diffDays/7);var value=week;result[_i123]=value;}return result;};this.GetYearWeek=function(endDate){var beginDate=new Date(endDate.getFullYear(),0,1);//星期从0-6,0代表星期天,6代表星期六
11254
11007
  var endWeek=endDate.getDay();if(endWeek==0)endWeek=7;var beginWeek=beginDate.getDay();if(beginWeek==0)beginWeek=7;//计算两个日期的天数差
11255
- 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 _i139 in this.Data.Data)//查找日期对应的索引
11256
- {if(this.Data.Data[_i139].Date==findDate){index=parseInt(_i139);break;}}if(index==null||index>=data.length)return null;return data[index];};//用法:结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年
11008
+ var millisDiff=endDate.getTime()-beginDate.getTime();var dayDiff=Math.floor((millisDiff+(beginWeek-endWeek)*(24*60*60*1000))/86400000);return Math.ceil(dayDiff/7)+1;};this.REFDATE=function(data,date){var result=null;var findDate=null;if(Array.isArray(date)){if(date.length>0)findDate=date[date.length-1];}else if(this.IsNumber(date)){findDate=date;}if(findDate==null)return null;if(findDate<5000000)findDate+=19000000;var index=null;for(var _i124 in this.Data.Data)//查找日期对应的索引
11009
+ {if(this.Data.Data[_i124].Date==findDate){index=parseInt(_i124);break;}}if(index==null||index>=data.length)return null;return data[index];};//用法:结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年
11257
11010
  this.PERIOD=function(){//Period周期 0=日线 1=周线 2=月线 3=年线 9=季线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟
11258
- 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 _i140 in this.Data.Data){result[_i140]=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;};/*
11011
+ var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_MAP.length-1)return PERIOD_MAP[this.Period];return this.Period;};this.GetDrawNull=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i125 in this.Data.Data){result[_i125]=null;}return result;};this.HOUR=function(){var result=[];if(!this.Data||!this.Data.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return result;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];result[i]=0;if(IFrameSplitOperator.IsNumber(item.Time))result[i]=parseInt(item.Time/100);}return result;};this.MINUTE=function(){var result=[];if(!this.Data||!this.Data.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return result;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];result[i]=0;if(IFrameSplitOperator.IsNumber(item.Time))result[i]=item.Time%100;}return result;};/*
11259
11012
  飞狐函数 SYSPARAM
11260
11013
  SYSPARAM(1)画面上光标位置(K线序号)
11261
11014
  SYSPARAM(2)主图可见K线最初位置
@@ -11264,7 +11017,7 @@ var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_M
11264
11017
  SYSPARAM(5)主图可见K线最低价,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
11265
11018
  SYSPARAM(6)画面上光标数值,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
11266
11019
  */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[];};}//是否有是有效的数字
11267
- 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 _i141=1;_i141<=4;++_i141){switch(_i141){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天公布多个报告期数据 只取最新的一个公告期数据
11020
+ JSSymbolData.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSSymbolData.prototype.IsDivideNumber=function(value){if(value==null)return false;if(isNaN(value))return false;if(value==0)return false;return true;};JSSymbolData.prototype.JsonDataToFinance=function(data){var financeData;for(var _i126=1;_i126<=4;++_i126){switch(_i126){case 1:var finance=data.finance1;var announcement=data.announcement1;break;case 2:var finance=data.finance2;var announcement=data.announcement2;break;case 3:var finance=data.finance3;var announcement=data.announcement3;break;case 4:var finance=data.finance4;var announcement=data.announcement4;break;default:break;}if(!finance||!announcement||!this.IsNumber(announcement.year)||!this.IsNumber(announcement.quarter))continue;if(financeData)//如果存在1天公布多个报告期数据 只取最新的一个公告期数据
11268
11021
  {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线数据
11269
11022
  JOB_DOWNLOAD_INDEX_DATA:2,//下载大盘的K线数据
11270
11023
  JOB_DOWNLOAD_SYMBOL_LATEST_DATA:3,//最新的股票行情数据
@@ -11421,8 +11174,8 @@ this.ConstVarTable=new _map2.default([//个股数据
11421
11174
  this.UpdateUICallback=null;//回调
11422
11175
  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 _this43.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;//调试模式信息
11423
11176
  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();//绘图变量表
11424
- JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i142 in this.Arguments)//预定义的变量
11425
- {var _item24=this.Arguments[_i142];this.VarTable.set(_item24.Name,_item24.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://量比
11177
+ JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i127 in this.Arguments)//预定义的变量
11178
+ {var _item18=this.Arguments[_i127];this.VarTable.set(_item18.Name,_item18.Value);}this.RunNextJob();};this.RunNextJob=function(){if(this.JobList.length<=0)return;JSConsole.Complier.Log('[JSExecute::Execute] JobList',this.JobList);var jobItem=this.JobList.shift();switch(jobItem.ID){case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_DATA:return this.SymbolData.GetSymbolData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_PERIOD_DATA:return this.SymbolData.GetSymbolPeriodData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA:return this.SymbolData.GetIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA:return this.SymbolData.GetLatestIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_INCREASE_DATA:return this.SymbolData.GetIndexIncreaseData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA:return this.SymbolData.GetLatestData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA://量比
11426
11179
  return this.SymbolData.GetVolRateData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_OTHER_SYMBOL_DATA://指定股票数据
11427
11180
  return this.SymbolData.GetOtherSymbolData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_RELEASE_DATE_DATA:return this.SymbolData.GetCompanyReleaseDate(jobItem.ID);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE:case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE:case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE://买入信息-融资余额
11428
11181
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
@@ -11453,7 +11206,7 @@ case'INDEXA':case'INDEXC':case'INDEXH':case'INDEXH':case'INDEXO':case'INDEXV':ca
11453
11206
  this.ReadVariable=function(name,node){if(this.ConstVarTable.has(name)){var data=this.ConstVarTable.get(name);if(data==null)//动态加载,用到再加载
11454
11207
  {data=this.ReadSymbolData(name,node);this.ConstVarTable.set(name,data);}return data;}if(g_JSComplierResource.IsCustomVariant(name))return this.ReadCustomVariant(name,node);//读取自定义变量
11455
11208
  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;};//单数据转成数组 个数和历史数据一致
11456
- this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var _i143=0;_i143<count;++_i143){result[_i143]=value;}return result;};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i144=0;_i144<this.AST.Body.length;++_i144){var _item25=this.AST.Body[_i144];this.RunASTNode(_item25,_i144);if(this.Interrupt&&this.Interrupt.Exit){JSConsole.Complier.Log('[JSExecute::RunAST] Interrupt',this.Interrupt);//中断退出
11209
+ this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var _i128=0;_i128<count;++_i128){result[_i128]=value;}return result;};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i129=0;_i129<this.AST.Body.length;++_i129){var _item19=this.AST.Body[_i129];this.RunASTNode(_item19,_i129);if(this.Interrupt&&this.Interrupt.Exit){JSConsole.Complier.Log('[JSExecute::RunAST] Interrupt',this.Interrupt);//中断退出
11457
11210
  break;}}JSConsole.Complier.Log('[JSExecute::RunAST]',this.VarTable);return this.OutVarTable;};this.RunASTNode=function(item,lineID){this.VisitNode(item);var i=lineID;//输出变量
11458
11211
  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))//绘图函数赋值
11459
11212
  {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)//常量
@@ -11464,26 +11217,26 @@ var isNoneName=false;var isShowTitle=true;//显示在位置之上,对于DRAWTEXT
11464
11217
  var isDrawAbove=false;var isDrawCenter=false;var isDrawBelow=false;//VALIGN0,VALIGN1,VALIGN2 设置文字垂直对齐方式(上中下)
11465
11218
  //ALIGN0,ALIGN1,ALIGN2 设置文字水平对齐方式(左中右)
11466
11219
  var drawAlign=-1,drawVAlign=-1;var fontSize=-1;var bgConfig=null;//背景设置
11467
- var vLineConfig=null;var isFirstDraw=null;var xOffset=null,yOffset=null;for(var _j14=0;_j14<item.Expression.Expression.length;++_j14){var itemExpression=item.Expression.Expression[_j14];if(itemExpression.Type==Syntax.AssignmentExpression&&itemExpression.Operator==':'&&itemExpression.Left){if(_j14==0){_varName3=itemExpression.Left.Name;var varValue=this.VarTable.get(_varName3);if(this.VarDrawTable.has(_varName3))//绘图函数赋值
11220
+ var vLineConfig=null;var isFirstDraw=null;var xOffset=null,yOffset=null;for(var _j13=0;_j13<item.Expression.Expression.length;++_j13){var itemExpression=item.Expression.Expression[_j13];if(itemExpression.Type==Syntax.AssignmentExpression&&itemExpression.Operator==':'&&itemExpression.Left){if(_j13==0){_varName3=itemExpression.Left.Name;var varValue=this.VarTable.get(_varName3);if(this.VarDrawTable.has(_varName3))//绘图函数赋值
11468
11221
  {_draw3=this.VarDrawTable.get(_varName3);}else if(!Array.isArray(varValue)){varValue=this.SingleDataToArrayData(varValue);this.VarTable.set(_varName3,varValue);//把常量放到变量表里
11469
11222
  }}else{}}else if(itemExpression.Type==Syntax.Identifier){var value=itemExpression.Name;if(value==='COLORSTICK')colorStick=true;else if(value==='POINTDOT')pointDot=true;else if(value==='CIRCLEDOT')circleDot=true;else if(value==='DOTLINE')isDotLine=true;else if(value=="UPDOWNDOT")upDownDot=true;else if(value==='LINESTICK')lineStick=true;else if(value==='STICK')stick=true;else if(value==='VOLSTICK')volStick=true;else if(value=="LINEAREA")lineArea=true;else if(value==="DRAWABOVE")isDrawAbove=true;else if(value==="DRAWCENTER")isDrawCenter=true;else if(value=="DRAWBELOW")isDrawBelow=true;else if(value=="STEPLINE")stepLine=true;else if(value.indexOf('COLOR')==0)color=value;else if(value.indexOf("RGBX")==0&&value.length==10)color=value;//RGBX+“RRGGBB”
11470
11223
  else if(value.indexOf('LINETHICK')==0)lineWidth=value;else if(value=="ALIGN0")drawAlign=0;else if(value=="ALIGN1")drawAlign=1;else if(value=="ALIGN2")drawAlign=2;else if(value=="VALIGN0")drawVAlign=0;else if(value=="VALIGN1")drawVAlign=1;else if(value=="VALIGN2")drawVAlign=2;else if(value.indexOf('NODRAW')==0)isShow=false;else if(value.indexOf('EXDATA')==0)isExData=true;//扩展数据, 不显示再图形里面
11471
11224
  else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf("NOTEXT")==0||value.indexOf("NOTITLE")==0)isShowTitle=false;//标题不显示
11472
- else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{if(_j14==0){_varName3=itemExpression.Name;var _varValue=this.ReadVariable(_varName3,itemExpression);if(!Array.isArray(_varValue))_varValue=this.SingleDataToArrayData(_varValue);_varName3="__temp_si_"+i+"__";isNoneName=true;this.VarTable.set(_varName3,_varValue);//放到变量表里
11225
+ else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{if(_j13==0){_varName3=itemExpression.Name;var _varValue=this.ReadVariable(_varName3,itemExpression);if(!Array.isArray(_varValue))_varValue=this.SingleDataToArrayData(_varValue);_varName3="__temp_si_"+i+"__";isNoneName=true;this.VarTable.set(_varName3,_varValue);//放到变量表里
11473
11226
  }}}else if(itemExpression.Type==Syntax.Literal)//常量
11474
- {if(_j14==0){var aryValue=this.SingleDataToArrayData(itemExpression.Value);_varName3=itemExpression.Value.toString();this.VarTable.set(_varName3,aryValue);//把常量放到变量表里
11475
- }}else if(itemExpression.Type==Syntax.CallExpression){if(_j14==0){if(this.Draw.IsDrawFunction(itemExpression.Callee.Name)){_draw3=itemExpression.Draw;_draw3.Name=itemExpression.Callee.Name;}else{var _varValue2=itemExpression.Out;_varName3='__temp_sc_'+itemExpression.Callee.Name+'_'+i+'__';isNoneName=true;this.VarTable.set(_varName3,_varValue2);}}else{if(itemExpression.Callee.Name=="RGB"||itemExpression.Callee.Name=="RGBA"){color=itemExpression.Out;}else if(itemExpression.Callee.Name=="UPCOLOR"){upColor=itemExpression.Out;}else if(itemExpression.Callee.Name=="DOWNCOLOR"){downColor=itemExpression.Out;}else if(itemExpression.Callee.Name=="XMOVE"){xOffset=itemExpression.Out;}else if(itemExpression.Callee.Name=="YMOVE"){yOffset=itemExpression.Out;}else if(itemExpression.Callee.Name=="FIRSTDRAW"){if(itemExpression.Out===0)isFirstDraw=false;else if(itemExpression.Out===1)isFirstDraw=true;}else if(itemExpression.Callee.Name=="SOUND"){var event=this.GetSoundEvent();if(event){}_varName3=null;}else if(itemExpression.Callee.Name=="ICON"){var drawCond=this.VarTable.get(_varName3);if(drawCond){_draw3=this.GetOutIconData(drawCond,itemExpression.Draw);if(_draw3)_draw3.Name=itemExpression.Callee.Name;}_varName3=null;}else if(itemExpression.Callee.Name=="BACKGROUND"){bgConfig=itemExpression.Draw;_varName3=null;}else if(itemExpression.Callee.Name=="CKLINE"){vLineConfig=itemExpression.Draw;_varName3=null;}}}else if(itemExpression.Type==Syntax.BinaryExpression){if(_j14==0){_varName3="__temp_sb_"+i+"__";var _aryValue=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName3,_aryValue);}}else if(itemExpression.Type==Syntax.UnaryExpression){if(_j14==0){_varName3="__temp_su_"+i+"__";var varInfo={};if(this.ReadUnaryExpression(itemExpression,varInfo)){isNoneName=true;this.VarTable.set(_varName3,varInfo.OutVar);}}}}if(pointDot&&_varName3)//圆点
11476
- {var _outVar7=this.VarTable.get(_varName3);if(!Array.isArray(_outVar7))_outVar7=this.SingleDataToArrayData(_outVar7);var _value4={Name:_varName3,Data:_outVar7,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};if(color)_value4.Color=color;if(lineWidth)_value4.LineWidth=lineWidth;this.OutVarTable.push(_value4);}else if(circleDot&&_varName3)//圆点
11477
- {var _outVar8=this.VarTable.get(_varName3);if(!Array.isArray(_outVar8))_outVar8=this.SingleDataToArrayData(_outVar8);var _value5={Name:_varName3,Data:_outVar8,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};if(color)_value5.Color=color;if(lineWidth)_value5.LineWidth=lineWidth;this.OutVarTable.push(_value5);}else if(upDownDot&&_varName3)//彩色点
11478
- {var _outVar9=this.VarTable.get(_varName3);if(!Array.isArray(_outVar9))_outVar9=this.SingleDataToArrayData(_outVar9);var _value6={Name:_varName3,Data:_outVar9,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3,UpDownDot:true};if(color)_value6.Color=color;if(lineWidth)_value6.LineWidth=lineWidth;this.OutVarTable.push(_value6);}else if(lineStick&&_varName3)//LINESTICK 同时画出柱状线和指标线
11479
- {var _outVar10=this.VarTable.get(_varName3);var _value7={Name:_varName3,Data:_outVar10,Type:4};if(color)_value7.Color=color;if(lineWidth)_value7.LineWidth=lineWidth;this.OutVarTable.push(_value7);}else if(stick&&_varName3)//STICK 画柱状线
11480
- {var _outVar11=this.VarTable.get(_varName3);var _value8={Name:_varName3,Data:_outVar11,Type:5};if(color)_value8.Color=color;if(lineWidth)_value8.LineWidth=lineWidth;this.OutVarTable.push(_value8);}else if(volStick&&_varName3)//VOLSTICK 画彩色柱状线
11481
- {var _outVar12=this.VarTable.get(_varName3);var _value9={Name:_varName3,Data:_outVar12,Type:6};if(color)_value9.Color=color;if(upColor)_value9.UpColor=upColor;if(downColor)_value9.DownColor=downColor;if(lineWidth)_value9.LineWidth=lineWidth;this.OutVarTable.push(_value9);}else if(lineArea&&_varName3)//LINEAREA 面积
11482
- {var _outVar13=this.VarTable.get(_varName3);var _value10={Name:_varName3,Data:_outVar13,Type:9};if(color)_value10.Color=color;if(upColor)_value10.UpColor=upColor;if(downColor)_value10.DownColor=downColor;if(lineWidth)_value10.LineWidth=lineWidth;this.OutVarTable.push(_value10);}else if(colorStick&&_varName3)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
11483
- {var _outVar14=this.VarTable.get(_varName3);var _value11={Name:_varName3,Data:_outVar14,Color:color,Type:2};if(lineWidth)_value11.LineWidth=lineWidth;if(color)_value11.Color=color;if(upColor)_value11.UpColor=upColor;if(downColor)_value11.DownColor=downColor;this.OutVarTable.push(_value11);}else if(_varName3&&color&&!_draw3){var _outVar15=this.VarTable.get(_varName3);if(!Array.isArray(_outVar15))_outVar15=this.SingleDataToArrayData(_outVar15);var _value12={Name:_varName3,Data:_outVar15,Color:color,Type:0};if(lineWidth)_value12.LineWidth=lineWidth;if(isShow==false)_value12.IsShow=false;if(isExData==true)_value12.IsExData=true;if(isDotLine==true)_value12.IsDotLine=true;if(isOverlayLine==true)_value12.IsOverlayLine=true;if(isNoneName==true)_value12.NoneName=true;if(isShowTitle==false)_value12.IsShowTitle=false;if(stepLine==true)_value12.Type=7;this.OutVarTable.push(_value12);}else if(_draw3)//画图函数
11484
- {var outVar={Name:_draw3.Name,Draw:_draw3,Type:1};if(color)outVar.Color=color;if(isDotLine==true)outVar.IsDotLine=true;if(lineWidth)outVar.LineWidth=lineWidth;if(isDrawAbove)outVar.IsDrawAbove=true;if(isDrawCenter)outVar.IsDrawCenter=true;if(isDrawBelow)outVar.IsDrawBelow=true;if(drawAlign>=0)outVar.DrawAlign=drawAlign;if(drawVAlign>=0)outVar.DrawVAlign=drawVAlign;if(fontSize>0)outVar.DrawFontSize=fontSize;if(bgConfig)outVar.Background=bgConfig;if(vLineConfig)outVar.VerticalLine=vLineConfig;if(IFrameSplitOperator.IsNumber(xOffset))outVar.XOffset=xOffset;if(IFrameSplitOperator.IsNumber(yOffset))outVar.YOffset=yOffset;if(IFrameSplitOperator.IsBool(isFirstDraw))outVar.IsFirstDraw=isFirstDraw;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar16=this.VarTable.get(_varName3);var _value13={Name:_varName3,Data:_outVar16,Type:0};if(color)_value13.Color=color;if(lineWidth)_value13.LineWidth=lineWidth;if(isShow==false)_value13.IsShow=false;if(isExData==true)_value13.IsExData=true;if(isDotLine==true)_value13.IsDotLine=true;if(isOverlayLine==true)_value13.IsOverlayLine=true;if(isShowTitle==false)_value13.IsShowTitle=false;if(stepLine==true)_value13.Type=7;this.OutVarTable.push(_value13);}}}};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();//执行脚本
11227
+ {if(_j13==0){var aryValue=this.SingleDataToArrayData(itemExpression.Value);_varName3=itemExpression.Value.toString();this.VarTable.set(_varName3,aryValue);//把常量放到变量表里
11228
+ }}else if(itemExpression.Type==Syntax.CallExpression){if(_j13==0){if(this.Draw.IsDrawFunction(itemExpression.Callee.Name)){_draw3=itemExpression.Draw;_draw3.Name=itemExpression.Callee.Name;}else{var _varValue2=itemExpression.Out;_varName3='__temp_sc_'+itemExpression.Callee.Name+'_'+i+'__';isNoneName=true;this.VarTable.set(_varName3,_varValue2);}}else{if(itemExpression.Callee.Name=="RGB"||itemExpression.Callee.Name=="RGBA"){color=itemExpression.Out;}else if(itemExpression.Callee.Name=="UPCOLOR"){upColor=itemExpression.Out;}else if(itemExpression.Callee.Name=="DOWNCOLOR"){downColor=itemExpression.Out;}else if(itemExpression.Callee.Name=="XMOVE"){xOffset=itemExpression.Out;}else if(itemExpression.Callee.Name=="YMOVE"){yOffset=itemExpression.Out;}else if(itemExpression.Callee.Name=="FIRSTDRAW"){if(itemExpression.Out===0)isFirstDraw=false;else if(itemExpression.Out===1)isFirstDraw=true;}else if(itemExpression.Callee.Name=="SOUND"){var event=this.GetSoundEvent();if(event){}_varName3=null;}else if(itemExpression.Callee.Name=="ICON"){var drawCond=this.VarTable.get(_varName3);if(drawCond){_draw3=this.GetOutIconData(drawCond,itemExpression.Draw);if(_draw3)_draw3.Name=itemExpression.Callee.Name;}_varName3=null;}else if(itemExpression.Callee.Name=="BACKGROUND"){bgConfig=itemExpression.Draw;_varName3=null;}else if(itemExpression.Callee.Name=="CKLINE"){vLineConfig=itemExpression.Draw;_varName3=null;}}}else if(itemExpression.Type==Syntax.BinaryExpression){if(_j13==0){_varName3="__temp_sb_"+i+"__";var _aryValue=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName3,_aryValue);}}else if(itemExpression.Type==Syntax.UnaryExpression){if(_j13==0){_varName3="__temp_su_"+i+"__";var varInfo={};if(this.ReadUnaryExpression(itemExpression,varInfo)){isNoneName=true;this.VarTable.set(_varName3,varInfo.OutVar);}}}}if(pointDot&&_varName3)//圆点
11229
+ {var _outVar7=this.VarTable.get(_varName3);if(!Array.isArray(_outVar7))_outVar7=this.SingleDataToArrayData(_outVar7);var _value={Name:_varName3,Data:_outVar7,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};if(color)_value.Color=color;if(lineWidth)_value.LineWidth=lineWidth;this.OutVarTable.push(_value);}else if(circleDot&&_varName3)//圆点
11230
+ {var _outVar8=this.VarTable.get(_varName3);if(!Array.isArray(_outVar8))_outVar8=this.SingleDataToArrayData(_outVar8);var _value2={Name:_varName3,Data:_outVar8,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};if(color)_value2.Color=color;if(lineWidth)_value2.LineWidth=lineWidth;this.OutVarTable.push(_value2);}else if(upDownDot&&_varName3)//彩色点
11231
+ {var _outVar9=this.VarTable.get(_varName3);if(!Array.isArray(_outVar9))_outVar9=this.SingleDataToArrayData(_outVar9);var _value3={Name:_varName3,Data:_outVar9,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3,UpDownDot:true};if(color)_value3.Color=color;if(lineWidth)_value3.LineWidth=lineWidth;this.OutVarTable.push(_value3);}else if(lineStick&&_varName3)//LINESTICK 同时画出柱状线和指标线
11232
+ {var _outVar10=this.VarTable.get(_varName3);var _value4={Name:_varName3,Data:_outVar10,Type:4};if(color)_value4.Color=color;if(lineWidth)_value4.LineWidth=lineWidth;this.OutVarTable.push(_value4);}else if(stick&&_varName3)//STICK 画柱状线
11233
+ {var _outVar11=this.VarTable.get(_varName3);var _value5={Name:_varName3,Data:_outVar11,Type:5};if(color)_value5.Color=color;if(lineWidth)_value5.LineWidth=lineWidth;this.OutVarTable.push(_value5);}else if(volStick&&_varName3)//VOLSTICK 画彩色柱状线
11234
+ {var _outVar12=this.VarTable.get(_varName3);var _value6={Name:_varName3,Data:_outVar12,Type:6};if(color)_value6.Color=color;if(upColor)_value6.UpColor=upColor;if(downColor)_value6.DownColor=downColor;if(lineWidth)_value6.LineWidth=lineWidth;this.OutVarTable.push(_value6);}else if(lineArea&&_varName3)//LINEAREA 面积
11235
+ {var _outVar13=this.VarTable.get(_varName3);var _value7={Name:_varName3,Data:_outVar13,Type:9};if(color)_value7.Color=color;if(upColor)_value7.UpColor=upColor;if(downColor)_value7.DownColor=downColor;if(lineWidth)_value7.LineWidth=lineWidth;this.OutVarTable.push(_value7);}else if(colorStick&&_varName3)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
11236
+ {var _outVar14=this.VarTable.get(_varName3);var _value8={Name:_varName3,Data:_outVar14,Color:color,Type:2};if(lineWidth)_value8.LineWidth=lineWidth;if(color)_value8.Color=color;if(upColor)_value8.UpColor=upColor;if(downColor)_value8.DownColor=downColor;this.OutVarTable.push(_value8);}else if(_varName3&&color&&!_draw3){var _outVar15=this.VarTable.get(_varName3);if(!Array.isArray(_outVar15))_outVar15=this.SingleDataToArrayData(_outVar15);var _value9={Name:_varName3,Data:_outVar15,Color:color,Type:0};if(lineWidth)_value9.LineWidth=lineWidth;if(isShow==false)_value9.IsShow=false;if(isExData==true)_value9.IsExData=true;if(isDotLine==true)_value9.IsDotLine=true;if(isOverlayLine==true)_value9.IsOverlayLine=true;if(isNoneName==true)_value9.NoneName=true;if(isShowTitle==false)_value9.IsShowTitle=false;if(stepLine==true)_value9.Type=7;this.OutVarTable.push(_value9);}else if(_draw3)//画图函数
11237
+ {var outVar={Name:_draw3.Name,Draw:_draw3,Type:1};if(color)outVar.Color=color;if(isDotLine==true)outVar.IsDotLine=true;if(lineWidth)outVar.LineWidth=lineWidth;if(isDrawAbove)outVar.IsDrawAbove=true;if(isDrawCenter)outVar.IsDrawCenter=true;if(isDrawBelow)outVar.IsDrawBelow=true;if(drawAlign>=0)outVar.DrawAlign=drawAlign;if(drawVAlign>=0)outVar.DrawVAlign=drawVAlign;if(fontSize>0)outVar.DrawFontSize=fontSize;if(bgConfig)outVar.Background=bgConfig;if(vLineConfig)outVar.VerticalLine=vLineConfig;if(IFrameSplitOperator.IsNumber(xOffset))outVar.XOffset=xOffset;if(IFrameSplitOperator.IsNumber(yOffset))outVar.YOffset=yOffset;if(IFrameSplitOperator.IsBool(isFirstDraw))outVar.IsFirstDraw=isFirstDraw;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar16=this.VarTable.get(_varName3);var _value10={Name:_varName3,Data:_outVar16,Type:0};if(color)_value10.Color=color;if(lineWidth)_value10.LineWidth=lineWidth;if(isShow==false)_value10.IsShow=false;if(isExData==true)_value10.IsExData=true;if(isDotLine==true)_value10.IsDotLine=true;if(isOverlayLine==true)_value10.IsOverlayLine=true;if(isShowTitle==false)_value10.IsShowTitle=false;if(stepLine==true)_value10.Type=7;this.OutVarTable.push(_value10);}}}};this.ReadUnaryExpression=function(item,varInfo){var argument=item.Argument;var outVar=null;if(argument.Type==Syntax.Literal){outVar=argument.Value;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.Identifier){var varName=argument.Name;outVar=this.ReadVariable(varName,item.Expression);if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.BinaryExpression){outVar=argument.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.CallExpression){var callItem=argument;if(this.Draw.IsDrawFunction(callItem.Callee.Name)){return false;}else if(callItem.Callee.Name==="IFC"&&callItem.Draw){return false;}else{outVar=callItem.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}}else{return false;}if(item.Operator=='-'){if(outVar)outVar=this.Algorithm.Subtract(0,outVar);}varInfo.OutVar=outVar;return true;};this.GetOutIconData=function(cond,iconDraw){if(Array.isArray(cond)){for(var i=0;i<cond.length&&i<iconDraw.DrawData.length;++i){var item=cond[i];if(item<=0)iconDraw.DrawData[i]=null;}return iconDraw;}if(cond)return iconDraw;return null;};this.GetSoundEvent=function(){if(!this.GetEventCallback)return null;return this.GetEventCallback(JSCHART_EVENT_ID.ON_PLAY_SOUND);};this.Run=function(){try{var data=this.RunAST();//执行脚本
11485
11238
  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 _this44=this;if(debugCtrl.ExeLine<debugCtrl.LineCount){var item=this.AST.Body[debugCtrl.ExeLine];this.RunASTNode(item);++debugCtrl.ExeLine;this.DebugFilter(debugCtrl,function(){_this44.DebugRun_Next(debugCtrl);});}else{this.DebugRun_End();debugCtrl.Status=2;this.DebugFilter(debugCtrl,null);}};//debug模式
11486
- this.DebugRun=function(){var _this45=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(){_this45.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 _i145 in node.Expression){var _item26=node.Expression[_i145];this.VisitNode(_item26);}};//函数调用
11239
+ this.DebugRun=function(){var _this45=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(){_this45.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var tempValue=this.GetNodeValueEx(node.Argument);var value=this.Algorithm.Subtract(0,tempValue);}else{var value=node.Argument.Value;}return value;};this.VisitSequenceExpression=function(node){for(var _i130 in node.Expression){var _item20=node.Expression[_i130];this.VisitNode(_item20);}};//函数调用
11487
11240
  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个条件参数
11488
11241
  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(funcName==="IFC"){//IFC(X,A,B)若X不为0则执行A,否则执行B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
11489
11242
  var bResult=this.Algorithm.IFC(args[0]);var item=bResult?node.Arguments[1]:node.Arguments[2];var value;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);node.Out=value;if(item.Draw)node.Draw=item.Draw;return node.Out;}//JSConsole.Complier.Log('[JSExecute::VisitCallExpression]' , funcName, '(', args.toString() ,')');
@@ -11518,31 +11271,31 @@ this.ConstVarTable=new _map2.default([//个股数据
11518
11271
  ['HYBLOCK',"所属行业"],//所属行业板块
11519
11272
  ['DYBLOCK',"所属地域"],//所属地域板块
11520
11273
  ['GNBLOCK',"所属概念"],//所属概念
11521
- ["FGBLOCK","所属风格板块"],["ZSBLOCK","所属指数板块"],["ZHBLOCK",'所属组合板块'],["ZDBLOCK",'所属自定义板块'],["HYZSCODE","所属行业的板块指数代码"],["GNBLOCKNUM","所属概念板块的个数"],["FGBLOCKNUM","所属风格板块的个数"],["ZSBLOCKNUM","所属指数板块的个数"],["ZHBLOCKNUM","所属组合板块的个数"],["ZDBLOCKNUM","所属自定义板块的个数"],["HYSYL","指数市盈率或个股所属行业的市盈率"],["HYSJL","指数市净率或个股所属行业的市净率"],['DRAWNULL',"无效数据"],["TR","求真实波幅"]]);if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam)this.CallbackParam=option.CallbackParam;if(option.Arguments)this.Arguments=option.Arguments;}this.Run=function(){try{this.OutVarTable=[];this.VarTable=new _map2.default();JSConsole.Complier.Log('[JSExecute::JSExplainer] Load Arguments',this.Arguments);for(var _i146 in this.Arguments)//预定义的变量
11522
- {var _item27=this.Arguments[_i146];this.VarTable.set(_item27.Name,_item27.Value);}var data=this.RunAST();//执行脚本
11274
+ ["FGBLOCK","所属风格板块"],["ZSBLOCK","所属指数板块"],["ZHBLOCK",'所属组合板块'],["ZDBLOCK",'所属自定义板块'],["HYZSCODE","所属行业的板块指数代码"],["GNBLOCKNUM","所属概念板块的个数"],["FGBLOCKNUM","所属风格板块的个数"],["ZSBLOCKNUM","所属指数板块的个数"],["ZHBLOCKNUM","所属组合板块的个数"],["ZDBLOCKNUM","所属自定义板块的个数"],["HYSYL","指数市盈率或个股所属行业的市盈率"],["HYSJL","指数市净率或个股所属行业的市净率"],['DRAWNULL',"无效数据"],["TR","求真实波幅"]]);if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam)this.CallbackParam=option.CallbackParam;if(option.Arguments)this.Arguments=option.Arguments;}this.Run=function(){try{this.OutVarTable=[];this.VarTable=new _map2.default();JSConsole.Complier.Log('[JSExecute::JSExplainer] Load Arguments',this.Arguments);for(var _i131 in this.Arguments)//预定义的变量
11275
+ {var _item21=this.Arguments[_i131];this.VarTable.set(_item21.Name,_item21.Value);}var data=this.RunAST();//执行脚本
11523
11276
  JSConsole.Complier.Log('[JSExplainer.Run] explain finish',data);if(this.UpdateUICallback)//回调发送结果, 可以支持异步
11524
- {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 _i147 in this.AST.Body){var _item28=this.AST.Body[_i147];this.VisitNode(_item28);//输出变量
11525
- if(_item28.Type==Syntax.ExpressionStatement&&_item28.Expression){if(_item28.Expression.Type==Syntax.AssignmentExpression){if(_item28.Expression.Operator==':'&&_item28.Expression.Left){var assignmentItem=_item28.Expression;var _varName4=assignmentItem.Left.Name;var _outVar17='\u8F93\u51FA'+_varName4+': '+this.VarTable.get(_varName4);this.OutVarTable.push({Name:_varName4,Data:_outVar17,Type:0});}else if(_item28.Expression.Operator==':='&&_item28.Expression.Left){var _assignmentItem=_item28.Expression;var _varName5=_assignmentItem.Left.Name;var _outVar18='\u8D4B\u503C'+_varName5+': '+this.VarTable.get(_varName5);this.OutVarTable.push({Name:_varName5,Data:_outVar18,Type:0,IsOut:false});}}else if(_item28.Expression.Type==Syntax.CallExpression){var callItem=_item28.Expression;if(this.IsDrawFunction(callItem.Callee.Name)){var _outVar19=callItem.Out;var drawName=callItem.Callee.Name;this.OutVarTable.push({Name:drawName,Draw:'\u8F93\u51FA: '+_outVar19,Type:1});}else{var _outVar20=callItem.Out;varName='__temp_c_'+callItem.Callee.Name+'_'+_i147+'__';this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar20,Type:0,NoneName:true});}}else if(_item28.Expression.Type==Syntax.Identifier){var _varName6=_item28.Expression.Name;var _outVar21=this.ReadVariable(_varName6,_item28.Expression);_varName6="__temp_i_"+_i147+"__";this.OutVarTable.push({Name:_varName6,Data:'\u8F93\u51FA: '+_outVar21,Type:0,NoneName:true});}else if(_item28.Expression.Type==Syntax.Literal)//常量
11526
- {var _outVar22=_item28.Expression.Value;if(IFrameSplitOperator.IsString(_outVar22)&&_outVar22.indexOf("$")>0)_outVar22=this.GetOtherSymbolExplain({Literal:_outVar22},_item28);varName="__temp_li_"+_i147+"__";var type=0;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar22,Type:0,NoneName:true});}else if(_item28.Expression.Type==Syntax.BinaryExpression)// CLOSE+OPEN;
11527
- {var varName="__temp_b_"+_i147+"__";var _outVar23=_item28.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar23,Type:0,NoneName:true});}else if(_item28.Expression.Type==Syntax.LogicalExpression)//逻辑语句 如 T1 AND T2
11528
- {var varName="__temp_l_"+_i147+"__";var _outVar24=_item28.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar24,Type:0,NoneName:true});}else if(_item28.Expression.Type==Syntax.UnaryExpression)//一元运算 如-C, -7, -(C+10)
11529
- {var varName="__temp_l_"+_i147+"__";var argument=_item28.Expression.Argument;var _outVar25=null;if(argument.Type==Syntax.Literal){_outVar25=argument.Value;}else if(argument.Type==Syntax.Identifier){var _varName7=argument.Name;_outVar25=this.ReadVariable(_varName7,_item28.Expression);}else if(argument.Type==Syntax.BinaryExpression){_outVar25=argument.Out;}if(_item28.Expression.Operator=='-'){_outVar25='-'+_outVar25;}this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar25,Type:0,NoneName:true});}else if(_item28.Expression.Type==Syntax.SequenceExpression){var _varName8=void 0;var _drawName=void 0;var draw=void 0;var color=void 0;var lineWidth=void 0;var colorStick=false;var pointDot=false;var circleDot=false;var lineStick=false;var stick=false;var volStick=false;var isShow=true;var isExData=false;var isDotLine=false;var isOverlayLine=false;//叠加线
11277
+ {JSConsole.Complier.Log('[JSExplainer.Run] invoke UpdateUICallback.');this.UpdateUICallback(data);}}catch(error){JSConsole.Complier.Log('[JSExplainer.Run] throw error ',error);if(this.ErrorCallback){this.ErrorCallback(error,this.OutVarTable);}}};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i132 in this.AST.Body){var _item22=this.AST.Body[_i132];this.VisitNode(_item22);//输出变量
11278
+ if(_item22.Type==Syntax.ExpressionStatement&&_item22.Expression){if(_item22.Expression.Type==Syntax.AssignmentExpression){if(_item22.Expression.Operator==':'&&_item22.Expression.Left){var assignmentItem=_item22.Expression;var _varName4=assignmentItem.Left.Name;var _outVar17='\u8F93\u51FA'+_varName4+': '+this.VarTable.get(_varName4);this.OutVarTable.push({Name:_varName4,Data:_outVar17,Type:0});}else if(_item22.Expression.Operator==':='&&_item22.Expression.Left){var _assignmentItem=_item22.Expression;var _varName5=_assignmentItem.Left.Name;var _outVar18='\u8D4B\u503C'+_varName5+': '+this.VarTable.get(_varName5);this.OutVarTable.push({Name:_varName5,Data:_outVar18,Type:0,IsOut:false});}}else if(_item22.Expression.Type==Syntax.CallExpression){var callItem=_item22.Expression;if(this.IsDrawFunction(callItem.Callee.Name)){var _outVar19=callItem.Out;var drawName=callItem.Callee.Name;this.OutVarTable.push({Name:drawName,Draw:'\u8F93\u51FA: '+_outVar19,Type:1});}else{var _outVar20=callItem.Out;varName='__temp_c_'+callItem.Callee.Name+'_'+_i132+'__';this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar20,Type:0,NoneName:true});}}else if(_item22.Expression.Type==Syntax.Identifier){var _varName6=_item22.Expression.Name;var _outVar21=this.ReadVariable(_varName6,_item22.Expression);_varName6="__temp_i_"+_i132+"__";this.OutVarTable.push({Name:_varName6,Data:'\u8F93\u51FA: '+_outVar21,Type:0,NoneName:true});}else if(_item22.Expression.Type==Syntax.Literal)//常量
11279
+ {var _outVar22=_item22.Expression.Value;if(IFrameSplitOperator.IsString(_outVar22)&&_outVar22.indexOf("$")>0)_outVar22=this.GetOtherSymbolExplain({Literal:_outVar22},_item22);varName="__temp_li_"+_i132+"__";var type=0;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar22,Type:0,NoneName:true});}else if(_item22.Expression.Type==Syntax.BinaryExpression)// CLOSE+OPEN;
11280
+ {var varName="__temp_b_"+_i132+"__";var _outVar23=_item22.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar23,Type:0,NoneName:true});}else if(_item22.Expression.Type==Syntax.LogicalExpression)//逻辑语句 如 T1 AND T2
11281
+ {var varName="__temp_l_"+_i132+"__";var _outVar24=_item22.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar24,Type:0,NoneName:true});}else if(_item22.Expression.Type==Syntax.UnaryExpression)//一元运算 如-C, -7, -(C+10)
11282
+ {var varName="__temp_l_"+_i132+"__";var argument=_item22.Expression.Argument;var _outVar25=null;if(argument.Type==Syntax.Literal){_outVar25=argument.Value;}else if(argument.Type==Syntax.Identifier){var _varName7=argument.Name;_outVar25=this.ReadVariable(_varName7,_item22.Expression);}else if(argument.Type==Syntax.BinaryExpression){_outVar25=argument.Out;}if(_item22.Expression.Operator=='-'){_outVar25='-'+_outVar25;}this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar25,Type:0,NoneName:true});}else if(_item22.Expression.Type==Syntax.SequenceExpression){var _varName8=void 0;var _drawName=void 0;var draw=void 0;var color=void 0;var lineWidth=void 0;var colorStick=false;var pointDot=false;var circleDot=false;var lineStick=false;var stick=false;var volStick=false;var isShow=true;var isExData=false;var isDotLine=false;var isOverlayLine=false;//叠加线
11530
11283
  var isNoneName=false;var fontSize=-1;var drawAlign=-1,drawVAlign=-1;//显示在位置之上,对于DRAWTEXT和DRAWNUMBER等函数有用,放在语句的最后面(不能与LINETHICK等函数共用),比如:
11531
11284
  //DRAWNUMBER(CLOSE>OPEN,HIGH,CLOSE),DRAWABOVE;
11532
- var isDrawAbove=false;for(var _j15 in _item28.Expression.Expression){var itemExpression=_item28.Expression.Expression[_j15];if(itemExpression.Type==Syntax.AssignmentExpression&&itemExpression.Operator==':'&&itemExpression.Left){_varName8=itemExpression.Left.Name;var varValue=this.VarTable.get(_varName8);this.VarTable.set(_varName8,varValue);//把常量放到变量表里
11285
+ var isDrawAbove=false;for(var _j14 in _item22.Expression.Expression){var itemExpression=_item22.Expression.Expression[_j14];if(itemExpression.Type==Syntax.AssignmentExpression&&itemExpression.Operator==':'&&itemExpression.Left){_varName8=itemExpression.Left.Name;var varValue=this.VarTable.get(_varName8);this.VarTable.set(_varName8,varValue);//把常量放到变量表里
11533
11286
  }else if(itemExpression.Type==Syntax.Identifier){var value=itemExpression.Name;if(value==='COLORSTICK')colorStick=true;else if(value==='POINTDOT')pointDot=true;else if(value==='CIRCLEDOT')circleDot=true;else if(value==='DOTLINE')isDotLine=true;else if(value==='LINESTICK')lineStick=true;else if(value==='STICK')stick=true;else if(value==='VOLSTICK')volStick=true;else if(value==="DRAWABOVE")isDrawAbove=true;else if(value.indexOf('COLOR')==0)color=value;else if(value.indexOf('LINETHICK')==0)lineWidth=value;else if(value=="ALIGN0")drawAlign=0;else if(value=="ALIGN1")drawAlign=1;else if(value=="ALIGN2")drawAlign=2;else if(value=="VALIGN0")drawVAlign=0;else if(value=="VALIGN1")drawVAlign=1;else if(value=="VALIGN2")drawVAlign=2;else if(value.indexOf('NODRAW')==0)isShow=false;else if(value.indexOf('EXDATA')==0)isExData=true;//扩展数据, 不显示再图形里面
11534
- else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{_varName8=itemExpression.Name;var _varValue3=this.ReadVariable(_varName8,itemExpression);_varName8="__temp_si_"+_i147+"__";isNoneName=true;this.VarTable.set(_varName8,_varValue3);//放到变量表里
11287
+ else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{_varName8=itemExpression.Name;var _varValue3=this.ReadVariable(_varName8,itemExpression);_varName8="__temp_si_"+_i132+"__";isNoneName=true;this.VarTable.set(_varName8,_varValue3);//放到变量表里
11535
11288
  }}else if(itemExpression.Type==Syntax.Literal)//常量
11536
11289
  {var aryValue=itemExpression.Value;_varName8=itemExpression.Value.toString();isNoneName=true;this.VarTable.set(_varName8,aryValue);//把常量放到变量表里
11537
- }else if(itemExpression.Type==Syntax.CallExpression){if(_j15==0){if(this.IsDrawFunction(itemExpression.Callee.Name)){draw=itemExpression.Out;_drawName=itemExpression.Callee.Name;}else{var _varValue4=itemExpression.Out;_varName8='__temp_sc_'+itemExpression.Callee.Name+'_'+_i147+'__';isNoneName=true;this.VarTable.set(_varName8,_varValue4);}}}else if(itemExpression.Type==Syntax.BinaryExpression){_varName8="__temp_sb_"+_i147+"__";var _aryValue2=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName8,_aryValue2);}else if(itemExpression.Type==Syntax.UnaryExpression){_varName8="__temp_sb_"+_i147+"__";var argument=itemExpression.Argument;var _aryValue3=null;if(argument.Type==Syntax.Literal){_aryValue3=argument.Value;}else if(argument.Type==Syntax.Identifier){var _varName9=argument.Name;_aryValue3=this.ReadVariable(_varName9,_item28.Expression);}else if(argument.Type==Syntax.BinaryExpression){_aryValue3=argument.Out;}if(itemExpression.Operator=='-'){_aryValue3='-'+_aryValue3;}isNoneName=true;this.VarTable.set(_varName8,_aryValue3);}}var outValue;if(draw)outValue='\u8F93\u51FA: '+draw;else if(isNoneName)outValue='\u8F93\u51FA: '+this.VarTable.get(_varName8);else outValue='\u8F93\u51FA'+_varName8+': '+this.VarTable.get(_varName8);if(color)outValue+=',\u989C\u8272'+this.GetColorExplain(color);if(lineWidth)outValue+=',\u7EBF\u6BB5\u7C97\u7EC6'+this.GetLineWidthExplain(lineWidth);if(isShow==false)outValue+=",不显示";if(isDotLine==true)outValue+=",画虚线";if(isDrawAbove==true)outValue+=',显示在位置之上';if(pointDot&&_varName8)//圆点
11538
- {outValue+=",画小圆点线";var _value14={Name:_varName8,Draw:outValue,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};this.OutVarTable.push(_value14);}else if(circleDot&&_varName8)//圆点
11539
- {outValue+=",画小圆圈线";var _value15={Name:_varName8,Draw:outValue,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};this.OutVarTable.push(_value15);}else if(lineStick&&_varName8)//LINESTICK 同时画出柱状线和指标线
11540
- {outValue+=",画出柱状线和指标线";var _value16={Name:_varName8,Draw:outValue,Type:4};this.OutVarTable.push(_value16);}else if(stick&&_varName8)//STICK 画柱状线
11541
- {outValue+=",画柱状线";var _value17={Name:_varName8,Draw:outValue,Type:5};this.OutVarTable.push(_value17);}else if(volStick&&_varName8)//VOLSTICK 画彩色柱状线
11542
- {outValue+=",画成交量柱状线";var _value18={Name:_varName8,Draw:outValue,Type:6};this.OutVarTable.push(_value18);}else if(_varName8&&color){var _value19={Name:_varName8,Data:outValue,Color:color,Type:0};this.OutVarTable.push(_value19);}else if(draw)//画图函数
11290
+ }else if(itemExpression.Type==Syntax.CallExpression){if(_j14==0){if(this.IsDrawFunction(itemExpression.Callee.Name)){draw=itemExpression.Out;_drawName=itemExpression.Callee.Name;}else{var _varValue4=itemExpression.Out;_varName8='__temp_sc_'+itemExpression.Callee.Name+'_'+_i132+'__';isNoneName=true;this.VarTable.set(_varName8,_varValue4);}}}else if(itemExpression.Type==Syntax.BinaryExpression){_varName8="__temp_sb_"+_i132+"__";var _aryValue2=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName8,_aryValue2);}else if(itemExpression.Type==Syntax.UnaryExpression){_varName8="__temp_sb_"+_i132+"__";var argument=itemExpression.Argument;var _aryValue3=null;if(argument.Type==Syntax.Literal){_aryValue3=argument.Value;}else if(argument.Type==Syntax.Identifier){var _varName9=argument.Name;_aryValue3=this.ReadVariable(_varName9,_item22.Expression);}else if(argument.Type==Syntax.BinaryExpression){_aryValue3=argument.Out;}if(itemExpression.Operator=='-'){_aryValue3='-'+_aryValue3;}isNoneName=true;this.VarTable.set(_varName8,_aryValue3);}}var outValue;if(draw)outValue='\u8F93\u51FA: '+draw;else if(isNoneName)outValue='\u8F93\u51FA: '+this.VarTable.get(_varName8);else outValue='\u8F93\u51FA'+_varName8+': '+this.VarTable.get(_varName8);if(color)outValue+=',\u989C\u8272'+this.GetColorExplain(color);if(lineWidth)outValue+=',\u7EBF\u6BB5\u7C97\u7EC6'+this.GetLineWidthExplain(lineWidth);if(isShow==false)outValue+=",不显示";if(isDotLine==true)outValue+=",画虚线";if(isDrawAbove==true)outValue+=',显示在位置之上';if(pointDot&&_varName8)//圆点
11291
+ {outValue+=",画小圆点线";var _value11={Name:_varName8,Draw:outValue,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};this.OutVarTable.push(_value11);}else if(circleDot&&_varName8)//圆点
11292
+ {outValue+=",画小圆圈线";var _value12={Name:_varName8,Draw:outValue,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};this.OutVarTable.push(_value12);}else if(lineStick&&_varName8)//LINESTICK 同时画出柱状线和指标线
11293
+ {outValue+=",画出柱状线和指标线";var _value13={Name:_varName8,Draw:outValue,Type:4};this.OutVarTable.push(_value13);}else if(stick&&_varName8)//STICK 画柱状线
11294
+ {outValue+=",画柱状线";var _value14={Name:_varName8,Draw:outValue,Type:5};this.OutVarTable.push(_value14);}else if(volStick&&_varName8)//VOLSTICK 画彩色柱状线
11295
+ {outValue+=",画成交量柱状线";var _value15={Name:_varName8,Draw:outValue,Type:6};this.OutVarTable.push(_value15);}else if(_varName8&&color){var _value16={Name:_varName8,Data:outValue,Color:color,Type:0};this.OutVarTable.push(_value16);}else if(draw)//画图函数
11543
11296
  {var outVar={Name:_drawName,Draw:outValue,Type:1};this.OutVarTable.push(outVar);}else if(colorStick&&_varName8)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
11544
- {outValue+=",画彩色柱状线";var _value20={Name:_varName8,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value20);}else if(_varName8){var _value21={Name:_varName8,Data:outValue,Type:0};this.OutVarTable.push(_value21);}}}}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 _i148 in node.Expression){var _item29=node.Expression[_i148];this.VisitNode(_item29);}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var value=this.GetNodeValueEx(node.Argument);return'-'+value;}return node.Argument.Value;};//函数调用
11545
- this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i149 in node.Arguments){var _item30=node.Arguments[_i149];var value=void 0;if(_item30.Type==Syntax.BinaryExpression||_item30.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(_item30);else if(_item30.Type==Syntax.CallExpression)value=this.VisitCallExpression(_item30);else value=this.GetNodeValue(_item30);args.push(value);}JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}node.Out=this.CallFunctionExplain(funcName,args,node);return node.Out;};this.FUNCTION_INFO_LIST=new _map2.default([["REF",{Name:"REF",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684'+args[0];}}],["REFX",{Name:"REFX",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684'+args[0];}}],["REFV",{Name:"REFV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFXV",{Name:"REFXV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFDATE",{Name:"REFDATE",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5'+args[0];}}],["COUNT",{Name:"COUNT",Param:{Count:2},ToString:function ToString(args){return'\u7EDF\u8BA1'+args[1]+'\u65E5\u4E2D\u6EE1\u8DB3'+args[0]+'\u7684\u5929\u6570';}}],["BARSLASTCOUNT",{Name:"BARSLASTCOUNT",Param:{Count:1},ToString:function ToString(args){return'\u6761\u4EF6'+args[0]+'\u8FDE\u7EED\u6210\u7ACB\u6B21\u6570';}}],["BARSCOUNT",{Name:"BARSCOUNT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u6709\u6548\u6570\u636E\u5468\u671F\u6570';}}],["BARSLAST",{Name:"BARSLAST",Param:{Count:1},ToString:function ToString(args){return'\u4E0A\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSNEXT",{Name:"BARSNEXT",Param:{Count:1},ToString:function ToString(args){return'\u4E0B\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCEN",{Name:"BARSSINCEN",Param:{Count:2},ToString:function ToString(args){return'\u5728'+args[1]+'\u5468\u671F\u5185\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCE",{Name:"BARSSINCE",Param:{Count:1},ToString:function ToString(args){return'\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["HHV",{Name:"HHV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u9AD8\u503C';}}],["LLV",{Name:"LLV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u4F4E\u503C';}}],["ZTPRICE",{Name:"ZTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算涨停价';}}],["DTPRICE",{Name:"DTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算跌停价';}}],["BACKSET",{Name:"BACKSET",Param:{Count:2},ToString:function ToString(args){return'\u82E5'+args[0]+'\u5219\u5C06\u6700\u8FD1'+args[1]+'\u5468\u671F\u7F6E\u4E3A1';}}],["HOD",{Name:"HOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u9AD8\u503C\u540D\u6B21';}}],["LOD",{Name:"LOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u4F4E\u503C\u540D\u6B21';}}],["REVERSE",{Name:"REVERSE",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u76F8\u53CD\u6570';}}],["FILTER",{Name:"FILTER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u8FC7\u6EE4';}}],["FILTERX",{Name:"FILTERX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u53CD\u5411\u8FC7\u6EE4';}}],["TFILTER",{Name:"TFILTER",Param:{Count:3},ToString:function ToString(args){return'\u4FE1\u53F7\u8FC7\u6EE4(\u591A\u5934)';}}],["SUMBARS",{Name:"SUMBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7D2F\u52A0\u81F3'+args[1]+'\u7684\u5929\u6570';}}],["MA",{Name:"MA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7B80\u5355\u79FB\u52A8\u5E73\u5747';}}],["SMA",{Name:"SMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["MEMA",{Name:"MEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["EMA",{Name:"EMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMA",{Name:"EXPMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMEMA",{Name:"EXPMEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["WMA",{Name:"WMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u52A0\u6743\u79FB\u52A8\u5E73\u5747';}}],["DMA",{Name:"DMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u52A8\u6001\u79FB\u52A8\u5E73\u5747';}}],["XMA",{Name:"XMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u504F\u79FB\u79FB\u52A8\u5E73\u5747';}}],["RANGE",{Name:"RANGE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["CONST",{Name:"CONST",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6700\u540E\u4E00\u65E5\u503C';}}],["TOPRANGE",{Name:"TOPRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5927\u503C';}}],["LOWRANGE",{Name:"LOWRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5C0F\u503C';}}],["FINDHIGH",{Name:"FINDHIGH",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7';}}],["FINDHIGHBARS",{Name:"FINDHIGHBARS",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["FINDLOW",{Name:"FINDLOW",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7';}}],["FINDLOWBARS",{Name:"FINDLOWBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["SUM",{Name:"SUM",Param:{Count:2},ToString:function ToString(args){return''+args[0]+args[1]+'\u65E5\u7D2F\u52A0';}}],["MULAR",{Name:"MULAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u65E5\u7D2F\u4E58';}}],["AMA",{Name:"AMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u81EA\u9002\u5E94\u5747\u7EBF';}}],["TMA",{Name:"TMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["CROSS",{Name:"CROSS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u4E0A\u7A7F'+args[1];}}],["LONGCROSS",{Name:"LONGCROSS",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u5C0F\u4E8E'+args[1]+'\u4FDD\u6301'+args[2]+'\u4E2A\u4EA4\u6613\u65E5\u540E\u4EA4\u53C9\u4E0A\u7A7F';}}],["UPNDAY",{Name:"UPNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u6DA8';}}],["DOWNNDAY",{Name:"DOWNNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u8DCC';}}],["NDAY",{Name:"NDAY",Param:{Count:3},ToString:function ToString(args){return'\u6700\u8FD1'+args[2]+'\u65E5'+args[0]+'\u4E00\u76F4\u5927\u4E8E'+args[1];}}],["EXIST",{Name:"EXIST",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u5B58\u5728'+args[0];}}],["EXISTR",{Name:"EXISTR",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u5B58\u5728'+args[0];}}],["EVERY",{Name:"EVERY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u4E00\u76F4\u5B58\u5728'+args[0];}}],["LAST",{Name:"LAST",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u6301\u7EED'+args[0];}}],["NOT",{Name:"NOT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u53D6\u53CD';}}],["IF",{Name:"IF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFF",{Name:"IFF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFN",{Name:"IFN",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFC",{Name:"IFC",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["TESTSKIP",{Name:"TESTSKIP",Param:{Count:1},ToString:function ToString(args){return'\u5982\u679C\u6EE1\u8DB3\u6761\u4EF6'+args[0]+',\u516C\u5F0F\u8FD4\u56DE';}}],["VALUEWHEN",{Name:"VALUEWHEN",Param:{Count:2},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE\u4E0A\u4E2A\u8F93\u51FA\u503C ';}}],["MAX",{Name:"MAX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5927\u503C';}}],["MIN",{Name:"MIN",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5C0F\u503C';}}],["ACOS",{Name:"ACOS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u4F59\u5F26';}}],["ASIN",{Name:"ASIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5F26';}}],["ATAN",{Name:"ATAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5207';}}],["COS",{Name:"COS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u4F59\u5F26';}}],["SIN",{Name:"SIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5F26';}}],["TAN",{Name:"TAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5207';}}],["EXP",{Name:"EXP",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6307\u6570';}}],["LN",{Name:"LN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u81EA\u7136\u5BF9\u6570';}}],["LOG",{Name:"LOG",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5BF9\u6570';}}],["SQRT",{Name:"SQRT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5F00\u65B9';}}],["ABS",{Name:"ABS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7EDD\u5BF9\u503C';}}],["POW",{Name:"POW",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u4E58\u5E42';}}],["CEILING",{Name:"CEILING",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["FLOOR",{Name:"FLOOR",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["INTPART",{Name:"INTPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6574\u6570\u90E8\u5206';}}],["BETWEEN",{Name:"BETWEEN",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["FRACPART",{Name:"FRACPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5C0F\u6570\u90E8\u5206';}}],["ROUND",{Name:"ROUND",Param:{Count:1},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["ROUND2",{Name:"ROUND2",Param:{Count:2},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["SIGN",{Name:"SIGN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7B26\u53F7';}}],["MOD",{Name:"MOD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5173\u4E8E'+args[1]+'\u7684\u6A21';}}],["RAND",{Name:"RAND",Param:{Count:1},ToString:function ToString(args){return'\u968F\u673A\u6B63\u6574\u6570';}}],["AVEDEV",{Name:"AVEDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u5747\u7EDD\u5BF9\u504F\u5DEE';}}],["DEVSQ",{Name:"DEVSQ",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6570\u636E\u504F\u5DEE\u5E73\u65B9\u548C';}}],["FORCAST",{Name:"FORCAST",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u9884\u6D4B\u503C';}}],["TSMA",{Name:"TSMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u4E2A\u5468\u671F\u5185\u7684\u65F6\u95F4\u5E8F\u5217\u4E09\u89D2\u79FB\u52A8\u5E73\u5747';}}],["SLOPE",{Name:"SLOPE",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u659C\u7387';}}],["STD",{Name:"STD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6807\u51C6\u5DEE';}}],["STDP",{Name:"STDP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6807\u51C6\u5DEE';}}],["STDDEV",{Name:"STDDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6807\u51C6\u504F\u5DEE';}}],["VAR",{Name:"VAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6837\u672C\u65B9\u5DEE';}}],["VARP",{Name:"VARP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6837\u672C\u65B9\u5DEE';}}],["COVAR",{Name:"COVAR",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u534F\u65B9\u5DEE';}}],["RELATE",{Name:"RELATE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[0]+'\u5468\u671F\u7684\u76F8\u5173\u7CFB\u6570';}}],["BETA",{Name:"BETA",Param:{Count:1},ToString:function ToString(args){return'\u03B2(Beta)\u7CFB\u6570';}}],["BETAEX",{Name:"BETAEX",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u76F8\u5173\u653E\u5927\u7CFB\u6570';}}],["COST",{Name:"COST",Param:{Count:1},ToString:function ToString(args){return'\u83B7\u5229\u76D8\u4E3A'+args[0]+'%\u7684\u6210\u672C\u5206\u5E03';}}],["WINNER",{Name:"WINNER",Param:{Count:1},ToString:function ToString(args){return'\u4EE5'+args[0]+'\u8BA1\u7B97\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["LWINNER",{Name:"LWINNER",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[0]+'\u65E5\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["PWINNER",{Name:"PWINNER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["COSTEX",{Name:"COSTEX",Param:{Count:2},ToString:function ToString(args){return'\u4F4D\u4E8E\u4EF7\u683C'+args[0]+'\u548C'+args[1]+'\u95F4\u7684\u6210\u672C';}}],["PPART",{Name:"PPART",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u5360\u603B\u6210\u672C\u7684\u6BD4\u4F8B';}}],["SAR",{Name:"SAR",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411';}}],["SARTURN",{Name:"SARTURN",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411\u70B9';}}],//字符串函数
11297
+ {outValue+=",画彩色柱状线";var _value17={Name:_varName8,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value17);}else if(_varName8){var _value18={Name:_varName8,Data:outValue,Type:0};this.OutVarTable.push(_value18);}}}}JSConsole.Complier.Log('[JSExplainer::Run]',this.VarTable);return this.OutVarTable;};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitSequenceExpression=function(node){for(var _i133 in node.Expression){var _item23=node.Expression[_i133];this.VisitNode(_item23);}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var value=this.GetNodeValueEx(node.Argument);return'-'+value;}return node.Argument.Value;};//函数调用
11298
+ this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i134 in node.Arguments){var _item24=node.Arguments[_i134];var value=void 0;if(_item24.Type==Syntax.BinaryExpression||_item24.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(_item24);else if(_item24.Type==Syntax.CallExpression)value=this.VisitCallExpression(_item24);else value=this.GetNodeValue(_item24);args.push(value);}JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}node.Out=this.CallFunctionExplain(funcName,args,node);return node.Out;};this.FUNCTION_INFO_LIST=new _map2.default([["REF",{Name:"REF",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684'+args[0];}}],["REFX",{Name:"REFX",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684'+args[0];}}],["REFV",{Name:"REFV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFXV",{Name:"REFXV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFDATE",{Name:"REFDATE",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5'+args[0];}}],["COUNT",{Name:"COUNT",Param:{Count:2},ToString:function ToString(args){return'\u7EDF\u8BA1'+args[1]+'\u65E5\u4E2D\u6EE1\u8DB3'+args[0]+'\u7684\u5929\u6570';}}],["BARSLASTCOUNT",{Name:"BARSLASTCOUNT",Param:{Count:1},ToString:function ToString(args){return'\u6761\u4EF6'+args[0]+'\u8FDE\u7EED\u6210\u7ACB\u6B21\u6570';}}],["BARSCOUNT",{Name:"BARSCOUNT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u6709\u6548\u6570\u636E\u5468\u671F\u6570';}}],["BARSLAST",{Name:"BARSLAST",Param:{Count:1},ToString:function ToString(args){return'\u4E0A\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSNEXT",{Name:"BARSNEXT",Param:{Count:1},ToString:function ToString(args){return'\u4E0B\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCEN",{Name:"BARSSINCEN",Param:{Count:2},ToString:function ToString(args){return'\u5728'+args[1]+'\u5468\u671F\u5185\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCE",{Name:"BARSSINCE",Param:{Count:1},ToString:function ToString(args){return'\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["HHV",{Name:"HHV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u9AD8\u503C';}}],["LLV",{Name:"LLV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u4F4E\u503C';}}],["ZTPRICE",{Name:"ZTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算涨停价';}}],["DTPRICE",{Name:"DTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算跌停价';}}],["BACKSET",{Name:"BACKSET",Param:{Count:2},ToString:function ToString(args){return'\u82E5'+args[0]+'\u5219\u5C06\u6700\u8FD1'+args[1]+'\u5468\u671F\u7F6E\u4E3A1';}}],["HOD",{Name:"HOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u9AD8\u503C\u540D\u6B21';}}],["LOD",{Name:"LOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u4F4E\u503C\u540D\u6B21';}}],["REVERSE",{Name:"REVERSE",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u76F8\u53CD\u6570';}}],["FILTER",{Name:"FILTER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u8FC7\u6EE4';}}],["FILTERX",{Name:"FILTERX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u53CD\u5411\u8FC7\u6EE4';}}],["TFILTER",{Name:"TFILTER",Param:{Count:3},ToString:function ToString(args){return'\u4FE1\u53F7\u8FC7\u6EE4(\u591A\u5934)';}}],["SUMBARS",{Name:"SUMBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7D2F\u52A0\u81F3'+args[1]+'\u7684\u5929\u6570';}}],["MA",{Name:"MA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7B80\u5355\u79FB\u52A8\u5E73\u5747';}}],["SMA",{Name:"SMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["MEMA",{Name:"MEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["EMA",{Name:"EMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMA",{Name:"EXPMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMEMA",{Name:"EXPMEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["WMA",{Name:"WMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u52A0\u6743\u79FB\u52A8\u5E73\u5747';}}],["DMA",{Name:"DMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u52A8\u6001\u79FB\u52A8\u5E73\u5747';}}],["XMA",{Name:"XMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u504F\u79FB\u79FB\u52A8\u5E73\u5747';}}],["RANGE",{Name:"RANGE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["CONST",{Name:"CONST",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6700\u540E\u4E00\u65E5\u503C';}}],["TOPRANGE",{Name:"TOPRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5927\u503C';}}],["LOWRANGE",{Name:"LOWRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5C0F\u503C';}}],["FINDHIGH",{Name:"FINDHIGH",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7';}}],["FINDHIGHBARS",{Name:"FINDHIGHBARS",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["FINDLOW",{Name:"FINDLOW",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7';}}],["FINDLOWBARS",{Name:"FINDLOWBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["SUM",{Name:"SUM",Param:{Count:2},ToString:function ToString(args){return''+args[0]+args[1]+'\u65E5\u7D2F\u52A0';}}],["MULAR",{Name:"MULAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u65E5\u7D2F\u4E58';}}],["AMA",{Name:"AMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u81EA\u9002\u5E94\u5747\u7EBF';}}],["TMA",{Name:"TMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["CROSS",{Name:"CROSS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u4E0A\u7A7F'+args[1];}}],["LONGCROSS",{Name:"LONGCROSS",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u5C0F\u4E8E'+args[1]+'\u4FDD\u6301'+args[2]+'\u4E2A\u4EA4\u6613\u65E5\u540E\u4EA4\u53C9\u4E0A\u7A7F';}}],["UPNDAY",{Name:"UPNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u6DA8';}}],["DOWNNDAY",{Name:"DOWNNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u8DCC';}}],["NDAY",{Name:"NDAY",Param:{Count:3},ToString:function ToString(args){return'\u6700\u8FD1'+args[2]+'\u65E5'+args[0]+'\u4E00\u76F4\u5927\u4E8E'+args[1];}}],["EXIST",{Name:"EXIST",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u5B58\u5728'+args[0];}}],["EXISTR",{Name:"EXISTR",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u5B58\u5728'+args[0];}}],["EVERY",{Name:"EVERY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u4E00\u76F4\u5B58\u5728'+args[0];}}],["LAST",{Name:"LAST",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u6301\u7EED'+args[0];}}],["NOT",{Name:"NOT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u53D6\u53CD';}}],["IF",{Name:"IF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFF",{Name:"IFF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFN",{Name:"IFN",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFC",{Name:"IFC",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["TESTSKIP",{Name:"TESTSKIP",Param:{Count:1},ToString:function ToString(args){return'\u5982\u679C\u6EE1\u8DB3\u6761\u4EF6'+args[0]+',\u516C\u5F0F\u8FD4\u56DE';}}],["VALUEWHEN",{Name:"VALUEWHEN",Param:{Count:2},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE\u4E0A\u4E2A\u8F93\u51FA\u503C ';}}],["MAX",{Name:"MAX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5927\u503C';}}],["MIN",{Name:"MIN",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5C0F\u503C';}}],["ACOS",{Name:"ACOS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u4F59\u5F26';}}],["ASIN",{Name:"ASIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5F26';}}],["ATAN",{Name:"ATAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5207';}}],["COS",{Name:"COS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u4F59\u5F26';}}],["SIN",{Name:"SIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5F26';}}],["TAN",{Name:"TAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5207';}}],["EXP",{Name:"EXP",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6307\u6570';}}],["LN",{Name:"LN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u81EA\u7136\u5BF9\u6570';}}],["LOG",{Name:"LOG",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5BF9\u6570';}}],["SQRT",{Name:"SQRT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5F00\u65B9';}}],["ABS",{Name:"ABS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7EDD\u5BF9\u503C';}}],["POW",{Name:"POW",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u4E58\u5E42';}}],["CEILING",{Name:"CEILING",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["FLOOR",{Name:"FLOOR",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["INTPART",{Name:"INTPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6574\u6570\u90E8\u5206';}}],["BETWEEN",{Name:"BETWEEN",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["FRACPART",{Name:"FRACPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5C0F\u6570\u90E8\u5206';}}],["ROUND",{Name:"ROUND",Param:{Count:1},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["ROUND2",{Name:"ROUND2",Param:{Count:2},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["SIGN",{Name:"SIGN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7B26\u53F7';}}],["MOD",{Name:"MOD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5173\u4E8E'+args[1]+'\u7684\u6A21';}}],["RAND",{Name:"RAND",Param:{Count:1},ToString:function ToString(args){return'\u968F\u673A\u6B63\u6574\u6570';}}],["AVEDEV",{Name:"AVEDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u5747\u7EDD\u5BF9\u504F\u5DEE';}}],["DEVSQ",{Name:"DEVSQ",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6570\u636E\u504F\u5DEE\u5E73\u65B9\u548C';}}],["FORCAST",{Name:"FORCAST",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u9884\u6D4B\u503C';}}],["TSMA",{Name:"TSMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u4E2A\u5468\u671F\u5185\u7684\u65F6\u95F4\u5E8F\u5217\u4E09\u89D2\u79FB\u52A8\u5E73\u5747';}}],["SLOPE",{Name:"SLOPE",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u659C\u7387';}}],["STD",{Name:"STD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6807\u51C6\u5DEE';}}],["STDP",{Name:"STDP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6807\u51C6\u5DEE';}}],["STDDEV",{Name:"STDDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6807\u51C6\u504F\u5DEE';}}],["VAR",{Name:"VAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6837\u672C\u65B9\u5DEE';}}],["VARP",{Name:"VARP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6837\u672C\u65B9\u5DEE';}}],["COVAR",{Name:"COVAR",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u534F\u65B9\u5DEE';}}],["RELATE",{Name:"RELATE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[0]+'\u5468\u671F\u7684\u76F8\u5173\u7CFB\u6570';}}],["BETA",{Name:"BETA",Param:{Count:1},ToString:function ToString(args){return'\u03B2(Beta)\u7CFB\u6570';}}],["BETAEX",{Name:"BETAEX",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u76F8\u5173\u653E\u5927\u7CFB\u6570';}}],["COST",{Name:"COST",Param:{Count:1},ToString:function ToString(args){return'\u83B7\u5229\u76D8\u4E3A'+args[0]+'%\u7684\u6210\u672C\u5206\u5E03';}}],["WINNER",{Name:"WINNER",Param:{Count:1},ToString:function ToString(args){return'\u4EE5'+args[0]+'\u8BA1\u7B97\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["LWINNER",{Name:"LWINNER",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[0]+'\u65E5\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["PWINNER",{Name:"PWINNER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["COSTEX",{Name:"COSTEX",Param:{Count:2},ToString:function ToString(args){return'\u4F4D\u4E8E\u4EF7\u683C'+args[0]+'\u548C'+args[1]+'\u95F4\u7684\u6210\u672C';}}],["PPART",{Name:"PPART",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u5360\u603B\u6210\u672C\u7684\u6BD4\u4F8B';}}],["SAR",{Name:"SAR",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411';}}],["SARTURN",{Name:"SARTURN",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411\u70B9';}}],//字符串函数
11546
11299
  ["CON2STR",{Name:"CON2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["VAR2STR",{Name:"VAR2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["STR2CON",{Name:"STR2CON",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u6570\u5B57';}}],["STRLEN",{Name:"STRLEN",Param:{Count:1},ToString:function ToString(args){return'\u5F97\u5230'+args[0]+'\u5B57\u7B26\u4E32\u957F\u5EA6';}}],["STRCAT",{Name:"STRCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["VARCAT",{Name:"VARCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["STRSPACE",{Name:"STRSPACE",Param:{Count:1},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u52A0\u4E00\u7A7A\u683C';}}],["SUBSTR",{Name:"SUBSTR",Param:{Count:3},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u53D6\u4E00\u90E8\u5206';}}],["STRCMP",{Name:"STRCMP",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u548C\u5B57\u7B26\u4E32'+args[1]+'\u6BD4\u8F83';}}],["FINDSTR",{Name:"FINDSTR",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u67E5\u627E\u5B57\u7B26\u4E32'+args[1];}}],["NAMEINCLUDE",{Name:"NAMEINCLUDE",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["CODELIKE",{Name:"CODELIKE",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["INBLOCK",{Name:"AVEDEV",Param:{Count:1},ToString:function ToString(args){return'\u5C5E\u4E8E'+args[0]+'\u677F\u5757';}}],["STKINDI",{Name:"STKINDI",Param:{Dynamic:true},ToString:function ToString(args){return"指标引用";}}],["STRFORMAT",{Name:"STRFORMAT",Param:{Dynamic:true},ToString:function ToString(args){return'\u683C\u5F0F\u5316'+args[0]+'\u5B57\u7B26\u4E32';}}],["NAMELIKE",{Name:"NAMELIKE",Param:{Count:1},ToString:function ToString(args){return'\u54C1\u79CD\u540D\u79F0\u662F\u5426\u4EE5\''+args[0]+'\'\u5F00\u5934';}}],["HHVBARS",{Name:"HHVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';}}],["LLVBARS",{Name:"LLVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';}}]]);this.CallFunctionExplain=function(funcName,args,node){if(this.FUNCTION_INFO_LIST.has(funcName)){var item=this.FUNCTION_INFO_LIST.get(funcName);if(item.Param.Dynamic===true)//动态参数
11547
11300
  {}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);//绘图函数
11548
11301
  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"SELL":return"卖出平仓";case"BUY":return"买入开仓";case"SELLSHORT":return"卖出开仓";case"BUYSHORT":return"买入平仓";case"YMOVE":return;case"BACKGROUND":return"绘制背景";case"UPCOLOR":return'\u4E0A\u6DA8\u989C\u8272'+args[0];case"DOWNCOLOR":return'\u4E0B\u8DCC\u989C\u8272'+args[0];case"FIRSTDRAW":return"";default:this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u4E0D\u5B58\u5728');}};this.GetDynainfoExplain=function(args){var DATA_NAME_MAP=new _map2.default([[3,"前收盘价"],[4,"开盘价"],[5,"最高价"],[6,"最低价"],[7,"现价"],[8,'总量'],[9,"现量"],[10,"总金额"],[11,"均价"],[12,"日涨跌"],[13,"振幅"],[14,"涨幅"],[15,"开盘时的成交金额"],[16,"前5日每分钟均量"],[17,"量比"],[18,"上涨家数"],[19,"下跌家数"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u5373\u65F6\u884C\u60C5['+id+']';};this.GetFinanceExplain=function(args){var DATA_NAME_MAP=new _map2.default([[1,"总股本"],[2,"市场类型"],[3,"沪深品种类型"],[4,"沪深行业代码"],[5,"B股"],[6,"H股"],[7,"流通股本[股]"],[8,"股东人数[户]"],[9,"资产负债率%"],[10,"总资产"],[11,"流动资产"],[12,"固定资产"],[13,"无形资产"],[15,"流动负债"],[16,"少数股东权益"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u8D22\u52A1\u6570\u636E['+id+']';};this.GetZIGExplain=function(funcName,args){var value=args[0];if(value==0)value="开盘价";else if(value==1)value="最高价";else if(value==2)value="最低价";else if(value==3)value="收盘价";switch(funcName){case"PEAK":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u503C';case"PEAKBARS":return value+'\u7684'+args[1]+'5%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u4F4D\u7F6E';case"ZIG":return value+'\u7684'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"ZIGA":return value+'\u53D8\u5316'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"TROUGH":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u503C';case"TROUGHBARS":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u4F4D\u7F6E';}};this.GetColorExplain=function(colorName){var COLOR_MAP=new _map2.default([['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);if(COLOR_MAP.has(colorName))return COLOR_MAP.get(colorName);//COLOR 自定义色
@@ -11716,11 +11469,11 @@ chart.KLineColor=varItem.Draw.DrawData.KLine;if(varItem.Color)chart.Color=varIte
11716
11469
  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线
11717
11470
  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)//绑定指示指标
11718
11471
  {if(this.OutVar==null||this.OutVar.length<0)return;//参数
11719
- var indexParam='';for(var _i150 in this.Arguments){var _item31=this.Arguments[_i150];if(indexParam.length>0)indexParam+=',';indexParam+=_item31.Value.toString();}if(indexParam.length>0)indexParam='('+indexParam+')';if(this.InstructionType==2)//五彩K线
11472
+ var indexParam='';for(var _i135 in this.Arguments){var _item25=this.Arguments[_i135];if(indexParam.length>0)indexParam+=',';indexParam+=_item25.Value.toString();}if(indexParam.length>0)indexParam='('+indexParam+')';if(this.InstructionType==2)//五彩K线
11720
11473
  {var varItem=this.OutVar[this.OutVar.length-1];//取最后一组数据作为指示数据
11721
11474
  hqChart.SetInstructionData(this.InstructionType,{Data:varItem.Data,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
11722
11475
  return true;}else if(this.InstructionType==1)//交易系统
11723
- {var buyData,sellData;for(var i in this.OutVar){var _item32=this.OutVar[i];if(_item32.Name=='ENTERLONG')buyData=_item32.Data;else if(_item32.Name=='EXITLONG')sellData=_item32.Data;}hqChart.SetInstructionData(this.InstructionType,{Buy:buyData,Sell:sellData,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
11476
+ {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});//设置指示数据
11724
11477
  return true;}};this.BindData=function(hqChart,windowIndex,hisData){if(windowIndex==0&&this.InstructionType){this.BindInstructionData(hqChart,windowIndex,hisData);return;}//清空主指标图形
11725
11478
  hqChart.DeleteIndexPaint(windowIndex);if(windowIndex==0)hqChart.ShowKLine(true);if(this.OutVar==null||this.OutVar.length<0)return;//叠加一个K线背景
11726
11479
  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){hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.FloatPrecision=this.FloatPrecision;if(this.YSpecificMaxMin)hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin;//最大最小值
@@ -11733,12 +11486,12 @@ if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.Y
11733
11486
  var testData={ Name:'MULTI_LINE', Type:1,Draw:{ DrawType:'MULTI_LINE', DrawData:[point1,point2] } };
11734
11487
  this.OutVar.push(testData);
11735
11488
  }
11736
- */for(var _i151 in this.OutVar){var _item33=this.OutVar[_i151];if(_item33.IsExData===true)continue;//扩展数据不显示图形
11737
- if(_item33.Type==1000||_item33.Type==1001)continue;//数据集合, 字符串
11738
- if(_item33.Type==0){if(_item33.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item33,_i151,_item33.Type);else this.CreateLine(hqChart,windowIndex,_item33,_i151,_item33.Type);}else if(_item33.Type==1){switch(_item33.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item33,_i151);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item33,_i151);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item33,_i151);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item33,_i151);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item33,_i151);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item33,_i151);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item33,_i151);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item33,_i151);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item33,_i151);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item33,_i151);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item33,_i151);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item33,_i151);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item33,_i151);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item33,_i151);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item33,_i151);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item33,_i151);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item33,_i151);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item33,_i151);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item33,_i151);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item33,_i151);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item33,_i151);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item33,_i151);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item33,_i151);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item33,_i151);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item33,_i151);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item33,_i151);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item33,_i151);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item33,_i151);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item33,_i151);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item33,_i151);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item33,_i151);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item33,_i151);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item33,_i151);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item33,_i151);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item33,_i151);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item33,_i151);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item33,_i151);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item33,_i151);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item33,_i151);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item33,_i151);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item33,_i151);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item33,_i151);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item33,_i151);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item33,_i151);break;default:{var find=g_ScriptIndexChartFactory.Get(_item33.Draw.DrawType);//外部挂接
11739
- if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item33,_i151,this);}break;}}else if(_item33.Type==2){this.CreateMACD(hqChart,windowIndex,_item33,_i151);}else if(_item33.Type==3){this.CreatePointDot(hqChart,windowIndex,_item33,_i151,hisData);}else if(_item33.Type==4){this.CreateLineStick(hqChart,windowIndex,_item33,_i151);}else if(_item33.Type==5){this.CreateStick(hqChart,windowIndex,_item33,_i151);}else if(_item33.Type==6){this.CreateVolStick(hqChart,windowIndex,_item33,_i151,hisData);}else if(_item33.Type==7){this.CreateLine(hqChart,windowIndex,_item33,_i151,_item33.Type);}else if(_item33.Type==8){this.CreateLine(hqChart,windowIndex,_item33,_i151,_item33.Type);}else if(_item33.Type==9){this.CreateArea(hqChart,windowIndex,_item33,_i151);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i151<titlePaint.Data.length)//设置标题数值 小数位数和格式
11740
- {if(this.StringFormat>0)titlePaint.Data[_i151].StringFormat=this.StringFormat;if(this.FloatPrecision>=0)titlePaint.Data[_i151].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;hqChart.TitlePaint[titleIndex].Title=this.Name;hqChart.TitlePaint[titleIndex].Identify=this.Guid;//指标ID
11741
- hqChart.TitlePaint[titleIndex].ArgumentsText=null;hqChart.TitlePaint[titleIndex].Script=this;if(!this.IsShortTitle){var indexParam='';for(var _i152=0;_i152<this.Arguments.length;++_i152){var _item34=this.Arguments[_i152];if(indexParam.length>0)indexParam+=',';indexParam+=_item34.Value.toString();}if(indexParam.length>0)hqChart.TitlePaint[titleIndex].ArgumentsText='('+indexParam+')';}if(this.TitleFont)hqChart.TitlePaint[titleIndex].Font=this.TitleFont;return true;};//给一个默认的颜色
11489
+ */for(var _i136 in this.OutVar){var _item27=this.OutVar[_i136];if(_item27.IsExData===true)continue;//扩展数据不显示图形
11490
+ if(_item27.Type==1000||_item27.Type==1001)continue;//数据集合, 字符串
11491
+ if(_item27.Type==0){if(_item27.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item27,_i136,_item27.Type);else this.CreateLine(hqChart,windowIndex,_item27,_i136,_item27.Type);}else if(_item27.Type==1){switch(_item27.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item27,_i136);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item27,_i136);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item27,_i136);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item27,_i136);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item27,_i136);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item27,_i136);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item27,_i136);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item27,_i136);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item27,_i136);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item27,_i136);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item27,_i136);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item27,_i136);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item27,_i136);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item27,_i136);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item27,_i136);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item27,_i136);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item27,_i136);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item27,_i136);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item27,_i136);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item27,_i136);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item27,_i136);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item27,_i136);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item27,_i136);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item27,_i136);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item27,_i136);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item27,_i136);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item27,_i136);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item27,_i136);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item27,_i136);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item27,_i136);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item27,_i136);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item27,_i136);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item27,_i136);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item27,_i136);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item27,_i136);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item27,_i136);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item27,_i136);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item27,_i136);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item27,_i136);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item27,_i136);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item27,_i136);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item27,_i136);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item27,_i136);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item27,_i136);break;default:{var find=g_ScriptIndexChartFactory.Get(_item27.Draw.DrawType);//外部挂接
11492
+ if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item27,_i136,this);}break;}}else if(_item27.Type==2){this.CreateMACD(hqChart,windowIndex,_item27,_i136);}else if(_item27.Type==3){this.CreatePointDot(hqChart,windowIndex,_item27,_i136,hisData);}else if(_item27.Type==4){this.CreateLineStick(hqChart,windowIndex,_item27,_i136);}else if(_item27.Type==5){this.CreateStick(hqChart,windowIndex,_item27,_i136);}else if(_item27.Type==6){this.CreateVolStick(hqChart,windowIndex,_item27,_i136,hisData);}else if(_item27.Type==7){this.CreateLine(hqChart,windowIndex,_item27,_i136,_item27.Type);}else if(_item27.Type==8){this.CreateLine(hqChart,windowIndex,_item27,_i136,_item27.Type);}else if(_item27.Type==9){this.CreateArea(hqChart,windowIndex,_item27,_i136);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i136<titlePaint.Data.length)//设置标题数值 小数位数和格式
11493
+ {if(this.StringFormat>0)titlePaint.Data[_i136].StringFormat=this.StringFormat;if(this.FloatPrecision>=0)titlePaint.Data[_i136].FloatPrecision=this.FloatPrecision;if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments);}}}var titleIndex=windowIndex+1;hqChart.TitlePaint[titleIndex].Title=this.Name;hqChart.TitlePaint[titleIndex].Identify=this.Guid;//指标ID
11494
+ hqChart.TitlePaint[titleIndex].ArgumentsText=null;hqChart.TitlePaint[titleIndex].Script=this;if(!this.IsShortTitle){var indexParam='';for(var _i137=0;_i137<this.Arguments.length;++_i137){var _item28=this.Arguments[_i137];if(indexParam.length>0)indexParam+=',';indexParam+=_item28.Value.toString();}if(indexParam.length>0)hqChart.TitlePaint[titleIndex].ArgumentsText='('+indexParam+')';}if(this.TitleFont)hqChart.TitlePaint[titleIndex].Font=this.TitleFont;return true;};//给一个默认的颜色
11742
11495
  this.GetDefaultColor=function(id){var COLOR_ARRAY=null;//使用全局线段配置
11743
11496
  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)];};//获取颜色
11744
11497
  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)';/*
@@ -11775,11 +11528,11 @@ this.OverlayIndex=null;// { IsOverlay:true, Identify:overlayFrame.Identify, Wind
11775
11528
  //显示指标不符合条件
11776
11529
  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轴分割方式
11777
11530
  if(IFrameSplitOperator.IsNumber(this.YSplitType))this.OverlayIndex.Frame.Frame.YSplitOperator.SplitType=this.YSplitType;//指标名字
11778
- var titleInfo={Data:[],Title:this.Name,Frame:this.OverlayIndex.Frame.Frame,Script:this};var indexParam='';for(var i in this.Arguments){var _item35=this.Arguments[i];if(indexParam.length>0)indexParam+=',';indexParam+=_item35.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;//给子框架设置标题
11531
+ var titleInfo={Data:[],Title:this.Name,Frame:this.OverlayIndex.Frame.Frame,Script:this};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;//给子框架设置标题
11779
11532
  if(hqChart.Frame.SubFrame[windowIndex]){var mainFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(mainFrame)this.OverlayIndex.Frame.Frame.XPointCount=mainFrame.XPointCount;//跟主窗口同步下页面显示数据个数
11780
- }for(var i=0;i<this.OutVar.length;++i){var _item36=this.OutVar[i];if(_item36.IsExData===true)continue;//扩展数据不显示图形
11781
- if(_item36.Type==0){this.CreateLine(hqChart,windowIndex,_item36,i,_item36.Type);}else if(_item36.Type==1){switch(_item36.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item36,i);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item36,i);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item36,i);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item36,i);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item36,i);break;case'DRAWKLINE':this.CreateKLine(hqChart,windowIndex,_item36,i);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item36,i);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item36,i);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item36,i);break;case'DRAWNUMBER':case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item36,i);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item36,i);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item36,i);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item36,i);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item36,i);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item36,i);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item36,i);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item36,i);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item36,i);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item36,i);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item36,i);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item36,i);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item36,i);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item36,i);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item36,i);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item36,i);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item36,i);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item36,i);break;default:{var find=g_ScriptIndexChartFactory.Get(_item36.Draw.DrawType);//外部挂接
11782
- if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item36,i,this);}break;}}else if(_item36.Type==2){this.CreateMACD(hqChart,windowIndex,_item36,i);}else if(_item36.Type==3){this.CreatePointDot(hqChart,windowIndex,_item36,i,hisData);}else if(_item36.Type==4){this.CreateLineStick(hqChart,windowIndex,_item36,i);}else if(_item36.Type==5){this.CreateStick(hqChart,windowIndex,_item36,i);}else if(_item36.Type==6){this.CreateVolStick(hqChart,windowIndex,_item36,i,hisData);}else if(_item36.Type==7){this.CreateLine(hqChart,windowIndex,_item36,i,_item36.Type);}else if(_item36.Type==8){this.CreateLine(hqChart,windowIndex,_item36,i,_item36.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;}}/*
11533
+ }for(var i=0;i<this.OutVar.length;++i){var _item30=this.OutVar[i];if(_item30.IsExData===true)continue;//扩展数据不显示图形
11534
+ if(_item30.Type==0){this.CreateLine(hqChart,windowIndex,_item30,i,_item30.Type);}else if(_item30.Type==1){switch(_item30.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item30,i);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item30,i);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item30,i);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item30,i);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item30,i);break;case'DRAWKLINE':this.CreateKLine(hqChart,windowIndex,_item30,i);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item30,i);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item30,i);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item30,i);break;case'DRAWNUMBER':case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item30,i);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item30,i);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item30,i);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item30,i);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item30,i);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item30,i);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item30,i);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item30,i);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item30,i);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item30,i);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item30,i);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item30,i);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item30,i);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item30,i);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item30,i);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item30,i);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item30,i);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item30,i);break;default:{var find=g_ScriptIndexChartFactory.Get(_item30.Draw.DrawType);//外部挂接
11535
+ 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;}}/*
11783
11536
  hqChart.TitlePaint[titleIndex].Title=this.Name;
11784
11537
 
11785
11538
  let indexParam='';
@@ -12462,7 +12215,7 @@ for(var i=0;i<data.data.length;++i){var item=data.data[i];var symbol=item[0];var
12462
12215
  this.GetStockData=function(symbol){if(!this.MapStockData)return null;if(!this.MapStockData.has(symbol))return null;return this.MapStockData.get(symbol);};this.GetBlockData=function(symbol){if(!this.BlockData)return null;if(!this.BlockData.has(symbol))return null;return this.BlockData.get(symbol);};//obj={ ID:, Color: , Time:, Count: }
12463
12216
  this.SetFlashBGItem=function(symbol,obj){var item={ID:obj.ID,Color:obj.Color,Count:1};if(IFrameSplitOperator.IsNumber(obj.Count))item.Count=obj.Count;if(IFrameSplitOperator.IsNumber(obj.Time))item.Time=obj.Time;else item.Time=Date.now();if(this.FlashBG.has(symbol)){var stockItem=this.FlashBG.get(symbol);stockItem.LastTime=item.Time;stockItem.Data.set(item.ID,item);}else{var stockItem={LastTime:item.Time,Data:new _map2.default([[item.ID,item]])};this.FlashBG.set(symbol,stockItem);}};this.GetFlashBGData=function(symbol,time){if(!this.FlashBG)return null;if(!this.FlashBG.has(symbol))return null;var timeDiff=3*1000;var stockItem=this.FlashBG.get(symbol);if(time-stockItem.LastTime>=timeDiff)//超时的删除
12464
12217
  {this.FlashBG.delete(symbol);return null;}if(!stockItem.Data||stockItem.Data.size<=0){this.FlashBG.delete(symbol);return null;}var aryDelID=[];//超时需要参数的
12465
- var _iteratorNormalCompletion22=true;var _didIteratorError22=false;var _iteratorError22=undefined;try{for(var _iterator22=(0,_getIterator3.default)(stockItem.Data),_step22;!(_iteratorNormalCompletion22=(_step22=_iterator22.next()).done);_iteratorNormalCompletion22=true){var mapItem=_step22.value;var item=mapItem[1];if(time-item.Time>=timeDiff||item.Count<=0)aryDelID.push(item.ID);}}catch(err){_didIteratorError22=true;_iteratorError22=err;}finally{try{if(!_iteratorNormalCompletion22&&_iterator22.return){_iterator22.return();}}finally{if(_didIteratorError22){throw _iteratorError22;}}}if(IFrameSplitOperator.IsNonEmptyArray(aryDelID)){for(var i=0;i<aryDelID.length;++i){stockItem.Data.delete(aryDelID[i]);}if(stockItem.Data.size<=0){this.FlashBG.delete(symbol);return null;}}return stockItem;};//delay=是否延迟
12218
+ var _iteratorNormalCompletion21=true;var _didIteratorError21=false;var _iteratorError21=undefined;try{for(var _iterator21=(0,_getIterator3.default)(stockItem.Data),_step21;!(_iteratorNormalCompletion21=(_step21=_iterator21.next()).done);_iteratorNormalCompletion21=true){var mapItem=_step21.value;var item=mapItem[1];if(time-item.Time>=timeDiff||item.Count<=0)aryDelID.push(item.ID);}}catch(err){_didIteratorError21=true;_iteratorError21=err;}finally{try{if(!_iteratorNormalCompletion21&&_iterator21.return){_iterator21.return();}}finally{if(_didIteratorError21){throw _iteratorError21;}}}if(IFrameSplitOperator.IsNonEmptyArray(aryDelID)){for(var i=0;i<aryDelID.length;++i){stockItem.Data.delete(aryDelID[i]);}if(stockItem.Data.size<=0){this.FlashBG.delete(symbol);return null;}}return stockItem;};//delay=是否延迟
12466
12219
  this.DelayUpdateStockData=function(){var _this50=this;if(this.DelayUpdateTimer!=null){clearTimeout(this.DelayUpdateTimer);this.DelayUpdateTimer=null;}var frequency=this.DelayUpdateFrequency;this.DelayUpdateTimer=setTimeout(function(){_this50.UpdateStockData();},frequency);};this.UpdateStockData=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;var chart=this.ChartPaint[0];if(!chart)return;if(this.SortInfo&&this.SortInfo.Field>=0&&this.SortInfo.Sort>0){var column=chart.Column[this.SortInfo.Field];if(column.Sort==2){this.RequestStockSortData(column,this.SortInfo.Field,this.SortInfo.Sort);//远程排序
12467
12220
  return;}}var arySymbol=chart.ShowSymbol;if(!IFrameSplitOperator.IsNonEmptyArray(arySymbol))return;this.RequestStockData(arySymbol);};//下载股票数据
12468
12221
  this.RequestStockData=function(arySymbol){var self=this;if(this.NetworkFilter){var obj={Name:'JSDealChartContainer::RequestStockData',//类名::函数名
@@ -13035,7 +12788,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
13035
12788
  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);};}/********************************************************************************
13036
12789
  * 版本信息输出
13037
12790
  *
13038
- */var HQCHART_VERSION="1.1.12885";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
12791
+ */var HQCHART_VERSION="1.1.12892";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13039
12792
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
13040
12793
  // BaseIndex:BaseIndex,
13041
12794
  // ChartLine:ChartLine,