hqchart 1.1.12680 → 1.1.12687

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.
@@ -1852,8 +1852,10 @@ if(this.CurrentChartDrawPicture){var drawPicture=this.CurrentChartDrawPicture;if
1852
1852
  }else if(this.DragMode==1||isMoveCorssCursor==false)//数据左右拖拽
1853
1853
  {if((moveUpDown>0&&moveSetp<=3||moveAngle<=this.TouchMoveMinAngle)&&this.EnableScrollUpDown==true){this.StopDragTimer();return;}if(moveSetp<5||moveAngle<=this.TouchMoveMinAngle){this.PreventTouchEvent(e);return;}if(this.EnableVerticalDrag){if(!this.VerticalDrag)return;if(!this.VerticalDrag.IsDrag)return;}var isLeft=true;if(drag.LastMove.X<touches[0].clientX)isLeft=false;//右移数据
1854
1854
  var oneStepWidth=this.GetMoveOneStepWidth();if(moveSetp<oneStepWidth)return;if(this.DataMove(moveSetp,isLeft)){this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();this.OnKLinePageChange("OnTouchMove");}else{if(this.DragDownloadData)this.DragDownloadData();}drag.LastMove.X=touches[0].clientX;drag.LastMove.Y=touches[0].clientY;}}if(this.PhoneTouchInfo){this.PhoneTouchInfo.End.X=touches[0].clientX;this.PhoneTouchInfo.End.Y=touches[0].clientY;}}else if(this.IsPhonePinching(e)){if(this.DragMode==JSCHART_DRAG_ID.DISABLE_DRAG_ID)return;this.PreventTouchEvent(e);var phonePinch=this.PhonePinch;if(!phonePinch)return;phonePinch.Operator=null;if(this.EnableZoomUpDown&&this.EnableZoomUpDown.Touch===false)return;var yHeight=Math.abs(touches[0].pageY-touches[1].pageY);var yLastHeight=Math.abs(phonePinch.Last.Y-phonePinch.Last.Y2);var yStep=yHeight-yLastHeight;var xHeight=Math.abs(touches[0].pageX-touches[1].pageX);var xLastHeight=Math.abs(phonePinch.Last.X-phonePinch.Last.X2);var xStep=xHeight-xLastHeight;var minStep=this.ZoomStepPixel;if(Math.abs(yStep)<minStep&&Math.abs(xStep)<minStep)return;var step=yStep;if(Math.abs(yStep)<minStep)step=xStep;if(step>0)//放大
1855
- {var cursorIndex={IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(!this.Frame.ZoomUp(cursorIndex))return;phonePinch.Operator="ZoomUp";this.CursorIndex=cursorIndex.Index;this.UpdatePointByCursorIndex();this.UpdataDataoffset();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.StopDragTimer();}else//缩小
1856
- {var cursorIndex={IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(!this.Frame.ZoomDown(cursorIndex))return;phonePinch.Operator="ZoomDown";this.CursorIndex=cursorIndex.Index;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.StopDragTimer();}phonePinch.Last={X:touches[0].pageX,Y:touches[0].pageY,X2:touches[1].pageX,Y2:touches[1].pageY};}this.PreventTouchEvent(e);};this.OnTouchEnd=function(e){JSConsole.Chart.Log('[KLineChartContainer:OnTouchEnd]',e);if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var bClearDrawPicture=true;if(this.CurrentChartDrawPicture){var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==2||drawPicture.Status==1||drawPicture.Status==3){drawPicture.PointStatus=drawPicture.Status;if(this.FinishChartDrawPicturePoint())this.DrawDynamicInfo();else bClearDrawPicture=false;}else if(drawPicture.Status==20){if(this.FinishMoveChartDrawPicture())this.DrawDynamicInfo();}}if(this.EnableZoomIndexWindow){var time=Date.now();this.PhoneDBClick.AddTouchEnd(time);if(this.PhoneDBClick.IsVaildDBClick()){this.OnTouchDBClick(this.PhoneDBClick.Start);this.PhoneDBClick.Clear();}}this.IsOnTouch=false;this.VerticalDrag=null;if(bClearDrawPicture===true)this.CurrentChartDrawPicture=null;this.StopDragTimer();this.TouchEvent({EventID:JSCHART_EVENT_ID.ON_PHONE_TOUCH,FunctionName:"OnTouchEnd"},e);this.OnTouchFinished();this.TouchDrawCount=0;this.PhonePinch=null;};this.OnTouchDBClick=function(points){var pt=this.PointAbsoluteToRelative(points[0].X,points[0].Y,true);var x=pt.X,y=pt.Y;JSConsole.Chart.Log('[KLineChartContainer:OnTouchDBClick] Phone dbclick absolute ['+x+','+y+'], soruce ['+points[0].X+','+points[0].Y+']');var frameId=this.Frame.PtInFrame(x,y);JSConsole.Chart.Log("[KLineChartContainer::OnTouchDBClick] frameId",frameId);if(frameId>=this.Frame.ZoomStartWindowIndex){if(this.ZoomIndexWindow(frameId,{X:x,Y:y})){this.Frame.SetSizeChage(true);this.Draw();return true;}}};//手势事件
1855
+ {var cursorIndex={IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(!this.Frame.ZoomUp(cursorIndex))return;phonePinch.Operator="ZoomUp";this.CursorIndex=cursorIndex.Index;this.UpdatePointByCursorIndex();this.UpdataDataoffset();this.UpdateFrameMaxMin();//this.ResetFrameXSplit();
1856
+ this.Draw();this.ShowTooltipByKeyDown();this.StopDragTimer();}else//缩小
1857
+ {var cursorIndex={IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(!this.Frame.ZoomDown(cursorIndex))return;phonePinch.Operator="ZoomDown";this.CursorIndex=cursorIndex.Index;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();//this.ResetFrameXSplit();
1858
+ this.Draw();this.ShowTooltipByKeyDown();this.StopDragTimer();}phonePinch.Last={X:touches[0].pageX,Y:touches[0].pageY,X2:touches[1].pageX,Y2:touches[1].pageY};}this.PreventTouchEvent(e);};this.OnTouchEnd=function(e){JSConsole.Chart.Log('[KLineChartContainer:OnTouchEnd]',e);if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var bClearDrawPicture=true;if(this.CurrentChartDrawPicture){var drawPicture=this.CurrentChartDrawPicture;if(drawPicture.Status==2||drawPicture.Status==1||drawPicture.Status==3){drawPicture.PointStatus=drawPicture.Status;if(this.FinishChartDrawPicturePoint())this.DrawDynamicInfo();else bClearDrawPicture=false;}else if(drawPicture.Status==20){if(this.FinishMoveChartDrawPicture())this.DrawDynamicInfo();}}if(this.EnableZoomIndexWindow){var time=Date.now();this.PhoneDBClick.AddTouchEnd(time);if(this.PhoneDBClick.IsVaildDBClick()){this.OnTouchDBClick(this.PhoneDBClick.Start);this.PhoneDBClick.Clear();}}this.IsOnTouch=false;this.VerticalDrag=null;if(bClearDrawPicture===true)this.CurrentChartDrawPicture=null;this.StopDragTimer();this.TouchEvent({EventID:JSCHART_EVENT_ID.ON_PHONE_TOUCH,FunctionName:"OnTouchEnd"},e);this.OnTouchFinished();this.TouchDrawCount=0;this.PhonePinch=null;};this.OnTouchDBClick=function(points){var pt=this.PointAbsoluteToRelative(points[0].X,points[0].Y,true);var x=pt.X,y=pt.Y;JSConsole.Chart.Log('[KLineChartContainer:OnTouchDBClick] Phone dbclick absolute ['+x+','+y+'], soruce ['+points[0].X+','+points[0].Y+']');var frameId=this.Frame.PtInFrame(x,y);JSConsole.Chart.Log("[KLineChartContainer::OnTouchDBClick] frameId",frameId);if(frameId>=this.Frame.ZoomStartWindowIndex){if(this.ZoomIndexWindow(frameId,{X:x,Y:y})){this.Frame.SetSizeChage(true);this.Draw();return true;}}};//手势事件
1857
1859
  this.TouchEvent=function(obj,e){var eventID=obj.EventID;var event=this.GetEventCallback(eventID);if(!event||!event.Callback)return false;var drag=this.PhoneTouchInfo;if(!drag||!drag.Start||!drag.End)return false;var pixelTatio=GetDevicePixelRatio();var clientX=drag.End.X/pixelTatio;var clientY=drag.End.Y/pixelTatio;var x=drag.End.X-this.UIElement.getBoundingClientRect().left*pixelTatio;var y=drag.End.Y-this.UIElement.getBoundingClientRect().top*pixelTatio;var data={X:clientX,Y:clientY,FrameID:-1,FunctionName:obj.FunctionName,Drag:{Start:{X:drag.Start.X/pixelTatio,Y:drag.Start.Y/pixelTatio},End:{X:drag.End.X/pixelTatio,Y:drag.End.Y/pixelTatio}}};var isInClient=false;this.Canvas.beginPath();this.Canvas.rect(this.Frame.ChartBorder.GetLeft(),this.Frame.ChartBorder.GetTop(),this.Frame.ChartBorder.GetWidth(),this.Frame.ChartBorder.GetHeight());isInClient=this.Canvas.isPointInPath(x,y);if(isInClient){if(this.Frame&&this.Frame.IsHScreen){var yValueExtend={};var yValue=this.Frame.GetYData(x,yValueExtend);if(IFrameSplitOperator.IsNumber(yValueExtend.FrameID)&&yValueExtend.FrameID>=0){var xValue=this.Frame.GetXData(y);data.FrameID=yValueExtend.FrameID;data.Data={X:xValue,Y:yValue};}}else{var yValueExtend={};var yValue=this.Frame.GetYData(y,yValueExtend);if(IFrameSplitOperator.IsNumber(yValueExtend.FrameID)&&yValueExtend.FrameID>=0){var xValue=this.Frame.GetXData(x);data.FrameID=yValueExtend.FrameID;data.Data={X:xValue,Y:yValue};}}}event.Callback(event,data,this);return true;};this.MoveCorssCursor=function(point,e){var pixelTatio=GetDevicePixelRatio();var x=point.X-this.UIElement.getBoundingClientRect().left*pixelTatio;var y=point.Y-this.UIElement.getBoundingClientRect().top*pixelTatio;if(this.DragMode==JSCHART_DRAG_ID.CLICK_TOUCH_MODE_ID)this.TouchStatus.CorssCursorShow=true;//十字显示
1858
1860
  this.OnMouseMove(x,y,e,true);};this.DrawEmpty=function(){if(this.UIElement.width<=0||this.UIElement.height<=0)return;this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);if(this.Frame){this.Frame.ScreenImageData=null;this.Frame.Draw();}};this.PtInChart=function(x,y){var result=null;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.PtInChart)continue;if(item.IsHideScriptIndex())continue;result=item.PtInChart(x,y);if(result)return result;}for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.PtInChart)continue;result=item.PtInChart(x,y);if(result)return result;}if(this.Frame.PtInOveralyChart){result=this.Frame.PtInOveralyChart(x,y);if(result)return result;}return null;};//绘制选中图形的状态
1859
1861
  this.DrawSelectedStatus=function(){if(!this.SelectedChart.MoveOn.Identify&&!this.SelectedChart.Selected.Identify)return;for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.Identify)continue;if(item.Identify!=this.SelectedChart.MoveOn.Identify&&item.Identify!=this.SelectedChart.Selected.Identify)continue;if(item.DrawSelectedStatus)item.DrawSelectedStatus();}for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Identify)continue;if(item.Identify!=this.SelectedChart.MoveOn.Identify&&item.Identify!=this.SelectedChart.Selected.Identify)continue;if(item.DrawSelectedStatus)item.DrawSelectedStatus();}for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item.Identify)continue;if(item.Identify!=this.SelectedChart.MoveOn.Identify&&item.Identify!=this.SelectedChart.Selected.Identify)continue;if(item.DrawSelectedStatus)item.DrawSelectedStatus();}if(this.Frame.DrawOveralySelectedStatus)this.Frame.DrawOveralySelectedStatus(this.SelectedChart);};this.SetCanvas=function(canvas){if(this.Frame){var subFrame=this.Frame.SubFrame;for(var i=0;i<subFrame.length;++i){var item=subFrame[i];item.Frame.Canvas=canvas;//框架
@@ -1927,11 +1929,11 @@ if(this.SetCorssCursorIndex)this.SetCorssCursorIndex(option);if(this.DrawDynamic
1927
1929
  this.SetCursor=function(obj){if(!obj||!obj.Cursor)return;if(obj.Cursor=="default")this.UIElement.style.cursor=this.DefaultCursor;else this.UIElement.style.cursor=obj.Cursor;};this.OnKeyDown=function(e){var _this10=this;if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;//回调事件
1928
1930
  var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYDOWN);if(event&&event.Callback){var sendData={e:e,PreventDefault:false};event.Callback(event,sendData,this);if(sendData.PreventDefault)return;}var keyID=e.keyCode?e.keyCode:e.which;switch(keyID){case 37://left
1929
1931
  if(e.ctrlKey&&this.OnCustomKeyDown){if(this.OnCustomKeyDown(keyID,e))break;}if(this.CursorIndex<=0.99999){if(!this.DataMoveLeft()){//左移数据到头了 触发下载新数据
1930
- if(this.DragDownloadData)this.DragDownloadData();break;}this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");}else{--this.CursorIndex;this.UpdatePointByCursorIndex();this.DrawDynamicInfo();this.ShowTooltipByKeyDown();}break;case 39://right
1931
- if(e.ctrlKey&&this.OnCustomKeyDown){if(this.OnCustomKeyDown(keyID,e))break;}var xPointcount=0;if(this.Frame.XPointCount)xPointcount=this.Frame.XPointCount;else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;if(this.CursorIndex+1>=xPointcount){if(!this.DataMoveRight())break;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");}else{//判断是否在最后一个数据上
1932
+ if(this.DragDownloadData)this.DragDownloadData();break;}this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");}else{--this.CursorIndex;this.UpdatePointByCursorIndex();this.DrawDynamicInfo();this.ShowTooltipByKeyDown();}break;case 39://right
1933
+ if(e.ctrlKey&&this.OnCustomKeyDown){if(this.OnCustomKeyDown(keyID,e))break;}var xPointcount=0;if(this.Frame.XPointCount)xPointcount=this.Frame.XPointCount;else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;if(this.CursorIndex+1>=xPointcount){if(!this.DataMoveRight())break;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");}else{//判断是否在最后一个数据上
1932
1934
  var data=null;if(this.Frame.Data)data=this.Frame.Data;else data=this.Frame.SubFrame[0].Frame.Data;if(!data)break;if(this.CursorIndex+data.DataOffset+1>=data.Data.length)break;++this.CursorIndex;this.UpdatePointByCursorIndex();this.DrawDynamicInfo();this.ShowTooltipByKeyDown();}break;case 38://up
1933
- if(this.EnableZoomUpDown&&this.EnableZoomUpDown.Keyboard===false)break;var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(!this.Frame.ZoomUp(cursorIndex))break;this.CursorIndex=cursorIndex.Index;this.UpdatePointByCursorIndex();this.UpdataDataoffset();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");break;case 40://down
1934
- if(this.EnableZoomUpDown&&this.EnableZoomUpDown.Keyboard===false)break;var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(!this.Frame.ZoomDown(cursorIndex,{ZoomDownloadDataCallback:function ZoomDownloadDataCallback(requestData){_this10.ZoomDownloadData(requestData);}}))break;this.CursorIndex=cursorIndex.Index;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");break;case 46://del
1935
+ if(this.EnableZoomUpDown&&this.EnableZoomUpDown.Keyboard===false)break;var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(!this.Frame.ZoomUp(cursorIndex))break;this.CursorIndex=cursorIndex.Index;this.UpdatePointByCursorIndex();this.UpdataDataoffset();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");break;case 40://down
1936
+ if(this.EnableZoomUpDown&&this.EnableZoomUpDown.Keyboard===false)break;var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(!this.Frame.ZoomDown(cursorIndex,{ZoomDownloadDataCallback:function ZoomDownloadDataCallback(requestData){_this10.ZoomDownloadData(requestData);}}))break;this.CursorIndex=cursorIndex.Index;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();this.ShowTooltipByKeyDown();this.OnKLinePageChange("keydown");break;case 46://del
1935
1937
  if(this.SelectChartDrawPicture){var drawPicture=this.SelectChartDrawPicture;JSConsole.Chart.Log("[JSChartContainer::OnKeyDown] delete draw picture.");this.SelectChartDrawPicture=null;if(this.ChartPictureMenu)this.ChartPictureMenu.Hide();this.ClearChartDrawPicture(drawPicture);//删除选中的画图工具
1936
1938
  }else if(this.SelectedChart&&this.SelectedChart.Selected.Identify){var selectedInfo=this.GetSelectedChartInfo(this.SelectedChart.Selected);if(selectedInfo){if(selectedInfo.Type==JSCHART_DRAGCHART_TYPE_ID.OVERLAY_INDEX)this.DeleteOverlayWindowsIndex(selectedInfo.IndexID);else if(selectedInfo.Type==JSCHART_DRAGCHART_TYPE_ID.OVERLAY_KLINE)this.DeleteOverlaySymbol(selectedInfo.Symbol);}}break;case 32://space
1937
1939
  this.OnMarkRectSelect(e);break;case 27://ESCAPE 取消画布工具
@@ -1972,14 +1974,14 @@ this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.To
1972
1974
  {var left=x;var top=y;var format=g_DivTooltipDataForamt.Create('ScatterPlotDataStringFormat');format.Value=toolTip;format.Symbol=this.Symbol;format.Period=this.Period;format.LanguageID=this.LanguageID;if(!format.Operator())return;var width=format.Width;this.Tooltip.className='jchart-charscatterplot-tooltip';//OX指标数据
1973
1975
  this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.Tooltip.style.top=top+xMove+"px";this.Tooltip.style.width=width+"px";this.Tooltip.style.height=null;this.Tooltip.innerHTML=format.Text;;this.Tooltip.style.display="block";}else if(toolTip.Type==7)//ChartDrawSVG
1974
1976
  {var left=x;var top=y;var format=g_DivTooltipDataForamt.Create('ChartDrawSVGDataStringFormat');format.Value=toolTip;format.Symbol=this.Symbol;format.Period=this.Period;format.LanguageID=this.LanguageID;if(!format.Operator())return;var width=format.Width;this.Tooltip.className='jchart-chartdrawsvg-tooltip';//ChartDrawSVG指标数据
1975
- this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.Tooltip.style.top=top+xMove+"px";this.Tooltip.style.width=width+"px";this.Tooltip.style.height=null;this.Tooltip.innerHTML=format.Text;;this.Tooltip.style.display="block";}};this.HideTooltip=function(){if(this.Tooltip.style.display!="none")this.Tooltip.style.display="none";};this.ShowSelectRect=function(x,y,x2,y2){var left=x;var top=y;var border=this.Frame.ChartBorder.GetBorder();var borderRight=border.Right;var borderLeft=border.Left;if(x>borderRight)x=borderRight;if(x2>borderRight)x2=borderRight;if(x<borderLeft)x=borderLeft;if(x2<borderLeft)x2=borderLeft;if(x>x2)left=x2;if(y>y2)top=y2;var width=Math.abs(x-x2);var height=Math.abs(y-y2);this.SelectRect.style.width=width+"px";this.SelectRect.style.height=height+"px";this.SelectRect.style.position="absolute";this.SelectRect.style.left=left+"px";this.SelectRect.style.top=top+"px";this.SelectRect.style.display="block";};this.UpdateSelectRect=function(start,end){if(!this.ChartPaint[0].Data)return;var paint=this.GetRectSelectPaint();if(!paint)return;var data=this.ChartPaint[0].Data;var startItem=data.Data[start];var endItem=data.Data[end];JSConsole.Chart.Log('[JSChartContainer::UpdateSelectRect]',startItem,endItem);paint.SetPoint(startItem,{Index:0,DataIndex:start});paint.SetPoint(endItem,{Index:1,DataIndex:end});this.Draw();};this.HideSelectRect=function(){this.SelectRect.style.display="none";};this.ResetFrameXYSplit=function(){if(typeof this.Frame.ResetXYSplit=='function')this.Frame.ResetXYSplit();};this.UpdateFrameMaxMinV2=function(){var mapFrame=new _map2.default();//key=frameid, value:{ ChartPaint:[] }
1977
+ this.Tooltip.style.position="absolute";this.Tooltip.style.left=left+"px";this.Tooltip.style.top=top+xMove+"px";this.Tooltip.style.width=width+"px";this.Tooltip.style.height=null;this.Tooltip.innerHTML=format.Text;;this.Tooltip.style.display="block";}};this.HideTooltip=function(){if(this.Tooltip.style.display!="none")this.Tooltip.style.display="none";};this.ShowSelectRect=function(x,y,x2,y2){var left=x;var top=y;var border=this.Frame.ChartBorder.GetBorder();var borderRight=border.Right;var borderLeft=border.Left;if(x>borderRight)x=borderRight;if(x2>borderRight)x2=borderRight;if(x<borderLeft)x=borderLeft;if(x2<borderLeft)x2=borderLeft;if(x>x2)left=x2;if(y>y2)top=y2;var width=Math.abs(x-x2);var height=Math.abs(y-y2);this.SelectRect.style.width=width+"px";this.SelectRect.style.height=height+"px";this.SelectRect.style.position="absolute";this.SelectRect.style.left=left+"px";this.SelectRect.style.top=top+"px";this.SelectRect.style.display="block";};this.UpdateSelectRect=function(start,end){if(!this.ChartPaint[0].Data)return;var paint=this.GetRectSelectPaint();if(!paint)return;var data=this.ChartPaint[0].Data;var startItem=data.Data[start];var endItem=data.Data[end];JSConsole.Chart.Log('[JSChartContainer::UpdateSelectRect]',startItem,endItem);paint.SetPoint(startItem,{Index:0,DataIndex:start});paint.SetPoint(endItem,{Index:1,DataIndex:end});this.Draw();};this.HideSelectRect=function(){this.SelectRect.style.display="none";};this.ResetFrameXYSplit=function(){if(typeof this.Frame.ResetXYSplit=='function')this.Frame.ResetXYSplit();};this.ResetFrameXSplit=function(){if(typeof this.Frame.ResetXSplit=='function')this.Frame.ResetXSplit();};this.UpdateFrameMaxMinV2=function(){var mapFrame=new _map2.default();//key=frameid, value:{ ChartPaint:[] }
1976
1978
  for(var i=0;i<this.Frame.SubFrame.length;++i){var subItem=this.Frame.SubFrame[i];if(!subItem||!subItem.Frame)continue;var frame=subItem.Frame;var key=frame.Identify;var item={ID:key,Frame:frame,ChartPaint:[],Max:null,Min:null,OverlayFrame:[],//共享坐标
1977
1979
  SingleOverlay:[]//独立坐标
1978
1980
  };for(var j=0;j<subItem.OverlayIndex.length;++j){var overlayItem=subItem.OverlayIndex[j];var overlayFrame=overlayItem.Frame;if(overlayFrame.IsShareY){if(!overlayFrame.MainFrame)continue;if(overlayFrame.IsCalculateYMaxMin===false)continue;//叠加坐标Y轴不调整
1979
1981
  item.OverlayFrame.push(overlayFrame);for(var k=0;k<overlayItem.ChartPaint.length;++k){var chart=overlayItem.ChartPaint[k];item.ChartPaint.push(chart);}}else{item.SingleOverlay.push(overlayItem);}}mapFrame.set(key,item);}for(var i=0;i<this.ChartPaint.length;++i){var chart=this.ChartPaint[i];var key=chart.ChartFrame.Identify;if(!mapFrame.has(key))continue;var finder=mapFrame.get(key);finder.ChartPaint.push(chart);}for(var i=0;i<this.OverlayChartPaint.length;++i){var chart=this.OverlayChartPaint[i];if(!chart.ChartFrame)continue;var key=chart.ChartFrame.Identify;if(!mapFrame.has(key))continue;var finder=mapFrame.get(key);finder.ChartPaint.push(chart);}var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=(0,_getIterator3.default)(mapFrame),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var mapItem=_step3.value;var item=mapItem[1];var frame=item.Frame;//计算主框架最大最小
1980
1982
  for(var i=0;i<item.ChartPaint.length;++i){var chart=item.ChartPaint[i];if(chart.IsShow==false)continue;//隐藏的图形不计算
1981
1983
  if(chart.NotSupportMessage)continue;if(!chart.ChartFrame)continue;var range=chart.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;if(item.Max==null||item.Max<range.Max)item.Max=range.Max;if(item.Min==null||item.Min>range.Min)item.Min=range.Min;}if(item.Frame.YSpecificMaxMin)//固定坐标
1982
- {item.Min=item.Frame.YSpecificMaxMin.Max;item.Max=item.Frame.YSpecificMaxMin.Min;}if(!IFrameSplitOperator.IsNumber(frame.YMaxMin.Max)||frame.YMaxMin.Max!=item.Max){frame.YMaxMin.Max=item.Max;frame.XYSplit=true;}if(!IFrameSplitOperator.IsNumber(frame.YMaxMin.Min)||frame.YMaxMin.Min!=item.Min){frame.YMaxMin.Min=item.Min;frame.XYSplit=true;}if(frame.XYSplit){var max=10,min=0;if(item.Max!=null)max=item.Max;if(item.Min!=null)min=item.Min;frame.HorizontalMax=max;frame.HorizontalMin=min;}//共享Y轴叠加指标同步下坐标
1984
+ {item.Min=item.Frame.YSpecificMaxMin.Max;item.Max=item.Frame.YSpecificMaxMin.Min;}if(!IFrameSplitOperator.IsNumber(frame.YMaxMin.Max)||frame.YMaxMin.Max!=item.Max){frame.YMaxMin.Max=item.Max;frame.XYSplit=true;}if(!IFrameSplitOperator.IsNumber(frame.YMaxMin.Min)||frame.YMaxMin.Min!=item.Min){frame.YMaxMin.Min=item.Min;frame.XYSplit=true;}if(frame.XYSplit){var max=10,min=0;if(item.Max!=null)max=item.Max;if(item.Min!=null)min=item.Min;frame.HorizontalMax=max;frame.HorizontalMin=min;}else{frame.XSplit=true;}//共享Y轴叠加指标同步下坐标
1983
1985
  for(var j=0;j<item.OverlayFrame.length;++j){item.OverlayFrame[j].XYSplit=true;}//独立坐标叠加指标
1984
1986
  for(var i=0;i<item.SingleOverlay.length;++i){var overlayItem=item.SingleOverlay[i];overlayItem.UpdateFrameMaxMin();}}}catch(err){_didIteratorError3=true;_iteratorError3=err;}finally{try{if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return();}}finally{if(_didIteratorError3){throw _iteratorError3;}}}};this.UpdateFrameMaxMin=function(){this.UpdateFrameMaxMinV2();return;var frameMaxMinData=new Array();var chartPaint=new Array();for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsShow==false)continue;//隐藏的图形不计算
1985
1987
  chartPaint.push(this.ChartPaint[i]);}for(var i=0;i<this.OverlayChartPaint.length;++i){chartPaint.push(this.OverlayChartPaint[i]);}var aryNotSupport=[];for(var i=0;i<chartPaint.length;++i){var paint=chartPaint[i];if(paint.NotSupportMessage){aryNotSupport.push(paint);continue;}var range=paint.GetMaxMin();if(range==null||range.Max==null||range.Min==null)continue;var frameItem=null;for(var j=0;j<frameMaxMinData.length;++j){if(frameMaxMinData[j].Frame==paint.ChartFrame){frameItem=frameMaxMinData[j];break;}}if(frameItem){if(frameItem.Range.Max<range.Max)frameItem.Range.Max=range.Max;if(frameItem.Range.Min>range.Min)frameItem.Range.Min=range.Min;}else{frameItem={OverlayFrame:[]};frameItem.Frame=paint.ChartFrame;frameItem.Range=range;frameMaxMinData.push(frameItem);}}//当前计算
@@ -2189,6 +2191,7 @@ this.TitleBGColor=g_JSChartResource.FrameTitleBGColor;//标题背景色
2189
2191
  this.IsShow=true;//是否显示
2190
2192
  this.SizeChange=true;//大小是否改变
2191
2193
  this.XYSplit=true;//XY轴坐标信息改变
2194
+ this.XSplit=true;//X轴变化
2192
2195
  this.HorizontalMax;//Y轴最大值
2193
2196
  this.HorizontalMin;//Y轴最小值
2194
2197
  this.XPointCount=10;//X轴数据个数
@@ -2211,7 +2214,7 @@ this.Buttons=[];//按钮事件
2211
2214
  this.LeftButtonWidth=0;//左侧按钮的宽度
2212
2215
  this.IsMinSize=false;//窗口是否最小化
2213
2216
  this.LogoTextColor=g_JSChartResource.FrameLogo.TextColor;this.LogoTextFont=g_JSChartResource.FrameLogo.Font;this.LogoBGColor=g_JSChartResource.FrameLogo.BGColor;this.GlobalOption;this.PtInButtons=function(x,y)//坐标是否在按钮上
2214
- {for(var i=0;i<this.Buttons.length;++i){var item=this.Buttons[i];if(!item.Rect)continue;var rect=item.Rect;this.Canvas.beginPath();this.Canvas.rect(rect.Left,rect.Top,rect.Width,rect.Height);if(this.Canvas.isPointInPath(x,y)){return{ID:item.ID,Rect:rect};}}return null;};this.GetBorder=function(){if(this.IsHScreen)return this.ChartBorder.GetHScreenBorder();else return this.ChartBorder.GetBorder();};this.Draw=function(){this.Buttons=[];this.DrawFrame();this.DrawBorder();this.SizeChange=false;this.XYSplit=false;};this.DrawFrame=function(){};this.ClearCoordinateText=function(option){if(IFrameSplitOperator.IsNonEmptyArray(this.HorizontalInfo)){for(var i=0;i<this.HorizontalInfo.length;++i){var item=this.HorizontalInfo[i];if(item&&item.Message&&Array.isArray(item.Message))item.Message[0]=item.Message[1]=null;}}if(IFrameSplitOperator.IsNonEmptyArray(this.VerticalInfo)){for(var i=0;i<this.VerticalInfo.length;++i){var item=this.VerticalInfo[i];if(item&&item.Message&&Array.isArray(item.Message))item.Message[0]=item.Message[1]=null;}}};//画边框
2217
+ {for(var i=0;i<this.Buttons.length;++i){var item=this.Buttons[i];if(!item.Rect)continue;var rect=item.Rect;this.Canvas.beginPath();this.Canvas.rect(rect.Left,rect.Top,rect.Width,rect.Height);if(this.Canvas.isPointInPath(x,y)){return{ID:item.ID,Rect:rect};}}return null;};this.GetBorder=function(){if(this.IsHScreen)return this.ChartBorder.GetHScreenBorder();else return this.ChartBorder.GetBorder();};this.Draw=function(){this.Buttons=[];this.DrawFrame();this.DrawBorder();this.SizeChange=false;this.XYSplit=false;this.XSplit=false;};this.DrawFrame=function(){};this.ClearCoordinateText=function(option){if(IFrameSplitOperator.IsNonEmptyArray(this.HorizontalInfo)){for(var i=0;i<this.HorizontalInfo.length;++i){var item=this.HorizontalInfo[i];if(item&&item.Message&&Array.isArray(item.Message))item.Message[0]=item.Message[1]=null;}}if(IFrameSplitOperator.IsNonEmptyArray(this.VerticalInfo)){for(var i=0;i<this.VerticalInfo.length;++i){var item=this.VerticalInfo[i];if(item&&item.Message&&Array.isArray(item.Message))item.Message[0]=item.Message[1]=null;}}};//画边框
2215
2218
  this.DrawBorder=function(){if(!this.IsShowBorder)return;if(this.IsMinSize)return;var border=this.IsHScreen==true?this.ChartBorder.GetHScreenBorder():this.ChartBorder.GetBorder();var left=ToFixedPoint(border.Left);var top=ToFixedPoint(border.Top);//var top=ToFixedPoint(border.TopEx);
2216
2219
  var right=ToFixedPoint(border.Right);var bottom=ToFixedPoint(border.Bottom);var width=right-left;var height=bottom-top;//JSConsole.Chart.Log(`[IChartFramePainting.DrawBorder] left=${left} `);
2217
2220
  if(this.BorderLine==null){this.Canvas.strokeStyle=this.PenBorder;this.Canvas.strokeRect(left,top,width,height);}else if(IFrameSplitOperator.IsPlusNumber(this.BorderLine))//单独绘制每个边框
@@ -2486,7 +2489,7 @@ this.IsOverlayMaxMin=function(obj){if(!this.ChartKLine)return false;if(!this.Cha
2486
2489
  if(obj.Text.TextAlign==='right')obj.X-=textWidth;var max=this.ChartKLine.Max,min=this.ChartKLine.Min;var isOverlayMax=false,isOverlayMin=false;var textHeight=20;//字体高度
2487
2490
  if(max.X>=obj.X&&max.X<=obj.X+textWidth)//最大值X 坐标不在 刻度文字范围内
2488
2491
  {var y1=max.Y+textHeight,y2=max.Y-textHeight;if(y1>=obj.Y-textHeight&&y1<=obj.Y+textHeight||y2>=obj.Y-textHeight&&y2<=obj.Y+textHeight)isOverlayMax=true;}if(isOverlayMax==true)return true;if(min.X>=obj.X&&min.X<=obj.X+textWidth){var y1=min.Y+textHeight,y2=min.Y-textHeight;if(y1>=obj.Y-textHeight&&y1<=obj.Y+textHeight||y2>=obj.Y-textHeight&&y2<=obj.Y+textHeight)isOverlayMin=true;}return isOverlayMax||isOverlayMin;};//分割x,y轴坐标信息
2489
- this.SplitXYCoordinate=function(){if(this.XYSplit==false)return;if(this.YSplitOperator!=null)this.YSplitOperator.Operator();if(this.XSplitOperator!=null)this.XSplitOperator.Operator();if(this.Logarithmic)this.SplitLogarithmicXYCoordinate();};this.SplitLogarithmicXYCoordinate=function(){var up=this.Logarithmic.Up;var down=this.Logarithmic.Down;var logHeight=0;//对数额外高度
2492
+ this.SplitXYCoordinate=function(){if(this.XYSplit==false){if(this.XSplit){if(this.XSplitOperator!=null)this.XSplitOperator.Operator();}return;}if(this.YSplitOperator!=null)this.YSplitOperator.Operator();if(this.XSplitOperator!=null)this.XSplitOperator.Operator();if(this.Logarithmic)this.SplitLogarithmicXYCoordinate();};this.SplitLogarithmicXYCoordinate=function(){var up=this.Logarithmic.Up;var down=this.Logarithmic.Down;var logHeight=0;//对数额外高度
2490
2493
  var count=0;var maxCount=Math.max(up.length,down.length);var aryLogHeight=[];for(var i=0;i<maxCount;++i){aryLogHeight[i]=i*2;}for(var i=0,j=aryLogHeight.length-1;i<up.length;++i,--j){var item=up[i];item.LogHeight=aryLogHeight[j];logHeight+=item.LogHeight;++count;}for(var i=0,j=aryLogHeight.length-1;i<down.length;++i,--j){var item=down[i];item.LogHeight=aryLogHeight[j];logHeight+=item.LogHeight;++count;}var heightRate=2*GetDevicePixelRatio();var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();var height=bottom-top;var perHeight=(height-logHeight*heightRate)/count;if(perHeight<0){perHeight=0;heightRate=height/logHeight;}if(this.CoordinateType==1)//反转坐标
2491
2494
  {var itemTop=top;for(var i=down.length-1;i>=0;--i)//上部
2492
2495
  {var item=down[i];item.Height=perHeight+heightRate*item.LogHeight;item.Top=itemTop;item.Bottom=item.Top+item.Height;itemTop=item.Bottom;}var itemBottom=bottom;for(var i=up.length-1;i>=0;--i)//下部
@@ -2535,7 +2538,7 @@ this.IsShow=g_JSChartResource.KLineToolbar.IsShowOverlayFrame;//坐标是否显
2535
2538
  this.IsShowToolbar=g_JSChartResource.KLineToolbar.IsShowOverlayToolbar;//是否显示工具条
2536
2539
  this.Title=null;this.TitleColor=g_JSChartResource.OverlayFrame.TitleColor;this.TitleFont=g_JSChartResource.OverlayFrame.TitleFont;this.IsYDrawMainFrame=false;//Y轴自定刻度绘制在主图框架上
2537
2540
  this.Buttons=[];this.CloseButton=CloneData(g_JSChartResource.Buttons.CloseOverlayIndex);this.ModifyIndexParamButton=CloneData(g_JSChartResource.Buttons.ModifyIndexParam);this.KLineFrame_ReloadResource=this.ReloadResource;this.ReloadResource=function(resource){this.KLineFrame_ReloadResource(resource);if(!resource){this.CloseButton=CloneData(g_JSChartResource.Buttons.CloseOverlayIndex);this.ModifyIndexParamButton=CloneData(g_JSChartResource.Buttons.ModifyIndexParam);this.PenBorder=g_JSChartResource.OverlayFrame.BolderPen;//'rgb(0,0,0)'
2538
- this.TitleColor=g_JSChartResource.OverlayFrame.TitleColor;this.TitleFont=g_JSChartResource.OverlayFrame.TitleFont;}};this.Draw=function(){this.Buttons=[];if(this.ChartBorder.IsShowTitleOnly)return;this.SplitXYCoordinate();if(this.IsShow){this.DrawVertical();this.DrawHorizontal();this.DrawTitle();}this.SizeChange=false;this.XYSplit=false;};this.DrawTitle=function()//画标题
2541
+ this.TitleColor=g_JSChartResource.OverlayFrame.TitleColor;this.TitleFont=g_JSChartResource.OverlayFrame.TitleFont;}};this.Draw=function(){this.Buttons=[];if(this.ChartBorder.IsShowTitleOnly)return;this.SplitXYCoordinate();if(this.IsShow){this.DrawVertical();this.DrawHorizontal();this.DrawTitle();}this.SizeChange=false;this.XYSplit=false;this.XSplit=false;};this.DrawTitle=function()//画标题
2539
2542
  {if(!this.Title)return;var border=this.ChartBorder.GetBorder();var top=this.ChartBorder.GetTopTitle();var bottom=border.Bottom;var right=border.Right;right+=this.RightOffset;this.Canvas.fillStyle=this.TitleColor;this.Canvas.font=this.TitleFont;this.Canvas.textAlign="center";this.Canvas.textBaseline="top";var xText=right-2,yText=top+(bottom-top)/2;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(this.Title,0,0);this.Canvas.restore();};this.GetScaleTextWidth=function(){if(!this.IsShow)return null;var border=this.ChartBorder.GetBorder();var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
2540
2543
  if(this.IsHScreen){var borderBottom=this.ChartBorder.Bottom;var isDrawRight=borderBottom>10*pixelTatio&&this.IsShowYText[1]===true&&this.YTextPosition[1]!=2;}else{var borderRight=this.ChartBorder.Right;var isDrawRight=borderRight>10&&this.IsShowYText[1]===true&&this.YTextPosition[1]!=2;}if(!isDrawRight)return null;var width={Left:null,Right:0};for(var i=0;i<this.HorizontalInfo.length;++i){var textWidth=null;var item=this.HorizontalInfo[i];if(!item)continue;if(item.Message[1]!=null&&isDrawRight){if(item.Font!=null)this.Canvas.font=item.Font;textWidth=this.Canvas.measureText(item.Message[1]).width;if(width.Right<textWidth)width.Right=textWidth;}}return{TextWidth:width};};//分割x,y轴坐标信息
2541
2544
  this.SplitXYCoordinate=function(){if(this.XYSplit==false)return;if(this.IsShareY)//和主图指标共享Y轴坐标
@@ -2834,7 +2837,7 @@ if(x>=left&&x<=right&&y>bottom&&y<chartHeight)return-3;return-1;};this.PtInChart
2834
2837
  {for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];var left=item.Frame.ChartBorder.GetLeft();var top=item.Frame.ChartBorder.GetTopEx();var width=item.Frame.ChartBorder.GetWidth();var height=item.Frame.ChartBorder.GetHeightEx();item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(left,top,width,height);if(item.Frame.Canvas.isPointInPath(x,y)){return i;//转成整形
2835
2838
  }}return-1;};this.PtInButtons=function(x,y){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Height<=0)continue;var button=item.Frame.PtInButtons(x,y);if(button){button.Frame=item.Frame;button.FrameID=i;return button;}for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];var overlayFrame=overlayItem.Frame;if(!overlayFrame||!overlayFrame.PtInButtons)continue;var button=overlayFrame.PtInButtons(x,y);if(button){button.IndexID=overlayItem.Identify;button.FrameID=i;button.OverlayFrame=overlayFrame;button.Frame=item.Frame;return button;}}}return null;};//是否在X轴坐标上
2836
2839
  this.PtInFrameBottom=function(x,y){var left=this.ChartBorder.GetLeft();var top=this.ChartBorder.GetBottom();var width=this.ChartBorder.GetWidth();var height=this.ChartBorder.Bottom;this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);if(this.Canvas.isPointInPath(x,y))return true;return false;};this.PtInFrameVertical=function(x,y){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Height<=0)continue;if(!item.Frame.PtInVertical)continue;if(item.Frame.PtInVertical(x,y)){return{Frame:item.Frame};}}return null;};this.GetXFromIndex=function(index){return this.SubFrame[0].Frame.GetXFromIndex(index);};this.GetYFromData=function(value){return this.SubFrame[0].Frame.GetYFromData(value);};this.ZoomUp=function(cursorIndex){var result=this.SubFrame[0].Frame.ZoomUp(cursorIndex);this.UpdateAllFrame();return result;};this.ZoomDown=function(cursorIndex,option){var result=this.SubFrame[0].Frame.ZoomDown(cursorIndex,option);this.UpdateAllFrame();return result;};this.SetXShowCount=function(showCount){var result=this.SubFrame[0].Frame.SetXShowCount(showCount);this.UpdateAllFrame();return result;};this.XCoordinateZoom=function(step,isMoveLeft){var result=this.SubFrame[0].Frame.XCoordinateZoom(step,isMoveLeft);this.UpdateAllFrame();return result;};//设置重新计算刻度坐标
2837
- this.ResetXYSplit=function(){for(var _i in this.SubFrame){this.SubFrame[_i].Frame.XYSplit=true;}};this.SetLanguage=function(languageID){for(var _i2 in this.SubFrame){var item=this.SubFrame[_i2];if(item&&item.Frame){if(item.Frame.YSplitOperator)item.Frame.YSplitOperator.LanguageID=languageID;if(item.Frame.XSplitOperator)item.Frame.XSplitOperator.LanguageID=languageID;}}};this.GetCurrentPageSize=function()//获取当前页显示的数据个数
2840
+ this.ResetXYSplit=function(){for(var _i in this.SubFrame){this.SubFrame[_i].Frame.XYSplit=true;}};this.ResetXSplit=function(){for(var _i2 in this.SubFrame){this.SubFrame[_i2].Frame.XSplit=true;}};this.SetLanguage=function(languageID){for(var _i3 in this.SubFrame){var item=this.SubFrame[_i3];if(item&&item.Frame){if(item.Frame.YSplitOperator)item.Frame.YSplitOperator.LanguageID=languageID;if(item.Frame.XSplitOperator)item.Frame.XSplitOperator.LanguageID=languageID;}}};this.GetCurrentPageSize=function()//获取当前页显示的数据个数
2838
2841
  {if(this.SubFrame.length<=0)return null;var item=this.SubFrame[0];if(!item||!item.Frame)return null;return item.Frame.XPointCount;};this.OnSize=function(){var obj={};this.SubFrame[0].Frame.OnSize(obj);this.UpdateAllFrame();return obj;};this.SetDataWidth=function(dataWidth){var obj=this.SubFrame[0].Frame.SetDataWidth(dataWidth);this.UpdateAllFrame();return obj;};this.UpdateAllFrame=function(){var mainFrame=this.SubFrame[0].Frame;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(i>0)//第1个窗口主坐标已经算好了
2839
2842
  {item.Frame.XPointCount=mainFrame.XPointCount;item.Frame.ZoomIndex=mainFrame.ZoomIndex;item.Frame.DataWidth=mainFrame.DataWidth;item.Frame.DistanceWidth=mainFrame.DistanceWidth;item.Frame.LastCalculateStatus.Width=mainFrame.LastCalculateStatus.Width;item.Frame.LastCalculateStatus.XPointCount=mainFrame.LastCalculateStatus.XPointCount;}for(var j in item.OverlayIndex){var overlayItem=this.SubFrame[i].OverlayIndex[j];overlayItem.Frame.XPointCount=mainFrame.XPointCount;overlayItem.Frame.ZoomIndex=mainFrame.ZoomIndex;overlayItem.Frame.DataWidth=mainFrame.DataWidth;overlayItem.Frame.DistanceWidth=mainFrame.DistanceWidth;overlayItem.Frame.LastCalculateStatus.Width=mainFrame.LastCalculateStatus.Width;overlayItem.Frame.LastCalculateStatus.XPointCount=mainFrame.LastCalculateStatus.XPointCount;}}};//鼠标是否在边框上
2840
2843
  this.PtInFrameBorder=function(x,y){var height=this.DragBorderHeight;for(var i=0;i<this.SubFrame.length-1;++i){var item=this.SubFrame[i];if(item.Frame.Heigh<=0)continue;var bottom=item.Frame.ChartBorder.GetBottom();var left=item.Frame.ChartBorder.GetLeft();var right=item.Frame.ChartBorder.GetRight();item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(left,bottom-height/2,right-left,height);if(item.Frame.Canvas.isPointInPath(x,y)){return{Index:i,Bottom:true};}}return null;};this.IsEnableDragY=function(index){if(!this.SubFrame)return false;var item=this.SubFrame[index];if(!item||!item.Frame||!item.Frame.YSplitOperator)return false;var split=item.Frame.YSplitOperator;if(typeof split.IsEnableDragY!='function')return false;return split.IsEnableDragY();};this.PtInFrameY=function(x,y){var rightExtendWith=0;if(this.GetExtendChartByClassName){var finder=this.GetExtendChartByClassName("StockChip");if(finder&&finder.Chart)rightExtendWith=finder.Chart.Width;}for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Frame.Heigh<=0)continue;var rightWidth=item.Frame.ChartBorder.Right;rightWidth-=rightExtendWith;var border=item.Frame.ChartBorder.GetBorder();var bottom=border.Bottom;var top=border.TopTitle;var left=border.Left;var right=border.Right;var maxTopHegith=30;var barHegith=bottom-top;if(barHegith/3>maxTopHegith){var barTop=top+maxTopHegith;var barBottom=bottom-maxTopHegith;}else{var internal=barHegith/3;var barTop=top+internal;var barBottom=bottom-internal;}var position=0;if(y<barTop)position=1;else if(y>barBottom)position=2;if(rightWidth>=10){if(IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)){var overlayItem=item.OverlayIndex[0];var rightOffset=overlayItem.Frame.RightOffset;item.Frame.Canvas.beginPath();item.Frame.Canvas.rect(right,top,rightOffset,bottom-top);if(item.Frame.Canvas.isPointInPath(x,y)){return{Index:i,Right:true,Left:false,Position:position,IsOverlay:false};//Position 1=上面 2 下面 0=中间(TODO)
@@ -4024,7 +4027,7 @@ this.Draw=function(){if(!this.Data||!this.Data.Data)return;if(this.Data.Data.len
4024
4027
  */function ChartStraightArea(){this.newMethod=IChartPainting;//派生
4025
4028
  this.newMethod();delete this.newMethod;this.ClassName='ChartStraightArea';//类名
4026
4029
  this.Color="rgb(255,193,37)";//线段颜色
4027
- this.Font='11px 微软雅黑';this.Draw=function(){if(this.ChartFrame.IsMinSize)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;if(this.ChartFrame.IsHScreen===true){this.HScreenDraw();return;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();var bottom=this.ChartBorder.GetBottom();var left=this.ChartBorder.GetLeft();var xPointCount=this.ChartFrame.XPointCount;var xRight=this.ChartFrame.GetXFromIndex(xPointCount-1);for(var _i3 in this.Data.Data){var _item=this.Data.Data[_i3];if(_item==null||isNaN(_item.Value)||isNaN(_item.Value2))continue;if(_item.Color==null)continue;var valueMax=Math.max(_item.Value,_item.Value2);var valueMin=Math.min(_item.Value,_item.Value2);var yTop=this.ChartFrame.GetYFromData(valueMax);var yBottom=this.ChartFrame.GetYFromData(valueMin);this.Canvas.fillStyle=_item.Color;this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(yTop),ToFixedRect(xRight-left),ToFixedRect(yBottom-yTop));if(_item.Title&&_item.TitleColor){this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';this.Canvas.fillStyle=_item.TitleColor;this.Canvas.font=this.Font;var _y=yTop+(yBottom-yTop)/2;this.Canvas.fillText(_item.Title,xRight,_y);}}};this.HScreenDraw=function(){var bottom=this.ChartBorder.GetBottom();var top=this.ChartBorder.GetTop();var height=this.ChartBorder.GetHeight();for(var _i4 in this.Data.Data){var _item2=this.Data.Data[_i4];if(_item2==null||isNaN(_item2.Value)||isNaN(_item2.Value2))continue;if(_item2.Color==null)continue;var valueMax=Math.max(_item2.Value,_item2.Value2);var valueMin=Math.min(_item2.Value,_item2.Value2);var yTop=this.ChartFrame.GetYFromData(valueMax);var yBottom=this.ChartFrame.GetYFromData(valueMin);this.Canvas.fillStyle=_item2.Color;this.Canvas.fillRect(ToFixedRect(yBottom),ToFixedRect(top),ToFixedRect(yTop-yBottom),ToFixedRect(height));if(_item2.Title&&_item2.TitleColor){var xText=yTop+(yBottom-yTop)/2;var yText=bottom;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';this.Canvas.fillStyle=_item2.TitleColor;this.Canvas.font=this.Font;this.Canvas.fillText(_item2.Title,0,-2);this.Canvas.restore();}}};this.GetMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={};range.Min=null;range.Max=null;if(!this.Data||!this.Data.Data)return range;for(var _i5 in this.Data.Data){var _item3=this.Data.Data[_i5];if(_item3==null||isNaN(_item3.Value)||isNaN(_item3.Value2))continue;var valueMax=Math.max(_item3.Value,_item3.Value2);var valueMin=Math.min(_item3.Value,_item3.Value2);if(range.Max==null)range.Max=valueMax;if(range.Min==null)range.Min=valueMin;if(range.Max<valueMax)range.Max=valueMax;if(range.Min>valueMin)range.Min=valueMin;}return range;};}//分钟线 支持横屏
4030
+ this.Font='11px 微软雅黑';this.Draw=function(){if(this.ChartFrame.IsMinSize)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;if(this.ChartFrame.IsHScreen===true){this.HScreenDraw();return;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();var bottom=this.ChartBorder.GetBottom();var left=this.ChartBorder.GetLeft();var xPointCount=this.ChartFrame.XPointCount;var xRight=this.ChartFrame.GetXFromIndex(xPointCount-1);for(var _i4 in this.Data.Data){var _item=this.Data.Data[_i4];if(_item==null||isNaN(_item.Value)||isNaN(_item.Value2))continue;if(_item.Color==null)continue;var valueMax=Math.max(_item.Value,_item.Value2);var valueMin=Math.min(_item.Value,_item.Value2);var yTop=this.ChartFrame.GetYFromData(valueMax);var yBottom=this.ChartFrame.GetYFromData(valueMin);this.Canvas.fillStyle=_item.Color;this.Canvas.fillRect(ToFixedRect(left),ToFixedRect(yTop),ToFixedRect(xRight-left),ToFixedRect(yBottom-yTop));if(_item.Title&&_item.TitleColor){this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';this.Canvas.fillStyle=_item.TitleColor;this.Canvas.font=this.Font;var _y=yTop+(yBottom-yTop)/2;this.Canvas.fillText(_item.Title,xRight,_y);}}};this.HScreenDraw=function(){var bottom=this.ChartBorder.GetBottom();var top=this.ChartBorder.GetTop();var height=this.ChartBorder.GetHeight();for(var _i5 in this.Data.Data){var _item2=this.Data.Data[_i5];if(_item2==null||isNaN(_item2.Value)||isNaN(_item2.Value2))continue;if(_item2.Color==null)continue;var valueMax=Math.max(_item2.Value,_item2.Value2);var valueMin=Math.min(_item2.Value,_item2.Value2);var yTop=this.ChartFrame.GetYFromData(valueMax);var yBottom=this.ChartFrame.GetYFromData(valueMin);this.Canvas.fillStyle=_item2.Color;this.Canvas.fillRect(ToFixedRect(yBottom),ToFixedRect(top),ToFixedRect(yTop-yBottom),ToFixedRect(height));if(_item2.Title&&_item2.TitleColor){var xText=yTop+(yBottom-yTop)/2;var yText=bottom;this.Canvas.save();this.Canvas.translate(xText,yText);this.Canvas.rotate(90*Math.PI/180);this.Canvas.textAlign='right';this.Canvas.textBaseline='middle';this.Canvas.fillStyle=_item2.TitleColor;this.Canvas.font=this.Font;this.Canvas.fillText(_item2.Title,0,-2);this.Canvas.restore();}}};this.GetMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={};range.Min=null;range.Max=null;if(!this.Data||!this.Data.Data)return range;for(var _i6 in this.Data.Data){var _item3=this.Data.Data[_i6];if(_item3==null||isNaN(_item3.Value)||isNaN(_item3.Value2))continue;var valueMax=Math.max(_item3.Value,_item3.Value2);var valueMin=Math.min(_item3.Value,_item3.Value2);if(range.Max==null)range.Max=valueMax;if(range.Min==null)range.Min=valueMin;if(range.Max<valueMax)range.Max=valueMax;if(range.Min>valueMin)range.Min=valueMin;}return range;};}//分钟线 支持横屏
4028
4031
  function ChartMinutePriceLine(){this.newMethod=ChartLine;//派生
4029
4032
  this.newMethod();delete this.newMethod;this.ClassName='ChartMinutePriceLine';//类名
4030
4033
  this.YClose;this.IsDrawArea=true;//是否画价格面积图
@@ -4318,8 +4321,8 @@ this.txtLine=20;// 文本下划线
4318
4321
  this.paddingX=20/3;// 设置文本的移动
4319
4322
  // return;
4320
4323
  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;//求和
4321
- for(var _i6 in this.Data.Data){totalValue+=this.Data.Data[_i6].Value;}var start=0;var end=0;//画饼图
4322
- for(var _i7 in this.Data.Data){var _item4=this.Data.Data[_i7];var _rate=(_item4.Value/totalValue).toFixed(2);//占比
4324
+ for(var _i7 in this.Data.Data){totalValue+=this.Data.Data[_i7].Value;}var start=0;var end=0;//画饼图
4325
+ for(var _i8 in this.Data.Data){var _item4=this.Data.Data[_i8];var _rate=(_item4.Value/totalValue).toFixed(2);//占比
4323
4326
  //JSConsole.Chart.Log('[ChartPie::Draw]', i, rate, item);
4324
4327
  // 绘制扇形
4325
4328
  this.Canvas.beginPath();this.Canvas.moveTo(0,0);end+=_rate*2*Math.PI;//终止角度
@@ -4337,17 +4340,17 @@ this.DataPoint=[];//数据点
4337
4340
  this.CenterPoint={};this.StartAngle=0;this.Color='rgb(198,198,198)';this.AreaColor='rgba(242,154,118,0.4)';//面积图颜色
4338
4341
  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)'];//背景色
4339
4342
  this.DrawBorder=function()//画边框
4340
- {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 _i8 in this.BorderPoint){var item=this.BorderPoint[_i8];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 _i9 in this.BorderPoint){var item=this.BorderPoint[_i9];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 _i10 in this.DataPoint){var item=this.DataPoint[_i10];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);
4343
+ {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);
4341
4344
  this.Canvas.fillStyle=this.TitleColor;var xText=item.X,yText=item.Y;//显示每个角度的位置
4342
4345
  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};//中心点
4343
4346
  var radius=Math.min(width/2,height/2)-2;//半径
4344
- var count=Math.max(5,data?data.length:0);var averageAngle=360/count;for(var _i11=0;_i11<count;++_i11){var ptBorder={Index:_i11,Radius:radius,Angle:_i11*averageAngle+this.StartAngle};var angle=ptBorder.Angle;if(data&&_i11<data.length){var item=data[_i11];var ptData={Index:_i11,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;};//空数据
4347
+ 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;};//空数据
4345
4348
  this.DrawEmptyData=function(){JSConsole.Chart.Log('[ChartPie::DrawEmptyData]');};}/*
4346
4349
  中国地图
4347
4350
  */function ChartChinaMap(){this.newMethod=IChartPainting;//派生
4348
4351
  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();//默认颜色填充的色块
4349
4352
  var colorMap=new _map2.default();//定义颜色填充的色块
4350
- var nameMap=new _map2.default();if(this.Data.length>0){for(var _i12 in this.Data){var _item5=this.Data[_i12];nameMap.set(_item5.Name,_item5.Color);}}JSConsole.Chart.Log(this.Data);for(var _i13 in this.Color){var _item6=this.Color[_i13];if(nameMap.has(_item6.Name)){colorMap.set(_item6.Color,nameMap.get(_item6.Name));}else{defaultColorSet.add(_item6.Color);}}var color;for(var _i14=0;_i14<this.ImageData.data.length;_i14+=4){color='rgb('+this.ImageData.data[_i14]+','+this.ImageData.data[_i14+1]+','+this.ImageData.data[_i14+2]+')';if(defaultColorSet.has(color)){this.ImageData.data[_i14]=this.DefaultColor[0];this.ImageData.data[_i14+1]=this.DefaultColor[1];this.ImageData.data[_i14+2]=this.DefaultColor[2];}else if(colorMap.has(color)){var colorValue=colorMap.get(color);this.ImageData.data[_i14]=colorValue[0];this.ImageData.data[_i14+1]=colorValue[1];this.ImageData.data[_i14+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);}};}/*
4353
+ 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);}};}/*
4351
4354
  扩展图形
4352
4355
  */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;//画布
4353
4356
  this.ChartBorder;//边框信息
@@ -4744,9 +4747,9 @@ for(var i=0;i<this.Data.AllChip.length;++i){var vol=this.Data.AllChip[i];if(!vol
4744
4747
  {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;//指数暂时不支持移动筹码
4745
4748
  var bindData=this.HQChart.ChartPaint[0].Data;//if (bindData.Period>=4) return false; //分钟K线不支持, 没时间做,以后再做吧
4746
4749
  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);
4747
- var rate=1;var aryVol=[];var seed=1,vol,maxPrice,minPrice;for(var _i15=count;_i15>=0;--_i15){var item=bindData.Data[_i15];var changeRate=1;//换手率
4748
- if(item.FlowCapital>0)changeRate=item.Vol/item.FlowCapital;if(_i15==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);
4749
- 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 _i16=0;_i16<=dataCount;++_i16){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 _i17 in aryVol){var item=aryVol[_i17];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(_i17==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 _i18=aryVol.length-1;_i18>=0;--_i18){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{for(var _i19 in aryVol){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;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轴成交量坐标
4750
+ 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;//换手率
4751
+ 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);
4752
+ 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轴成交量坐标
4750
4753
  {if(this.IsShowX==false)return;if(this.Data.MaxVol<=0)return;var isDrawXFrame=this.HQChart.Frame.SubFrame.length===1?false:true;//是否画X轴,如果只有1个窗口就不画
4751
4754
  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)//最后一个刻度不要画线了
4752
4755
  {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();};}//画图工具条
@@ -6846,7 +6849,7 @@ this.GetKDataInfo=function(){if(!this.ChartPaint[0])return null;var chartKLine=t
6846
6849
  {var id=obj.ID;if(id===JSCHART_OPERATOR_ID.OP_SCROLL_LEFT||id===JSCHART_OPERATOR_ID.OP_SCROLL_RIGHT)//左右移动 { Step:移动数据个数 }
6847
6850
  {var isLeft=id===JSCHART_OPERATOR_ID.OP_SCROLL_LEFT?true:false;var step=1;if(obj.Step>0)step=obj.Step;var oneStepWidth=this.GetMoveOneStepWidth();if(this.DataMove(step*oneStepWidth,isLeft))//每次移动一个数据
6848
6851
  {this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();}else{if(id===JSCHART_OPERATOR_ID.OP_SCROLL_RIGHT&&this.DragDownloadData)this.DragDownloadData();}}else if(id===JSCHART_OPERATOR_ID.OP_ZOOM_IN||id===JSCHART_OPERATOR_ID.OP_ZOOM_OUT)//缩放
6849
- {var cursorIndex={};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(id===JSCHART_OPERATOR_ID.OP_ZOOM_IN){if(!this.Frame.ZoomUp(cursorIndex))return;}else{if(!this.Frame.ZoomDown(cursorIndex))return;}this.CursorIndex=cursorIndex.Index;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.Draw();}else if(id===JSCHART_OPERATOR_ID.OP_GOTO_HOME){var hisData=this.ChartOperator_Temp_GetHistroyData();;if(!hisData)return;//数据还没有到达
6852
+ {var cursorIndex={};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(id===JSCHART_OPERATOR_ID.OP_ZOOM_IN){if(!this.Frame.ZoomUp(cursorIndex))return;}else{if(!this.Frame.ZoomDown(cursorIndex))return;}this.CursorIndex=cursorIndex.Index;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();}else if(id===JSCHART_OPERATOR_ID.OP_GOTO_HOME){var hisData=this.ChartOperator_Temp_GetHistroyData();;if(!hisData)return;//数据还没有到达
6850
6853
  var showCount=this.Frame.SubFrame[0].Frame.XPointCount;//获取一屏显示的数据个数
6851
6854
  showCount-=this.RightSpaceCount;var index=hisData.Data.length-showCount;hisData.DataOffset=index;this.CursorIndex=0;this.LastPoint.X=null;this.LastPoint.Y=null;JSConsole.Chart.Log('[KLineChartContainer::ChartOperator] OP_GOTO_HOME, dataOffset='+hisData.DataOffset+' CursorIndex='+this.CursorIndex+' PageSize='+showCount);this.ChartOperator_Temp_Update();}else if(id===JSCHART_OPERATOR_ID.OP_GOTO_END){var hisData=this.ChartOperator_Temp_GetHistroyData();if(!hisData)return;//数据还没有到达
6852
6855
  hisData.DataOffset=0;this.CursorIndex=0;this.LastPoint.X=null;this.LastPoint.Y=null;JSConsole.Chart.Log('[KLineChartContainer::ChartOperator] OP_GOTO_END ');this.ChartOperator_Temp_Update();}else if(id==JSCHART_OPERATOR_ID.OP_LEFT_ZOOM_IN||id==JSCHART_OPERATOR_ID.OP_LEFT_ZOOM_OUT)//{ Step:增加/减少数量 } 左边增加/减少显示个数
@@ -6886,11 +6889,11 @@ var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_MOUSE_MOVE);var titleChart=t
6886
6889
  this.ChartOperator_Temp_GetHistroyData=function(){var hisData=null;if(!this.Frame.Data)hisData=this.Frame.Data;else hisData=this.Frame.SubFrame[0].Frame.Data;if(!hisData)return null;//数据还没有到达
6887
6890
  return hisData;};this.ChartOperator_Temp_Update=function(){this.UpdataDataoffset();//更新数据偏移
6888
6891
  this.UpdateFrameMaxMin();//调整坐标最大 最小值
6889
- this.Frame.SetSizeChage(true);this.Draw();this.UpdatePointByCursorIndex();//更新十字光标位子
6892
+ this.ResetFrameXSplit();this.Frame.SetSizeChage(true);this.Draw();this.UpdatePointByCursorIndex();//更新十字光标位子
6890
6893
  };this.OnWheel=function(e){var _this16=this;JSConsole.Chart.Log('[KLineChartContainer::OnWheel]',e);if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash==true)return;var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var isInClient=false;this.Canvas.beginPath();this.Canvas.rect(this.Frame.ChartBorder.GetLeft(),this.Frame.ChartBorder.GetTop(),this.Frame.ChartBorder.GetWidth(),this.Frame.ChartBorder.GetHeight());isInClient=this.Canvas.isPointInPath(x,y);var wheelValue=e.wheelDelta;if(!IFrameSplitOperator.IsObjectExist(e.wheelDelta))wheelValue=e.deltaY*-0.01;var enableZoomUpDown=true;//是否允许缩放
6891
6894
  if(this.EnableZoomUpDown&&this.EnableZoomUpDown.Wheel===false)enableZoomUpDown=false;if(this.SourceData&&this.SourceData.Data){if(isInClient&&wheelValue<0&&enableZoomUpDown)//缩小
6892
- {var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(this.Frame.ZoomDown(cursorIndex,{ZoomDownloadDataCallback:function ZoomDownloadDataCallback(requestData){_this16.ZoomDownloadData(requestData);}})){this.CursorIndex=cursorIndex.Index;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.Draw();this.OnKLinePageChange("wheel");}}else if(isInClient&&wheelValue>0&&enableZoomUpDown)//放大
6893
- {var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(this.Frame.ZoomUp(cursorIndex)){JSConsole.Chart.Log("[KLineChartContainer::OnWheel] cursorIndex ",cursorIndex);this.CursorIndex=cursorIndex.Index;this.UpdatePointByCursorIndex();this.UpdataDataoffset();this.UpdateFrameMaxMin();this.Draw();this.OnKLinePageChange("wheel");}}}if(!isInClient)return;if(e.preventDefault)e.preventDefault();else e.returnValue=false;};//创建
6895
+ {var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(this.Frame.ZoomDown(cursorIndex,{ZoomDownloadDataCallback:function ZoomDownloadDataCallback(requestData){_this16.ZoomDownloadData(requestData);}})){this.CursorIndex=cursorIndex.Index;this.UpdataDataoffset();this.UpdatePointByCursorIndex();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();this.OnKLinePageChange("wheel");}}else if(isInClient&&wheelValue>0&&enableZoomUpDown)//放大
6896
+ {var cursorIndex={ZoomType:this.ZoomType,IsLockRight:this.IsZoomLockRight};cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));if(this.Frame.ZoomUp(cursorIndex)){JSConsole.Chart.Log("[KLineChartContainer::OnWheel] cursorIndex ",cursorIndex);this.CursorIndex=cursorIndex.Index;this.UpdatePointByCursorIndex();this.UpdataDataoffset();this.UpdateFrameMaxMin();this.ResetFrameXSplit();this.Draw();this.OnKLinePageChange("wheel");}}}if(!isInClient)return;if(e.preventDefault)e.preventDefault();else e.returnValue=false;};//创建
6894
6897
  //windowCount 窗口个数
6895
6898
  this.Create=function(windowCount,option){var _this17=this;this.UIElement.JSChartContainer=this;//创建十字光标
6896
6899
  this.ChartCorssCursor=new ChartCorssCursor();this.ChartCorssCursor.Canvas=this.Canvas;this.ChartCorssCursor.StringFormatX=g_DivTooltipDataForamt.Create("CorssCursor_XStringFormat");this.ChartCorssCursor.StringFormatX.GetEventCallback=function(id){return _this17.GetEventCallback(id);};this.ChartCorssCursor.StringFormatX.LanguageID=this.LanguageID;this.ChartCorssCursor.StringFormatY=g_DivTooltipDataForamt.Create("CorssCursor_YStringFormat");this.ChartCorssCursor.StringFormatY.GetEventCallback=function(id){return _this17.GetEventCallback(id);};this.ChartCorssCursor.StringFormatY.LanguageID=this.LanguageID;this.ChartCorssCursor.StringFormatY.ExtendChartPaint=this.ExtendChartPaint;//创建等待提示
@@ -7213,7 +7216,7 @@ this.ClearIndexPaint();this.ResetOverlaySymbolStatus();this.ResetScrollBar();thi
7213
7216
  }}};//设置第1屏的起始日期
7214
7217
  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=是否调用图形销毁函数
7215
7218
  this.DeleteIndexPaint=function(windowIndex,bCallDestroy){var paint=new Array();//踢出当前窗口的指标画法
7216
- for(var _i20 in this.ChartPaint){var _item7=this.ChartPaint[_i20];if(_i20==0||_item7.ChartFrame!=this.Frame.SubFrame[windowIndex].Frame){paint.push(_item7);}else{if(bCallDestroy===true){if(_item7&&_item7.OnDestroy)_item7.OnDestroy();//图形销毁
7219
+ 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();//图形销毁
7217
7220
  }}}var subFrame=this.Frame.SubFrame[windowIndex].Frame;subFrame.YSpecificMaxMin=null;//清空指定最大最小值
7218
7221
  subFrame.IsLocked=false;//解除上锁
7219
7222
  subFrame.YSplitScale=null;//清空固定刻度
@@ -7285,7 +7288,8 @@ KLineType:indexInfo.KLineType,YSpecificMaxMin:indexInfo.YSpecificMaxMin,YSplitSc
7285
7288
  scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
7286
7289
  overlayFrame.Script=scriptIndex;}else{var scriptIndex=indexCustom.Create();scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
7287
7290
  scriptIndex.Create(this,windowIndex);overlayFrame.Script=scriptIndex;}subFrame.OverlayIndex.push(overlayFrame);return overlayFrame;};this.DeleteOverlayWindowsIndex=function(identify)//删除叠加指标
7288
- {if(!this.DeleteOverlayIndex(identify,null))return;this.Frame.ResetXYSplit(true);this.Draw();};this.ChangeKLineDrawType=function(drawType,isDraw,option){if(this.KLineDrawType==drawType&&!option)return;var oldKLineType=this.KLineDrawType;this.KLineDrawType=drawType;var setKLineType=new _set2.default([5,7,8,10,11,12,17]);if(setKLineType.has(oldKLineType)||setKLineType.has(drawType)){var chart=this.ChartPaint[0];if(chart)chart.DrawType=this.KLineDrawType;this.CancelAutoUpdate();//先停止定时器
7291
+ {if(!this.DeleteOverlayIndex(identify,null))return;this.UpdateFrameMaxMin();//重新计算坐标范围
7292
+ this.Frame.ResetXYSplit(true);this.Draw();};this.ChangeKLineDrawType=function(drawType,isDraw,option){if(this.KLineDrawType==drawType&&!option)return;var oldKLineType=this.KLineDrawType;this.KLineDrawType=drawType;var setKLineType=new _set2.default([5,7,8,10,11,12,17]);if(setKLineType.has(oldKLineType)||setKLineType.has(drawType)){var chart=this.ChartPaint[0];if(chart)chart.DrawType=this.KLineDrawType;this.CancelAutoUpdate();//先停止定时器
7289
7293
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangeKLineDrawType');if(ChartData.IsDayPeriod(this.Period,true)){this.ResetOverlaySymbolStatus();this.RequestHistoryData();//请求日线数据
7290
7294
  }else if(ChartData.IsMinutePeriod(this.Period,true)||ChartData.IsSecondPeriod(this.Period)||ChartData.IsMilliSecondPeriod(this.Period)){this.ResetOverlaySymbolStatus();this.ReqeustHistoryMinuteData();//请求分钟数据
7291
7295
  }return;}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(i==0){item.DrawType=this.KLineDrawType;if(option){if(IFrameSplitOperator.IsBool(option.IsThinAKBar))item.IsThinAKBar=option.IsThinAKBar;}}else if(item.ClassName=='ChartVolStick'){item.KLineDrawType=this.KLineDrawType;}}for(var i in this.OverlayChartPaint)//叠加K线样式修改
@@ -7337,7 +7341,7 @@ chart.SetOption(option);this.ExtendChartPaint.push(chart);this.Frame.ChartBorder
7337
7341
  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"://框架分割
7338
7342
  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)//手势离开十字光标消失
7339
7343
  {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:回调 }
7340
- this.LockIndex=function(lockData){if(!lockData)return;if(!lockData.IndexName)return;for(var _i21 in this.WindowIndex){var _item8=this.WindowIndex[_i21];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;//单词拼错了, 还没替换完
7344
+ 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;//单词拼错了, 还没替换完
7341
7345
  this.Update=function(option)//option: { UpdateCursorIndexType:更新十字光标方式 }
7342
7346
  {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))//复权(日线数据复权)
7343
7347
  {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)//复权(分钟数据复权, 复权因子模式)
@@ -7417,13 +7421,13 @@ bNeedDonloadData=false;if(this.EnableFlowCapital)//强制下载流通股
7417
7421
  {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',//类名::
7418
7422
  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;//已被上层替换,不调用默认的网络请求
7419
7423
  }//请求数据
7420
- 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 _i22 in stock.stockday){var item=stock.stockday[_i22];var indexData=new SingleData();indexData.Date=item.date;var financeData=item.capital;if(!financeData)continue;if(financeData.a>0){indexData.Value=financeData.a;//流通股本(股)
7424
+ 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;//流通股本(股)
7421
7425
  aryData.push(indexData);}}if(this.IsApiPeriod){var klineData=this.ChartPaint[0].Data;var aryFixedData=null;if(ChartData.IsMinutePeriod(this.Period,true))//分钟数据
7422
7426
  {aryFixedData=klineData.GetMinuteFittingFinanceData(aryData);}else if(ChartData.IsDayPeriod(this.Period,true))//日线数据
7423
7427
  {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))//分钟数据
7424
7428
  {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)//复权
7425
7429
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsMinutePeriod(bindData.Period,false))//周期数据
7426
- {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;}else{var aryFixedData=this.SourceData.GetFittingFinanceData(aryData);for(var _i23 in this.SourceData.Data){var item=this.SourceData.Data[_i23];if(aryFixedData[_i23]&&IFrameSplitOperator.IsNumber(aryFixedData[_i23].Value))item.FlowCapital=aryFixedData[_i23].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0)//复权
7430
+ {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)//复权
7427
7431
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsDayPeriod(bindData.Period,false))//周期数据
7428
7432
  {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();};//创建画图工具
7429
7433
  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图标
@@ -7796,7 +7800,7 @@ for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Fr
7796
7800
  this.Frame.SetSizeChage(true);if(this.UpdateXShowText)this.UpdateXShowText();this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
7797
7801
  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;}}};//删除某一个窗口的指标
7798
7802
  this.DeleteIndexPaint=function(windowIndex,bCallDestroy){var paint=new Array();//踢出当前窗口的指标画法
7799
- for(var _i24 in this.ChartPaint){var _item9=this.ChartPaint[_i24];if(_i24==0||_item9.ChartFrame!=this.Frame.SubFrame[windowIndex].Frame){paint.push(_item9);}else{if(bCallDestroy===true){if(_item9&&_item9.OnDestroy)_item9.OnDestroy();//图形销毁
7803
+ 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();//图形销毁
7800
7804
  }}}//清空指定最大最小值
7801
7805
  var subFrame=this.Frame.SubFrame[windowIndex].Frame;subFrame.YSpecificMaxMin=null;subFrame.IsLocked=false;//解除上锁
7802
7806
  subFrame.YSplitOperator.SplitType=subFrame.YSplitOperator.DefaultSplitType;//还原Y坐标分割模式
@@ -7895,7 +7899,7 @@ if(this.DayOffset.ShowDayCount==-1)this.DayOffset.ShowDayCount=this.DayData.leng
7895
7899
  if(this.DayOffset.Offset==-8888)this.DayOffset.Offset=this.DayOffset.DayCount-this.DayOffset.ShowDayCount;//最后一页
7896
7900
  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;//期货使用前结算价
7897
7901
  this.BindMainData(sourceData,yClose);//外汇 均线暂时不用
7898
- if(MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol))this.ChartPaint[1].Data=null;for(var _i25=0;_i25<this.Frame.SubFrame.length;++_i25){var item=this.Frame.SubFrame[_i25];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=showDayCount;item.Frame.XSplitOperator.DayData=this.DayData;item.Frame.XSplitOperator.Operator();//调整X轴个数
7902
+ 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轴个数
7899
7903
  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轴个数同步
7900
7904
  {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();//调整坐标最大 最小值
7901
7905
  //执行脚本
@@ -7921,7 +7925,7 @@ this.UpdateLatestMinuteDataV2(minuteData);var sourceData=this.SourceData;var ary
7921
7925
  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)//盘前, 盘后成交量公用坐标
7922
7926
  {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;//期货使用前结算价
7923
7927
  this.CaclutateLimitPrice(yClose,minuteData.LimitPrice);//计算涨停价格
7924
- 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 _i26=0;_i26<this.Frame.SubFrame.length;++_i26){var item=this.Frame.SubFrame[_i26];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=1;item.Frame.XSplitOperator.Operator();//调整X轴个数
7928
+ 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轴个数
7925
7929
  item.Frame.YSplitOperator.Symbol=this.Symbol;if(IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)){for(var j=0;j<item.OverlayIndex.length;++j)//子坐标X轴个数同步
7926
7930
  {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;//数据绑定到信息地雷上
7927
7931
  this.RecvMinuteDataEvent({FunctionName:"RecvUpdateMinuteData"});this.RequestMinuteInfoData();this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
@@ -7936,7 +7940,7 @@ var sourceData=new ChartData();sourceData.Data=aryMinuteData;sourceData.UpdateTi
7936
7940
  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)//盘前, 盘后成交量公用坐标
7937
7941
  {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;//期货使用前结算价
7938
7942
  this.CaclutateLimitPrice(yClose,data.stock[0].limitprice);//计算涨停价格
7939
- 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 _i27 in this.Frame.SubFrame){var item=this.Frame.SubFrame[_i27];item.Frame.XSplitOperator.Symbol=this.Symbol;item.Frame.XSplitOperator.DayCount=1;item.Frame.XSplitOperator.Operator();//调整X轴个数
7943
+ 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轴个数
7940
7944
  item.Frame.YSplitOperator.Symbol=this.Symbol;for(var j in item.OverlayIndex)//子坐标X轴个数同步
7941
7945
  {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;//数据绑定到信息地雷上
7942
7946
  this.RecvMinuteDataEvent({FunctionName:"RecvMinuteData"});this.RequestMinuteInfoData();this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
@@ -8197,14 +8201,14 @@ var pageSize=this.Frame.GetCurrentPageSize();if(IFrameSplitOperator.IsNumber(pag
8197
8201
  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是否立即绘制图标
8198
8202
  {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;//数据索引
8199
8203
  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: } }
8200
- {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 _i28 in stock.stockday){var item=stock.stockday[_i28];var indexData=new SingleData();indexData.Date=item.date;var financeData=item.capital;if(!financeData)continue;if(financeData.a>0){indexData.Value=financeData.a;//流通股本(股)
8204
+ {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;//流通股本(股)
8201
8205
  aryData.push(indexData);}}if(ChartData.IsMinutePeriod(this.Period,true))//分钟数据
8202
- {var aryFixedData=this.SourceData.GetMinuteFittingFinanceData(aryData);for(var _i29 in this.SourceData.Data){var item=this.SourceData.Data[_i29];if(!aryFixedData[_i29])continue;item.FlowCapital=aryFixedData[_i29].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(ChartData.IsMinutePeriod(bindData.Period,false))//周期数据
8206
+ {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))//周期数据
8203
8207
  {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;var aryFixedData=this.KLineSourceData.GetMinuteFittingFinanceData(aryData);//数据添加到备份数据中
8204
- for(var _i30 in this.KLineSourceData.Data){var item=this.KLineSourceData.Data[_i30];if(!aryFixedData[_i30])continue;item.FlowCapital=aryFixedData[_i30].Value;}}else{var aryFixedData=this.SourceData.GetFittingFinanceData(aryData);for(var _i31 in this.SourceData.Data){var item=this.SourceData.Data[_i31];if(!aryFixedData[_i31])continue;item.FlowCapital=aryFixedData[_i31].Value;}var bindData=this.ChartPaint[0].Data;var newBindData=new ChartData();newBindData.Data=this.SourceData.Data;if(bindData.Right>0)//复权
8208
+ 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)//复权
8205
8209
  {var rightData=newBindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});newBindData.Data=rightData;}if(ChartData.IsDayPeriod(bindData.Period,false))//周期数据
8206
8210
  {var periodData=newBindData.GetPeriodData(bindData.Period);newBindData.Data=periodData;}bindData.Data=newBindData.Data;var aryFixedData=this.KLineSourceData.GetFittingFinanceData(aryData);//数据添加到备份数据中
8207
- for(var _i32 in this.KLineSourceData.Data){var item=this.KLineSourceData.Data[_i32];if(!aryFixedData[_i32])continue;item.FlowCapital=aryFixedData[_i32].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;//派生
8211
+ 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;//派生
8208
8212
  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];//最后一个显示数据
8209
8213
  this.TrainInfo.LastShowData=kItem;this.TrainInfo.LastData=kItem;//训练起始日期
8210
8214
  this.TrainInfo.Start.Index=index;this.TrainInfo.Start.Date=kItem.Date;this.TrainInfo.Start.Time=kItem.Time;//训练结束日期
@@ -8341,10 +8345,10 @@ this.Frame=new SimpleChartFrame();this.Frame.ChartBorder=new ChartBorder();this.
8341
8345
  this.ChartSplashPaint.Frame=this.Frame;this.CreateMainChart();this.UIElement.addEventListener("keydown",OnKeyDown,true);//键盘消息
8342
8346
  };this.SetMainDataConotrl=function(dataControl){if(!dataControl)return;this.MainDataControl=dataControl;this.ChartPaint=[];//图形
8343
8347
  this.CreateMainChart();this.Draw();this.RequestData();};//创建主数据画法
8344
- this.CreateMainChart=function(){if(!this.MainDataControl)return;for(var _i33 in this.MainDataControl.DataType){var _item10=this.MainDataControl.DataType[_i33];if(_item10.Type=="BAR"){var chartItem=new ChartBar();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name=_item10.Name;if(_item10.Color)chartItem.UpBarColor=_item10.Color;if(_item10.Color2)chartItem.DownBarColor=_item10.Color2;this.ChartPaint.push(chartItem);}else if(_item10.Type=="LINE"){var chartItem=new ChartLine();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name=_item10.Name;if(_item10.Color)chartItem.Color=_item10.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();
8348
+ this.CreateMainChart=function(){if(!this.MainDataControl)return;for(var _i34 in this.MainDataControl.DataType){var _item10=this.MainDataControl.DataType[_i34];if(_item10.Type=="BAR"){var chartItem=new ChartBar();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name=_item10.Name;if(_item10.Color)chartItem.UpBarColor=_item10.Color;if(_item10.Color2)chartItem.DownBarColor=_item10.Color2;this.ChartPaint.push(chartItem);}else if(_item10.Type=="LINE"){var chartItem=new ChartLine();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name=_item10.Name;if(_item10.Color)chartItem.Color=_item10.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();
8345
8349
  // this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;
8346
8350
  // this.TitlePaint[0].Canvas=this.Canvas;
8347
- };this.RequestData=function(){if(!this.MainDataControl)return;this.MainDataControl.JSChartContainer=this;this.MainDataControl.RequestData();};this.UpdateMainData=function(dataControl){var lCount=0;for(var _i34 in dataControl.Data){var itemData=new ChartData();itemData.Data=dataControl.Data[_i34];this.ChartPaint[_i34].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();//调整坐标最大 最小值
8351
+ };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();//调整坐标最大 最小值
8348
8352
  this.Frame.SetSizeChage(true);this.Draw();};}////////////////////////////////////////////////////////////////////////////////
8349
8353
  // 饼图图形框架
8350
8354
  //
@@ -8357,12 +8361,12 @@ this.Create=function(){this.UIElement.JSChartContainer=this;//创建等待提示
8357
8361
  this.ChartSplashPaint=new ChartSplashPaint();this.ChartSplashPaint.Canvas=this.Canvas;//创建框架容器
8358
8362
  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=[];//图形
8359
8363
  this.CreateMainChart();this.Draw();this.RequestData();};//创建主数据画法
8360
- this.CreateMainChart=function(){if(!this.MainDataControl)return;for(var _i35 in this.MainDataControl.DataType){var _item11=this.MainDataControl.DataType[_i35];if(_item11.Type=="PIE")//饼图
8364
+ this.CreateMainChart=function(){if(!this.MainDataControl)return;for(var _i36 in this.MainDataControl.DataType){var _item11=this.MainDataControl.DataType[_i36];if(_item11.Type=="PIE")//饼图
8361
8365
  {var chartItem=new ChartPie();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name=_item11.Name;if(this.Radius)chartItem.Radius=this.Radius;this.ChartPaint.push(chartItem);}else if(_item11.Type=='RADAR')//雷达图
8362
8366
  {var chartItem=new ChartRadar();chartItem.Canvas=this.Canvas;chartItem.ChartBorder=this.Frame.ChartBorder;chartItem.ChartFrame=this.Frame;chartItem.Name=_item11.Name;if(_item11.StartAngle)chartItem.StartAngle=_item11.StartAngle;this.ChartPaint.push(chartItem);}}// this.TitlePaint[0]=new DynamicKLineTitlePainting();
8363
8367
  // this.TitlePaint[0].Frame=this.Frame.SubFrame[0].Frame;
8364
8368
  // this.TitlePaint[0].Canvas=this.Canvas;
8365
- };this.RequestData=function(){if(!this.MainDataControl)return;this.MainDataControl.JSChartContainer=this;this.MainDataControl.RequestData();};this.UpdateMainData=function(dataControl){for(var _i36 in dataControl.Data){var itemData=new ChartData();itemData.Data=dataControl.Data[_i36];this.ChartPaint[_i36].Data=itemData;}this.Frame.SetSizeChage(true);this.Draw();};}//地图
8369
+ };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();};}//地图
8366
8370
  function MapChartContainer(uielement){this.newMethod=JSChartContainer;//派生
8367
8371
  this.newMethod(uielement);delete this.newMethod;this.MainDataControl;//主数据类(对外的接口类)
8368
8372
  //鼠标移动
@@ -8486,13 +8490,13 @@ this.ApiUrl=g_JSChartResource.Index.CustomIndexHeatApiUrl;this.Index[1].LineColo
8486
8490
  this.RequestData=function(hqChart,windowIndex,hisData){var self=this;var param={HQChart:hqChart,WindowIndex:windowIndex,HistoryData:hisData};this.Data=[];if(param.HQChart.Period>0)//周期数据
8487
8491
  {this.NotSupport(param.HQChart,param.WindowIndex,"不支持周期切换");param.HQChart.Draw();return false;}//请求数据
8488
8492
  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);
8489
- var aryData=new Array();for(var _i37 in recvData.data){var _item12=recvData.data[_i37];var indexData=new SingleData();indexData.Date=_item12[0];indexData.Value=_item12[1];aryData.push(indexData);}var aryFittingData=param.HistoryData.GetFittingData(aryData);var bindData=new ChartData();bindData.Data=aryFittingData;bindData.Period=param.HQChart.Period;//周期
8493
+ var aryData=new Array();for(var _i38 in recvData.data){var _item12=recvData.data[_i38];var indexData=new SingleData();indexData.Date=_item12[0];indexData.Value=_item12[1];aryData.push(indexData);}var aryFittingData=param.HistoryData.GetFittingData(aryData);var bindData=new ChartData();bindData.Data=aryFittingData;bindData.Period=param.HQChart.Period;//周期
8490
8494
  bindData.Right=param.HQChart.Right;//复权
8491
8495
  this.Data=bindData.GetValue();this.BindData(param.HQChart,param.WindowIndex,param.HistoryData);param.HQChart.UpdataDataoffset();//更新数据偏移
8492
8496
  param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8493
8497
  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]
8494
- hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin={Max:1,Min:0,Count:3};var titleIndex=windowIndex+1;for(var _i38=1;_i38<paint.length;++_i38){var name=this.Index[_i38].Name;//显示的名字特殊处理
8495
- if(name=='MA')name="MA"+this.Index[_i38].Param;hqChart.TitlePaint[titleIndex].Data[_i38]=new DynamicTitleData(paint[_i38].Data,name,this.Index[_i38].LineColor);hqChart.TitlePaint[titleIndex].Data[_i38].StringFormat=STRING_FORMAT_TYPE.DEFAULT;hqChart.TitlePaint[titleIndex].Data[_i38].FloatPrecision=2;}hqChart.TitlePaint[titleIndex].Title='热度'+'('+this.Index[0].Param+','+this.Index[1].Param+','+this.Index[2].Param+','+this.Index[3].Param+')';return true;};}/*
8498
+ 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;//显示的名字特殊处理
8499
+ 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;};}/*
8496
8500
  本福特系数(财务粉饰)
8497
8501
  */function BenfordIndex(){this.newMethod=BaseIndex;//派生
8498
8502
  this.newMethod('财务粉饰');delete this.newMethod;this.Index=new Array(new IndexInfo('区域',null),new IndexInfo("系数",null));this.Data;//财务数据
@@ -8511,7 +8515,7 @@ this.newMethod(name);delete this.newMethod;this.Script=script;//脚本
8511
8515
  this.Arguments=[];//参数
8512
8516
  this.OutVar=[];//输出数据
8513
8517
  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};//参数
8514
- var strParam='';for(var _i39 in this.Arguments){if(strParam.length>0)strParam+=',';var item=this.Arguments[_i39];strParam+='"'+item.Name+'"'+':'+item.Value;}strParam='{'+strParam+'}';var indexParam=JSON.parse(strParam);var data=(0,_stringify2.default)({code:this.Script,//脚本
8518
+ 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,//脚本
8515
8519
  symbol:param.HQChart.Symbol,//股票代码
8516
8520
  period:param.HQChart.Period,//周期 0=日线 1=周线 2=月线 3=年线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟
8517
8521
  right:param.HQChart.Right,//复权 0 不复权 1 前复权 2 后复权
@@ -8527,10 +8531,10 @@ var indexInfo={Name:item.name,Type:item.graph,LineWidth:item.width,Data:bindData
8527
8531
  param.HQChart.UpdataDataoffset();//更新数据偏移
8528
8532
  param.HQChart.UpdateFrameMaxMin();//调整坐标最大 最小值
8529
8533
  param.HQChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){hqChart.DeleteIndexPaint(windowIndex);//清空指标图形
8530
- for(var _i40 in this.OutVar){var _item13=this.OutVar[_i40];switch(_item13.Type){case'line':this.CreateLine(hqChart,windowIndex,_item13,_i40);break;case'colorstick'://上下柱子
8531
- this.CreateColorStock(hqChart,windowIndex,_item13,_i40);break;}}var titleIndex=windowIndex+1;hqChart.TitlePaint[titleIndex].Title=this.Name;//这是指标名称
8534
+ for(var _i41 in this.OutVar){var _item13=this.OutVar[_i41];switch(_item13.Type){case'line':this.CreateLine(hqChart,windowIndex,_item13,_i41);break;case'colorstick'://上下柱子
8535
+ this.CreateColorStock(hqChart,windowIndex,_item13,_i41);break;}}var titleIndex=windowIndex+1;hqChart.TitlePaint[titleIndex].Title=this.Name;//这是指标名称
8532
8536
  var indexParam='';//指标参数
8533
- for(var _i41 in this.Arguments){var _item14=this.Arguments[_i41];if(indexParam.length>0)indexParam+=',';indexParam+=_item14.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);};//给一个默认的颜色
8537
+ for(var _i42 in this.Arguments){var _item14=this.Arguments[_i42];if(indexParam.length>0)indexParam+=',';indexParam+=_item14.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);};//给一个默认的颜色
8534
8538
  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)];};}/*
8535
8539
  json格式数据指标 用来显示本地数据
8536
8540
  */function JsonDataIndex(name,script,args,option){this.newMethod=PyScriptIndex;//派生
@@ -8814,8 +8818,8 @@ this.Dialog;this.HQChart;this.PageData;//分页数据
8814
8818
  //隐藏窗口
8815
8819
  this.Close=function(){this.DivElement.removeChild(this.Dialog);};//创建
8816
8820
  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;//关闭按钮
8817
- (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 _i42=0;_i42<count;_i42++){var dataObj={};if(_i42==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[_i42-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);
8818
- };this.RenderDom=function(page){var currentPageData=this.PageData.NewData[page];JSConsole.Chart.Log('[KLineMatchDialog::RenderDom currentPageData]',currentPageData);var bodyHtml='';for(var _i43=0;_i43<currentPageData.length;_i43++){bodyHtml+=('<tr>\n <td class='+currentPageData[_i43].Color+'>'+currentPageData[_i43].Name+'</td>\n <td class='+currentPageData[_i43].Color+'>'+currentPageData[_i43].Rate+'</td>\n <td class='+currentPageData[_i43].Color+'>'+currentPageData[_i43].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
8821
+ (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);
8822
+ };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
8819
8823
  };this.PaginationInit=function(id,maxPageNum,callback){//初始化分页
8820
8824
  var spanStr="";var currentPageNum=(0,_jquery2.default)(id+" .pagination").data("current");var lastPageNum=0;var showCountPage=5;//只显示5个数字项
8821
8825
  if(currentPageNum<showCountPage){//当前页小于预显示页数
@@ -8828,7 +8832,7 @@ spanStr+=i!=currentPageNum?"<span>"+i+"</span>":"<span class='active'>"+i+"</spa
8828
8832
  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上
8829
8833
  callback(flag);};this.PaginationMetaData=function(data){//假分页数据,每页10条数据
8830
8834
  // data = {NewData:{},MetaData:[],PageCount:0,Callback:null};
8831
- var newData={};var metaData=data.MetaData;var pageCount=data.PageCount;for(var _i44=0;_i44<pageCount;_i44++){var itemArr=[];for(var _j2=0;_j2<10;_j2++){var itemIndex=10*_i44+_j2;if(itemIndex<=metaData.length-1){var item=metaData[itemIndex];itemArr.push(item);}else{break;}}newData[_i44+1]=itemArr;}data.NewData=newData;};//显示
8835
+ 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;};//显示
8832
8836
  this.DoModal=function(event){var chart=event.data.Chart;if(this.ID==null)this.Create();//第1次 需要创建div
8833
8837
  this.MatchData=event.data.MatchData;this.Sample=event.data.Sample;this.HQChart=chart;this.BindData();//居中显示
8834
8838
  var border=chart.Frame.ChartBorder;var scrollPos=GetScrollPosition();var left=border.GetWidth()/2;var top=border.GetHeight()/2;this.Show(left,top,200,200);//显示
@@ -9649,7 +9653,7 @@ this.ParseStatement=function(){var statement=void 0;switch(this.LookAhead.Type){
9649
9653
  this.ParseEmptyStatement=function(){var node=this.CreateNode();this.Expect(';');return this.Finalize(node,this.Node.EmptyStatement());};//https://tc39.github.io/ecma262/#sec-labelled-statements
9650
9654
  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
9651
9655
  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
9652
- stack.push(this.NextToken().Value);precedences.push(prec);markers.push(this.LookAhead);stack.push(this.IsolateCoverGrammar(this.ParseExponentiationExpression));}var _i45=stack.length-1;expr=stack[_i45];var lastMarker=markers.pop();while(_i45>1){var marker=markers.pop();var lastLineStart=lastMarker&&lastMarker.LineStart;var _node=this.StartNode(marker,lastLineStart);var _operator=stack[_i45-1];expr=this.Finalize(_node,this.Node.BinaryExpression(_operator,stack[_i45-2],expr));_i45-=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
9656
+ 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
9653
9657
  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();//解析 调用参数
9654
9658
  expr=this.Finalize(this.StartNode(startToken),this.Node.CallExpression(expr,args,startToken));}else{break;}}return expr;};/*
9655
9659
  BooleanLiteral = 1,
@@ -9678,77 +9682,77 @@ this.LastMarker.Index=this.StartMarker.Index;this.LastMarker.Line=this.StartMark
9678
9682
  //相加
9679
9683
  this.Add=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相加
9680
9684
  if(isNumber&&isNumber2)return data+data2;//都是数组相加
9681
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i46=0;_i46<count;++_i46){result[_i46]=null;//初始化
9682
- if(_i46<data.length&&_i46<data2.length){if(this.IsNumber(data[_i46])&&this.IsNumber(data2[_i46]))result[_i46]=data[_i46]+data2[_i46];}}return result;}//单数据和数组相加
9683
- var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i47 in aryData){result[_i47]=null;if(this.IsNumber(aryData[_i47])&&this.IsNumber(value))result[_i47]=value+aryData[_i47];}return result;};//相减
9685
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i47=0;_i47<count;++_i47){result[_i47]=null;//初始化
9686
+ if(_i47<data.length&&_i47<data2.length){if(this.IsNumber(data[_i47])&&this.IsNumber(data2[_i47]))result[_i47]=data[_i47]+data2[_i47];}}return result;}//单数据和数组相加
9687
+ 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;};//相减
9684
9688
  this.Subtract=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相减
9685
9689
  if(isNumber&&isNumber2)return data-data2;//都是数组相减
9686
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i48=0;_i48<count;++_i48){result[_i48]=null;//初始化
9687
- if(_i48<data.length&&_i48<data2.length){if(this.IsNumber(data[_i48])&&this.IsNumber(data2[_i48]))result[_i48]=data[_i48]-data2[_i48];}}return result;}if(isNumber)//单数据-数组
9688
- {for(var _i49 in data2){result[_i49]=null;if(this.IsNumber(data)&&this.IsNumber(data2[_i49]))result[_i49]=data-data2[_i49];}}else//数组-单数据
9689
- {for(var _i50 in data){result[_i50]=null;if(this.IsNumber(data[_i50])&&this.IsNumber(data2))result[_i50]=data[_i50]-data2;}}return result;};//相乘
9690
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i49=0;_i49<count;++_i49){result[_i49]=null;//初始化
9691
+ 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)//单数据-数组
9692
+ {for(var _i50 in data2){result[_i50]=null;if(this.IsNumber(data)&&this.IsNumber(data2[_i50]))result[_i50]=data-data2[_i50];}}else//数组-单数据
9693
+ {for(var _i51 in data){result[_i51]=null;if(this.IsNumber(data[_i51])&&this.IsNumber(data2))result[_i51]=data[_i51]-data2;}}return result;};//相乘
9690
9694
  this.Multiply=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相乘
9691
9695
  if(isNumber&&isNumber2)return data*data2;//都是数组相乘
9692
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i51=0;_i51<count;++_i51){result[_i51]=null;//初始化
9693
- if(_i51<data.length&&_i51<data2.length){if(this.IsNumber(data[_i51])&&this.IsNumber(data2[_i51]))result[_i51]=data[_i51]*data2[_i51];}}return result;}//单数据和数组相乘
9694
- var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i52 in aryData){result[_i52]=null;if(this.IsNumber(aryData[_i52])&&this.IsNumber(value))result[_i52]=value*aryData[_i52];}return result;};//相除
9696
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i52=0;_i52<count;++_i52){result[_i52]=null;//初始化
9697
+ if(_i52<data.length&&_i52<data2.length){if(this.IsNumber(data[_i52])&&this.IsNumber(data2[_i52]))result[_i52]=data[_i52]*data2[_i52];}}return result;}//单数据和数组相乘
9698
+ 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;};//相除
9695
9699
  this.Divide=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相除
9696
9700
  if(isNumber&&isNumber2){if(data2==0)return null;//除0判断
9697
9701
  return data/data2;}//都是数组相除
9698
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i53=0;_i53<count;++_i53){result[_i53]=null;//初始化
9699
- if(_i53<data.length&&_i53<data2.length){if(this.IsNumber(data[_i53])&&this.IsDivideNumber(data2[_i53]))result[_i53]=data[_i53]/data2[_i53];}}return result;}if(isNumber)//单数据-数组
9700
- {for(var _i54 in data2){result[_i54]=null;if(this.IsNumber(data)&&this.IsDivideNumber(data2[_i54]))result[_i54]=data/data2[_i54];}}else//数组-单数据
9701
- {for(var _i55 in data){result[_i55]=null;if(this.IsNumber(data[_i55])&&this.IsDivideNumber(data2))result[_i55]=data[_i55]/data2;}}return result;};//大于
9702
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i54=0;_i54<count;++_i54){result[_i54]=null;//初始化
9703
+ 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)//单数据-数组
9704
+ {for(var _i55 in data2){result[_i55]=null;if(this.IsNumber(data)&&this.IsDivideNumber(data2[_i55]))result[_i55]=data/data2[_i55];}}else//数组-单数据
9705
+ {for(var _i56 in data){result[_i56]=null;if(this.IsNumber(data[_i56])&&this.IsDivideNumber(data2))result[_i56]=data[_i56]/data2;}}return result;};//大于
9702
9706
  this.GT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9703
9707
  if(isNumber&&isNumber2)return data>data2?1:0;//都是数组比较
9704
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i56=0;_i56<count;++_i56){result[_i56]=null;//初始化
9705
- if(_i56<data.length&&_i56<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i56]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i56]))continue;if(!isNaN(data[_i56])&&!isNaN(data2[_i56]))result[_i56]=data[_i56]>data2[_i56]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9706
- {for(var _i57 in data2){result[_i57]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i57]))continue;if(!isNaN(data)&&!isNaN(data2[_i57]))result[_i57]=data>data2[_i57]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9707
- {for(var _i58 in data){result[_i58]=null;if(!IFrameSplitOperator.IsVaild(data[_i58]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;if(!isNaN(data[_i58])&&!isNaN(data2))result[_i58]=data[_i58]>data2?1:0;}}return result;};//大于等于
9708
+ 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;//初始化
9709
+ 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))//单数据-数组
9710
+ {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))//数组-单数据
9711
+ {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;};//大于等于
9708
9712
  this.GTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9709
9713
  if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
9710
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i59=0;_i59<count;++_i59){result[_i59]=null;//初始化
9711
- if(_i59<data.length&&_i59<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i59]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i59]))continue;result[_i59]=data[_i59]>=data2[_i59]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9712
- {for(var _i60 in data2){result[_i60]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i60]))continue;result[_i60]=data>=data2[_i60]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9713
- {for(var _i61 in data){result[_i61]=null;if(!IFrameSplitOperator.IsVaild(data[_i61]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i61]=data[_i61]>=data2?1:0;}}return result;};//小于
9714
+ 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;//初始化
9715
+ 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))//单数据-数组
9716
+ {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))//数组-单数据
9717
+ {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;};//小于
9714
9718
  this.LT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9715
9719
  if(isNumber&&isNumber2)return data<data2?1:0;//都是数组比较
9716
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i62=0;_i62<count;++_i62){result[_i62]=null;//初始化
9717
- if(_i62<data.length&&_i62<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i62]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i62]))continue;result[_i62]=data[_i62]<data2[_i62]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9718
- {for(var _i63 in data2){result[_i63]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i63]))continue;result[_i63]=data<data2[_i63]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9719
- {for(var _i64 in data){result[_i64]=null;if(!IFrameSplitOperator.IsVaild(data[_i64]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i64]=data[_i64]<data2?1:0;}}return result;};//小于等于
9720
+ 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;//初始化
9721
+ 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))//单数据-数组
9722
+ {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))//数组-单数据
9723
+ {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;};//小于等于
9720
9724
  this.LTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9721
9725
  if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
9722
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i65=0;_i65<count;++_i65){result[_i65]=null;//初始化
9723
- if(_i65<data.length&&_i65<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i65]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i65]))continue;result[_i65]=data[_i65]<=data2[_i65]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9724
- {for(var _i66 in data2){result[_i66]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i66]))continue;result[_i66]=data<=data2[_i66]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9725
- {for(var _i67 in data){result[_i67]=null;if(!IFrameSplitOperator.IsVaild(data[_i67]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i67]=data[_i67]<=data2?1:0;}}return result;};//等于
9726
+ 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;//初始化
9727
+ 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))//单数据-数组
9728
+ {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))//数组-单数据
9729
+ {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;};//等于
9726
9730
  this.EQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9727
9731
  if(isNumber&&isNumber2)return data==data2?1:0;//都是数组比较
9728
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i68=0;_i68<count;++_i68){result[_i68]=null;//初始化
9729
- if(_i68<data.length&&_i68<data2.length){if(!isNaN(data[_i68])&&!isNaN(data2[_i68]))result[_i68]=data[_i68]==data2[_i68]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9730
- {for(var _i69 in data2){result[_i69]=null;if(!isNaN(data)&&!isNaN(data2[_i69]))result[_i69]=data==data2[_i69]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9731
- {for(var _i70 in data){result[_i70]=null;if(!isNaN(data[_i70])&&!isNaN(data2))result[_i70]=data[_i70]==data2?1:0;}}return result;};//不等于
9732
+ 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;//初始化
9733
+ 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))//单数据-数组
9734
+ {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))//数组-单数据
9735
+ {for(var _i71 in data){result[_i71]=null;if(!isNaN(data[_i71])&&!isNaN(data2))result[_i71]=data[_i71]==data2?1:0;}}return result;};//不等于
9732
9736
  this.NEQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9733
9737
  if(isNumber&&isNumber2)return data!=data2?1:0;//都是数组比较
9734
- var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i71=0;_i71<count;++_i71){result[_i71]=null;//初始化
9735
- if(_i71<data.length&&_i71<data2.length){if(!isNaN(data[_i71])&&!isNaN(data2[_i71]))result[_i71]=data[_i71]!=data2[_i71]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9736
- {for(var _i72 in data2){result[_i72]=null;if(!isNaN(data)&&!isNaN(data2[_i72]))result[_i72]=data!=data2[_i72]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9737
- {for(var _i73 in data){result[_i73]=null;if(!isNaN(data[_i73])&&!isNaN(data2))result[_i73]=data[_i73]!=data2?1:0;}}return result;};//AND &&
9738
+ 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;//初始化
9739
+ 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))//单数据-数组
9740
+ {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))//数组-单数据
9741
+ {for(var _i74 in data){result[_i74]=null;if(!isNaN(data[_i74])&&!isNaN(data2))result[_i74]=data[_i74]!=data2?1:0;}}return result;};//AND &&
9738
9742
  this.And=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值 &&
9739
9743
  if(isNumber&&isNumber2)return data&&data2?1:0;//都是数组 &&
9740
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i74=0;_i74<count;++_i74){result[_i74]=null;//初始化
9741
- if(_i74<data.length&&_i74<data2.length){if(!isNaN(data[_i74])&&!isNaN(data2[_i74]))result[_i74]=data[_i74]&&data2[_i74]?1:0;}}return result;}if(isNumber)//单数据-数组
9742
- {for(var _i75 in data2){result[_i75]=null;if(!isNaN(data)&&!isNaN(data2[_i75]))result[_i75]=data&&data2[_i75]?1:0;}}else//数组-单数据
9743
- {for(var _i76 in data){result[_i76]=null;if(!isNaN(data[_i76])&&!isNaN(data2))result[_i76]=data[_i76]&&data2?1:0;}}return result;};//OR ||
9744
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i75=0;_i75<count;++_i75){result[_i75]=null;//初始化
9745
+ 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)//单数据-数组
9746
+ {for(var _i76 in data2){result[_i76]=null;if(!isNaN(data)&&!isNaN(data2[_i76]))result[_i76]=data&&data2[_i76]?1:0;}}else//数组-单数据
9747
+ {for(var _i77 in data){result[_i77]=null;if(!isNaN(data[_i77])&&!isNaN(data2))result[_i77]=data[_i77]&&data2?1:0;}}return result;};//OR ||
9744
9748
  this.Or=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值 &&
9745
9749
  if(isNumber&&isNumber2)return data||data2?1:0;//都是数组 &&
9746
- var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i77=0;_i77<count;++_i77){result[_i77]=null;//初始化
9747
- if(_i77<data.length&&_i77<data2.length){if(!isNaN(data[_i77])&&!isNaN(data2[_i77]))result[_i77]=data[_i77]||data2[_i77]?1:0;}}return result;}if(isNumber)//单数据-数组
9748
- {for(var _i78 in data2){result[_i78]=null;if(!isNaN(data)&&!isNaN(data2[_i78]))result[_i78]=data||data2[_i78]?1:0;}}else//数组-单数据
9749
- {for(var _i79 in data){result[_i79]=null;if(!isNaN(data[_i79])&&!isNaN(data2))result[_i79]=data[_i79]||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);//单数值
9750
+ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i78=0;_i78<count;++_i78){result[_i78]=null;//初始化
9751
+ 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)//单数据-数组
9752
+ {for(var _i79 in data2){result[_i79]=null;if(!isNaN(data)&&!isNaN(data2[_i79]))result[_i79]=data||data2[_i79]?1:0;}}else//数组-单数据
9753
+ {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);//单数值
9750
9754
  if(isNumber){if(isNumber2&&isNumber3)return data?trueData:falseData;return data?trueData:falseData;}//都是数组
9751
- var result=[];for(var _i80 in data){if(data[_i80]){if(isNumber2)result[_i80]=trueData;else if(isArray2)result[_i80]=trueData[_i80];else result[_i80]=null;}else{if(isNumber3)result[_i80]=falseData;else if(isArray3)result[_i80]=falseData[_i80];else result[_i80]=null;}}return result;};/*
9755
+ 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;};/*
9752
9756
  根据条件求不同的值,同IF判断相反.
9753
9757
  用法: IFN(X,A,B)若X不为0则返回B,否则返回A
9754
9758
  例如: IFN(CLOSE>OPEN,HIGH,LOW)表示该周期收阴则返回最高值,否则返回最低值
@@ -9759,35 +9763,35 @@ var result=[];for(var _i80 in data){if(data[_i80]){if(isNumber2)result[_i80]=tru
9759
9763
  //例如: REF(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
9760
9764
  this.REF=function(data,n){var result=[];if(typeof n=='number'){if(IFrameSplitOperator.IsNumber(data))//单数值
9761
9765
  {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);//平滑处理
9762
- var firstData=data[0];for(var _i81=0;_i81<n;++_i81){result.unshift(firstData);}}}else//n 为数组的情况
9763
- {for(var _i82=0;_i82<data.length;++_i82){result[_i82]=null;if(_i82>=n.length)continue;var value=n[_i82];if(value>=0&&value<=_i82)result[_i82]=data[_i82-value];else if(_i82)result[_i82]=result[_i82-1];else result[_i82]=data[_i82];}}return result;};//引用若干周期前的数据(未作平滑处理).
9766
+ var firstData=data[0];for(var _i82=0;_i82<n;++_i82){result.unshift(firstData);}}}else//n 为数组的情况
9767
+ {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;};//引用若干周期前的数据(未作平滑处理).
9764
9768
  //用法: REFV(X,A),引用A周期前的X值.A可以是变量.
9765
9769
  //平滑处理:当引用不到数据时进行的操作.
9766
9770
  //例如: REFV(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
9767
- 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 _i83=0;_i83<n;++_i83){//不作平滑处理
9771
+ 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){//不作平滑处理
9768
9772
  result.unshift(null);}}else//n 为数组的情况
9769
- {for(var _i84=0;_i84<data.length;++_i84){result[_i84]=null;if(_i84>=n.length)continue;var value=n[_i84];if(value>=0&&value<=_i84)result[_i84]=data[_i84-value];}}return result;};//属于未来函数,引用若干周期后的数据(平滑处理).
9773
+ {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;};//属于未来函数,引用若干周期后的数据(平滑处理).
9770
9774
  //用法: REFX(X,A),引用A周期后的X值.A可以是变量.
9771
9775
  //平滑处理:当引用不到数据时进行的操作.此函数中,平滑时使用上一个周期的引用值.
9772
9776
  //例如: TT:=IF(C>O,1,2);
9773
9777
  // REFX(CLOSE,TT);表示阳线引用下一周期的收盘价,阴线引用日后第二周期的收盘价.
9774
9778
  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];//取最后一个数据
9775
9779
  return result;}result=data.slice(n,data.length);//平滑处理
9776
- var lastData=data[data.length-1];for(var _i85=0;_i85<n;++_i85){result.push(lastData);}}else//n 为数组的情况
9777
- {var dataCount=data.length;for(var _i86=0;_i86<data.length;++_i86){result[_i86]=null;if(_i86>=n.length)continue;var value=n[_i86];if(value>=0&&value+_i86<dataCount)result[_i86]=data[_i86+value];else if(_i86)result[_i86]=result[_i86-1];else result[_i86]=data[_i86];}}return result;};//属于未来函数,引用若干周期后的数据(未作平滑处理).
9780
+ var lastData=data[data.length-1];for(var _i86=0;_i86<n;++_i86){result.push(lastData);}}else//n 为数组的情况
9781
+ {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;};//属于未来函数,引用若干周期后的数据(未作平滑处理).
9778
9782
  //用法:REFXV(X,A),引用A周期后的X值.A可以是变量.
9779
9783
  //平滑处理:当引用不到数据时进行的操作.
9780
9784
  //例如: REFXV(CLOSE,1)表示下一周期的收盘价,在日线上就是明天收盘价
9781
9785
  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);//平滑处理
9782
- for(var _i87=0;_i87<n;++_i87){result.push(null);}}else//n 为数组的情况
9783
- {var dataCount=data.length;for(var _i88=0;_i88<data.length;++_i88){result[_i88]=null;if(_i88>=n.length)continue;var value=n[_i88];if(value>=0&&value+_i88<dataCount)result[_i88]=data[_i88+value];}}return result;};//求最大值.
9786
+ for(var _i88=0;_i88<n;++_i88){result.push(null);}}else//n 为数组的情况
9787
+ {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;};//求最大值.
9784
9788
  //用法:MAX(A,B,C,D ..... ) 返回A,B,C,D ..... 中的较大值
9785
9789
  //例如: MAX(CLOSE-OPEN,0)表示若收盘价大于开盘价返回它们的差值,否则返回0
9786
9790
  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;};//求最小值.
9787
9791
  //用法:MIN(A,B, C, D .....)返回A,B, C ,D ......中的较小值
9788
9792
  //例如:MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值
9789
9793
  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;};//取正数
9790
- this.ABS=function(data){var result=[];for(var _i89 in data){result[_i89]=null;if(!isNaN(data[_i89]))result[_i89]=Math.abs(data[_i89]);}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);//复制一份数据出来
9794
+ 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);//复制一份数据出来
9791
9795
  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;//空数据就取上一个数据
9792
9796
  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)
9793
9797
  //N 支持周期数组
@@ -9911,14 +9915,14 @@ this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n
9911
9915
  求总的周期数。
9912
9916
  用法: BARSCOUNT(X) 第一个有效数据到当前的天数。
9913
9917
  例如: BARSCOUNT(CLOSE) 对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数。
9914
- */this.BARSCOUNT=function(data){var result=[];var days=null;for(var _i90 in data){result[_i90]=0;if(days==null){if(!this.IsNumber(data[_i90]))continue;days=0;}result[_i90]=days;++days;}return result;};//DEVSQ 数据偏差平方和
9918
+ */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 数据偏差平方和
9915
9919
  //DEVSQ(X,N)  返回数据偏差平方和。
9916
9920
  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))//取最后一个有效数
9917
9921
  {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 取反
9918
9922
  //求逻辑非。
9919
9923
  //用法: NOT(X) 返回非X,即当X=0时返回1,否则返回0。
9920
9924
  //例如: NOT(ISUP) 表示平盘或收阴。
9921
- this.NOT=function(data){var isNumber=typeof data=='number';if(isNumber)return data?0:1;var result=[];for(var _i91 in data){result[_i91]=null;if(this.IsNumber(data[_i91]))result[_i91]=data[_i91]?0:1;}return result;};//FORCAST 线性回归预测值
9925
+ 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 线性回归预测值
9922
9926
  //FORCAST(X,N)  返回线性回归预测值。
9923
9927
  this.FORCAST=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
9924
9928
  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个周期内的时间序列三角移动平均
@@ -9935,9 +9939,9 @@ this.TSMA=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//
9935
9939
  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 线性回归斜率
9936
9940
  //SLOPE(X,N)  返回线性回归斜率。
9937
9941
  this.SLOPE=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
9938
- if(n<1||!data.length)return result;if(n>=data.length)return result;var start=0;for(var _i92=0;_i92<data.length;++_i92,++start){result[_i92]=null;if(this.IsNumber(data[_i92]))break;}var x=void 0,y=void 0,xy=void 0,xx=void 0;for(var _i93=start+n-1;_i93<data.length;++_i93){result[_i93]=null;x=y=xy=xx=0;for(var j=0;j<n&&j<=_i93;++j){x+=_i93-j;//数据索引相加
9939
- y+=data[_i93-j];//数据相加
9940
- }x=x/n;y=y/n;for(j=0;j<n&&j<=_i93;++j){xy+=(_i93-j-x)*(data[_i93-j]-y);xx+=(_i93-j-x)*(_i93-j-x);}if(xx)result[_i93]=xy/xx;else if(_i93)result[_i93]=result[_i93-1];}return result;};//STDP 总体标准差
9942
+ 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;//数据索引相加
9943
+ y+=data[_i94-j];//数据相加
9944
+ }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 总体标准差
9941
9945
  //STDP(X,N)  返回总体标准差。
9942
9946
  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 估算样本方差
9943
9947
  //VAR(X,N)  返回估算样本方差。
@@ -9945,13 +9949,13 @@ this.VAR=function(data,n){if(this.IsNumber(data)&&this.IsNumber(n))return 0;var
9945
9949
  //VARP(X,N)  返回总体样本方差 。
9946
9950
  this.VARP=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
9947
9951
  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;
9948
- 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 _i94=0;_i94<data.length;++_i94){result[_i94]=null;value=data[_i94];if(!this.IsNumber(value))continue;if(!isNumber2){if(_i94>=range.length)continue;rangeValue=range[_i94];}else{rangeValue=range;}if(!this.IsNumber(rangeValue))continue;if(!isNumber3){if(_i94>=range2.length)continue;rangeValue2=range2[_i94];}else{rangeValue2=range2;}if(!this.IsNumber(rangeValue2))continue;result[_i94]=value>Math.min(rangeValue,rangeValue2)&&value<Math.max(rangeValue,rangeValue2)?1:0;}return result;};/*
9952
+ 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;};/*
9949
9953
  是否存在.
9950
9954
  例如: EXIST(CLOSE>OPEN,10)
9951
9955
  表示10日内存在着阳线
9952
9956
  */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)//初始化
9953
9957
  {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;//最新满足条件的数据索引
9954
- var result=[];var value;for(var _i95=0;_i95<data.length;++_i95){result[_i95]=null;value=data[_i95];if(this.IsNumber(value)&&value>0)latestID=_i95;if(latestID!=null&&_i95-latestID<n)result[_i95]=1;else result[_i95]=0;}return result;}};/*
9958
+ 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;}};/*
9955
9959
  过滤连续出现的信号.
9956
9960
  用法:TFILTER(买入条件,卖出条件,N);过滤掉买入(卖出)信号发出后,下一个反向信号发出前的所有买入(卖出)信号.
9957
9961
 
@@ -9972,7 +9976,7 @@ var result=[];var value;for(var _i95=0;_i95<data.length;++_i95){result[_i95]=nul
9972
9976
  用法:FILTER(X,N):X满足条件后,将其后N周期内的数据置为0,N为常量.
9973
9977
  例如:
9974
9978
  FILTER(CLOSE>OPEN,5)查找阳线,5天内再次出现的阳线不被记录在内
9975
- */this.FILTER=function(data,n){var result=[];for(var _i96=0,_j4=0;_i96<data.length;++_i96){if(data[_i96]){result[_i96]=1;for(_j4=0;_j4<n&&_j4+_i96+1<data.length;++_j4){result[_j4+_i96+1]=0;}_i96+=n;}else{result[_i96]=0;}}return result;};this.BARSLAST=function(data){var result=[];if(!data)return result;var day=null;for(var _i97=0;_i97<data.length;++_i97){result[_i97]=null;if(data[_i97]>0)day=0;else if(day!=null)++day;if(day!=null)result[_i97]=day;}return result;};/*
9979
+ */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;};/*
9976
9980
  N周期内第一个条件成立到当前的周期数.
9977
9981
  用法:
9978
9982
  BARSSINCEN(X,N):N周期内第一次X不为0到现在的天数,N为常量
@@ -9984,7 +9988,7 @@ var result=[];var value;for(var _i95=0;_i95<data.length;++_i95){result[_i95]=nul
9984
9988
  BARSSINCE(X):第一次X不为0到现在的天数
9985
9989
  例如:
9986
9990
  BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数
9987
- */this.BARSSINCE=function(data){var result=[];var day=null;for(var _i98=0;_i98<data.length;++_i98){result[_i98]=null;if(day==null){if(data[_i98])day=0;}else{++day;}if(day)result[_i98]=day;}return result;};/*三角函数调用 func 三角函数
9991
+ */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 三角函数
9988
9992
  反正切值. 用法: ATAN(X)返回X的反正切值
9989
9993
  余弦值. 用法: COS(X)返回X的余弦值
9990
9994
  正弦值. 用法: SIN(X)返回X的正弦值
@@ -9994,9 +9998,9 @@ var result=[];var value;for(var _i95=0;_i95<data.length;++_i95){result[_i95]=nul
9994
9998
  求10为底的对数. 用法: LOG(X)取得X的对数 例如: LOG(100)等于2
9995
9999
  指数. 用法: EXP(X)为e的X次幂 例如: EXP(CLOSE)返回e的CLOSE次幂
9996
10000
  开平方. 用法: SQRT(X)为X的平方根 例如: SQRT(CLOSE)收盘价的平方根
9997
- */this.Trigonometric=function(data,func){if(!Array.isArray(data)){if(this.IsNumber(data))return func(data);return null;}else{var result=[];for(var _i99 in data){var item=data[_i99];if(this.IsNumber(item))result[_i99]=func(item);else result[_i99]=null;}return result;}};//反正弦值. 用法: ASIN(X)返回X的反正弦值
9998
- this.ASIN=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i100 in data){var item=data[_i100];result[_i100]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i100]=Math.asin(item);}else if(_i100-1>=0){var preItem=result[_i100-1];if(this.IsNumber(preItem))result[_i100]=preItem;}}}return result;}};//反余弦值. 用法: ACOS(X)返回X的反余弦值
9999
- this.ACOS=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.acos(item);}else if(_i101-1>=0){var preItem=result[_i101-1];if(this.IsNumber(preItem))result[_i101]=preItem;}}}return result;}};/*
10001
+ */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的反正弦值
10002
+ 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的反余弦值
10003
+ 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;}};/*
10000
10004
  LAST(X,A,B):持续存在.
10001
10005
  用法:
10002
10006
  LAST(CLOSE>OPEN,10,5)
@@ -10199,42 +10203,42 @@ for(var i=startDay,j=0;i<kData.length;++i){var start=i-startDay;if(start<0)conti
10199
10203
  */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});//流通股本
10200
10204
  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;};//计算截至到某一天的历史所有筹码
10201
10205
  this.CalculateChip=function(index,exchangeData,hisData,dRate){var result={Min:null,Max:null,Data:[]};var seed=1;//筹码历史衰减换手系数
10202
- var max=null,min=null;for(var _i102=index;_i102>=0;--_i102){var _item15={};//Vol:量 High:最高 Low:最低
10203
- var kData=hisData[_i102];if(_i102==index)_item15.Vol=kData.Vol*exchangeData[_i102];else _item15.Vol=kData.Vol*seed;_item15.Date=kData.Date;_item15.High=kData.High;_item15.Low=kData.Low;if(max==null)max=_item15.High;else if(max<_item15.High)max=_item15.High;if(min==null)min=_item15.Low;else if(min<_item15.Low)min=_item15.Low;result.Data[_i102]=_item15;seed*=1-exchangeData[_i102]/100*dRate;//换手率累乘
10206
+ var max=null,min=null;for(var _i103=index;_i103>=0;--_i103){var _item15={};//Vol:量 High:最高 Low:最低
10207
+ var kData=hisData[_i103];if(_i103==index)_item15.Vol=kData.Vol*exchangeData[_i103];else _item15.Vol=kData.Vol*seed;_item15.Date=kData.Date;_item15.High=kData.High;_item15.Low=kData.Low;if(max==null)max=_item15.High;else if(max<_item15.High)max=_item15.High;if(min==null)min=_item15.Low;else if(min<_item15.Low)min=_item15.Low;result.Data[_i103]=_item15;seed*=1-exchangeData[_i103]/100*dRate;//换手率累乘
10204
10208
  }result.Max=max;result.Min=min;return result;};/*
10205
10209
  返回是否连涨周期数.
10206
10210
  用法:
10207
10211
  UPNDAY(CLOSE,M)
10208
10212
  表示连涨M个周期,M为常量
10209
- */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 _i103=0;_i103<data.length;++_i103){result[_i103]=0;if(_i103-1<0)continue;if(!this.IsNumber(data[_i103])||!this.IsNumber(data[_i103-1]))//无效数都不算连涨
10210
- {days=0;continue;}if(data[_i103]>data[_i103-1])++days;else days=0;if(days==n){result[_i103]=1;--days;}}return result;};/*
10213
+ */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]))//无效数都不算连涨
10214
+ {days=0;continue;}if(data[_i104]>data[_i104-1])++days;else days=0;if(days==n){result[_i104]=1;--days;}}return result;};/*
10211
10215
  返回是否连跌周期.
10212
10216
  用法:
10213
10217
  DOWNNDAY(CLOSE,M)
10214
10218
  表示连跌M个周期,M为常量
10215
- */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 _i104=0;_i104<data.length;++_i104){result[_i104]=0;if(_i104-1<0)continue;if(!this.IsNumber(data[_i104])||!this.IsNumber(data[_i104-1]))//无效数都不算连涨
10216
- {days=0;continue;}if(data[_i104]<data[_i104-1])++days;else days=0;if(days==n){result[_i104]=1;--days;}}return result;};/*
10219
+ */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]))//无效数都不算连涨
10220
+ {days=0;continue;}if(data[_i105]<data[_i105-1])++days;else days=0;if(days==n){result[_i105]=1;--days;}}return result;};/*
10217
10221
  返回是否持续存在X>Y
10218
10222
  用法:
10219
10223
  NDAY(CLOSE,OPEN,3)
10220
10224
  表示连续3日收阳线
10221
- */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 _i105=0;_i105<count;++_i105){result[_i105]=0;if(_i105>=data.length||_i105>=data2.length)continue;if(!this.IsNumber(data[_i105])||!this.IsNumber(data2[_i105])){days=0;continue;}if(data[_i105]>data2[_i105])++days;else days=0;if(days==n){result[_i105]=1;--days;}}}else if(Array.isArray(data)&&!Array.isArray(data2)){if(n>=data.length||!this.IsNumber(data2))return;var days=0;for(var _i106 in data){result[_i106]=0;if(!this.IsNumber(data[_i106])){days=0;continue;}if(data[_i106]>data2)++days;else days=0;if(days==n){result[_i106]=1;--days;}}}else if(!Array.isArray(data)&&Array.isArray(data2)){if(n>=data2.length||!this.IsNumber(data))return;var days=0;for(var _i107 in data2){result[_i107]=0;if(!this.IsNumber(data2[_i107])){days=0;continue;}if(data>data2[_i107])++days;else days=0;if(days==n){result[_i107]=1;--days;}}}return result;};/*
10225
+ */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;};/*
10222
10226
  两条线维持一定周期后交叉.
10223
10227
  用法:LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0
10224
- */this.LONGCROSS=function(data,data2,n){var result=[];var count=Math.max(data.length,data2.length);for(var _i108=0;_i108<count;++_i108){result[_i108]=0;if(_i108-1<0)continue;if(_i108>=data.length||_i108>=data2.length)continue;if(!this.IsNumber(data[_i108])||!this.IsNumber(data2[_i108])||!this.IsNumber(data[_i108-1])||!this.IsNumber(data2[_i108-1]))continue;if(data[_i108]>data2[_i108]&&data[_i108-1]<data2[_i108-1])result[_i108]=1;}for(var _i109=0,_j5=0;_i109<count;++_i109){if(!result[_i109])continue;for(_j5=1;_j5<=n&&_i109-_j5>=0;++_j5){if(data[_i109-_j5]>=data2[_i109-_j5]){result[_i109]=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;}};/*
10228
+ */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;}};/*
10225
10229
  EXISTR(X,A,B):是否存在(前几日到前几日间).
10226
10230
  例如: EXISTR(CLOSE>OPEN,10,5)
10227
10231
  表示从前10日内到前5日内存在着阳线
10228
10232
  若A为0,表示从第一天开始,B为0,表示到最后日止
10229
- */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 _i110=0,_j6=0;_i110<data.length;++_i110){result[_i110]=null;if(_i110-n<0||_i110-n2<0)continue;result[_i110]=0;for(_j6=n;_j6>=n2;--_j6){var value=data[_i110-_j6];if(this.IsNumber(value)&&value){result[_i110]=1;break;}}}return result;};/*
10233
+ */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;};/*
10230
10234
  RELATE(X,Y,N) 返回X和Y的N周期的相关系数
10231
10235
  RELATE(X,Y,N)=(∑[(Xi-Avg(X))(Yi-Avg(y))])/N ÷ √((∑(Xi-Avg(X))^2)/N * (∑(Yi-Avg(Y))^2)/N)
10232
10236
  其中 avg(x)表示x的N周期均值: avg(X) = (∑Xi)/N
10233
10237
  √(...)表示开平方
10234
- */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 _i111=0,_j7=0;_i111<count;++_i111){result[_i111]=null;if(_i111>=data.length||_i111>=data2.length||_i111>=dataAverage.length||_i111>=data2Average.length)continue;var average=dataAverage[_i111];var average2=data2Average[_i111];var total=0,total2=0,total3=0;for(_j7=_i111-n+1;_j7<=_i111;++_j7){total+=(data[_j7]-average)*(data2[_j7]-average2);//∑[(Xi-Avg(X))(Yi-Avg(y))])
10238
+ */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))])
10235
10239
  total2+=Math.pow(data[_j7]-average,2);//∑(Xi-Avg(X))^2
10236
10240
  total3+=Math.pow(data2[_j7]-average2,2);//∑(Yi-Avg(Y))^2)
10237
- }result[_i111]=total/n/(Math.sqrt(total2/n)*Math.sqrt(total3/n));}return result;};//计算数组n周期内的均值
10241
+ }result[_i112]=total/n/(Math.sqrt(total2/n)*Math.sqrt(total3/n));}return result;};//计算数组n周期内的均值
10238
10242
  this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var total=0;for(var i=0;i<data.length;++i)//去掉开始的无效数
10239
10243
  {if(this.IsNumber(data[i]))break;}for(;i<data.length&&i<n;++i)//计算第1个周期的数据
10240
10244
  {result[i]=null;var value=data[i];if(!this.IsNumber(value))continue;total+=value;}result[i-1]=total/n;for(;i<data.length;++i)//计算后面的周期数据
@@ -10242,7 +10246,7 @@ this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var to
10242
10246
  if(!this.IsNumber(value))value=0;if(!this.IsNumber(preValue))preValue=0;total=total-preValue+value;//当前周期的数据 等于上一个周期数据 去掉上一个周期的第1个数据 加上这个周期的最后1个数据
10243
10247
  result[i]=total/n;}return result;};/*
10244
10248
  COVAR(X,Y,N) 返回X和Y的N周期的协方差
10245
- */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 _i112=0,_j8=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;for(_j8=_i112-n+1;_j8<=_i112;++_j8){total+=(data[_j8]-average)*(data2[_j8]-average2);}result[_i112]=total/n;}return result;};/*
10249
+ */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;};/*
10246
10250
  求上一高点到当前的周期数.
10247
10251
  用法:
10248
10252
  HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计
@@ -10266,7 +10270,7 @@ for(var i=0;i<data.length;++i){result[i]=null;if(this.IsNumber(data[i])){nMin=i;
10266
10270
  公式=股票和指数协方差/指数方差
10267
10271
  */this.BETA=function(n){var result=[];var stockData=this.SymbolData.Data;var indexData=this.SymbolData.IndexData;if(n<=0)n=1;var stockProfit=[];//股票涨幅
10268
10272
  var indexProfit=[];//指数涨幅
10269
- for(var _i113=0;_i113<stockData.Data.length;++_i113){stockProfit[_i113]=0;indexProfit[_i113]=0;var stockItem=stockData.Data[_i113];var indexItem=indexData.Data[_i113];if(stockItem.Close>0&&stockItem.YClose>0)stockProfit[_i113]=(stockItem.Close-stockItem.YClose)/stockItem.YClose;if(indexItem.Close>0&&indexItem.YClose>0)indexProfit[_i113]=(indexItem.Close-indexItem.YClose)/indexItem.YClose;}//计算均值数组
10273
+ 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;}//计算均值数组
10270
10274
  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;//协方差
10271
10275
  var variance=0;//方差
10272
10276
  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;
@@ -10314,8 +10318,8 @@ this.CON2STR=function(data,n){var result=[];if(Array.isArray(data)){for(var i=da
10314
10318
  //用法: VAR2STR(C,3)表示取收盘价,以3位小数转为字符串
10315
10319
  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';//单数值
10316
10320
  if(isNumber&&isNumber2){return JSAlgorithm.MOD(data,data2);}else if(!isNumber&&!isNumber2)//都是数组相加
10317
- {var count=Math.max(data.length,data2.length);for(var _i114=0;_i114<count;++_i114){result[_i114]=null;//初始化
10318
- if(_i114<data.length&&_i114<data2.length){if(this.IsNumber(data[_i114])&&this.IsNumber(data2[_i114]))result[_i114]=JSAlgorithm.MOD(data[_i114],data2[_i114]);}}return result;}else if(isNumber&&!isNumber2)//单数字 数组
10321
+ {var count=Math.max(data.length,data2.length);for(var _i115=0;_i115<count;++_i115){result[_i115]=null;//初始化
10322
+ 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)//单数字 数组
10319
10323
  {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)//数组 单数字
10320
10324
  {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;}};/*
10321
10325
  FRACPART(A) 取得小数部分
@@ -10482,18 +10486,18 @@ var IsNumber=typeof data=="number";var IsNumber2=typeof data2=="number";if(Array
10482
10486
  用法: DRAWLINE(COND1,PRICE1,COND2,PRICE2,EXPAND)
10483
10487
  当COND1条件满足时,在PRICE1位置画直线起点,当COND2条件满足时,在PRICE2位置画直线终点,EXPAND为延长类型。
10484
10488
  例如: DRAWLINE(HIGH>=HHV(HIGH,20),HIGH,LOW<=LLV(LOW,20),LOW,1) 表示在创20天新高与创20天新低之间画直线并且向右延长。
10485
- */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 _i115=0;_i115<count;++_i115){drawData[_i115]=null;if(_i115<condition.length&&_i115<condition2.length){if(bFirstPoint==false&&bSecondPont==false){if(condition[_i115]==null||!condition[_i115])continue;bFirstPoint=true;lineCache.Start={ID:_i115,Value:data[_i115]};//第1个点
10486
- }else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[_i115]!=null&&condition2[_i115];//条件2
10487
- if(!bCondition2){if(condition[_i115])//条件1满足
10488
- lineCache.Start={ID:_i115,Value:data[_i115]};//移动第1个点
10489
- continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:_i115,Value:data2[_i115]};//第2个点
10490
- }}else if(bFirstPoint==true&&bSecondPont==true){var bCondition2=condition2[_i115]!=null&&condition2[_i115];//条件2
10489
+ */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个点
10490
+ }else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[_i116]!=null&&condition2[_i116];//条件2
10491
+ if(!bCondition2){if(condition[_i116])//条件1满足
10492
+ lineCache.Start={ID:_i116,Value:data[_i116]};//移动第1个点
10493
+ continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:_i116,Value:data2[_i116]};//第2个点
10494
+ }}else if(bFirstPoint==true&&bSecondPont==true){var bCondition2=condition2[_i116]!=null&&condition2[_i116];//条件2
10491
10495
  if(bCondition2)//条件2满足
10492
- {lineCache.End={ID:_i115,Value:data2[_i115]};//移动第2个点
10493
- }else if(condition[_i115])//条件1满足
10496
+ {lineCache.End={ID:_i116,Value:data2[_i116]};//移动第2个点
10497
+ }else if(condition[_i116])//条件1满足
10494
10498
  {var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
10495
10499
  for(var _j9 in lineData){var _item16=lineData[_j9];drawData[_item16.ID]=_item16.Value;}if(expand==1)this.CalculateDrawDataExtendLine(drawData,lineCache.Start.ID-2);//右延长线
10496
- bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:_i115,Value:data[_i115]};//第1个点
10500
+ bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:_i116,Value:data[_i116]};//第1个点
10497
10501
  }}}//最后一组线
10498
10502
  if(bFirstPoint==true&&bSecondPont==true){var _lineData=this.CalculateDrawLine(lineCache);for(var _j10 in _lineData){var _item17=_lineData[_j10];drawData[_item17.ID]=_item17.Value;}}}if(expand==1)this.CalculateDrawDataExtendLine(drawData);//右延长线
10499
10503
  return result;};/*
@@ -10508,8 +10512,8 @@ if(color)result.Color[0]=color.toLowerCase();if(color2)result.Color[1]=color2.to
10508
10512
  {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线长度为数据长度
10509
10513
  {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).
10510
10514
  //用法:以HIGH为最高价,OPEN为开盘价,LOW为最低,CLOSE收盘画K线
10511
- 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 _i116=0;_i116<count;++_i116){var _item18={Open:null,High:null,Low:null,Close:null};if(_i116<high.length&&_i116<open.length&&_i116<low.length&&_i116<close.length){_item18.Open=open[_i116];_item18.High=high[_i116];_item18.Low=low[_i116];_item18.Close=close[_i116];}drawData[_i116]=_item18;}return result;};//满足条件画一根K线
10512
- 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 _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&&_i117<condition.length){if(condition[_i117]){_item19.Open=open[_i117];_item19.High=high[_i117];_item19.Low=low[_i117];_item19.Close=close[_i117];}}drawData[_i117]=_item19;}return result;};//叠加一个K线
10515
+ 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 _item18={Open:null,High:null,Low:null,Close:null};if(_i117<high.length&&_i117<open.length&&_i117<low.length&&_i117<close.length){_item18.Open=open[_i117];_item18.High=high[_i117];_item18.Low=low[_i117];_item18.Close=close[_i117];}drawData[_i117]=_item18;}return result;};//满足条件画一根K线
10516
+ 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 _item19={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]){_item19.Open=open[_i118];_item19.High=high[_i118];_item19.Low=low[_i118];_item19.Close=close[_i118];}}drawData[_i118]=_item19;}return result;};//叠加一个K线
10513
10517
  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;};/*
10514
10518
  DRAWCOLORKLINE 绘制K线
10515
10519
  用法:
@@ -10533,8 +10537,8 @@ this.DRAWOVERLAYKLINE=function(open,high,low,close){var drawData=[];var result={
10533
10537
  }else if(bFirstPoint==true&&bSecondPont==false){if(!this.IsNumber(data[i]))continue;lineCache.End={ID:parseInt(i),Value:data[i]};//第2个点
10534
10538
  //根据起始点和结束点 计算中间各个点的数据
10535
10539
  var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
10536
- for(var _j11 in lineData){var _item20=lineData[_j11];drawData[_item20.ID]=_item20.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 _i118 in condition){drawData[_i118]=null;if(bFirstPoint==false&&bSecondPont==false){if(condition[_i118]==null||!condition[_i118])continue;if(_i118>=data.length||!this.IsNumber(data[_i118]))continue;bFirstPoint=true;_lineCache.Start={ID:parseInt(_i118),Value:data[_i118]};//第1个点
10537
- }else if(bFirstPoint==true&&bSecondPont==false){if(condition[_i118]==null||!condition[_i118])continue;if(_i118>=data.length||!this.IsNumber(data[_i118]))continue;_lineCache.End={ID:parseInt(_i118),Value:data[_i118]};//第2个点
10540
+ for(var _j11 in lineData){var _item20=lineData[_j11];drawData[_item20.ID]=_item20.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个点
10541
+ }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个点
10538
10542
  //根据起始点和结束点 计算中间各个点的数据
10539
10543
  var _lineData2=this.CalculateDrawLine(_lineCache);//计算2个点的线上 其他点的数值
10540
10544
  for(var _j12 in _lineData2){var _item21=_lineData2[_j12];drawData[_item21.ID]=_item21.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)
@@ -10699,8 +10703,8 @@ this.CKLINE=function(color,lineWidth,lineType,lineDotted){var drawData={Color:co
10699
10703
  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;};//多头平仓(卖出平仓).
10700
10704
  //参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
10701
10705
  //例如: SELL(CROSS(A,B),HIGH),当A上穿B时,在HIGH处画标记,同时突出提示或直接下单,如果HIGH改为DRAWNULL,就不画标记.(分时图上不支持)
10702
- 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 _i119=lineCache.Start.ID;_i119<=lineCache.End.ID;++_i119){lineCache.List.push(_i119);}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个点
10703
- if(lineCache.Start.Value>lineCache.End.Value){for(var _i120=1;_i120<lineCache.List.length-1;++_i120){var value=height*(lineCache.List.length-1-_i120)/width+lineCache.End.Value;result.push({ID:lineCache.List[_i120],Value:value});}}else{for(var _i121=1;_i121<lineCache.List.length-1;++_i121){var value=height*_i121/width+lineCache.Start.Value;result.push({ID:lineCache.List[_i121],Value:value});}}result.push({ID:lineCache.End.ID,Value:lineCache.End.Value});//最后一个点
10706
+ 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个点
10707
+ 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});//最后一个点
10704
10708
  return result;};//是否有是有效的数字
10705
10709
  JSDraw.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSDraw.prototype.IsDrawFunction=function(name){var setFunctionName=new _set2.default(["STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF',"DRAWCOLORKLINE",'PLOYLINE',"DRAWOVERLAYKLINE",'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS","DRAWTEXTREL",'DRAWOVERLAYLINE',"FILLRGN","FILLRGN2","FILLTOPRGN","FILLBOTTOMRGN","FILLVERTICALRGN","FLOATRGN","DRAWSL","DRAWGBK2","DRAWGBK_DIV","VERTLINE","HORLINE","TIPICON","BUY","SELL","SELLSHORT","BUYSHORT"]);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
10706
10710
  var DYNAINFO_ARGUMENT_ID={YCLOSE:3,OPEN:4,HIGH:5,LOW:6,CLOSE:7,VOL:8,AMOUNT:10,AMPLITUDE:13,//振幅
@@ -10861,12 +10865,12 @@ if(periodInfo.Period==0)hisData=dayData.Data;else hisData=dayData.GetPeriodData(
10861
10865
  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');//日线
10862
10866
  if(periodInfo.Period==0)hisData=dayData;else hisData=dayData.GetPeriodData(periodInfo.Period);//日线周期
10863
10867
  }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)//日线数据才复权
10864
- {var rightData=bindData.GetRightData(bindData.Right);bindData.Data=rightData;}hisData=bindData.GetPeriodData(periodInfo.Period);}}var data=this.Data.ConverPeriod(hisData,this.Period,periodInfo.Period);var result=new ChartData();result.Data=data;}if(IFrameSplitOperator.IsPlusNumber(n)){var refResult=new ChartData();var data=result.GetRef(n);refResult.Data=data;result=refResult;}var upperSymbol=this.Symbol.toUpperCase();switch(valueName){case'C':case"CLOSE":return result.GetClose();case'O':case"OPEN":return result.GetOpen();case'H':case"HIGH":return result.GetHigh();case'L':case"LOW":return result.GetLow();case'AMO':case"AMOUNT":return result.GetAmount();case'V':case"VOL":if(MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))return result.GetVol(100);return result.GetVol();case"VOLINSTK":return result.GetPosition();default:return null;}};this.GetCurrBarsCount=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i122=lCount-1;_i122>=0;--_i122){result.push(_i122+1);}//数据从0开始
10868
+ {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开始
10865
10869
  return result;};//BARPOS 返回从第一根K线开始到当前的周期数。
10866
10870
  //注:
10867
10871
  //1、BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
10868
10872
  //2、本机已有的第一根K线上返回值为1。
10869
- this.GetBarPos=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i123=0;_i123<lCount;++_i123){result.push(_i123+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 _i124=0;_i124<lCount;++_i124){if(_i124==lCount-1)result.push(1);else result.push(0);}return result;};//BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置.
10873
+ 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表示中间位置.
10870
10874
  //例如:BARSTATUS=2表示当天是该数据的最后一个周期.
10871
10875
  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;};//求真实波幅, (最高-最低),(最高-昨收),(最低-昨收)三者绝对值中的最大值.
10872
10876
  //用法:
@@ -10887,7 +10891,7 @@ case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
10887
10891
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
10888
10892
  fieldList.push("margin.sell");break;}//请求数据
10889
10893
  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个数据
10890
- for(var _i125 in stock.stockday){var item=stock.stockday[_i125];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;//融资融券余额
10894
+ 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;//融资融券余额
10891
10895
  aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE:if(!this.IsNumber(marginData.rate))continue;indexData.Value=marginData.rate;//融资占比
10892
10896
  aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE://买入信息-融资余额
10893
10897
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
@@ -10897,9 +10901,9 @@ var buyData=marginData.buy;if(!buyData)continue;if(!this.IsNumber(buyData.balanc
10897
10901
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME://卖出信息-卖出量
10898
10902
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
10899
10903
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
10900
- var sellData=marginData.sell;if(!sellData)continue;if(!this.IsNumber(sellData.balance)||!this.IsNumber(sellData.volume)||!this.IsNumber(sellData.repay)||!this.IsNumber(sellData.net))continue;indexData.Value=buyData.balance;var indexData2=new SingleData();indexData2.Date=item.date;indexData2.Value=buyData.volume;var indexData3=new SingleData();indexData3.Date=item.date;indexData3.Value=buyData.repay;var indexData4=new SingleData();indexData4.Date=item.date;indexData4.Value=buyData.net;aryData.push(indexData);aryData2.push(indexData2);aryData3.push(indexData3);aryData4.push(indexData4);break;default:continue;}}var allData=[];if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE){allData.push({JobID:jobID,Data:aryData});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET,Data:aryData4});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET,Data:aryData4});}for(var _i126 in allData){var aryFixedData=this.SourceData.GetFittingData(allData[_i126].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10904
+ 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;//周期
10901
10905
  if(bindData.Period>0)//周期数据
10902
- {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data2=bindData.GetValue();this.MarginData.set(allData[_i126].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)//变量 !!只支持默认的变量值
10906
+ {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)//变量 !!只支持默认的变量值
10903
10907
  {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)//下载全市场数据
10904
10908
  this.GetHKToSHSZMarketData(code,job);else this.GetHKToSHSZStockData(code,job);//下载个股数据
10905
10909
  };this.GetHKToSHSZStockData=function(symbol,job){if(this.HKToSHSZData.has(symbol))return this.Execute.RunNextJob();var upperSymbol=symbol.toLowerCase();//代码小写
@@ -10912,9 +10916,9 @@ if(bindData.Period>0)//周期数据
10912
10916
  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{//请求数据
10913
10917
  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;//单位是百万
10914
10918
  var SZValue=data.hk2sz[i]*1000000;//单位是百万
10915
- var total=SHValue+SZValue;var itemSHSZData=new SingleData();itemSHSZData.Date=date;itemSHSZData.Value=total;var itemSHData=new SingleData();itemSHData.Date=date;itemSHData.Value=SHValue;var itemSZData=new SingleData();itemSZData.Date=date;itemSZData.Value=SZValue;arySHSZData.push(itemSHSZData);arySHData.push(itemSHData);arySZData.push(itemSZData);}var allData=[{Data:arySHSZData,ID:1},{Data:arySHData,ID:2},{Data:arySZData,ID:3}];for(var _i127 in allData){var aryFixedData=this.Data.GetFittingData(allData[_i127].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
10919
+ 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;//周期
10916
10920
  if(bindData.Period>0)//周期数据
10917
- {var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data3=bindData.GetValue();this.HKToSHSZData.set(allData[_i127].ID,_data3);}};this.RecvMulitMinuteHKToSHSZData=function(data,job)//多日分时图北上资金
10921
+ {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)//多日分时图北上资金
10918
10922
  {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;//日期加时间
10919
10923
  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);}};//北上资金函数
10920
10924
  this.GetHKToSHSZCacheData=function(code,node){//if (!this.HKToSHSZData.has(code)) this.Execute.ThrowUnexpectedNode(node,`不支持HK2SHSZ(${code})`);
@@ -11040,8 +11044,8 @@ if(list[i].length>up)item.Up=list[i][up];if(list[i].length>down)item.Down=list[i
11040
11044
  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 _item22=new HistoryData();_item22.Date=list[i][date];_item22.Open=list[i][open];_item22.YClose=list[i][yclose];_item22.Close=list[i][close];_item22.High=list[i][high];_item22.Low=list[i][low];_item22.Vol=list[i][vol];//原始单位股
11041
11045
  _item22.Amount=list[i][amount];_item22.Time=list[i][time];// if (isNaN(item.Open) || item.Open<=0) continue; //停牌的数据剔除
11042
11046
  aryDayData.push(_item22);}// 无效数据处理
11043
- for(var _i128=0;_i128<aryDayData.length;++_i128){var minData=aryDayData[_i128];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(_i128==0){if(minData.YClose>0){minData.Open=minData.YClose;minData.High=minData.YClose;minData.Low=minData.YClose;minData.Close=minData.YClose;}}else// 用前一个有效数据填充
11044
- {for(var _j13=_i128-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[]
11047
+ 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// 用前一个有效数据填充
11048
+ {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[]
11045
11049
  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;//股
11046
11050
  item.Amount=jsData.amount;if(i==0)//第1个数据 写死9:25
11047
11051
  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[];
@@ -11059,23 +11063,23 @@ if(item.Open<=0)item.Open=null;if(item.Close<=0)item.Close=null;if(item.AvPrice<
11059
11063
  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;};/*
11060
11064
  SETCODE 市场类型
11061
11065
  0:深圳 1:上海,47:中金所期货 28:郑州商品 29:大连商品 30:上海商品,27:香港指数 31:香港主板,48:香港创业板...
11062
- */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 _i129 in this.Data.Data){var item=this.Data.Data[_i129];result[_i129]=item.Date-19000000;}return result;};this.YEAR=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];if(this.IsNumber(item.Date))result[_i130]=parseInt(item.Date/10000);else result[_i130]=null;}return result;};this.DAY=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%100);else result[_i131]=null;}return result;};this.MONTH=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%10000/100);else result[_i132]=null;}return result;};this.TIME=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i133=0;_i133<this.Data.Data.length;++_i133){var item=this.Data.Data[_i133];if(this.IsNumber(item.Time))result[_i133]=item.Time;else result[_i133]=0;}return result;};/*
11066
+ */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;};/*
11063
11067
  取得该周期的时分秒,适用于日线以下周期.
11064
11068
  用法: TIME2
11065
11069
  函数返回有效值范围为(000000-235959)
11066
- */this.TIME2=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*100;else result[_i134]=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
11067
- this.WEEK=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var tempDate=new Date();for(var _i135 in this.Data.Data){var item=this.Data.Data[_i135];result[_i135]=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[_i135]=tempDate.getDay();}return result;};/*
11070
+ */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
11071
+ 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;};/*
11068
11072
  取得该周期的日期离今天的天数.
11069
11073
  用法: DAYSTOTODAY
11070
- */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 _i136=0;_i136<this.Data.Data.length;++_i136){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;var beginDate=new Date(year,month-1,day);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));result[_i136]=diffDays;}return result;};/*
11074
+ */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;};/*
11071
11075
  取得该周是年内第几个周.
11072
11076
  用法:WEEKOFYEAR
11073
- */this.WEEKOFYEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i137 in this.Data.Data){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 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[_i137]=value;}return result;};this.GetYearWeek=function(endDate){var beginDate=new Date(endDate.getFullYear(),0,1);//星期从0-6,0代表星期天,6代表星期六
11077
+ */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代表星期六
11074
11078
  var endWeek=endDate.getDay();if(endWeek==0)endWeek=7;var beginWeek=beginDate.getDay();if(beginWeek==0)beginWeek=7;//计算两个日期的天数差
11075
- 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 _i138 in this.Data.Data)//查找日期对应的索引
11076
- {if(this.Data.Data[_i138].Date==findDate){index=parseInt(_i138);break;}}if(index==null||index>=data.length)return null;return data[index];};//用法:结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年
11079
+ 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)//查找日期对应的索引
11080
+ {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分钟,日/周/月,多分钟,多日,季,年
11077
11081
  this.PERIOD=function(){//Period周期 0=日线 1=周线 2=月线 3=年线 9=季线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟
11078
- 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 _i139 in this.Data.Data){result[_i139]=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;};/*
11082
+ 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;};/*
11079
11083
  飞狐函数 SYSPARAM
11080
11084
  SYSPARAM(1)画面上光标位置(K线序号)
11081
11085
  SYSPARAM(2)主图可见K线最初位置
@@ -11084,7 +11088,7 @@ var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_M
11084
11088
  SYSPARAM(5)主图可见K线最低价,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
11085
11089
  SYSPARAM(6)画面上光标数值,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
11086
11090
  */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[];};}//是否有是有效的数字
11087
- 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 _i140=1;_i140<=4;++_i140){switch(_i140){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天公布多个报告期数据 只取最新的一个公告期数据
11091
+ 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天公布多个报告期数据 只取最新的一个公告期数据
11088
11092
  {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线数据
11089
11093
  JOB_DOWNLOAD_INDEX_DATA:2,//下载大盘的K线数据
11090
11094
  JOB_DOWNLOAD_SYMBOL_LATEST_DATA:3,//最新的股票行情数据
@@ -11241,8 +11245,8 @@ this.ConstVarTable=new _map2.default([//个股数据
11241
11245
  this.UpdateUICallback=null;//回调
11242
11246
  this.CallbackParam=null;this.IsSectionMode=false;if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam){this.CallbackParam=option.CallbackParam;if(this.CallbackParam.HQChart)this.GetEventCallback=function(id){return _this45.CallbackParam.HQChart.GetEventCallback(id);};}if(option.Arguments)this.Arguments=option.Arguments;if(option.IsSectionMode)this.IsSectionMode=option.IsSectionMode;if(option.Self)this.IndexCtrl=option.Self;//调试模式信息
11243
11247
  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();//绘图变量表
11244
- JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i141 in this.Arguments)//预定义的变量
11245
- {var _item23=this.Arguments[_i141];this.VarTable.set(_item23.Name,_item23.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://量比
11248
+ JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i142 in this.Arguments)//预定义的变量
11249
+ {var _item23=this.Arguments[_i142];this.VarTable.set(_item23.Name,_item23.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://量比
11246
11250
  return this.SymbolData.GetVolRateData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_OTHER_SYMBOL_DATA://指定股票数据
11247
11251
  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://买入信息-融资余额
11248
11252
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
@@ -11273,7 +11277,7 @@ case'INDEXA':case'INDEXC':case'INDEXH':case'INDEXH':case'INDEXO':case'INDEXV':ca
11273
11277
  this.ReadVariable=function(name,node){if(this.ConstVarTable.has(name)){var data=this.ConstVarTable.get(name);if(data==null)//动态加载,用到再加载
11274
11278
  {data=this.ReadSymbolData(name,node);this.ConstVarTable.set(name,data);}return data;}if(g_JSComplierResource.IsCustomVariant(name))return this.ReadCustomVariant(name,node);//读取自定义变量
11275
11279
  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;};//单数据转成数组 个数和历史数据一致
11276
- this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var _i142=0;_i142<count;++_i142){result[_i142]=value;}return result;};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i143=0;_i143<this.AST.Body.length;++_i143){var _item24=this.AST.Body[_i143];this.RunASTNode(_item24,_i143);if(this.Interrupt&&this.Interrupt.Exit){JSConsole.Complier.Log('[JSExecute::RunAST] Interrupt',this.Interrupt);//中断退出
11280
+ 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 _item24=this.AST.Body[_i144];this.RunASTNode(_item24,_i144);if(this.Interrupt&&this.Interrupt.Exit){JSConsole.Complier.Log('[JSExecute::RunAST] Interrupt',this.Interrupt);//中断退出
11277
11281
  break;}}JSConsole.Complier.Log('[JSExecute::RunAST]',this.VarTable);return this.OutVarTable;};this.RunASTNode=function(item,lineID){this.VisitNode(item);var i=lineID;//输出变量
11278
11282
  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))//绘图函数赋值
11279
11283
  {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)//常量
@@ -11303,7 +11307,7 @@ else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","
11303
11307
  {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)//画图函数
11304
11308
  {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;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.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();//执行脚本
11305
11309
  JSConsole.Complier.Log('[JSComplier.Run] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.Run] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}}catch(error){JSConsole.Complier.Log(error);if(error.Job){JSConsole.Complier.Log('[JSComplier.Run] download job and reexectue',error.Job);this.JobList.push(error.Job);this.JobList.push({ID:JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT});this.Execute();}else if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.DebugRun_End=function(){var data=this.OutVarTable;JSConsole.Complier.Log('[JSComplier.DebugRun_End] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.DebugRun_End] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}};this.DebugRun_Next=function(debugCtrl){var _this46=this;if(debugCtrl.ExeLine<debugCtrl.LineCount){var item=this.AST.Body[debugCtrl.ExeLine];this.RunASTNode(item);++debugCtrl.ExeLine;this.DebugFilter(debugCtrl,function(){_this46.DebugRun_Next(debugCtrl);});}else{this.DebugRun_End();debugCtrl.Status=2;this.DebugFilter(debugCtrl,null);}};//debug模式
11306
- this.DebugRun=function(){var _this47=this;try{if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();var debugCtrl={LineCount:this.AST.Body.length,ExeLine:0,Self:this,Status:1};this.DebugFilter(debugCtrl,function(){_this47.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;}};this.VisitSequenceExpression=function(node){for(var _i144 in node.Expression){var _item25=node.Expression[_i144];this.VisitNode(_item25);}};//函数调用
11310
+ this.DebugRun=function(){var _this47=this;try{if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();var debugCtrl={LineCount:this.AST.Body.length,ExeLine:0,Self:this,Status:1};this.DebugFilter(debugCtrl,function(){_this47.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;}};this.VisitSequenceExpression=function(node){for(var _i145 in node.Expression){var _item25=node.Expression[_i145];this.VisitNode(_item25);}};//函数调用
11307
11311
  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个条件参数
11308
11312
  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表达式.
11309
11313
  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() ,')');
@@ -11337,30 +11341,30 @@ this.ConstVarTable=new _map2.default([//个股数据
11337
11341
  ['HYBLOCK',"所属行业"],//所属行业板块
11338
11342
  ['DYBLOCK',"所属地域"],//所属地域板块
11339
11343
  ['GNBLOCK',"所属概念"],//所属概念
11340
- ["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 _i145 in this.Arguments)//预定义的变量
11341
- {var _item26=this.Arguments[_i145];this.VarTable.set(_item26.Name,_item26.Value);}var data=this.RunAST();//执行脚本
11344
+ ["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)//预定义的变量
11345
+ {var _item26=this.Arguments[_i146];this.VarTable.set(_item26.Name,_item26.Value);}var data=this.RunAST();//执行脚本
11342
11346
  JSConsole.Complier.Log('[JSExplainer.Run] explain finish',data);if(this.UpdateUICallback)//回调发送结果, 可以支持异步
11343
- {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 _i146 in this.AST.Body){var _item27=this.AST.Body[_i146];this.VisitNode(_item27);//输出变量
11344
- if(_item27.Type==Syntax.ExpressionStatement&&_item27.Expression){if(_item27.Expression.Type==Syntax.AssignmentExpression){if(_item27.Expression.Operator==':'&&_item27.Expression.Left){var assignmentItem=_item27.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(_item27.Expression.Operator==':='&&_item27.Expression.Left){var _assignmentItem=_item27.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(_item27.Expression.Type==Syntax.CallExpression){var callItem=_item27.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+'_'+_i146+'__';this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar20,Type:0,NoneName:true});}}else if(_item27.Expression.Type==Syntax.Identifier){var _varName6=_item27.Expression.Name;var _outVar21=this.ReadVariable(_varName6,_item27.Expression);_varName6="__temp_i_"+_i146+"__";this.OutVarTable.push({Name:_varName6,Data:'\u8F93\u51FA: '+_outVar21,Type:0,NoneName:true});}else if(_item27.Expression.Type==Syntax.Literal)//常量
11345
- {var _outVar22=_item27.Expression.Value;if(IFrameSplitOperator.IsString(_outVar22)&&_outVar22.indexOf("$")>0)_outVar22=this.GetOtherSymbolExplain({Literal:_outVar22},_item27);varName="__temp_li_"+_i146+"__";var type=0;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar22,Type:0,NoneName:true});}else if(_item27.Expression.Type==Syntax.BinaryExpression)// CLOSE+OPEN;
11346
- {var varName="__temp_b_"+_i146+"__";var _outVar23=_item27.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar23,Type:0,NoneName:true});}else if(_item27.Expression.Type==Syntax.LogicalExpression)//逻辑语句 如 T1 AND T2
11347
- {var varName="__temp_l_"+_i146+"__";var _outVar24=_item27.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar24,Type:0,NoneName:true});}else if(_item27.Expression.Type==Syntax.SequenceExpression){var _varName7=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;//叠加线
11347
+ {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 _item27=this.AST.Body[_i147];this.VisitNode(_item27);//输出变量
11348
+ if(_item27.Type==Syntax.ExpressionStatement&&_item27.Expression){if(_item27.Expression.Type==Syntax.AssignmentExpression){if(_item27.Expression.Operator==':'&&_item27.Expression.Left){var assignmentItem=_item27.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(_item27.Expression.Operator==':='&&_item27.Expression.Left){var _assignmentItem=_item27.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(_item27.Expression.Type==Syntax.CallExpression){var callItem=_item27.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(_item27.Expression.Type==Syntax.Identifier){var _varName6=_item27.Expression.Name;var _outVar21=this.ReadVariable(_varName6,_item27.Expression);_varName6="__temp_i_"+_i147+"__";this.OutVarTable.push({Name:_varName6,Data:'\u8F93\u51FA: '+_outVar21,Type:0,NoneName:true});}else if(_item27.Expression.Type==Syntax.Literal)//常量
11349
+ {var _outVar22=_item27.Expression.Value;if(IFrameSplitOperator.IsString(_outVar22)&&_outVar22.indexOf("$")>0)_outVar22=this.GetOtherSymbolExplain({Literal:_outVar22},_item27);varName="__temp_li_"+_i147+"__";var type=0;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar22,Type:0,NoneName:true});}else if(_item27.Expression.Type==Syntax.BinaryExpression)// CLOSE+OPEN;
11350
+ {var varName="__temp_b_"+_i147+"__";var _outVar23=_item27.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar23,Type:0,NoneName:true});}else if(_item27.Expression.Type==Syntax.LogicalExpression)//逻辑语句 如 T1 AND T2
11351
+ {var varName="__temp_l_"+_i147+"__";var _outVar24=_item27.Expression.Out;this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar24,Type:0,NoneName:true});}else if(_item27.Expression.Type==Syntax.SequenceExpression){var _varName7=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;//叠加线
11348
11352
  var isNoneName=false;var fontSize=-1;var drawAlign=-1,drawVAlign=-1;//显示在位置之上,对于DRAWTEXT和DRAWNUMBER等函数有用,放在语句的最后面(不能与LINETHICK等函数共用),比如:
11349
11353
  //DRAWNUMBER(CLOSE>OPEN,HIGH,CLOSE),DRAWABOVE;
11350
11354
  var isDrawAbove=false;for(var _j15 in _item27.Expression.Expression){var itemExpression=_item27.Expression.Expression[_j15];if(itemExpression.Type==Syntax.AssignmentExpression&&itemExpression.Operator==':'&&itemExpression.Left){_varName7=itemExpression.Left.Name;var varValue=this.VarTable.get(_varName7);this.VarTable.set(_varName7,varValue);//把常量放到变量表里
11351
11355
  }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;//扩展数据, 不显示再图形里面
11352
- else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{_varName7=itemExpression.Name;var _varValue3=this.ReadVariable(_varName7,itemExpression);_varName7="__temp_si_"+_i146+"__";isNoneName=true;this.VarTable.set(_varName7,_varValue3);//放到变量表里
11356
+ else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf("FONTSIZE")==0){var strFontSize=value.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{_varName7=itemExpression.Name;var _varValue3=this.ReadVariable(_varName7,itemExpression);_varName7="__temp_si_"+_i147+"__";isNoneName=true;this.VarTable.set(_varName7,_varValue3);//放到变量表里
11353
11357
  }}else if(itemExpression.Type==Syntax.Literal)//常量
11354
11358
  {var aryValue=itemExpression.Value;_varName7=itemExpression.Value.toString();isNoneName=true;this.VarTable.set(_varName7,aryValue);//把常量放到变量表里
11355
- }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;_varName7='__temp_sc_'+itemExpression.Callee.Name+'_'+_i146+'__';isNoneName=true;this.VarTable.set(_varName7,_varValue4);}}}else if(itemExpression.Type==Syntax.BinaryExpression){_varName7="__temp_sb_"+_i146+"__";var _aryValue2=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName7,_aryValue2);}}var outValue;if(draw)outValue='\u8F93\u51FA: '+draw;else if(isNoneName)outValue='\u8F93\u51FA: '+this.VarTable.get(_varName7);else outValue='\u8F93\u51FA'+_varName7+': '+this.VarTable.get(_varName7);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&&_varName7)//圆点
11359
+ }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;_varName7='__temp_sc_'+itemExpression.Callee.Name+'_'+_i147+'__';isNoneName=true;this.VarTable.set(_varName7,_varValue4);}}}else if(itemExpression.Type==Syntax.BinaryExpression){_varName7="__temp_sb_"+_i147+"__";var _aryValue2=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName7,_aryValue2);}}var outValue;if(draw)outValue='\u8F93\u51FA: '+draw;else if(isNoneName)outValue='\u8F93\u51FA: '+this.VarTable.get(_varName7);else outValue='\u8F93\u51FA'+_varName7+': '+this.VarTable.get(_varName7);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&&_varName7)//圆点
11356
11360
  {outValue+=",画小圆点线";var _value15={Name:_varName7,Draw:outValue,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};this.OutVarTable.push(_value15);}else if(circleDot&&_varName7)//圆点
11357
11361
  {outValue+=",画小圆圈线";var _value16={Name:_varName7,Draw:outValue,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};this.OutVarTable.push(_value16);}else if(lineStick&&_varName7)//LINESTICK 同时画出柱状线和指标线
11358
11362
  {outValue+=",画出柱状线和指标线";var _value17={Name:_varName7,Draw:outValue,Type:4};this.OutVarTable.push(_value17);}else if(stick&&_varName7)//STICK 画柱状线
11359
11363
  {outValue+=",画柱状线";var _value18={Name:_varName7,Draw:outValue,Type:5};this.OutVarTable.push(_value18);}else if(volStick&&_varName7)//VOLSTICK 画彩色柱状线
11360
11364
  {outValue+=",画成交量柱状线";var _value19={Name:_varName7,Draw:outValue,Type:6};this.OutVarTable.push(_value19);}else if(_varName7&&color){var _value20={Name:_varName7,Data:outValue,Color:color,Type:0};this.OutVarTable.push(_value20);}else if(draw)//画图函数
11361
11365
  {var outVar={Name:_drawName,Draw:outValue,Type:1};this.OutVarTable.push(outVar);}else if(colorStick&&_varName7)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
11362
- {outValue+=",画彩色柱状线";var _value21={Name:_varName7,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value21);}else if(_varName7){var _value22={Name:_varName7,Data:outValue,Type:0};this.OutVarTable.push(_value22);}}}}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;}};this.VisitSequenceExpression=function(node){for(var _i147 in node.Expression){var _item28=node.Expression[_i147];this.VisitNode(_item28);}};//函数调用
11363
- this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i148 in node.Arguments){var _item29=node.Arguments[_i148];var value=void 0;if(_item29.Type==Syntax.BinaryExpression||_item29.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(_item29);else if(_item29.Type==Syntax.CallExpression)value=this.VisitCallExpression(_item29);else value=this.GetNodeValue(_item29);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';}}],//字符串函数
11366
+ {outValue+=",画彩色柱状线";var _value21={Name:_varName7,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value21);}else if(_varName7){var _value22={Name:_varName7,Data:outValue,Type:0};this.OutVarTable.push(_value22);}}}}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;}};this.VisitSequenceExpression=function(node){for(var _i148 in node.Expression){var _item28=node.Expression[_i148];this.VisitNode(_item28);}};//函数调用
11367
+ this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i149 in node.Arguments){var _item29=node.Arguments[_i149];var value=void 0;if(_item29.Type==Syntax.BinaryExpression||_item29.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(_item29);else if(_item29.Type==Syntax.CallExpression)value=this.VisitCallExpression(_item29);else value=this.GetNodeValue(_item29);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';}}],//字符串函数
11364
11368
  ["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];}}],["NAMEINCLUD",{Name:"NAMEINCLUD",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';}}],["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)//动态参数
11365
11369
  {}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);//绘图函数
11366
11370
  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];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 自定义色
@@ -11534,7 +11538,7 @@ chart.KLineColor=varItem.Draw.DrawData.KLine;if(varItem.Color)chart.Color=varIte
11534
11538
  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线
11535
11539
  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)//绑定指示指标
11536
11540
  {if(this.OutVar==null||this.OutVar.length<0)return;//参数
11537
- var indexParam='';for(var _i149 in this.Arguments){var _item30=this.Arguments[_i149];if(indexParam.length>0)indexParam+=',';indexParam+=_item30.Value.toString();}if(indexParam.length>0)indexParam='('+indexParam+')';if(this.InstructionType==2)//五彩K线
11541
+ var indexParam='';for(var _i150 in this.Arguments){var _item30=this.Arguments[_i150];if(indexParam.length>0)indexParam+=',';indexParam+=_item30.Value.toString();}if(indexParam.length>0)indexParam='('+indexParam+')';if(this.InstructionType==2)//五彩K线
11538
11542
  {var varItem=this.OutVar[this.OutVar.length-1];//取最后一组数据作为指示数据
11539
11543
  hqChart.SetInstructionData(this.InstructionType,{Data:varItem.Data,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
11540
11544
  return true;}else if(this.InstructionType==1)//交易系统
@@ -11551,12 +11555,12 @@ if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.Y
11551
11555
  var testData={ Name:'MULTI_LINE', Type:1,Draw:{ DrawType:'MULTI_LINE', DrawData:[point1,point2] } };
11552
11556
  this.OutVar.push(testData);
11553
11557
  }
11554
- */for(var _i150 in this.OutVar){var _item32=this.OutVar[_i150];if(_item32.IsExData===true)continue;//扩展数据不显示图形
11558
+ */for(var _i151 in this.OutVar){var _item32=this.OutVar[_i151];if(_item32.IsExData===true)continue;//扩展数据不显示图形
11555
11559
  if(_item32.Type==1000||_item32.Type==1001)continue;//数据集合, 字符串
11556
- if(_item32.Type==0){if(_item32.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item32,_i150,_item32.Type);else this.CreateLine(hqChart,windowIndex,_item32,_i150,_item32.Type);}else if(_item32.Type==1){switch(_item32.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item32,_i150);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item32,_i150);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item32,_i150);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item32,_i150);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item32,_i150);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item32,_i150);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item32,_i150);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item32,_i150);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item32,_i150);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item32,_i150);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item32,_i150);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item32,_i150);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item32,_i150);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item32,_i150);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item32,_i150);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item32,_i150);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item32,_i150);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item32,_i150);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item32,_i150);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item32,_i150);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item32,_i150);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item32,_i150);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item32,_i150);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item32,_i150);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item32,_i150);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item32,_i150);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item32,_i150);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item32,_i150);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item32,_i150);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item32,_i150);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item32,_i150);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item32,_i150);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item32,_i150);break;default:{var find=g_ScriptIndexChartFactory.Get(_item32.Draw.DrawType);//外部挂接
11557
- if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item32,_i150,this);}break;}}else if(_item32.Type==2){this.CreateMACD(hqChart,windowIndex,_item32,_i150);}else if(_item32.Type==3){this.CreatePointDot(hqChart,windowIndex,_item32,_i150,hisData);}else if(_item32.Type==4){this.CreateLineStick(hqChart,windowIndex,_item32,_i150);}else if(_item32.Type==5){this.CreateStick(hqChart,windowIndex,_item32,_i150);}else if(_item32.Type==6){this.CreateVolStick(hqChart,windowIndex,_item32,_i150,hisData);}else if(_item32.Type==7){this.CreateLine(hqChart,windowIndex,_item32,_i150,_item32.Type);}else if(_item32.Type==8){this.CreateLine(hqChart,windowIndex,_item32,_i150,_item32.Type);}else if(_item32.Type==9){this.CreateArea(hqChart,windowIndex,_item32,_i150);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i150<titlePaint.Data.length)//设置标题数值 小数位数和格式
11558
- {if(this.StringFormat>0)titlePaint.Data[_i150].StringFormat=this.StringFormat;if(this.FloatPrecision>=0)titlePaint.Data[_i150].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
11559
- hqChart.TitlePaint[titleIndex].ArgumentsText=null;hqChart.TitlePaint[titleIndex].Script=this;if(!this.IsShortTitle){var indexParam='';for(var _i151=0;_i151<this.Arguments.length;++_i151){var _item33=this.Arguments[_i151];if(indexParam.length>0)indexParam+=',';indexParam+=_item33.Value.toString();}if(indexParam.length>0)hqChart.TitlePaint[titleIndex].ArgumentsText='('+indexParam+')';}if(this.TitleFont)hqChart.TitlePaint[titleIndex].Font=this.TitleFont;return true;};//给一个默认的颜色
11560
+ if(_item32.Type==0){if(_item32.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item32,_i151,_item32.Type);else this.CreateLine(hqChart,windowIndex,_item32,_i151,_item32.Type);}else if(_item32.Type==1){switch(_item32.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item32,_i151);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item32,_i151);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item32,_i151);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item32,_i151);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item32,_i151);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item32,_i151);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item32,_i151);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item32,_i151);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item32,_i151);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item32,_i151);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item32,_i151);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item32,_i151);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item32,_i151);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item32,_i151);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item32,_i151);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item32,_i151);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item32,_i151);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item32,_i151);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item32,_i151);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item32,_i151);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item32,_i151);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item32,_i151);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item32,_i151);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item32,_i151);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item32,_i151);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item32,_i151);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item32,_i151);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item32,_i151);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item32,_i151);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item32,_i151);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item32,_i151);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item32,_i151);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item32,_i151);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item32,_i151);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item32,_i151);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item32,_i151);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item32,_i151);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item32,_i151);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item32,_i151);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item32,_i151);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item32,_i151);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item32,_i151);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item32,_i151);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item32,_i151);break;default:{var find=g_ScriptIndexChartFactory.Get(_item32.Draw.DrawType);//外部挂接
11561
+ if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item32,_i151,this);}break;}}else if(_item32.Type==2){this.CreateMACD(hqChart,windowIndex,_item32,_i151);}else if(_item32.Type==3){this.CreatePointDot(hqChart,windowIndex,_item32,_i151,hisData);}else if(_item32.Type==4){this.CreateLineStick(hqChart,windowIndex,_item32,_i151);}else if(_item32.Type==5){this.CreateStick(hqChart,windowIndex,_item32,_i151);}else if(_item32.Type==6){this.CreateVolStick(hqChart,windowIndex,_item32,_i151,hisData);}else if(_item32.Type==7){this.CreateLine(hqChart,windowIndex,_item32,_i151,_item32.Type);}else if(_item32.Type==8){this.CreateLine(hqChart,windowIndex,_item32,_i151,_item32.Type);}else if(_item32.Type==9){this.CreateArea(hqChart,windowIndex,_item32,_i151);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i151<titlePaint.Data.length)//设置标题数值 小数位数和格式
11562
+ {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
11563
+ 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 _item33=this.Arguments[_i152];if(indexParam.length>0)indexParam+=',';indexParam+=_item33.Value.toString();}if(indexParam.length>0)hqChart.TitlePaint[titleIndex].ArgumentsText='('+indexParam+')';}if(this.TitleFont)hqChart.TitlePaint[titleIndex].Font=this.TitleFont;return true;};//给一个默认的颜色
11560
11564
  this.GetDefaultColor=function(id){var COLOR_ARRAY=null;//使用全局线段配置
11561
11565
  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)];};//获取颜色
11562
11566
  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)';/*
@@ -12842,7 +12846,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
12842
12846
  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);};}/********************************************************************************
12843
12847
  * 版本信息输出
12844
12848
  *
12845
- */var HQCHART_VERSION="1.1.12679";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();//把给外界调用的方法暴露出来
12849
+ */var HQCHART_VERSION="1.1.12686";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();//把给外界调用的方法暴露出来
12846
12850
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12847
12851
  // BaseIndex:BaseIndex,
12848
12852
  // ChartLine:ChartLine,