hqchart 1.1.12472 → 1.1.12480

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.
@@ -1353,7 +1353,7 @@ var scriptData=new JSIndexScript();if(option.ColorIndex)//五彩K线
1353
1353
  }else if(item.JsonData){chart.WindowIndex[i]=new JsonDataIndex(item.Name,item.Script,item.Args,item);//脚本执行
1354
1354
  }else if(item.Local&&item.Local.Data){chart.WindowIndex[i]=new LocalJsonDataIndex(item.Local.Name,item.Local.Args,{JsonData:item.Local.Data});}else if(item.API)//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
1355
1355
  {var apiItem=item.API;chart.WindowIndex[i]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[i]=indexItem.Create(item.Option);if(chart.WindowIndex[i].SetArgs)chart.WindowIndex[i].SetArgs(item.Args);chart.CreateWindowIndex(i);}else{var _indexInfo2=scriptData.Get(item.Index);if(!_indexInfo2)continue;if(item.Lock)_indexInfo2.Lock=item.Lock;_indexInfo2.ID=item.Index;var args=_indexInfo2.Args;if(item.Args)args=item.Args;if(item.IsShortTitle)_indexInfo2.IsShortTitle=item.IsShortTitle;if(item.TitleFont)_indexInfo2.TitleFont=item.TitleFont;if(IFrameSplitOperator.IsBool(item.IsSync))_indexInfo2.IsSync=item.IsSync;chart.WindowIndex[i]=new ScriptIndex(_indexInfo2.Name,_indexInfo2.Script,args,_indexInfo2);//脚本执行
1356
- if(item.StringFormat>0)chart.WindowIndex[i].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(item.IsDrawTitleBG==true)chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(item.IsShowTitleArraw==false)chart.Frame.SubFrame[i].Frame.IsShowTitleArraw=false;if(item.IsShowIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))chart.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))chart.Frame.SubFrame[i].Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))chart.Frame.SubFrame[i].Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}}//叠加指标宽度
1356
+ if(item.StringFormat>0)chart.WindowIndex[i].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(item.IsDrawTitleBG==true)chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsNumber(item.IsShowTitleArrow))chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))chart.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))chart.Frame.SubFrame[i].Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))chart.Frame.SubFrame[i].Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}}//叠加指标宽度
1357
1357
  if(option.OverlayIndexFrameWidth>40)chart.OverlayIndexFrameWidth=option.OverlayIndexFrameWidth;//叠加指标
1358
1358
  if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Windows>=chart.Frame.SubFrame.length)continue;var itemString=(0,_stringify2.default)(item);var obj=JSON.parse(itemString);if(item.Index)obj.IndexName=item.Index;if(item.Windows>=0)obj.WindowIndex=item.Windows;chart.CreateOverlayWindowsIndex(obj);}}this.AdjustTitleHeight(chart);return chart;};//自定义指数历史K线图
1359
1359
  this.CreateCustomKLineChartContainer=function(option){var chart=new CustomKLineChartContainer(this.CanvasElement);//创建改参数div
@@ -1385,7 +1385,7 @@ if(IFrameSplitOperator.IsNonEmptyArray(option.Windows)){var scriptData=new JSInd
1385
1385
  }else if(item.API)//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
1386
1386
  {var apiItem=item.API;chart.WindowIndex[index]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[index]=indexItem.Create();//创建子窗口的指标
1387
1387
  chart.CreateWindowIndex(index);}else{var indexInfo=scriptData.Get(item.Index);if(!indexInfo)continue;indexInfo.ID=item.Index;var args=indexInfo.Args;if(item.Args)args=item.Args;if(item.IsShortTitle)indexInfo.IsShortTitle=item.IsShortTitle;if(item.TitleFont)indexInfo.TitleFont=item.TitleFont;if(IFrameSplitOperator.IsBool(item.IsSync))indexInfo.IsSync=item.IsSync;chart.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo);//脚本执行
1388
- if(item.StringFormat>0)chart.WindowIndex[index].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[index].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[index].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsNumber(item.YSplitType))chart.Frame.SubFrame[index].Frame.YSplitOperator.SplitType=item.YSplitType;if(!isNaN(item.TitleHeight))chart.Frame.SubFrame[index].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsDrawTitleBG))chart.Frame.SubFrame[index].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(item.IsShowTitleArraw==false)chart.Frame.SubFrame[index].Frame.IsShowTitleArraw=false;if(item.IsShowIndexName==false)chart.Frame.SubFrame[index].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[index].Frame.IsShowOverlayIndexName=false;}}this.AdjustTitleHeight(chart);//叠加指标
1388
+ if(item.StringFormat>0)chart.WindowIndex[index].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[index].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[index].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsNumber(item.YSplitType))chart.Frame.SubFrame[index].Frame.YSplitOperator.SplitType=item.YSplitType;if(!isNaN(item.TitleHeight))chart.Frame.SubFrame[index].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsDrawTitleBG))chart.Frame.SubFrame[index].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[index].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsBool(item.IsShowTitleArrow))chart.Frame.SubFrame[index].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[index].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[index].Frame.IsShowOverlayIndexName=false;}}this.AdjustTitleHeight(chart);//叠加指标
1389
1389
  if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Windows>=chart.Frame.SubFrame.length)continue;var itemString=(0,_stringify2.default)(item);var obj=JSON.parse(itemString);if(item.Index)obj.IndexName=item.Index;if(item.Windows>=0)obj.WindowIndex=item.Windows;chart.CreateOverlayWindowsIndex(obj);}}return chart;};this.CreateMinMinuteChartContainer=function(option){var chart=null;if(option.Type==="迷你分钟走势图横屏")chart=new MinuteChartHScreenContainer(this.CanvasElement);else chart=new MinuteChartContainer(this.CanvasElement);if(option.NetworkFilter)chart.NetworkFilter=option.NetworkFilter;var windowsCount=2;if(option.BeforeOpen)//集合竞价
1390
1390
  {var item=option.BeforeOpen;if(IFrameSplitOperator.IsBool(item.IsShow))chart.IsShowBeforeData=item.IsShow;if(IFrameSplitOperator.IsNumber(item.Width))chart.ExtendWidth.Left=item.Width;if(IFrameSplitOperator.IsBool(item.IsShowMultiDay))chart.IsShowMultiDayBeforeData=item.IsShowMultiDay;if(IFrameSplitOperator.IsNumber(item.MulitiDayWidth))chart.MultiDayExtendWidth.Left=item.MulitiDayWidth;}if(option.AfterClose)//收盘集合竞价
1391
1391
  {var item=option.AfterClose;if(IFrameSplitOperator.IsBool(item.IsShow))chart.IsShowAfterData=item.IsShow;if(IFrameSplitOperator.IsNumber(item.ShareVol))chart.ShareAfterVol=item.ShareVol;if(IFrameSplitOperator.IsNumber(item.Width))chart.ExtendWidth.Right=item.Width;if(IFrameSplitOperator.IsBool(item.IsShowMultiDay))chart.IsShowMultiDayAfterData=item.IsShowMultiDay;if(IFrameSplitOperator.IsNumber(item.MulitiDayWidth))chart.MultiDayExtendWidth.Right=item.MulitiDayWidth;}if(!option.Listener)option.Listener={KeyDown:false,Wheel:false};chart.Create(windowsCount,option.Listener);//创建子窗口
@@ -1419,7 +1419,7 @@ if(item.IsShowRightText==false)chart.Frame.SubFrame[i].Frame.YSplitOperator.IsSh
1419
1419
  {for(var i=0;i<option.Overlay.length;++i){var item=option.Overlay[i];chart.OverlaySymbol(item.Symbol,item);}}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}if(IFrameSplitOperator.IsNonEmptyArray(option.Windows)){//创建子窗口的指标
1420
1420
  var scriptData=new JSIndexScript();for(var i=0;i<option.Windows.length;++i){var item=option.Windows[i];if(item.Script){chart.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
1421
1421
  }else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[i]=indexItem.Create();chart.CreateWindowIndex(i);}else{var indexInfo=scriptData.Get(item.Index);if(!indexInfo)continue;if(item.Lock)indexInfo.Lock=item.Lock;chart.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
1422
- }}if(item.Modify!=null)chart.Frame.SubFrame[i].Frame.ModifyIndex=item.Modify;if(item.Change!=null)chart.Frame.SubFrame[i].Frame.ChangeIndex=item.Change;if(item.Close!=null)chart.Frame.SubFrame[i].Frame.CloseIndex=item.Close;if(item.Overlay!=null)frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsBool(item.IsDrawTitleBG))chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(item.IsShowTitleArraw==false)chart.Frame.SubFrame[i].Frame.IsShowTitleArraw=false;if(item.IsShowIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))chart.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;}}this.AdjustTitleHeight(chart);return chart;};//深度图
1422
+ }}if(item.Modify!=null)chart.Frame.SubFrame[i].Frame.ModifyIndex=item.Modify;if(item.Change!=null)chart.Frame.SubFrame[i].Frame.ChangeIndex=item.Change;if(item.Close!=null)chart.Frame.SubFrame[i].Frame.CloseIndex=item.Close;if(item.Overlay!=null)frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsBool(item.IsDrawTitleBG))chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsShowTitleArrow))chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))chart.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;}}this.AdjustTitleHeight(chart);return chart;};//深度图
1423
1423
  this.CreateDepthChartContainer=function(option){var chart=null;chart=new DepthChartContainer(this.CanvasElement);if(option.NetworkFilter)chart.NetworkFilter=option.NetworkFilter;if(option.EnableScrollUpDown==true)chart.EnableScrollUpDown=option.EnableScrollUpDown;if(IFrameSplitOperator.IsPlusNumber(option.MaxVolRate))chart.MaxVolRate=option.MaxVolRate;if(option.ZoomStepPixel>0)chart.ZoomStepPixel=option.ZoomStepPixel;if(IFrameSplitOperator.IsString(option.SplashTitle))chart.LoadDataSplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableVerifyRecvData))chart.EnableVerifyRecvData=option.EnableVerifyRecvData;if(option.Language){var value=g_JSChartLocalization.GetLanguageID(option.Language);if(IFrameSplitOperator.IsNumber(value))chart.LanguageID=value;}chart.Create(option.Listener);if(option.Border){if(IFrameSplitOperator.IsNumber(option.Border.Left))chart.Frame.ChartBorder.Left=option.Border.Left;else option.Border.Left=chart.Frame.ChartBorder.Left;if(IFrameSplitOperator.IsNumber(option.Border.Right))chart.Frame.ChartBorder.Right=option.Border.Right;else option.Border.Right=chart.Frame.ChartBorder.Right;if(IFrameSplitOperator.IsNumber(option.Border.Top))chart.Frame.ChartBorder.Top=option.Border.Top;else option.Border.Top=chart.Frame.ChartBorder.Top;if(IFrameSplitOperator.IsNumber(option.Border.Bottom))chart.Frame.ChartBorder.Bottom=option.Border.Bottom;else option.Border.Bottom=chart.Frame.ChartBorder.Bottom;}this.AdjustChartBorder(chart);if(option.CorssCursorTouchEnd===true)chart.CorssCursorTouchEnd=option.CorssCursorTouchEnd;if(option.CorssCursorInfo){var item=option.CorssCursorInfo;if(IFrameSplitOperator.IsNumber(item.HPenType))chart.ChartCorssCursor.HPenType=item.HPenType;if(IFrameSplitOperator.IsNumber(item.VPenType))chart.ChartCorssCursor.VPenType=item.VPenType;if(IFrameSplitOperator.IsBool(item.IsShowTooltip))chart.ChartCorssCursor.IsShowTooltip=item.IsShowTooltip;}if(option.Frame){var item=option.Frame;if(item.SplitCount)chart.Frame.YSplitOperator.SplitCount=item.SplitCount;if(IFrameSplitOperator.IsNumber(item.SplitType))chart.Frame.YSplitOperator.SplitType=item.SplitType;if(IFrameSplitOperator.IsNumber(item.Height))chart.Frame.Height=item.Height;if(IFrameSplitOperator.IsNumber(item.YLineType))chart.Frame.YSplitOperator.LineType=item.YLineType;if(IFrameSplitOperator.IsNumber(item.XLineType))chart.Frame.XSplitOperator.LineType=item.XLineType;if(Array.isArray(item.IgnoreYValue))chart.Frame.YSplitOperator.IgnoreYValue=item.IgnoreYValue;if(item.IsShowLeftText===false||item.IsShowLeftText===true){chart.Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
1424
1424
  }if(item.IsShowRightText===false||item.IsShowRightText===true){chart.Frame.IsShowYText[1]=item.IsShowRightText;chart.Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
1425
1425
  }if(item.IsShowXLine==false)chart.Frame.IsShowXLine=item.IsShowXLine;if(item.IsShowYLine==false)chart.Frame.IsShowYLine=item.IsShowYLine;if(IFrameSplitOperator.IsNumber(item.XSplitCount))chart.Frame.XSplitOperator.SplitCount=item.XSplitCount;//X轴刻度个数 半边的
@@ -2000,9 +2000,9 @@ this.GetExtendChartByClassNameV2=function(name){var aryChart=[];for(var i=0;i<th
2000
2000
  {var width=0;for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(!item)continue;if(item.ClassName=="StockChip"||item.ClassName=="DrawToolsButton"){if(IFrameSplitOperator.IsNumber(item.Width))width+=item.Width;}}return width;};//删除扩展画法
2001
2001
  this.DeleteExtendChart=function(data){if(data.Index>=this.ExtendChartPaint.length)return;if(this.ExtendChartPaint[data.Index]!=data.Chart)return;if(typeof data.Chart.Clear=='function')data.Chart.Clear();this.ExtendChartPaint.splice(data.Index,1);};//全屏提示信息 { Title:提示信息, Draw:false/true 是否立即重绘, }
2002
2002
  this.EnableSplashScreen=function(option){if(!this.ChartSplashPaint)return;if(!option)return;if(IFrameSplitOperator.IsString(option.Title))this.ChartSplashPaint.SetTitle(option.Title);this.ChartSplashPaint.EnableSplash(true);if(option.Draw===false)return;this.Draw();};//设置指标窗口属性 windowItem=SetOption.Windows[i], frameItem=SetOption.Frames[i];
2003
- this.SetSubFrameAttribute=function(subFrame,windowItem,frameItem){if(!subFrame||!subFrame.Frame)return;var frame=subFrame.Frame;if(windowItem){if(IFrameSplitOperator.IsBool(windowItem.Modify))frame.ModifyIndex=windowItem.Modify;if(IFrameSplitOperator.IsBool(windowItem.Change))frame.ChangeIndex=windowItem.Change;if(IFrameSplitOperator.IsBool(windowItem.Close))frame.CloseIndex=windowItem.Close;if(IFrameSplitOperator.IsBool(windowItem.Overlay))frame.OverlayIndex=windowItem.Overlay;if(IFrameSplitOperator.IsBool(windowItem.IsDrawTitleBG))frame.IsDrawTitleBG=windowItem.IsDrawTitleBG;if(IFrameSplitOperator.IsNumber(windowItem.TitleHeight))frame.ChartBorder.TitleHeight=windowItem.TitleHeight;else windowItem.TitleHeight=frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsBool(windowItem.IsShowTitleArraw))frame.IsShowTitleArraw=windowItem.IsShowTitleArraw;if(IFrameSplitOperator.IsBool(windowItem.IsShowIndexName))frame.IsShowIndexName=windowItem.IsShowIndexName;if(IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace))frame.IndexParamSpace=windowItem.IndexParamSpace;if(IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace))frame.IndexTitleSpace=windowItem.IndexTitleSpace;}if(frameItem){if(frameItem.SplitCount)frame.YSplitOperator.SplitCount=frameItem.SplitCount;if(IFrameSplitOperator.IsBool(frameItem.IsShowXLine))frame.IsShowXLine=frameItem.IsShowXLine;if(IFrameSplitOperator.IsBool(frameItem.IsShowYLine))frame.IsShowYLine=frameItem.IsShowYLine;if(IFrameSplitOperator.IsBool(frameItem.IsShowLeftText)){frame.IsShowYText[0]=frameItem.IsShowLeftText;frame.YSplitOperator.IsShowLeftText=frameItem.IsShowLeftText;//显示左边刻度
2003
+ this.SetSubFrameAttribute=function(subFrame,windowItem,frameItem){if(!subFrame||!subFrame.Frame)return;var frame=subFrame.Frame;if(windowItem){if(IFrameSplitOperator.IsBool(windowItem.Modify))frame.ModifyIndex=windowItem.Modify;if(IFrameSplitOperator.IsBool(windowItem.Change))frame.ChangeIndex=windowItem.Change;if(IFrameSplitOperator.IsBool(windowItem.Close))frame.CloseIndex=windowItem.Close;if(IFrameSplitOperator.IsBool(windowItem.Overlay))frame.OverlayIndex=windowItem.Overlay;if(IFrameSplitOperator.IsBool(windowItem.IsDrawTitleBG))frame.IsDrawTitleBG=windowItem.IsDrawTitleBG;if(IFrameSplitOperator.IsNumber(windowItem.TitleHeight))frame.ChartBorder.TitleHeight=windowItem.TitleHeight;else windowItem.TitleHeight=frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsBool(windowItem.IsShowTitleArrow))frame.IsShowTitleArrow=windowItem.IsShowTitleArrow;if(IFrameSplitOperator.IsBool(windowItem.IsShowIndexName))frame.IsShowIndexName=windowItem.IsShowIndexName;if(IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace))frame.IndexParamSpace=windowItem.IndexParamSpace;if(IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace))frame.IndexTitleSpace=windowItem.IndexTitleSpace;}if(frameItem){if(frameItem.SplitCount)frame.YSplitOperator.SplitCount=frameItem.SplitCount;if(IFrameSplitOperator.IsBool(frameItem.IsShowXLine))frame.IsShowXLine=frameItem.IsShowXLine;if(IFrameSplitOperator.IsBool(frameItem.IsShowYLine))frame.IsShowYLine=frameItem.IsShowYLine;if(IFrameSplitOperator.IsBool(frameItem.IsShowLeftText)){frame.IsShowYText[0]=frameItem.IsShowLeftText;frame.YSplitOperator.IsShowLeftText=frameItem.IsShowLeftText;//显示左边刻度
2004
2004
  }if(IFrameSplitOperator.IsBool(frameItem.IsShowRightText)){frame.IsShowYText[1]=frameItem.IsShowRightText;frame.YSplitOperator.IsShowRightText=frameItem.IsShowRightText;//显示右边刻度
2005
- }if(IFrameSplitOperator.IsNumber(frameItem.Height)&&frameItem.Height>=0)subFrame.Height=frameItem.Height;}};this.SetSubFrameOption=function(subFrame,option){if(!option)return;if(option.Window){var item=option.Window;if(item.Modify!=null)subFrame.Frame.ModifyIndex=item.Modify;if(item.Change!=null)subFrame.Frame.ChangeIndex=item.Change;if(item.Close!=null)subFrame.Frame.CloseIndex=item.Close;if(item.Overlay!=null)subFrame.Frame.OverlayIndex=item.Overlay;if(item.IsDrawTitleBG==true)subFrame.Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))subFrame.Frame.IsShowNameArrow=item.IsShowNameArrow;if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))subFrame.Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))subFrame.Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}}if(IFrameSplitOperator.IsNumber(option.SplitCount))subFrame.Frame.YSplitOperator.SplitCount=option.SplitCount;if(IFrameSplitOperator.IsNumber(option.TitleHeight))subFrame.Frame.ChartBorder.TitleHeight=option.TitleHeight;if(IFrameSplitOperator.IsBool(option.IsShowTitleArraw))subFrame.Frame.IsShowTitleArraw=option.IsShowTitleArraw;if(IFrameSplitOperator.IsBool(option.IsShowIndexName))subFrame.Frame.IsShowIndexName=option.IsShowIndexName;if(IFrameSplitOperator.IsBool(option.IsShowOverlayIndexName))subFrame.Frame.IsShowOverlayIndexName=option.IsShowOverlayIndexName;if(IFrameSplitOperator.IsNumber(option.IndexParamSpace))subFrame.Frame.IndexParamSpace=option.IndexParamSpace;if(IFrameSplitOperator.IsBool(option.IsShowXLine))subFrame.Frame.IsShowXLine=option.IsShowXLine;if(IFrameSplitOperator.IsBool(option.IsShowYLine))subFrame.Frame.IsShowYLine=option.IsShowYLine;if(IFrameSplitOperator.IsBool(option.IsShowIndexTitle))subFrame.Frame.IsShowIndexTitle=option.IsShowIndexTitle;if(IFrameSplitOperator.IsBool(option.IsShowLeftText)){subFrame.Frame.IsShowYText[0]=option.IsShowLeftText;subFrame.Frame.YSplitOperator.IsShowLeftText=option.IsShowLeftText;//显示左边刻度
2005
+ }if(IFrameSplitOperator.IsNumber(frameItem.Height)&&frameItem.Height>=0)subFrame.Height=frameItem.Height;}};this.SetSubFrameOption=function(subFrame,option){if(!option)return;if(option.Window){var item=option.Window;if(item.Modify!=null)subFrame.Frame.ModifyIndex=item.Modify;if(item.Change!=null)subFrame.Frame.ChangeIndex=item.Change;if(item.Close!=null)subFrame.Frame.CloseIndex=item.Close;if(item.Overlay!=null)subFrame.Frame.OverlayIndex=item.Overlay;if(item.IsDrawTitleBG==true)subFrame.Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))subFrame.Frame.IsShowNameArrow=item.IsShowNameArrow;if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))subFrame.Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))subFrame.Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}}if(IFrameSplitOperator.IsNumber(option.SplitCount))subFrame.Frame.YSplitOperator.SplitCount=option.SplitCount;if(IFrameSplitOperator.IsNumber(option.TitleHeight))subFrame.Frame.ChartBorder.TitleHeight=option.TitleHeight;if(IFrameSplitOperator.IsBool(option.IsShowTitleArrow))subFrame.Frame.IsShowTitleArrow=option.IsShowTitleArrow;if(IFrameSplitOperator.IsBool(option.IsShowIndexName))subFrame.Frame.IsShowIndexName=option.IsShowIndexName;if(IFrameSplitOperator.IsBool(option.IsShowOverlayIndexName))subFrame.Frame.IsShowOverlayIndexName=option.IsShowOverlayIndexName;if(IFrameSplitOperator.IsNumber(option.IndexParamSpace))subFrame.Frame.IndexParamSpace=option.IndexParamSpace;if(IFrameSplitOperator.IsBool(option.IsShowXLine))subFrame.Frame.IsShowXLine=option.IsShowXLine;if(IFrameSplitOperator.IsBool(option.IsShowYLine))subFrame.Frame.IsShowYLine=option.IsShowYLine;if(IFrameSplitOperator.IsBool(option.IsShowIndexTitle))subFrame.Frame.IsShowIndexTitle=option.IsShowIndexTitle;if(IFrameSplitOperator.IsBool(option.IsShowLeftText)){subFrame.Frame.IsShowYText[0]=option.IsShowLeftText;subFrame.Frame.YSplitOperator.IsShowLeftText=option.IsShowLeftText;//显示左边刻度
2006
2006
  }if(IFrameSplitOperator.IsBool(option.IsShowRightText)){subFrame.Frame.IsShowYText[1]=option.IsShowRightText;subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText;//显示右边刻度
2007
2007
  }};this.AddNewSubFrame=function(option){var _this12=this;var index=this.Frame.SubFrame.length;var subFrame=this.CreateSubFrameItem(index);var pixelRatio=GetDevicePixelRatio();subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[index]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[index].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this12.GetEventCallback(id);};this.TitlePaint[index+1]=titlePaint;this.SetSubFrameOption(subFrame,option);//最后一个显示X轴坐标
2008
2008
  for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}this.UpdataDataoffset();//更新数据偏移
@@ -2137,7 +2137,7 @@ this.Data;//主数据
2137
2137
  this.IsLocked=false;//是否上锁
2138
2138
  this.LockPaint=null;this.YSpecificMaxMin=null;//指定Y轴最大最小值
2139
2139
  this.IsShowBorder=true;//是否显示边框
2140
- this.IsShowTitleArraw=true;//是否显示指标信息上涨下跌箭头
2140
+ this.IsShowTitleArrow=true;//是否显示指标信息上涨下跌箭头
2141
2141
  this.IsShowIndexName=true;//是否显示指标名字
2142
2142
  this.IsShowOverlayIndexName=true;//是否显示叠加指标名字
2143
2143
  //this.OverlayIndexType= { Position:0, LineSpace:5 };
@@ -3841,13 +3841,15 @@ this.KLineDrawType=0;this.ClassName='ChartVolStick';this.PtInChart=this.PtInBar;
3841
3841
  y=yBottom-height;if(this.KLineDrawType==6)//完全空心柱
3842
3842
  {this.Canvas.strokeStyle=barColor.Color;this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(left),ToFixedPoint(y),ToFixedRect(dataWidth),height);this.Canvas.stroke();}else if(bUp&&(this.KLineDrawType==1||this.KLineDrawType==2||this.KLineDrawType==3))//空心柱子
3843
3843
  {this.Canvas.strokeStyle=this.UpColor;this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(left),ToFixedPoint(y),ToFixedRect(dataWidth),height);this.Canvas.stroke();}else{this.Canvas.fillRect(ToFixedRect(left),y,ToFixedRect(dataWidth),height);}}}else//太细了直接话线
3844
- {for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;var y=this.ChartFrame.GetYFromData(value);if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;var x=left+(right-left)/2;}if(x>chartright)break;var barColor=this.GetBarColor(kItem);this.Canvas.strokeStyle=barColor.Color;//var x=this.ChartFrame.GetXFromIndex(j);
3845
- this.Canvas.beginPath();this.Canvas.moveTo(ToFixedPoint(x),y);this.Canvas.lineTo(ToFixedPoint(x),yBottom);this.Canvas.stroke();}}};this.HScreenDraw=function()//横屏画法
3844
+ {var preKItem=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;var y=this.ChartFrame.GetYFromData(value);if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;var x=left+(right-left)/2;}if(x>chartright)break;if(isMinute){var barColor=this.GetMinuteBarColor(kItem,preKItem);//分时图颜色单独计算
3845
+ }else{var barColor=this.GetBarColor(kItem);}this.Canvas.strokeStyle=barColor.Color;//var x=this.ChartFrame.GetXFromIndex(j);
3846
+ this.Canvas.beginPath();this.Canvas.moveTo(ToFixedPoint(x),y);this.Canvas.lineTo(ToFixedPoint(x),yBottom);this.Canvas.stroke();preKItem=kItem;}}};this.HScreenDraw=function()//横屏画法
3846
3847
  {var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartBottom=border.BottomEx;var xPointCount=this.ChartFrame.XPointCount;var lockRect=this.GetLockRect();if(lockRect)chartBottom=lockRect.Top;var yBottom=this.ChartFrame.GetYFromData(0);if(dataWidth>=4){yBottom=ToFixedRect(yBottom);for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartBottom)break;var y=this.ChartFrame.GetYFromData(value);var barColor=this.GetBarColor(kItem);var bUp=barColor.IsUp;this.Canvas.fillStyle=barColor.Color;var height=ToFixedRect(y-yBottom);//高度调整为整数
3847
3848
  if(bUp&&(this.KLineDrawType==1||this.KLineDrawType==2||this.KLineDrawType==3))//空心柱子
3848
3849
  {this.Canvas.strokeStyle=this.UpColor;this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(yBottom),ToFixedPoint(left),height,ToFixedRect(dataWidth));this.Canvas.stroke();}else{this.Canvas.fillRect(yBottom,ToFixedRect(left),height,ToFixedRect(dataWidth));}}}else//太细了直接话线
3849
3850
  {for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;var y=this.ChartFrame.GetYFromData(value);var x=this.ChartFrame.GetXFromIndex(j);if(x>chartBottom)break;var barColor=this.GetBarColor(kItem);var bUp=barColor.IsUp;this.Canvas.strokeStyle=barColor.Color;//var x=this.ChartFrame.GetXFromIndex(j);
3850
3851
  this.Canvas.beginPath();this.Canvas.moveTo(y,ToFixedPoint(x));this.Canvas.lineTo(yBottom,ToFixedPoint(x));this.Canvas.stroke();}}};this.GetMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={};range.Min=null;range.Max=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(range.Max)||range.Max<value)range.Max=value;if(!IFrameSplitOperator.IsNumber(range.Min)||range.Min>value)range.Min=value;}if(range.Max>0&&range.Min>0)range.Min=0;else if(range.Max<0&&range.Min<0)range.Max=0;return range;};this.GetBarColor=function(kItem){if(kItem.Close>=kItem.Open)return{Color:this.UpColor,IsUp:true};//颜色, 是否是上涨
3852
+ else return{Color:this.DownColor,IsUp:false};};this.GetMinuteBarColor=function(kItem,preItem){var prePrice=kItem.YClose;if(preItem)prePrice=preItem.Close;if(kItem.Close>=prePrice)return{Color:this.UpColor,IsUp:true};//颜色, 是否是上涨
3851
3853
  else return{Color:this.DownColor,IsUp:false};};this.GetItemData=function(indexData){if(!indexData)return null;if(!IFrameSplitOperator.IsNumber(indexData.Index))return null;if(!this.HistoryData||!IFrameSplitOperator.IsNonEmptyArray(this.HistoryData.Data))return null;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return null;var index=indexData.Index;if(index<0||index>=this.Data.Data.length||index>=this.HistoryData.Data.length)return null;var item=this.Data.Data[index];var kItem=this.HistoryData.Data[index];return[{Value:item,Color:this.GetBarColor(kItem).Color,Name:this.Name}];};}// VERTLINE(HIGH>=HHV(HIGH,20),1)表示在创20天新高画垂直虚线。
3852
3854
  // 支持横屏
3853
3855
  function ChartVericaltLine(){this.newMethod=IChartPainting;//派生
@@ -4910,7 +4912,8 @@ IFrameSplitOperator.IsPlusNumber=function(value){if(value==null)return false;if(
4910
4912
  IFrameSplitOperator.IsInteger=function(x){return typeof x==='number'&&x%1===0;};//判断字段是否存在
4911
4913
  IFrameSplitOperator.IsObjectExist=function(obj){if(obj===undefined)return false;if(obj==null)return false;return true;};//是否时bool
4912
4914
  IFrameSplitOperator.IsBool=function(value){if(value===true||value===false)return true;return false;};IFrameSplitOperator.IsString=function(value){var type=typeof value==='undefined'?'undefined':(0,_typeof3.default)(value);if(type=='string')return true;return false;};//是否是非空的数组
4913
- IFrameSplitOperator.IsNonEmptyArray=function(ary){if(!ary)return false;if(!Array.isArray(ary))return false;return ary.length>0;};IFrameSplitOperator.IsFloat=function(value){if(value===undefined)return false;if(value==null)return false;if(isNaN(value))return false;return value!=parseInt(value);};IFrameSplitOperator.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;};function FrameSplitKLinePriceY(){this.newMethod=IFrameSplitOperator;//派生
4915
+ IFrameSplitOperator.IsNonEmptyArray=function(ary){if(!ary)return false;if(!Array.isArray(ary))return false;return ary.length>0;};IFrameSplitOperator.IsFloat=function(value){if(value===undefined)return false;if(value==null)return false;if(isNaN(value))return false;return value!=parseInt(value);};//是否有效
4916
+ IFrameSplitOperator.IsVaild=function(value){if(isNaN(value))return false;if(value==null)return false;if(value===undefined)return false;return true;};IFrameSplitOperator.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;};function FrameSplitKLinePriceY(){this.newMethod=IFrameSplitOperator;//派生
4914
4917
  this.newMethod();delete this.newMethod;this.CoordinateType=0;//坐标类型 0=普通坐标 1=百分比坐标 (右边坐标刻度) 2=对数对标 3=等比坐标 4=等分坐标 5=黄金分割
4915
4918
  this.Symbol;this.Data;//K线数据 (计算百分比坐标)
4916
4919
  this.FrameSplitData2;//坐标轴分割方法(计算百分比刻度)
@@ -5508,7 +5511,7 @@ this.DynamicTitle={OutName:null,OutValue:null};this.OverlayDynamicTitle=new _map
5508
5511
  this.ReloadResource=function(){this.Font=g_JSChartResource.TitleFont;this.TitleColor=g_JSChartResource.DefaultTextColor;this.OverlayIndexType.BGColor=g_JSChartResource.OverlayIndexTitleBGColor;};this.SetDynamicTitleData=function(outName,args,data){if(!data.OutName)data.OutName=new _map2.default();else data.OutName.clear();if(!data.OutValue)data.OutValue=new _map2.default();else data.OutValue.clear();var mapArgs=new _map2.default();for(var i in args){var item=args[i];mapArgs.set('{'+item.Name+'}',item);}for(var i in outName){var item=outName[i];if(item.DynamicName){var aryFond=item.DynamicName.match(/{\w*}/i);if(!aryFond||aryFond.length<=0){data.OutName.set(item.Name,item.DynamicName);}else{var dyName=item.DynamicName;var bFind=true;for(var j=0;j<aryFond.length;++j){var findItem=aryFond[j];if(mapArgs.has(findItem)){var value=mapArgs.get(findItem).Value;dyName=dyName.replace(findItem,value.toString());}else{bFind=false;break;}}if(bFind)data.OutName.set(item.Name,dyName);}}if(item.DynamicValue){data.OutValue.set(item.Name,item.DynamicValue);}}};this.SetDynamicTitle=function(outName,args,overlayID){if(IFrameSplitOperator.IsString(overlayID)){var dynamicTitle=null;if(this.OverlayDynamicTitle.has(overlayID)){dynamicTitle=this.OverlayDynamicTitle.get(overlayID);}else{dynamicTitle={OutName:null,OutValue:null};this.OverlayDynamicTitle.set(overlayID,dynamicTitle);}this.SetDynamicTitleData(outName,args,dynamicTitle);}else{this.SetDynamicTitleData(outName,args,this.DynamicTitle);}};this.GetDynamicOutName=function(key,overlayID){if(IFrameSplitOperator.IsString(overlayID)){if(!this.OverlayDynamicTitle.has(overlayID))return null;var dynamicTitle=this.OverlayDynamicTitle.get(overlayID);var outName=dynamicTitle.OutName;}else{var outName=this.DynamicTitle.OutName;}if(!outName||outName.size<=0)return null;if(!outName.has(key))return null;return outName.get(key);};this.GetDynamicOutValue=function(key,value){var outValue=this.DynamicTitle.OutValue;if(!outValue||outValue.size<=0)return null;if(!outValue.has(key))return null;var strFormat=outValue.get(key);strFormat=strFormat.replace('{Value}',value);return strFormat;};this.IsClickTitle=function(x,y)//是否点击了指标标题
5509
5512
  {if(!this.TitleRect)return false;if(x>this.TitleRect.Left&&x<this.TitleRect.Left+this.TitleRect.Width&&y>this.TitleRect.Top&&y<this.TitleRect.Top+this.TitleRect.Height){return true;}return false;};this.FormatValue=function(value,item){if(item.StringFormat==STRING_FORMAT_TYPE.DEFAULT)return IFrameSplitOperator.FormatValueString(value,item.FloatPrecision,this.LanguageID);else if(item.StringFormat==STRING_FORMAT_TYPE.THOUSANDS)return IFrameSplitOperator.FormatValueThousandsString(value,item.FloatPrecision);else if(item.StringFormat==STRING_FORMAT_TYPE.ORIGINAL)return value.toFixed(item.FloatPrecision).toString();else if(item.StringFormat==STRING_FORMAT_TYPE.INTEGER)return IFrameSplitOperator.FromatIntegerString(value,item.FloatPrecision,this.LanguageID);};this.FormatMultiReport=function(data,format){var text="";for(var i in data){var item=data[i];var quarter=item.Quarter;var year=item.Year;var value=item.Value;if(text.length>0)text+=',';text+=year.toString();switch(quarter){case 1:text+='一季报 ';break;case 2:text+='半年报 ';break;case 3:text+='三季报 ';break;case 4:text+='年报 ';break;}text+=this.FormatValue(value,format);}return text;};this.FromatMultiDataLine=function(value,dataInfo){var text="";if(Array.isArray(value)){for(var i=0;i<value.length;++i){var item=value[i];if(item.Type==0)continue;if(!IFrameSplitOperator.IsNumber(item.Value))continue;var strValue=this.FormatValue(item.Value,dataInfo);if(text.length>0)text+=',';text+=strValue;}}else{if(value.Type!=0&&IFrameSplitOperator.IsNumber(value.Value)){text=this.FormatValue(value.Value,dataInfo);}}if(text.length<=0)return null;return text;};//多变量输出
5510
5513
  this.FromatStackedBarTitle=function(aryBar,dataInfo){if(!IFrameSplitOperator.IsNonEmptyArray(aryBar))return null;if(!IFrameSplitOperator.IsNonEmptyArray(dataInfo.Color))return null;var aryText=[];for(var i=0;i<aryBar.length;++i){var value=aryBar[i];if(!IFrameSplitOperator.IsNumber(value))continue;var item={Text:value.toFixed(2)};if(dataInfo.Name&&dataInfo.Name[i])item.Name=dataInfo.Name[i];item.Color=dataInfo.Color[i];aryText.push(item);}if(aryText.length<=0)return null;return aryText;};this.ForamtMultiLineTitle=function(dataIndex,dataInfo){if(!IFrameSplitOperator.IsNonEmptyArray(dataInfo.Lines))return null;var aryText=[];for(var i=0;i<dataInfo.Lines.length;++i){var line=dataInfo.Lines[i];for(var j=0;j<line.Point.length;++j){var item=line.Point[j];if(item.Index==dataIndex){var item={Text:item.Value.toFixed(2)};if(aryText.length==0)item.Name=dataInfo.Name;item.Color=line.Color;aryText.push(item);break;}}}if(!IFrameSplitOperator.IsNonEmptyArray(aryText))return null;return aryText;};this.ForamtMultiPointTitle=function(dataIndex,dataInfo){if(!IFrameSplitOperator.IsNonEmptyArray(dataInfo.PointGroup))return null;var aryText=[];for(var i=0;i<dataInfo.PointGroup.length;++i){var groupItem=dataInfo.PointGroup[i];for(var j=0;j<groupItem.Point.length;++j){var item=groupItem.Point[j];if(item.Index==dataIndex){var item={Text:item.Value.toFixed(2)};if(aryText.length==0)item.Name=dataInfo.Name;item.Color=groupItem.BGColor;aryText.push(item);break;}}}if(!IFrameSplitOperator.IsNonEmptyArray(aryText))return null;return aryText;};this.FormatVPVRTitle=function(pt,dataInfo){var chart=dataInfo.Chart;var aryText=[];if(chart.VolType==0){var item={Text:" Up/Down ",Color:this.TitleColor};aryText.push(item);}else{var item={Text:" Total ",Color:this.TitleColor};aryText.push(item);}if(!IFrameSplitOperator.IsNumber(pt.Y))return aryText;var top=this.Frame.ChartBorder.GetTopEx();var bottom=this.Frame.ChartBorder.GetBottomEx();if(pt.Y<top||pt.Y>bottom)return aryText;var yPrice=this.Frame.GetYData(pt.Y);var find=null;for(var i=0;i<dataInfo.Data.Data.length;++i){var item=dataInfo.Data.Data[i];if(yPrice>=item.Price-dataInfo.Data.PriceOffset/2&&yPrice<item.Price+dataInfo.Data.PriceOffset/2){find=item;break;}}if(!find)return null;if(chart.VolType==0){var total=0;for(var i=0;i<find.Vol.length;++i){var volItem=find.Vol[i];if(!IFrameSplitOperator.IsNumber(volItem.Value))continue;var item={Text:IFrameSplitOperator.FormatVolString(volItem.Value,this.LanguageID)};total+=volItem.Value;if(IFrameSplitOperator.IsNumber(volItem.ColorID))item.Color=chart.BarColor[volItem.ColorID];else if(volItem.Color)item.Color=volItem.Color;aryText.push(item);}var item={Text:IFrameSplitOperator.FormatVolString(total,this.LanguageID),Color:this.TitleColor};aryText.push(item);}else{if(find.TotalVol&&IFrameSplitOperator.IsNumber(find.TotalVol.Value)){var item={Text:IFrameSplitOperator.FormatVolString(find.TotalVol.Value,this.LanguageID)};if(IFrameSplitOperator.IsNumber(find.TotalVol.ColorID))item.Color=chart.BarColor[find.TotalVol.ColorID];else if(find.TotalVol.Color)item.Color=find.TotalVol.Color;aryText.push(item);}}return aryText;};this.IsShowLastData=function(){var isShowLastData=false;if(this.DrawStatus&&this.DrawStatus.IsTitleShowLatestData){var status=this.DrawStatus;if(!IFrameSplitOperator.IsNumber(status.FrameID)||status.FrameID<0)isShowLastData=true;else if(status.CorssCursorTouchEnd&&status.IsOnTouch==false)isShowLastData=true;}else if(this.GlobalOption&&this.GlobalOption.IsDisplayLatest){isShowLastData=true;}return isShowLastData;};this.OnDrawTitleEvent=function(){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_INDEXTITLE_DRAW);if(!event)return;var data={Index:null,Data:this.Data,Title:this.Title,Script:this.Script,FrameID:this.Frame.Identify,OverlayIndex:this.OverlayIndex,IsShowTitleOnly:false};if(this.ArgumentsText)data.ArgumentsText=this.ArgumentsText;if(this.Frame&&this.Frame.ChartBorder)data.IsShowTitleOnly=this.Frame.ChartBorder.IsShowTitleOnly;if(IFrameSplitOperator.IsNumber(this.CursorIndex)){var index=Math.abs(this.CursorIndex);index=parseInt(index.toFixed(0));data.Index=index;//当前屏数据索引
5511
- }var pixelTatio=GetDevicePixelRatio();var border=this.Frame.GetBorder();data.Left=border.LeftEx/pixelTatio;data.Top=border.Top/pixelTatio;data.Right=border.RightEx/pixelTatio;event.Callback(event,data,this);};this.IsSelectedChart=function(id){if(!id)return false;if(!this.SelectedChart)return false;if(!this.SelectedChart.Selected)return false;return this.SelectedChart.Selected.Identify==id;};this.Draw=function(moveonPoint,mouseStatus){this.Buttons=[];if(this.Frame.IsMinSize)return;this.IsKLineFrame=this.Frame.ClassName=='KLineFrame'||this.Frame.ClassName=='KLineHScreenFrame';this.IsDrawTitleBG=this.Frame.IsDrawTitleBG;this.IsShowNameArrow=this.Frame.IsShowNameArrow;this.IsShowUpDownArrow=this.Frame.IsShowTitleArraw;this.IsShowIndexName=this.Frame.IsShowIndexName;this.IsShowOverlayIndexName=this.Frame.IsShowOverlayIndexName;this.OverlayIndexType.Position=this.Frame.OverlayIndexType.Position;this.OverlayIndexType.LineSpace=this.Frame.OverlayIndexType.LineSpace;this.ParamSpace=this.Frame.IndexParamSpace;this.TitleSpace=this.Frame.IndexTitleSpace;this.TitleRect=null;this.GlobalOption=this.Frame.GlobalOption;this.OnDrawTitleEvent();if(this.Frame.IsShowIndexTitle==false)return;if(g_JSChartResource.IsDOMFrameTitle===true)return;if(!this.Data)return;if(this.Frame.ChartBorder.TitleHeight<5)return;if(this.CursorIndex==null&&!(this.GlobalOption&&this.GlobalOption.IsDisplayLatest))return;if(this.Frame.IsHScreen===true){this.Canvas.save();this.HScreenDraw();this.Canvas.restore();/* 测试用
5514
+ }var pixelTatio=GetDevicePixelRatio();var border=this.Frame.GetBorder();data.Left=border.LeftEx/pixelTatio;data.Top=border.Top/pixelTatio;data.Right=border.RightEx/pixelTatio;event.Callback(event,data,this);};this.IsSelectedChart=function(id){if(!id)return false;if(!this.SelectedChart)return false;if(!this.SelectedChart.Selected)return false;return this.SelectedChart.Selected.Identify==id;};this.Draw=function(moveonPoint,mouseStatus){this.Buttons=[];if(this.Frame.IsMinSize)return;this.IsKLineFrame=this.Frame.ClassName=='KLineFrame'||this.Frame.ClassName=='KLineHScreenFrame';this.IsDrawTitleBG=this.Frame.IsDrawTitleBG;this.IsShowNameArrow=this.Frame.IsShowNameArrow;this.IsShowUpDownArrow=this.Frame.IsShowTitleArrow;this.IsShowIndexName=this.Frame.IsShowIndexName;this.IsShowOverlayIndexName=this.Frame.IsShowOverlayIndexName;this.OverlayIndexType.Position=this.Frame.OverlayIndexType.Position;this.OverlayIndexType.LineSpace=this.Frame.OverlayIndexType.LineSpace;this.ParamSpace=this.Frame.IndexParamSpace;this.TitleSpace=this.Frame.IndexTitleSpace;this.TitleRect=null;this.GlobalOption=this.Frame.GlobalOption;this.OnDrawTitleEvent();if(this.Frame.IsShowIndexTitle==false)return;if(g_JSChartResource.IsDOMFrameTitle===true)return;if(!this.Data)return;if(this.Frame.ChartBorder.TitleHeight<5)return;if(this.CursorIndex==null&&!(this.GlobalOption&&this.GlobalOption.IsDisplayLatest))return;if(this.Frame.IsHScreen===true){this.Canvas.save();this.HScreenDraw();this.Canvas.restore();/* 测试用
5512
5515
  if (this.TitleRect)
5513
5516
  {
5514
5517
  this.Canvas.strokeStyle='rgba(200,0,50,0.5)';
@@ -7003,7 +7006,7 @@ var indexName=[{Index:"RSI"},{Index:"MACD"},{Index:"VOL"},{Index:"UOS"},{Index:"
7003
7006
  if(option&&option.Windows.length>0)indexName=option.Windows;//外部设置增加窗口的默认指标
7004
7007
  var scriptData=new JSIndexScript();for(var i=currentLength;i<count;++i){var item=indexName[i%indexName.length];var name=item.Index;var indexInfo=scriptData.Get(name);var args=indexInfo.Args;if(item.Args)args=item.Args;var indexData={Name:indexInfo.Name,Script:indexInfo.Script,Args:args,ID:item.Index,//扩展属性 可以是空
7005
7008
  KLineType:indexInfo.KLineType,YSpecificMaxMin:indexInfo.YSpecificMaxMin,YSplitScale:indexInfo.YSplitScale,FloatPrecision:indexInfo.FloatPrecision,Condition:indexInfo.Condition,OutName:indexInfo.OutName};this.WindowIndex[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
7006
- var subFrame=this.Frame.SubFrame[i];if(item.Modify!=null)this.Frame.SubFrame[i].Frame.ModifyIndex=item.Modify;if(item.Change!=null)this.Frame.SubFrame[i].Frame.ChangeIndex=item.Change;if(item.Close!=null)this.Frame.SubFrame[i].Frame.CloseIndex=item.Close;if(item.Overlay!=null)chart.Frame.SubFrame[i].Frame.OverlayIndex=item.Overlay;if(item.IsDrawTitleBG==true)this.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))this.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(item.IsShowTitleArraw==false)this.Frame.SubFrame[i].Frame.IsShowTitleArraw=false;if(item.IsShowIndexName==false)this.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)this.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))this.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))this.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(item.IsShowXLine==false)this.Frame.SubFrame[i].Frame.IsShowXLine=false;if(item.IsShowYLine==false)this.Frame.SubFrame[i].Frame.IsShowYLine=false;if(IFrameSplitOperator.IsBool(item.IsShowIndexTitle))this.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;if(IFrameSplitOperator.IsBool(item.IsShowLeftText)){subFrame.Frame.IsShowYText[0]=item.IsShowLeftText;subFrame.Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
7009
+ var subFrame=this.Frame.SubFrame[i];if(item.Modify!=null)this.Frame.SubFrame[i].Frame.ModifyIndex=item.Modify;if(item.Change!=null)this.Frame.SubFrame[i].Frame.ChangeIndex=item.Change;if(item.Close!=null)this.Frame.SubFrame[i].Frame.CloseIndex=item.Close;if(item.Overlay!=null)chart.Frame.SubFrame[i].Frame.OverlayIndex=item.Overlay;if(item.IsDrawTitleBG==true)this.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))this.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsNumber(item.IsShowTitleArrow))this.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)this.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)this.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))this.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))this.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(item.IsShowXLine==false)this.Frame.SubFrame[i].Frame.IsShowXLine=false;if(item.IsShowYLine==false)this.Frame.SubFrame[i].Frame.IsShowYLine=false;if(IFrameSplitOperator.IsBool(item.IsShowIndexTitle))this.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;if(IFrameSplitOperator.IsBool(item.IsShowLeftText)){subFrame.Frame.IsShowYText[0]=item.IsShowLeftText;subFrame.Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
7007
7010
  }if(IFrameSplitOperator.IsBool(item.IsShowRightText)){subFrame.Frame.IsShowYText[1]=item.IsShowRightText;subFrame.Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
7008
7011
  }if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))subFrame.Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))subFrame.Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}var bindData=this.ChartPaint[0].Data;this.BindIndexData(i,bindData);//执行脚本
7009
7012
  }//this.UpdataDataoffset(); //更新数据偏移
@@ -9381,27 +9384,27 @@ if(_i53<data.length&&_i53<data2.length){if(this.IsNumber(data[_i53])&&this.IsDiv
9381
9384
  this.GT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9382
9385
  if(isNumber&&isNumber2)return data>data2?1:0;//都是数组比较
9383
9386
  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;//初始化
9384
- if(_i56<data.length&&_i56<data2.length){if(!isNaN(data[_i56])&&!isNaN(data2[_i56]))result[_i56]=data[_i56]>data2[_i56]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9385
- {for(var _i57 in data2){result[_i57]=null;if(!isNaN(data)&&!isNaN(data2[_i57]))result[_i57]=data>data2[_i57]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9386
- {for(var _i58 in data){result[_i58]=null;if(!isNaN(data[_i58])&&!isNaN(data2))result[_i58]=data[_i58]>data2?1:0;}}return result;};//大于等于
9387
+ 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))//单数据-数组
9388
+ {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))//数组-单数据
9389
+ {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;};//大于等于
9387
9390
  this.GTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9388
9391
  if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
9389
9392
  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;//初始化
9390
- if(_i59<data.length&&_i59<data2.length){if(!isNaN(data[_i59])&&!isNaN(data2[_i59]))result[_i59]=data[_i59]>=data2[_i59]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9391
- {for(var _i60 in data2){result[_i60]=null;if(!isNaN(data)&&!isNaN(data2[_i60]))result[_i60]=data>=data2[_i60]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9392
- {for(var _i61 in data){result[_i61]=null;if(!isNaN(data[_i61])&&!isNaN(data2))result[_i61]=data[_i61]>=data2?1:0;}}return result;};//小于
9393
+ 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))//单数据-数组
9394
+ {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))//数组-单数据
9395
+ {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;};//小于
9393
9396
  this.LT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9394
9397
  if(isNumber&&isNumber2)return data<data2?1:0;//都是数组比较
9395
9398
  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;//初始化
9396
- if(_i62<data.length&&_i62<data2.length){if(!isNaN(data[_i62])&&!isNaN(data2[_i62]))result[_i62]=data[_i62]<data2[_i62]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9397
- {for(var _i63 in data2){result[_i63]=null;if(!isNaN(data)&&!isNaN(data2[_i63]))result[_i63]=data<data2[_i63]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9398
- {for(var _i64 in data){result[_i64]=null;if(!isNaN(data[_i64])&&!isNaN(data2))result[_i64]=data[_i64]<data2?1:0;}}return result;};//小于等于
9399
+ 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))//单数据-数组
9400
+ {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))//数组-单数据
9401
+ {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;};//小于等于
9399
9402
  this.LTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9400
9403
  if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
9401
9404
  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;//初始化
9402
- if(_i65<data.length&&_i65<data2.length){if(!isNaN(data[_i65])&&!isNaN(data2[_i65]))result[_i65]=data[_i65]<=data2[_i65]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
9403
- {for(var _i66 in data2){result[_i66]=null;if(!isNaN(data)&&!isNaN(data2[_i66]))result[_i66]=data<=data2[_i66]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
9404
- {for(var _i67 in data){result[_i67]=null;if(!isNaN(data[_i67])&&!isNaN(data2))result[_i67]=data[_i67]<=data2?1:0;}}return result;};//等于
9405
+ 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))//单数据-数组
9406
+ {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))//数组-单数据
9407
+ {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;};//等于
9405
9408
  this.EQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
9406
9409
  if(isNumber&&isNumber2)return data==data2?1:0;//都是数组比较
9407
9410
  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;//初始化
@@ -9512,7 +9515,8 @@ this.EXPMEMA=function(data,dayCount){var result=[];if(dayCount>=data.length)retu
9512
9515
  用法:COUNT(X, N), 统计N周期中满足X条件的周期数, 若N<0则从第一个有效值开始.
9513
9516
  例如 :COUNT(CLOSE>OPEN, 20)表示统计20周期内收阳的周期数
9514
9517
  N 支持数组
9515
- */this.COUNT=function(data,n){if(Array.isArray(n)){var start=null;var dataCount=data.length;for(var i=0;i<dataCount;++i){if(this.IsNumber(data[i])){start=i;break;}}if(start==null)return[];var result=[];var count=0;for(var i=0;i<n.length;++i){var period=n[i];if(!IFrameSplitOperator.IsNumber(period))continue;if(period<1)period=i+1;count=0;for(var j=i,k=0;j>=0&&k<period;--j,++k)//当前往前period天 统计
9518
+ */this.COUNT=function(data,n){if(Array.isArray(n)){var start=null;var dataCount=data.length;for(var i=0;i<dataCount;++i){if(this.IsNumber(data[i])){start=i;break;}}if(start==null)return[];var result=[];var count=0;for(var i=0;i<n.length;++i){var period=n[i];if(period==0){result[i]=0;continue;}if(!IFrameSplitOperator.IsNumber(period))period=i+1;//无效周期 第一个有效值开始.
9519
+ else if(period<0)period=i+1;count=0;for(var j=i,k=0;j>=0&&k<period;--j,++k)//当前往前period天 统计
9516
9520
  {if(data[j])++count;}result[i]=count;}return result;}else{var period=n;var dataCount=data.length;var period=period<1?dataCount:period;var i=0,j=0;for(;i<dataCount;++i)// 取第1个有效数据
9517
9521
  {if(this.IsNumber(data[i]))break;}var result=[];var days=0;for(;i<dataCount&&j<period;++i,++j){days=data[i]?days+1:days;result[i]=days;}for(;i<dataCount;++i){if(data[i-period]&&days)days--;days=data[i]?days+1:days;result[i]=days;}return result;}};/*
9518
9522
  HHV 最高值
@@ -9580,8 +9584,9 @@ this.CROSS=function(data,data2){var result=[];if(Array.isArray(data)&&Array.isAr
9580
9584
  CROSSUP(MA5,MA10),ICON(1,'ICO4');//MA5上穿MA10,标注红箭头。
9581
9585
  //CROSSUP(MA5,MA10),ICON(1,'ICO4'); 与 CROSSUP(MA5,MA10)=1,ICON(1,'ICO4');表达同等意义
9582
9586
  */this.CROSSUP=function(data,data2){return this.CROSS(data,data2);};//累乘
9583
- this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n)return result;if(n==0){var index=n;for(;index<data.length;++index){if(this.IsNumber(data[index])){result[index]=data[index];break;}}for(++index;index<data.length;++index){result[index]=result[index-1]*data[index];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]*=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!this.IsNumber(totalCount))continue;totalCount=parseInt(totalCount);if(totalCount<0)continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]*=data[j];}}}return result;};this.SUM=function(data,n){var result=[];if(!Array.isArray(n)){if(n==0){var start=-1;for(var i=0;i<data.length;++i)//取第1个有效数
9584
- {if(IFrameSplitOperator.IsNumber(data[i])){start=i;break;}}if(start<0)return result;result[start]=data[start];for(var i=start+1;i<data.length;++i){result[i]=result[i-1]+data[i];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]+=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!(totalCount>0))continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]+=data[j];}}}return result;};/*
9587
+ this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n)return result;if(n==0){var index=n;for(;index<data.length;++index){if(this.IsNumber(data[index])){result[index]=data[index];break;}}for(++index;index<data.length;++index){result[index]=result[index-1]*data[index];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]*=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!this.IsNumber(totalCount))continue;totalCount=parseInt(totalCount);if(totalCount<0)continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]*=data[j];}}}return result;};this.SUM=function(data,n){var result=[];if(!Array.isArray(n)){if(n<=0){var start=-1;for(var i=0;i<data.length;++i)//取第1个有效数
9588
+ {if(IFrameSplitOperator.IsNumber(data[i])){start=i;break;}}if(start<0)return result;result[start]=data[start];for(var i=start+1;i<data.length;++i){result[i]=result[i-1]+data[i];}}else{result[0]=data[0];for(var i=1;i<n&&i<data.length;++i)//前面小于N周期的累加
9589
+ {result[i]=result[i-1]+data[i];}for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]+=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!(totalCount>0))continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]+=data[j];}}}return result;};/*
9585
9590
  BARSCOUNT 有效数据周期数
9586
9591
  求总的周期数。
9587
9592
  用法: BARSCOUNT(X) 第一个有效数据到当前的天数。
@@ -10499,7 +10504,8 @@ if(bindData.Period>0)//周期数据
10499
10504
  {var periodData=this.Data.GetPeriodData(this.Period);this.Data.Data=periodData;}}this.Data.Right=this.Right;this.Data.Period=this.Period;this.Name=data.name;};this.RecvMinuteHistroyData=function(data){JSConsole.Complier.Log('[JSSymbolData::RecvMinuteHistroyData] recv data',data);var hisData=this.JsonDataToMinuteHistoryData(data);this.Data=new ChartData();this.Data.DataType=1;/*分钟线数据 */this.Data.Data=hisData;this.SourceData=new ChartData();this.SourceData.Data=hisData;if(this.IsApiPeriod)//后台周期 前端不处理
10500
10505
  {}else{if(ChartData.IsMinutePeriod(this.Period,false))//周期数据
10501
10506
  {var periodData=this.Data.GetPeriodData(this.Period);this.Data.Data=periodData;}}this.Data.Period=this.Period;this.Name=data.name;};//最新的分钟数据走势图
10502
- this.RecvMinuteData=function(data){JSConsole.Complier.Log('[JSSymbolData::RecvMinuteData] recv data',data);var aryMinuteData=this.JsonDataToMinuteData(data);this.Data=new ChartData();this.Data.DataType=2;/*分钟走势图数据 */this.Data.Data=aryMinuteData;this.Name=data.stock[0].name;};this.RecvMultiDayMinuteData=function(data){var aryMinuteData=this.JsonDataToMultiDayMinuteData(data);this.Data=new ChartData();this.Data.DataType=2;/*分钟走势图数据 */this.Data.Data=aryMinuteData;this.Name=data.name;};this.GetSymbolCacheData=function(dataName){if(!this.Data)return new Array();var upperSymbol=this.Symbol.toUpperCase();switch(dataName){case'CLOSE':case'C':return this.Data.GetClose();case'VOL':case'V':if(MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))return this.Data.GetVol(100);//A股的 把股转成手
10507
+ this.RecvMinuteData=function(data){JSConsole.Complier.Log('[JSSymbolData::RecvMinuteData] recv data',data);var aryMinuteData=this.JsonDataToMinuteData(data);this.Data=new ChartData();this.Data.DataType=2;/*分钟走势图数据 */this.Data.Data=aryMinuteData;this.Name=data.stock[0].name;};this.RecvMultiDayMinuteData=function(data){var aryMinuteData=this.JsonDataToMultiDayMinuteData(data);this.Data=new ChartData();this.Data.DataType=2;/*分钟走势图数据 */this.Data.Data=aryMinuteData;this.Name=data.name;};this.GetSymbolCacheData=function(dataName){if(!this.Data)return new Array();var upperSymbol=this.Symbol.toUpperCase();switch(dataName){case'CLOSE':case'C':return this.Data.GetClose();case'VOL':case'V':if(MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol)&&this.DataType==HQ_DATA_TYPE.KLINE_ID)//!! A股K线量单位时股,分时图单位还是手
10508
+ return this.Data.GetVol(100);//A股的 把股转成手
10503
10509
  return this.Data.GetVol();case'OPEN':case'O':return this.Data.GetOpen();case'HIGH':case'H':return this.Data.GetHigh();case'LOW':case'L':return this.Data.GetLow();case'AMOUNT':case'AMO':return this.Data.GetAmount();case"OPI"://文华 持仓量
10504
10510
  case'VOLINSTK'://通达信 持仓量
10505
10511
  return this.Data.GetPosition();case"ZSTJJ"://均价
@@ -12484,7 +12490,7 @@ function HQChartScriptWorker(){this.Create=function(){var _this60=this;addEventL
12484
12490
  hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,Stock:{Symbol:message.Symbol},Request:{MaxDataCount:500,MaxMinuteDayCount:5},Period:message.Period,Right:message.Right,Data:hisData};if(IFrameSplitOperator.IsNumber(message.HQDataType))stockObj.HQDataType=message.HQDataType;indexConsole.ExecuteScript(stockObj);};this.OnRecvMessage=function(message){var data=message.data;if(!data)return;if(data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT){if(!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex))return;for(var i=0;i<data.AryIndex.length;++i){var item=data.AryIndex[i];this.ExecuteScript(item,data);}}};this.OnExecuteFinish=function(data,indexInfo,jsExectute){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT};postMessage(message);};this.OnExecuteError=function(error,indexInfo){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
12485
12491
  * 版本信息输出
12486
12492
  *
12487
- */var HQCHART_VERSION="1.1.12471";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();//把给外界调用的方法暴露出来
12493
+ */var HQCHART_VERSION="1.1.12479";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();//把给外界调用的方法暴露出来
12488
12494
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12489
12495
  // BaseIndex:BaseIndex,
12490
12496
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "hqchart",
3
3
  "description": "stock chart",
4
4
  "author": "jones2000",
5
- "version": "1.1.12472",
5
+ "version": "1.1.12480",
6
6
  "main": "lib/main.js",
7
7
  "private": false,
8
8
  "license": "Apache License 2.0",
@@ -2428,6 +2428,9 @@ function JSAlgorithm(errorHandler,symbolData)
2428
2428
 
2429
2429
  if (i<data.length && i<data2.length)
2430
2430
  {
2431
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2432
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2433
+
2431
2434
  if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]>data2[i] ? 1:0);
2432
2435
  }
2433
2436
  }
@@ -2440,6 +2443,9 @@ function JSAlgorithm(errorHandler,symbolData)
2440
2443
  for(let i in data2)
2441
2444
  {
2442
2445
  result[i]=null;
2446
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
2447
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2448
+
2443
2449
  if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>data2[i] ? 1 : 0);
2444
2450
  }
2445
2451
  }
@@ -2448,6 +2454,9 @@ function JSAlgorithm(errorHandler,symbolData)
2448
2454
  for(let i in data)
2449
2455
  {
2450
2456
  result[i]=null;
2457
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2458
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
2459
+
2451
2460
  if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]>data2 ? 1 : 0);
2452
2461
  }
2453
2462
  }
@@ -2475,7 +2484,10 @@ function JSAlgorithm(errorHandler,symbolData)
2475
2484
 
2476
2485
  if (i<data.length && i<data2.length)
2477
2486
  {
2478
- if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]>=data2[i] ? 1:0);
2487
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2488
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2489
+
2490
+ result[i]=(data[i]>=data2[i] ? 1:0);
2479
2491
  }
2480
2492
  }
2481
2493
 
@@ -2487,7 +2499,10 @@ function JSAlgorithm(errorHandler,symbolData)
2487
2499
  for(let i in data2)
2488
2500
  {
2489
2501
  result[i]=null;
2490
- if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>=data2[i] ? 1 : 0);
2502
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
2503
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2504
+
2505
+ result[i]=(data>=data2[i] ? 1 : 0);
2491
2506
  }
2492
2507
  }
2493
2508
  else if (isNumber2 && Array.isArray(data)) //数组-单数据
@@ -2495,7 +2510,10 @@ function JSAlgorithm(errorHandler,symbolData)
2495
2510
  for(let i in data)
2496
2511
  {
2497
2512
  result[i]=null;
2498
- if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]>=data2 ? 1 : 0);
2513
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2514
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
2515
+
2516
+ result[i]=(data[i]>=data2 ? 1 : 0);
2499
2517
  }
2500
2518
  }
2501
2519
 
@@ -2522,7 +2540,10 @@ function JSAlgorithm(errorHandler,symbolData)
2522
2540
 
2523
2541
  if (i<data.length && i<data2.length)
2524
2542
  {
2525
- if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]<data2[i] ? 1:0);
2543
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2544
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2545
+
2546
+ result[i]=(data[i]<data2[i] ? 1:0);
2526
2547
  }
2527
2548
  }
2528
2549
 
@@ -2534,7 +2555,10 @@ function JSAlgorithm(errorHandler,symbolData)
2534
2555
  for(let i in data2)
2535
2556
  {
2536
2557
  result[i]=null;
2537
- if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<data2[i] ? 1 : 0);
2558
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
2559
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2560
+
2561
+ result[i]=(data<data2[i] ? 1 : 0);
2538
2562
  }
2539
2563
  }
2540
2564
  else if (isNumber2 && Array.isArray(data)) //数组-单数据
@@ -2542,7 +2566,10 @@ function JSAlgorithm(errorHandler,symbolData)
2542
2566
  for(let i in data)
2543
2567
  {
2544
2568
  result[i]=null;
2545
- if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]<data2 ? 1 : 0);
2569
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2570
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
2571
+
2572
+ result[i]=(data[i]<data2 ? 1 : 0);
2546
2573
  }
2547
2574
  }
2548
2575
 
@@ -2569,7 +2596,10 @@ function JSAlgorithm(errorHandler,symbolData)
2569
2596
 
2570
2597
  if (i<data.length && i<data2.length)
2571
2598
  {
2572
- if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]<=data2[i] ? 1:0);
2599
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2600
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2601
+
2602
+ result[i]=(data[i]<=data2[i] ? 1:0);
2573
2603
  }
2574
2604
  }
2575
2605
 
@@ -2581,7 +2611,10 @@ function JSAlgorithm(errorHandler,symbolData)
2581
2611
  for(let i in data2)
2582
2612
  {
2583
2613
  result[i]=null;
2584
- if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<=data2[i] ? 1 : 0);
2614
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
2615
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
2616
+
2617
+ result[i]=(data<=data2[i] ? 1 : 0);
2585
2618
  }
2586
2619
  }
2587
2620
  else if (isNumber2 && Array.isArray(data)) //数组-单数据
@@ -2589,7 +2622,10 @@ function JSAlgorithm(errorHandler,symbolData)
2589
2622
  for(let i in data)
2590
2623
  {
2591
2624
  result[i]=null;
2592
- if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]<=data2 ? 1 : 0);
2625
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
2626
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
2627
+
2628
+ result[i]=(data[i]<=data2 ? 1 : 0);
2593
2629
  }
2594
2630
  }
2595
2631
 
@@ -3676,9 +3712,16 @@ function JSAlgorithm(errorHandler,symbolData)
3676
3712
  for(var i=0;i<n.length;++i)
3677
3713
  {
3678
3714
  var period=n[i];
3679
- if (!IFrameSplitOperator.IsNumber(period)) continue;
3680
-
3681
- if (period<1) period=i+1;
3715
+
3716
+ if (period==0)
3717
+ {
3718
+ result[i]=0;
3719
+ continue;
3720
+ }
3721
+
3722
+ if (!IFrameSplitOperator.IsNumber(period) ) period=i+1; //无效周期 第一个有效值开始.
3723
+ else if (period<0) period=i+1;
3724
+
3682
3725
  count=0;
3683
3726
  for(var j=i, k=0 ;j>=0 && k<period ;--j,++k) //当前往前period天 统计
3684
3727
  {
@@ -4142,7 +4185,7 @@ function JSAlgorithm(errorHandler,symbolData)
4142
4185
 
4143
4186
  if (!Array.isArray(n))
4144
4187
  {
4145
- if (n==0)
4188
+ if (n<=0)
4146
4189
  {
4147
4190
  var start=-1;
4148
4191
  for(var i=0; i<data.length; ++i) //取第1个有效数
@@ -4165,6 +4208,12 @@ function JSAlgorithm(errorHandler,symbolData)
4165
4208
  }
4166
4209
  else
4167
4210
  {
4211
+ result[0]=data[0];
4212
+ for(var i=1;i<n && i<data.length;++i) //前面小于N周期的累加
4213
+ {
4214
+ result[i] = result[i-1]+data[i];
4215
+ }
4216
+
4168
4217
  for(var i=n-1,j=0;i<data.length;++i,++j)
4169
4218
  {
4170
4219
  for(var k=0;k<n;++k)
@@ -12587,7 +12636,7 @@ function JSSymbolData(ast,option,jsExecute)
12587
12636
  return this.Data.GetClose();
12588
12637
  case 'VOL':
12589
12638
  case 'V':
12590
- if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))
12639
+ if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol) && this.DataType==HQ_DATA_TYPE.KLINE_ID) //!! A股K线量单位时股,分时图单位还是手
12591
12640
  return this.Data.GetVol(100); //A股的 把股转成手
12592
12641
  return this.Data.GetVol();
12593
12642
  case 'OPEN':