hqchart 1.1.12928 → 1.1.12939

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.
@@ -50,7 +50,7 @@ JSNetwork.HttpReqeust=function(obj) //对请求进行封装
50
50
  Condition: 限制条件 { Symbol:'Index'/'Stock'(只支持指数/股票),Period:[](支持的周期), Include:[](指定支持的股票,代码全部大写包括后缀, Message:"提示信息")}
51
51
  OutName:动态输出变量名字 [{Name:原始变量名, DynamicName:动态名字格式}] 如 {Name:"MA1", DynamicName:"MA{M1}"};
52
52
  SplitType: Y轴分割类型,
53
- YAxis:{ FloatPrecision:小数位数, StringFormat: } //Y轴刻度输出格式
53
+ YAxis:{ FloatPrecision:小数位数, StringFormat:, EnableRemoveZero } //Y轴刻度输出格式
54
54
  *///周期条件枚举
55
55
  var CONDITION_PERIOD={MINUTE_ID:101,//分钟 走势图
56
56
  MULTIDAY_MINUTE_ID:102,//多日分钟 走势图
@@ -66,7 +66,9 @@ this.Get=function(id){if(!this.DataMap.has(id))return null;return this.DataMap.g
66
66
  ['五彩K线-十字星',this.COLOR_KSTAR1],['五彩K线-早晨之星',this.COLOR_KSTAR2],['五彩K线-黄昏之星',this.COLOR_KSTAR3],['五彩K线-长十字',this.COLOR_SHI1],['五彩K线-身怀六甲',this.COLOR_K220],['五彩K线-三个白武士',this.COLOR_K300],['五彩K线-三只乌鸦',this.COLOR_K310],['五彩K线-光头阳线',this.COLOR_K380],['五彩K线-光脚阴线',this.COLOR_K390],['五彩K线-垂死十字',this.COLOR_K134],['五彩K线-早晨十字星',this.COLOR_K140],['五彩K线-黄昏十字星',this.COLOR_K150],['五彩K线-射击之星',this.COLOR_K160],['五彩K线-倒转锤头',this.COLOR_K165],['五彩K线-锤头',this.COLOR_K170],['五彩K线-吊颈',this.COLOR_K180],['五彩K线-穿头破脚',this.COLOR_K190],['五彩K线-出水芙蓉',this.COLOR_CSFR],['五彩K线-乌云盖顶',this.COLOR_WYGD],['五彩K线-曙光初现',this.COLOR_SGCJ],['五彩K线-十字胎',this.COLOR_SZTAI],['五彩K线-剑',this.COLOR_SWORD],['五彩K线-平顶',this.COLOR_PINGDING],['五彩K线-平底',this.COLOR_PINGDI],['五彩K线-大阳烛',this.COLOR_DAYANZHU],['五彩K线-大阴烛',this.COLOR_DAYINGZHU],['五彩K线-好友反攻',this.COLOR_HYFG],['五彩K线-跳空缺口',this.COLOR_TKQK],['五彩K线-双飞乌鸦',this.COLOR_SFWY],['五彩K线-上升三部曲',this.COLOR_SSSBQ],['五彩K线-下跌三部曲',this.COLOR_XDSBQ],['五彩K线-长下影',this.COLOR_CHXY],['五彩K线-长上影',this.COLOR_CHSY],['五彩K线-分离',this.COLOR_FENLI],//交易系统
67
67
  ['交易系统-BIAS',this.TRADE_BIAS],['交易系统-CCI',this.TRADE_CCI],['交易系统-DMI',this.TRADE_DMI],['交易系统-KD',this.TRADE_KD],['交易系统-BOLL',this.TRADE_BOLL],['交易系统-KDJ',this.TRADE_KDJ],['交易系统-MA',this.TRADE_MA],['交易系统-MACD',this.TRADE_MACD],['交易系统-MTM',this.TRADE_MTM],['交易系统-PSY',this.TRADE_PSY],['交易系统-ROC',this.TRADE_ROC],['交易系统-RSI',this.TRADE_RSI],['交易系统-VR',this.TRADE_VR],['交易系统-DPSJ',this.TRADE_DPSJ],['TEST',this.TEST]//测试用
68
68
  ]);}JSIndexScript.AddIndex=function(aryIndex)//添加自定义指标
69
- {for(var i in aryIndex){g_CustomIndex.Add(aryIndex[i]);}};JSIndexScript.prototype.Get=function(id){var data=g_CustomIndex.Get(id);if(data)return data;var func=this.DataMap.get(id);if(func){var data=func();data.ID=id;return data;}return null;};JSIndexScript.prototype.Search=function(name){var result=[];var reg=new RegExp(name,'i');this.DataMap.forEach(function(value,key){if(key.indexOf('交易系统-')!=0&&key.indexOf('五彩K线-')!=0&&key.search(reg)>=0)result.push(key);});return result;};JSIndexScript.prototype.MA=function(){var data={Name:'MA',Description:'均线',IsMainIndex:true,StringFormat:2,Args:[{Name:'M1',Value:5},{Name:'M2',Value:10},{Name:'M3',Value:20}],OutName:[{Name:'MA1',DynamicName:"MA{M1}"},{Name:'MA2',DynamicName:"MA{M2}"},{Name:'MA3',DynamicName:"MA{M3}"}],Script://脚本
69
+ {for(var i in aryIndex){g_CustomIndex.Add(aryIndex[i]);}};//修改指标属性
70
+ JSIndexScript.ModifyAttribute=function(indexInfo,attribute){if(!attribute)return;if(attribute.Args)indexInfo.Args=attribute.Args;//外部可以设置参数
71
+ if(IFrameSplitOperator.IsNumber(attribute.FloatPrecision))indexInfo.FloatPrecision=attribute.FloatPrecision;if(IFrameSplitOperator.IsNumber(attribute.StringFormat))indexInfo.StringFormat=attribute.StringFormat;if(IFrameSplitOperator.IsBool(attribute.IsSync))indexInfo.IsSync=attribute.IsSync;if(IFrameSplitOperator.IsBool(attribute.IsShortTitle))indexInfo.IsShortTitle=attribute.IsShortTitle;if(attribute.TitleFont)indexInfo.TitleFont=attribute.TitleFont;if(attribute.Lock)indexInfo.Lock=attribute.Lock;if(IFrameSplitOperator.IsNumber(attribute.YSplitType))indexInfo.YSplitType=attribute.YSplitType;if(attribute.YAxis){var item=attribute.YAxis;if(!indexInfo.YAxis)indexInfo.YAxis={};if(IFrameSplitOperator.IsNumber(item.FloatPrecision))indexInfo.YAxis.FloatPrecision=item.FloatPrecision;if(IFrameSplitOperator.IsNumber(item.StringFormat))indexInfo.YAxis.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsBool(item.EnableRemoveZero))indexInfo.YAxis.EnableRemoveZero=item.EnableRemoveZero;}};JSIndexScript.prototype.Get=function(id){var data=g_CustomIndex.Get(id);if(data)return data;var func=this.DataMap.get(id);if(func){var data=func();data.ID=id;return data;}return null;};JSIndexScript.prototype.Search=function(name){var result=[];var reg=new RegExp(name,'i');this.DataMap.forEach(function(value,key){if(key.indexOf('交易系统-')!=0&&key.indexOf('五彩K线-')!=0&&key.search(reg)>=0)result.push(key);});return result;};JSIndexScript.prototype.MA=function(){var data={Name:'MA',Description:'均线',IsMainIndex:true,StringFormat:2,Args:[{Name:'M1',Value:5},{Name:'M2',Value:10},{Name:'M3',Value:20}],OutName:[{Name:'MA1',DynamicName:"MA{M1}"},{Name:'MA2',DynamicName:"MA{M2}"},{Name:'MA3',DynamicName:"MA{M3}"}],Script://脚本
70
72
  'MA1:MA(CLOSE,M1);\n\
71
73
  MA2:MA(CLOSE,M2);\n\
72
74
  MA3:MA(CLOSE,M3);'};return data;};JSIndexScript.prototype.MA4=function(){var data={Name:'MA',Description:'均线',IsMainIndex:true,StringFormat:2,Args:[{Name:'M1',Value:5},{Name:'M2',Value:10},{Name:'M3',Value:20},{Name:'M4',Value:60}],OutName:[{Name:'MA1',DynamicName:"MA{M1}"},{Name:'MA2',DynamicName:"MA{M2}"},{Name:'MA3',DynamicName:"MA{M3}"},{Name:'MA4',DynamicName:"MA{M4}"}],Script://脚本
@@ -1385,8 +1387,8 @@ var scriptData=new JSIndexScript();if(option.ColorIndex)//五彩K线
1385
1387
  }}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);//脚本执行
1386
1388
  }else if(item.JsonData){chart.WindowIndex[i]=new JsonDataIndex(item.Name,item.Script,item.Args,item);//脚本执行
1387
1389
  }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:指标执行地址 }
1388
- {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);//脚本执行
1389
- if(item.StringFormat>0)chart.WindowIndex[i].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;if(item.YAxis){if(!_indexInfo2.YAxis)_indexInfo2.YAxis={};if(IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision))_indexInfo2.YAxis.FloatPrecision=item.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(item.YAxis.StringFormat))_indexInfo2.YAxis.StringFormat=item.YAxis.StringFormat;if(IFrameSplitOperator.IsBool(item.YAxis.EnableRemoveZero))_indexInfo2.YAxis.EnableRemoveZero=item.YAxis.EnableRemoveZero;}}}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.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;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;}}//叠加指标宽度
1390
+ {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 scriptData=new JSIndexScript();var _indexInfo2=scriptData.Get(item.Index);if(!_indexInfo2)continue;JSIndexScript.ModifyAttribute(_indexInfo2,item);_indexInfo2.ID=item.Index;chart.WindowIndex[i]=new ScriptIndex(_indexInfo2.Name,_indexInfo2.Script,_indexInfo2.Args,_indexInfo2);//脚本执行
1391
+ 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.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;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;}}//叠加指标宽度
1390
1392
  if(option.OverlayIndexFrameWidth>40)chart.Frame.FixedRightWidth.Overlay=option.OverlayIndexFrameWidth;//叠加指标
1391
1393
  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线图
1392
1394
  this.CreateCustomKLineChartContainer=function(option){var chart=new CustomKLineChartContainer(this.CanvasElement);//创建改参数div
@@ -1451,8 +1453,8 @@ if(item.IsShowRightText==false)chart.Frame.SubFrame[i].Frame.YSplitOperator.IsSh
1451
1453
  }}if(option.KLine){if(option.KLine.ShowKLine==false)chart.ChartPaint[0].IsShow=false;if(option.KLine.InfoPosition>0)chart.ChartPaint[0].InfoPosition=option.KLine.InfoPosition;if(option.KLine.IsShowMaxMinPrice==false)chart.ChartPaint[0].IsShowMaxMinPrice=option.KLine.IsShowMaxMinPrice;}if(option.KLineTitle)//股票名称 日期 周期
1452
1454
  {if(option.KLineTitle.IsShowName==false)chart.TitlePaint[0].IsShowName=false;if(option.KLineTitle.IsShowSettingInfo==false)chart.TitlePaint[0].IsShowSettingInfo=false;if(option.KLineTitle.IsShow==false)chart.TitlePaint[0].IsShow=false;}if(IFrameSplitOperator.IsNonEmptyArray(option.Overlay))//叠加股票
1453
1455
  {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)){//创建子窗口的指标
1454
- 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);//脚本执行
1455
- }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);//脚本执行
1456
+ 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);//脚本执行
1457
+ }else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[i]=indexItem.Create();chart.CreateWindowIndex(i);}else{var scriptData=new JSIndexScript();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);//脚本执行
1456
1458
  }}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;};//深度图
1457
1459
  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;//显示左边刻度
1458
1460
  }if(item.IsShowRightText===false||item.IsShowRightText===true){chart.Frame.IsShowYText[1]=item.IsShowRightText;chart.Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
@@ -2075,7 +2077,7 @@ this.Frame.SetSizeChage(true);if(this.UpdateXShowText)this.UpdateXShowText();thi
2075
2077
  this.Draw();return index;};//增加一个指标窗口
2076
2078
  this.AddIndexWindow=function(indexName,option){//查找系统指标
2077
2079
  var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;this.RemoveMinSizeWindows();//清空隐藏的指标
2078
- var index=this.AddNewSubFrame(option);if(option){if(option.FloatPrecision>=0)indexInfo.FloatPrecision=option.FloatPrecision;if(option.StringFormat>0)indexInfo.StringFormat=option.StringFormat;if(option.Args)indexInfo.Args=option.Args;if(option.Lock)indexInfo.Lock=option.Lock;if(option.YAxis){indexInfo.YAxis={};if(IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision))indexInfo.YAxis.FloatPrecision=option.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(option.YAxis.StringFormat))indexInfo.YAxis.StringFormat=option.YAxis.StringFormat;if(IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero))indexInfo.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;}}this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
2080
+ var index=this.AddNewSubFrame(option);JSIndexScript.ModifyAttribute(indexInfo,option);this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
2079
2081
  if(this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenContainer")var bindData=this.SourceData;else var bindData=this.ChartPaint[0].Data;this.BindIndexData(index,bindData);//执行脚本
2080
2082
  };this.AddAPIIndexWindow=function(indexData,option){if(!indexData.API)return;this.RemoveMinSizeWindows();//清空隐藏的指标
2081
2083
  var index=this.AddNewSubFrame(option);//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
@@ -2088,7 +2090,9 @@ if(this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenCo
2088
2090
  };//区间选择
2089
2091
  this.GetRectSelectPaint=function(){for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.ClassName=="RectSelectPaint")return item;}return null;};this.SetRectSelectData=function(kItem,index){var paint=this.GetRectSelectPaint();if(!paint)return false;if(paint.GetPointCount()==2){if(!paint.SpaceReselected)return false;var oldPreventClose=paint.PreventClose;//备份下
2090
2092
  paint.PreventClose=false;paint.ClearPoint();paint.PreventClose=oldPreventClose;//还原
2091
- }return paint.SetPoint(kItem,{DataIndex:index});};this.MoveRectSelectPoint=function(obj){var paint=this.GetRectSelectPaint();if(!paint)return false;if(!this.ChartPaint[0]||!this.ChartPaint[0].Data)return false;var kData=this.ChartPaint[0].Data;if(!this.Frame.SubFrame[0])return false;var subFrame=this.Frame.SubFrame[0].Frame;if(!subFrame)false;var pixelTatio=GetDevicePixelRatio();var x=(obj.X-uielement.getBoundingClientRect().left)*pixelTatio;var index=subFrame.GetXData(x);index=parseInt(index.toFixed(0));var dataIndex=index+kData.DataOffset;if(dataIndex>=kData.Data.length)dataIndex=kData.Data.length-1;var item=kData.Data[dataIndex];JSConsole.Chart.Log("[KLineChartContainer::MoveRectSelectPoint] point, item",obj.PointIndex,item);if(!paint.SetPoint(item,{Index:obj.PointIndex,DataIndex:dataIndex}))return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAG_SELECT_RECT);if(event){var selectData=paint.GetSelectRectData();var data={X:obj.X,Y:obj.Y,SelectData:selectData,RectSelectPaint:paint};event.Callback(event,data,this);}return true;};this.MoveSubRectSelect=function(obj){var paint=this.GetRectSelectPaint();if(!paint)return false;if(!paint.MoveSubRect(obj.Step,obj.IsLeft))return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAG_SUB_SELECT_RECT);if(event){var subRectData={Start:paint.SubClient.FirstPoint,End:paint.SubClient.SecondPoint};var data={X:obj.X,Y:obj.Y,SubRectSelectData:subRectData,RectSelectPaint:paint};event.Callback(event,data,this);}return true;};this.ClearRectSelect=function(bEnforce){var paint=this.GetRectSelectPaint();if(!paint)return false;if(bEnforce)paint.PreventClose=false;return paint.ClearPoint();};//删除叠加指标, 没有重绘
2093
+ }return paint.SetPoint(kItem,{DataIndex:index});};this.MoveRectSelectPoint=function(obj){var paint=this.GetRectSelectPaint();if(!paint)return false;if(!this.ChartPaint[0]||!this.ChartPaint[0].Data)return false;var kData=this.ChartPaint[0].Data;if(!this.Frame.SubFrame[0])return false;var subFrame=this.Frame.SubFrame[0].Frame;if(!subFrame)false;var pixelTatio=GetDevicePixelRatio();var x=(obj.X-uielement.getBoundingClientRect().left)*pixelTatio;var index=subFrame.GetXData(x);index=parseInt(index.toFixed(0));var dataIndex=index+kData.DataOffset;if(dataIndex>=kData.Data.length)dataIndex=kData.Data.length-1;var item=kData.Data[dataIndex];JSConsole.Chart.Log("[KLineChartContainer::MoveRectSelectPoint] point, item",obj.PointIndex,item);if(!paint.SetPoint(item,{Index:obj.PointIndex,DataIndex:dataIndex}))return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAG_SELECT_RECT);if(event){var selectData=paint.GetSelectRectData();var data={X:obj.X,Y:obj.Y,SelectData:selectData,RectSelectPaint:paint};event.Callback(event,data,this);}return true;};this.MoveSubRectSelect=function(obj){var paint=this.GetRectSelectPaint();if(!paint)return false;if(!paint.MoveSubRect(obj.Step,obj.IsLeft))return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DRAG_SUB_SELECT_RECT);if(event){var subRectData={Start:paint.SubClient.FirstPoint,End:paint.SubClient.SecondPoint};var data={X:obj.X,Y:obj.Y,SubRectSelectData:subRectData,RectSelectPaint:paint};event.Callback(event,data,this);}return true;};this.ClearRectSelect=function(bEnforce){var paint=this.GetRectSelectPaint();if(!paint)return false;if(bEnforce)paint.PreventClose=false;return paint.ClearPoint();};//删除指定窗口的所有叠加指标
2094
+ this.DeleteWindowsOverlayIndex=function(windowIndex){if(!IFrameSplitOperator.IsNumber(windowIndex))return;if(windowIndex<0||windowIndex>=this.Frame.SubFrame.length)return;var subFrame=this.Frame.SubFrame[windowIndex];if(!IFrameSplitOperator.IsNonEmptyArray(subFrame.OverlayIndex))return;var aryIndexID=[];for(var i=0;i<subFrame.OverlayIndex.length;++i){var overlayItem=subFrame.OverlayIndex[i];aryIndexID.push(overlayItem.Identify);for(var j=0;j<overlayItem.ChartPaint.length;++j)//图形销毁事件
2095
+ {var overlayChart=overlayItem.ChartPaint[j];if(overlayChart&&overlayChart.OnDestroy)overlayChart.OnDestroy();}overlayItem.ChartPaint=[];}subFrame.OverlayIndex=[];var titlePaint=this.TitlePaint[windowIndex+1];for(var i=0;i<aryIndexID.length;++i){var identify=aryIndexID[i];if(titlePaint.OverlayIndex.has(identify))titlePaint.OverlayIndex.delete(identify);if(titlePaint.OverlayDynamicTitle.has(identify))titlePaint.OverlayDynamicTitle.delete(identify);}};//删除叠加指标, 没有重绘
2092
2096
  this.DeleteOverlayIndex=function(identify,windowIndex){var findIndex=null;if(IFrameSplitOperator.IsNumber(windowIndex)){if(windowIndex>=0&&windowIndex<this.Frame.SubFrame.length){var item=this.Frame.SubFrame[windowIndex];for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Identify===identify){for(var k=0;k<overlayItem.ChartPaint.length;++k)//图形销毁事件
2093
2097
  {var overlayChart=overlayItem.ChartPaint[k];if(overlayChart&&overlayChart.OnDestroy)overlayChart.OnDestroy();}item.OverlayIndex.splice(j,1);findIndex=windowIndex;break;}}}}else{for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Identify===identify){for(var k=0;k<overlayItem.ChartPaint.length;++k)//图形销毁事件
2094
2098
  {var overlayChart=overlayItem.ChartPaint[k];if(overlayChart&&overlayChart.OnDestroy)overlayChart.OnDestroy();}item.OverlayIndex.splice(j,1);findIndex=i;break;}}}}if(findIndex==null){console.warn('[JSChartContainer::DeleteOverlayIndex] can\'t find overlay index. [identify='+identify+']');return false;}var windowsIndex=findIndex+1;var titlePaint=this.TitlePaint[windowsIndex];if(titlePaint.OverlayIndex.has(identify))titlePaint.OverlayIndex.delete(identify);if(titlePaint.OverlayDynamicTitle.has(identify))titlePaint.OverlayDynamicTitle.delete(identify);return true;};this.FindScriptIndex=function(guid,windowsIndex){if(IFrameSplitOperator.IsNumber(windowsIndex)&&windowsIndex>=0){if(windowsIndex>=this.Frame.SubFrame.length)return null;var item=this.WindowIndex[windowsIndex];if(item&&item.Guid==guid)return{Type:0,Data:item,WindowIndex:windowsIndex};var item=this.Frame.SubFrame[windowsIndex];for(var i=0;i<item.OverlayIndex.length;++i){var overlayItem=item.OverlayIndex[i];if(overlayItem.Identify===guid)return{Type:1,Data:overlayItem,WindowIndex:windowsIndex,OverlayIndex:i};}}else{for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.WindowIndex[i];if(item&&item.Guid==guid)return{Type:0,Data:item,WindowIndex:i};var item=this.Frame.SubFrame[i];for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Identify===guid)return{Type:1,Data:overlayItem,WindowIndex:i,OverlayIndex:j};}}}return null;};//移动指标 src={ WindowIndex:指标窗口索引,IndexID:指标ID } dest={ WindowIndex:指标窗口索引 } , option={ Operator: 0=移动, 1=复制 }
@@ -2883,7 +2887,7 @@ if(option&&option.IsEnableSplash===true)isSplash=true;if(isSplash==false&&(this.
2883
2887
  {var rightTextInfo={};var blank=0;if(IFrameSplitOperator.IsNumber(this.AutoRightBorder.Blank))blank=this.AutoRightBorder.Blank;var value=textWidth.Right+blank;if(IFrameSplitOperator.IsNumber(this.AutoRightBorder.MinWidth)){if(this.AutoRightBorder.MinWidth>value)value=this.AutoRightBorder.MinWidth;}this.AuotRightWidth=value;rightTextInfo.MainTextWidth=value;//主图坐标宽度
2884
2888
  if(IFrameSplitOperator.IsNonEmptyArray(textWidth.AryOverlayWidth))rightTextInfo.AryOverlayWidth=textWidth.AryOverlayWidth;if(IFrameSplitOperator.IsPlusNumber(textWidth.OverlayRight)){this.AuotRightWidth=value;value+=textWidth.OverlayRight;}if(this.GetExtendChartRightWidth){var extendWidth=this.GetExtendChartRightWidth();if(this.GetExtendChartByClassName){var finder=this.GetExtendChartByClassName("StockChip");if(finder&&finder.Chart){finder.Chart.Left=value;}}value+=extendWidth;}if(this.IsHScreen){if(this.ChartBorder.Bottom!=value)bSizeChange=true;this.ChartBorder.Bottom=value;}else{if(this.ChartBorder.Right!=value)bSizeChange=true;this.ChartBorder.Right=value;}for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(this.IsHScreen)item.Frame.ChartBorder.Bottom=value;else item.Frame.ChartBorder.Right=value;item.Frame.ReDrawToolbar=true;item.Frame.YRightTextInfo=rightTextInfo;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];overlayItem.Frame.YRightTextInfo=rightTextInfo;}}}else{var rightTextInfo={};rightTextInfo.MainTextWidth=this.FixedRightWidth.Main;if(textWidth.OverlayRight==0)//无叠加直接最右边
2885
2889
  {if(this.IsHScreen)rightTextInfo.MainTextWidth=this.ChartBorder.Bottom;else rightTextInfo.MainTextWidth=this.ChartBorder.Right;}else if(IFrameSplitOperator.IsNonEmptyArray(textWidth.AryOverlayWidth)){for(var i=0;i<textWidth.AryOverlayWidth.length;++i){textWidth.AryOverlayWidth[i]=this.FixedRightWidth.Overlay;}rightTextInfo.AryOverlayWidth=textWidth.AryOverlayWidth;}for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];item.Frame.ReDrawToolbar=true;item.Frame.YRightTextInfo=rightTextInfo;for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];overlayItem.Frame.YRightTextInfo=rightTextInfo;}}}}this.SetSizeChage(true);}for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Height<=0)continue;item.Frame.Draw();if(this.AutoRightBorder){var rightOffset=this.AuotRightWidth;for(var j=0,index=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];//把主坐标部分设置给子坐标下来
2886
- overlayItem.Frame.DataWidth=item.Frame.DataWidth;overlayItem.Frame.DistanceWidth=item.Frame.DistanceWidth;overlayItem.Frame.XPointCount=item.Frame.XPointCount;overlayItem.Frame.RightOffset=rightOffset;overlayItem.Frame.BlankWidth=0;overlayItem.Frame.TextWidthIndex=index;if(IFrameSplitOperator.IsNumber(this.OverlayBlankWidth))overlayItem.Frame.BlankWidth=this.OverlayBlankWidth;overlayItem.Frame.Draw();rightOffset+=overlayItem.RightWidth.Width;if(overlayItem.Frame.IsShow)++index;}}else{var rightOffset=this.FixedRightWidth.Main;if(item.Frame.RightTextMaxWidth>rightOffset)rightOffset=item.Frame.RightTextMaxWidth;for(var j=0,index=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];//把主坐标部分设置给子坐标下来
2890
+ overlayItem.Frame.DataWidth=item.Frame.DataWidth;overlayItem.Frame.DistanceWidth=item.Frame.DistanceWidth;overlayItem.Frame.XPointCount=item.Frame.XPointCount;overlayItem.Frame.RightOffset=rightOffset;overlayItem.Frame.BlankWidth=0;overlayItem.Frame.TextWidthIndex=index;if(IFrameSplitOperator.IsNumber(this.OverlayBlankWidth))overlayItem.Frame.BlankWidth=this.OverlayBlankWidth;overlayItem.Frame.Draw();if(overlayItem.RightWidth)rightOffset+=overlayItem.RightWidth.Width;if(overlayItem.Frame.IsShow)++index;}}else{var rightOffset=this.FixedRightWidth.Main;if(item.Frame.RightTextMaxWidth>rightOffset)rightOffset=item.Frame.RightTextMaxWidth;for(var j=0,index=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];//把主坐标部分设置给子坐标下来
2887
2891
  overlayItem.Frame.DataWidth=item.Frame.DataWidth;overlayItem.Frame.DistanceWidth=item.Frame.DistanceWidth;overlayItem.Frame.XPointCount=item.Frame.XPointCount;overlayItem.Frame.RightOffset=rightOffset;overlayItem.Frame.BlankWidth=0;overlayItem.Frame.TextWidthIndex=index;if(IFrameSplitOperator.IsNumber(this.OverlayBlankWidth))overlayItem.Frame.BlankWidth=this.OverlayBlankWidth;overlayItem.Frame.Draw();if(overlayItem.Frame.IsShow){rightOffset+=this.FixedRightWidth.Overlay;++index;}}}}this.SizeChange=false;};this.DrawOveraly=function(bDrawFirst){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Height<=0)continue;//高度是0 不画
2888
2892
  for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];for(var k=0;k<overlayItem.ChartPaint.length;++k){var chartItem=overlayItem.ChartPaint[k];if(chartItem.IsShow){if(bDrawFirst){if(chartItem.IsDrawFirst)chartItem.Draw();}else{if(!chartItem.IsDrawFirst)chartItem.Draw();}}}}}};this.DrawOveralySelectedStatus=function(selectedInfo){if(!selectedInfo.MoveOn.Identify&&!selectedInfo.Selected.Identify)return;for(var i in this.SubFrame){var item=this.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];for(var k in overlayItem.ChartPaint){var chart=overlayItem.ChartPaint[k];if(!chart.IsShow)continue;if(!chart.Identify)continue;if(chart.Identify!=selectedInfo.MoveOn.Identify&&chart.Identify!=selectedInfo.Selected.Identify)continue;if(chart.DrawSelectedStatus)chart.DrawSelectedStatus();}}}};this.PtInOveralyChart=function(x,y){var result=null;for(var i in this.SubFrame){var item=this.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];for(var k in overlayItem.ChartPaint){var chart=overlayItem.ChartPaint[k];if(!chart.IsShow)continue;if(chart.IsHideScriptIndex())continue;if(chart.PtInChart){result=chart.PtInChart(x,y);if(result)return result;}}}}return null;};this.DrawPictureCoordinate=function(drawPicture,option){if(!drawPicture||!drawPicture.Frame)return false;if(!IFrameSplitOperator.IsNonEmptyArray(drawPicture.Point))return false;if(!drawPicture.GetXYCoordinate)return false;var range=drawPicture.GetXYCoordinate();drawPicture.Frame.DrawPictureYCoordinate(drawPicture,range,option);for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(!item||!item.Frame)continue;if(!item.Frame.XSplitOperator.ShowText)continue;item.Frame.DrawPictureXCoordinate(drawPicture,range,option);break;}return true;};this.DrawLock=function(){for(var i in this.SubFrame){var item=this.SubFrame[i];item.Frame.DrawLock();}};this.DrawLogo=function(){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Frame.DrawLogo){item.Frame.DrawLogo();break;}}};this.CalculateLock=function(){for(var i in this.SubFrame){var item=this.SubFrame[i];item.Frame.CalculateLock();}};this.DrawInsideHorizontal=function(){for(var i in this.SubFrame){var item=this.SubFrame[i];if(item.Frame.DrawInsideHorizontal)item.Frame.DrawInsideHorizontal();}};this.DrawCustomHorizontal=function()//定制Y轴自定义刻度
2889
2893
  {for(var i in this.SubFrame){var item=this.SubFrame[i];if(item.Frame.DrawCustomHorizontal)item.Frame.DrawCustomHorizontal();for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];if(overlayItem.Frame&&overlayItem.Frame.DrawCustomHorizontal)overlayItem.Frame.DrawCustomHorizontal();}}};this.DrawEx=function(option){for(var i in this.SubFrame){var item=this.SubFrame[i];if((item.Frame.ClassName=="MinuteFrame"||item.Frame.ClassName=="MinuteHScreenFrame")&&i==1){item.Frame.DrawVolTitle(option.Symbol);}}};this.DrawCustomVertical=function(event){for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];item.Frame.DrawCustomVerticalEvent=event;if(item.Frame.DrawCustomVertical)item.Frame.DrawCustomVertical();}};this.DrawToolbar=function(mouseStatus){var moveonPoint=null;if(mouseStatus&&mouseStatus.MoveOnPoint)moveonPoint=mouseStatus.MoveOnPoint;for(var i=0;i<this.SubFrame.length;++i){var item=this.SubFrame[i];if(item.Height<=0)continue;var frame=item.Frame;if(!frame)continue;if(frame.ToolbarButtonStyle==1){if(frame.DrawToolbarV2)frame.DrawToolbarV2(moveonPoint,mouseStatus);}for(var j=0;j<item.OverlayIndex.length;++j){var overlayItem=item.OverlayIndex[j];var overlayFrame=overlayItem.Frame;if(!overlayFrame.IsShow)continue;if(overlayFrame.DrawToolbar)overlayFrame.DrawToolbar(moveonPoint,frame.IsMinSize,mouseStatus);}}};this.SetSizeChage=function(sizeChange){this.SizeChange=sizeChange;for(var i in this.SubFrame){var item=this.SubFrame[i];item.Frame.SizeChange=sizeChange;for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];if(overlayItem.Frame)overlayItem.Frame.SizeChange=sizeChange;}}//画布的位置
@@ -4994,7 +4998,7 @@ if(!pageInfo)return;if(!this.OverlayIndex)return;if(!IFrameSplitOperator.IsNonEm
4994
4998
  info.IsLast=pageInfo.IsLast;//是否是最后一个数据
4995
4999
  if(IFrameSplitOperator.IsNumber(option.LineType))info.LineType=option.LineType;info.Value=item.Value;var text=IFrameSplitOperator.FormatValueString(item.Value,floatPrecision,this.LanguageID);if(option.Position=='left')info.Message[0]=text;else info.Message[1]=text;if(!pageInfo.IsLast){var config={};if(!pageInfo.IsLast)config.EmptyBGColor=g_JSChartResource.FrameLatestPrice.EmptyBGColor;info.ExtendData={Custom:config};}if(event){var sendData={PreventDefault:false,Label:info,Data:item,IndexName:chart.IndexName,OverlayIdentify:this.OverlayIndex.Identify};event.Callback(event,sendData,this);if(sendData.PreventDefault)continue;}this.Frame.CustomHorizontalInfo.push(info);}}},//回调外部处理自定义Y轴刻度
4996
5000
  this.InvokeCustomYCoordinateCallback=function(){if(!this.GetEventCallback)return null;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_CUSTOM_Y_COORDINATE);if(!event||!event.Callback)return null;var data={ID:this.Frame.Identify,Frame:this.Frame,PreventDefault:false,Custom:this.Custom};if(this.OverlayIdentify)data.OverlayIdentify=this.OverlayIdentify;event.Callback(event,data,this);return data;};this.Reset=function()//重置
4997
- {};}//字符串格式化 千分位分割
5001
+ {};this.SetOption=function(option){};}//字符串格式化 千分位分割
4998
5002
  IFrameSplitOperator.FormatValueThousandsString=function(value,floatPrecision){if(value==null||isNaN(value)){if(floatPrecision>0){var nullText='-.';for(var i=0;i<floatPrecision;++i){nullText+='-';}return nullText;}return'--';}var result='';var num=value.toFixed(floatPrecision);if(floatPrecision>0){var numFloat=num.split('.')[1];var numM=num.split('.')[0];while(numM.length>3){result=','+numM.slice(-3)+result;numM=numM.slice(0,numM.length-3);}if(numM){result=numM+result+'.'+numFloat;}}else{while(num.length>3){result=','+num.slice(-3)+result;num=num.slice(0,num.length-3);}if(num){result=num+result;}}return result;};//数据输出格式化 floatPrecision=小数位数
4999
5003
  IFrameSplitOperator.FormatValueString=function(value,floatPrecision,languageID){/*
5000
5004
  if (value==null || isNaN(value))
@@ -5158,11 +5162,12 @@ this.FloatPrecision=2;//坐标小数位数(默认2)
5158
5162
  this.FLOATPRECISION_RANGE=[1,0.1,0.01,0.001,0.0001];this.SplitType=0;//0=自动分割 1=固定分割 2=堆积图(0-100)
5159
5163
  this.DefaultSplitType=0;this.Custom=[];//[{Type:0}]; 定制刻度
5160
5164
  this.DefaultYMaxMin;//{ Max:null, Min:null }; //指定最大,最小, Y轴范围必须比最大值大, 比最小值小
5161
- this.EnableRemoveZero=true;this.LineType=null;//线段样式
5165
+ this.EnableRemoveZero=g_JSChartResource.Frame.EnableRemoveZero;this.LineType=null;//线段样式
5162
5166
  this.IgnoreYValue=null;//在这个数组里的数字不显示在刻度上
5163
5167
  this.FixedYMaxMin;//{ Max, Min} 固定Y轴最大最小值
5164
5168
  this.EnableZoomUpDown=false;this.IsBeforeData=false;this.BeforeOpenData;this.IsAfterData=false;this.AfterCloseData;this.ShareAfterVol=0;this.MultiDayBeforeOpenData;this.MultiDayAfterCloseData;this.OverlayIdentify;this.HQChart;this.OverlayIndex;//叠加指标信息
5165
- this.IsEnableDragY=function(){return true;};this.GetFloatPrecision=function(value,floatPrecision){if(value>this.FLOATPRECISION_RANGE[0])return floatPrecision;if(floatPrecision<0)return 2;for(;floatPrecision<this.FLOATPRECISION_RANGE.length;++floatPrecision){if(value>this.FLOATPRECISION_RANGE[floatPrecision])break;}return floatPrecision;};this.Operator=function(){var splitData={};splitData.Max=this.Frame.HorizontalMax;splitData.Min=this.Frame.HorizontalMin;if(this.Frame.YMaxMin)//原始的数据范围
5169
+ this.IsEnableDragY=function(){return true;};this.Reset=function()//重置
5170
+ {this.EnableRemoveZero=g_JSChartResource.Frame.EnableRemoveZero;this.StringFormat=g_JSChartResource.Frame.StringFormat;};this.SetOption=function(option){if(!option)return;if(IFrameSplitOperator.IsNumber(option.FloatPrecision))this.FloatPrecision=option.FloatPrecision;if(IFrameSplitOperator.IsNumber(option.StringFormat))this.StringFormat=option.StringFormat;if(IFrameSplitOperator.IsBool(option.EnableRemoveZero))this.EnableRemoveZero=option.EnableRemoveZero;};this.GetFloatPrecision=function(value,floatPrecision){if(value>this.FLOATPRECISION_RANGE[0])return floatPrecision;if(floatPrecision<0)return 2;for(;floatPrecision<this.FLOATPRECISION_RANGE.length;++floatPrecision){if(value>this.FLOATPRECISION_RANGE[floatPrecision])break;}return floatPrecision;};this.Operator=function(){var splitData={};splitData.Max=this.Frame.HorizontalMax;splitData.Min=this.Frame.HorizontalMin;if(this.Frame.YMaxMin)//原始的数据范围
5166
5171
  {var item=this.Frame.YMaxMin;if(IFrameSplitOperator.IsNumber(item.Max)&&IFrameSplitOperator.IsNumber(item.Min)){splitData.Max=item.Max;splitData.Min=item.Min;}}if(splitData.Max==splitData.Min)//如果一样上下扩大下
5167
5172
  {if(splitData.Max==0){splitData.Max=1;splitData.Min=-1;}else{splitData.Max+=splitData.Max*0.01;splitData.Min-=splitData.Min*0.01;}}var isFixedMaxMin=false;if(this.FixedYMaxMin&&IFrameSplitOperator.IsNumber(this.FixedYMaxMin.Max)&&IFrameSplitOperator.IsNumber(this.FixedYMaxMin.Min))isFixedMaxMin=true;if(isFixedMaxMin){splitData.Max=this.FixedYMaxMin.Max;splitData.Min=this.FixedYMaxMin.Min;}else if(this.DefaultYMaxMin)//指定最小的Y轴范围
5168
5173
  {var range=this.DefaultYMaxMin;if(IFrameSplitOperator.IsNumber(range.Max)){if(splitData.Min>range.Max)splitData.Min=range.Max;else if(splitData.Max<range.Max)splitData.Max=range.Max;}if(IFrameSplitOperator.IsNumber(range.Min)){if(splitData.Max<range.Min)splitData.Max=range.Min;else if(splitData.Min>range.Min)splitData.Min=range.Min;}}if(this.Frame.YSpecificMaxMin){splitData.Count=this.Frame.YSpecificMaxMin.Count;splitData.Interval=(splitData.Max-splitData.Min)/(splitData.Count-1);}else if(this.SplitType==1||isFixedMaxMin){splitData.Count=this.SplitCount;splitData.Interval=(splitData.Max-splitData.Min)/(splitData.Count-1);}else if(this.SplitType==2){splitData.Max=100;splitData.Min=0;splitData.Count=this.SplitCount;splitData.Interval=(splitData.Max-splitData.Min)/(splitData.Count-1);}else{splitData.Count=this.SplitCount;splitData.Interval=(splitData.Max-splitData.Min)/(splitData.Count-1);this.IntegerCoordinateSplit(splitData);}this.Frame.HorizontalMax=splitData.Max;this.Frame.HorizontalMin=splitData.Min;this.Frame.HorizontalInfo=[];if(this.Frame.YSplitScale)//固定坐标
@@ -6518,7 +6523,8 @@ this.FrameSplitTextFont=14*GetDevicePixelRatio()+"px 微软雅黑";//坐标刻
6518
6523
  this.FrameTitleBGColor="rgb(246,251,253)";//标题栏背景色
6519
6524
  this.SelFrameBorderColor='rgb(130, 130, 130)';this.Frame={XBottomOffset:2*GetDevicePixelRatio(),//X轴文字向下偏移
6520
6525
  YTopOffset:2*GetDevicePixelRatio(),//Y轴顶部文字向下偏移
6521
- YTextPadding:[2,2]};this.ToolbarButtonStyle=0;this.FrameLogo={TextColor:'rgb(178,34,34)',Font:"bold "+16*GetDevicePixelRatio()+"px 微软雅黑",Text:"*仅学习使用*",//不要修改声明, 任何修改声明产生的任何法律责任由修改者自行独立承担,与HQChart插件作者无关。
6526
+ YTextPadding:[2,2],EnableRemoveZero:true,//移除小数点后面的0
6527
+ StringFormat:0};this.ToolbarButtonStyle=0;this.FrameLogo={TextColor:'rgb(178,34,34)',Font:"bold "+16*GetDevicePixelRatio()+"px 微软雅黑",Text:"*仅学习使用*",//不要修改声明, 任何修改声明产生的任何法律责任由修改者自行独立承担,与HQChart插件作者无关。
6522
6528
  BGColor:"rgba(230,230,230, 0.5)"};//百分比坐标文字颜色
6523
6529
  this.Frame.PercentageText={PriceColor:'rgb(117,125,129)',PercentageColor:"rgb(117,125,129)",SplitColor:"rgb(117,125,129)",Font:14*GetDevicePixelRatio()+"px 微软雅黑"};//对数坐标
6524
6530
  this.FrameLogarithmic={OpenPriceFont:"bold "+14*GetDevicePixelRatio()+"px 微软雅黑",//开盘价刻度文字字体
@@ -7267,7 +7273,7 @@ this.ChangeIndex=function(windowIndex,indexName,option){if(option&&option.API)//
7267
7273
  return this.ChangeAPIIndex(windowIndex,option);var indexItem=JSIndexMap.Get(indexName);if(!indexItem){//查找系统指标
7268
7274
  var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;if(indexInfo.IsMainIndex){windowIndex=0;//主图指标只能在主图显示
7269
7275
  }else{if(windowIndex==0)windowIndex=1;//幅图指标,不能再主图显示
7270
- }var indexData=indexInfo;if(option){if(option.FloatPrecision>=0)indexData.FloatPrecision=option.FloatPrecision;if(option.StringFormat>0)indexData.StringFormat=option.StringFormat;if(option.Args)indexData.Args=option.Args;if(option.TitleFont)indexData.TitleFont=option.TitleFont;if(option.IsShortTitle)indexData.IsShortTitle=option.IsShortTitle;if(option.Lock)indexData.Lock=option.Lock;}return this.ChangeScriptIndex(windowIndex,indexData,option);}//主图指标
7276
+ }JSIndexScript.ModifyAttribute(indexInfo,option);return this.ChangeScriptIndex(windowIndex,indexInfo,option);}//主图指标
7271
7277
  if(indexItem.IsMainIndex){if(windowIndex>0)windowIndex=0;//主图指标只能在主图显示
7272
7278
  }else{if(windowIndex==0)windowIndex=1;//幅图指标,不能再主图显示
7273
7279
  }var paint=new Array();//踢出当前窗口的指标画法
@@ -7295,8 +7301,7 @@ if(IFrameSplitOperator.IsBool(obj.IsShareY))frame.IsShareY=obj.IsShareY;if(IFram
7295
7301
  frame.YSplitOperator=new FrameSplitY();frame.YSplitOperator.LanguageID=this.LanguageID;frame.YSplitOperator.FrameSplitData=this.FrameSplitData.get('double');frame.YSplitOperator.Frame=frame;frame.YSplitOperator.ChartBorder=frame.ChartBorder;frame.YSplitOperator.SplitCount=subFrame.Frame.YSplitOperator.SplitCount;frame.YSplitOperator.GetEventCallback=function(id){return _this21.GetEventCallback(id);};frame.YSplitOperator.GetKLineChartCallback=function(){return _this21.GetKLineChart();};frame.YSplitOperator.OverlayIndex=overlayFrame;frame.YSplitOperator.HQChart=this;frame.YSplitOperator.OverlayIdentify=overlayFrame.Identify;if(obj.Frame){var item=obj.Frame;if(item.Custom)frame.YSplitOperator.Custom=item.Custom;if(IFrameSplitOperator.IsBool(item.IsYDrawMainFrame))frame.IsYDrawMainFrame=item.IsYDrawMainFrame;//自定义刻度绘制在主图上
7296
7302
  if(IFrameSplitOperator.IsBool(item.IsShowToolbar))frame.IsShowToolbar=item.IsShowToolbar;//是否显示工具栏
7297
7303
  }overlayFrame.Frame=frame;if(apiItem){var apiIndex=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,obj,true);apiIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
7298
- overlayFrame.Script=apiIndex;}else if(indexInfo){if(obj.Args)indexInfo.Args=obj.Args;//外部可以设置参数
7299
- if(IFrameSplitOperator.IsNumber(obj.FloatPrecision))indexInfo.FloatPrecision=obj.FloatPrecision;if(IFrameSplitOperator.IsNumber(obj.StringFormat))indexInfo.StringFormat=obj.StringFormat;if(IFrameSplitOperator.IsBool(obj.IsSync))indexInfo.IsSync=obj.IsSync;if(obj.YAxis){if(!indexInfo.YAxis)indexInfo.YAxis={};if(IFrameSplitOperator.IsNumber(obj.YAxis.FloatPrecision))indexInfo.YAxis.FloatPrecision=obj.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(obj.YAxis.StringFormat))indexInfo.YAxis.StringFormat=obj.YAxis.StringFormat;if(IFrameSplitOperator.IsBool(obj.YAxis.EnableRemoveZero))indexInfo.YAxis.EnableRemoveZero=obj.YAxis.EnableRemoveZero;}var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7304
+ overlayFrame.Script=apiIndex;}else if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,obj);var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7300
7305
  scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
7301
7306
  overlayFrame.Script=scriptIndex;}else{var scriptIndex=indexCustom.Create();scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
7302
7307
  scriptIndex.Create(this,windowIndex);overlayFrame.Script=scriptIndex;}var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CREATE_OVERLAY_FRAME);if(event&&event.Callback){var sendData={OverlayFrame:overlayFrame,WindowIndex:windowIndex,SubFrame:subFrame};event.Callback(event,sendData,this);}subFrame.OverlayIndex.push(overlayFrame);return overlayFrame;};this.DeleteOverlayWindowsIndex=function(identify)//删除叠加指标
@@ -7328,19 +7333,21 @@ var subFrame=this.Frame.SubFrame[i];if(item.Modify!=null)this.Frame.SubFrame[i].
7328
7333
  }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);//执行脚本
7329
7334
  }//this.UpdataDataoffset(); //更新数据偏移
7330
7335
  }};this.ChangeIndexTemplate=function(option)//切换指标模板 可以设置指标窗口个数 每个窗口的指标
7331
- {var _this23=this;if(!option.Windows)return;var count=option.Windows.length;if(count<=0)return;var currentLength=this.Frame.SubFrame.length;var period=null,right=null;if(option.KLine){if(IFrameSplitOperator.IsNumber(option.KLine.Period)&&option.KLine.Period!=this.Period)period=option.KLine.Period;//周期
7336
+ {var _this23=this;if(!option.Windows)return;var count=option.Windows.length;if(count<=0)return;var currentLength=this.Frame.SubFrame.length;var period=null,right=null,symbol=null;if(option.Symbol)symbol=option.Symbol;if(option.KLine){if(IFrameSplitOperator.IsNumber(option.KLine.Period)&&option.KLine.Period!=this.Period)period=option.KLine.Period;//周期
7332
7337
  if(IFrameSplitOperator.IsNumber(option.KLine.Right)&&option.KLine.Right!=this.Right)right=option.KLine.Right;//复权
7333
- }var bRefreshData=period!=null||right!=null;//清空所有的指标图型
7334
- for(var i=0;i<currentLength;++i){this.DeleteIndexPaint(i);var frame=this.Frame.SubFrame[i];frame.YSpecificMaxMin=null;frame.IsLocked=false;frame.YSplitScale=null;}if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.Frame.SubFrame[i].Frame.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);}else{for(var i=currentLength;i<count;++i)//创建新的指标窗口
7335
- {var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this23.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}}var systemScript=new JSIndexScript();for(var i=0;i<count;++i){var windowIndex=i;var item=option.Windows[i];var frameItem=null;if(option.Frame&&option.Frame.length>i)frameItem=option.Frame[i];var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;if(item.Script)//自定义指标脚本
7338
+ }var bRefreshData=period!=null||right!=null||symbol!=null;//清空所有的指标图型
7339
+ for(var i=0;i<currentLength;++i){this.DeleteIndexPaint(i);var frame=this.Frame.SubFrame[i];frame.YSpecificMaxMin=null;frame.IsLocked=false;frame.YSplitScale=null;}if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.Frame.SubFrame[i].Frame.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);this.TitlePaint.splice(count+1,currentLength-count);}else{for(var i=currentLength;i<count;++i)//创建新的指标窗口
7340
+ {var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this23.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}}for(var i=0;i<count;++i){var windowIndex=i;var item=option.Windows[i];var frameItem=null;if(option.Frame&&option.Frame.length>i)frameItem=option.Frame[i];var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;var frame=this.Frame.SubFrame[i];this.DeleteWindowsOverlayIndex(i);//清空叠加指标
7341
+ if(item.Script)//自定义指标脚本
7336
7342
  {this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
7337
7343
  }else if(item.API)//后台指标
7338
- {var apiItem=item.API;this.WindowIndex[windowIndex]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexItem=JSIndexMap.Get(indexID);if(indexItem){this.WindowIndex[i]=indexItem.Create();this.CreateWindowIndex(windowIndex);}else{var indexInfo=systemScript.Get(indexID);if(indexInfo){var args=indexInfo.Args;if(option.Windows[i].Args)args=option.Windows[i].Args;if(item.TitleFont)indexInfo.TitleFont=item.TitleFont;if(item.IsShortTitle)indexInfo.IsShortTitle=item.IsShortTitle;if(IFrameSplitOperator.IsBool(item.IsSync))indexInfo.IsSync=item.IsSync;if(item.YAxis){if(!indexInfo.YAxis)indexInfo.YAxis={};if(IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision))indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(item.YAxis.StringFormat))indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;}this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo);//脚本执行
7339
- }}}this.SetSubFrameAttribute(this.Frame.SubFrame[i],item,frameItem);}//最后一个显示X轴坐标
7340
- 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;}if(!bRefreshData){var bindData=this.ChartPaint[0].Data;for(var i=0;i<count;++i)//请求指标
7341
- {this.BindIndexData(i,bindData);}this.UpdataDataoffset();//更新数据偏移
7344
+ {var apiItem=item.API;this.WindowIndex[windowIndex]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexItem=JSIndexMap.Get(indexID);if(indexItem){this.WindowIndex[i]=indexItem.Create();this.CreateWindowIndex(windowIndex);}else{var systemScript=new JSIndexScript();var indexInfo=systemScript.Get(indexID);if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,item);this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7345
+ }}}this.SetSubFrameAttribute(frame,item,frameItem);}//最后一个显示X轴坐标
7346
+ 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;}//叠加指标
7347
+ var aryOverlayIndex=[];if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Index)item.IndexName=item.Index;if(item.Windows>=0)item.WindowIndex=item.Windows;var overlay=this.CreateOverlayWindowsIndex(item);if(!overlay)continue;aryOverlayIndex.push(overlay);}}if(!bRefreshData){var bindData=this.ChartPaint[0].Data;for(var i=0;i<count;++i)//请求指标
7348
+ {this.BindIndexData(i,bindData);}for(var i=0;i<aryOverlayIndex.length;++i){var item=aryOverlayIndex[i];this.BindOverlayIndexData(item,item.WindowIndex,bindData);}this.UpdataDataoffset();//更新数据偏移
7342
7349
  this.Frame.SetSizeChage(true);this.ResetFrameXYSplit();this.UpdateFrameMaxMin();//调整坐标最大 最小值
7343
- this.Draw();}else{this.Frame.SetSizeChage(true);if(period!=null)this.ChangePeriod(period,option);else if(right!=null)this.ChangeRight(right);}};this.RemoveIndexWindow=function(id,option){JSConsole.Chart.Log('[KLineChartContainer::RemoveIndexWindow] remove id',id);if(id==0){if(option&&option.DeleteMainIndex)//删除指标
7350
+ this.Draw();}else{if(!symbol)symbol=this.Symbol;var optionData={KLine:{}};if(IFrameSplitOperator.IsNumber(period))optionData.KLine.Period=period;if(IFrameSplitOperator.IsNumber(right))optionData.KLine.Right=right;this.ChangeSymbol(symbol,optionData);}};this.RemoveIndexWindow=function(id,option){JSConsole.Chart.Log('[KLineChartContainer::RemoveIndexWindow] remove id',id);if(id==0){if(option&&option.DeleteMainIndex)//删除指标
7344
7351
  {this.DeleteIndexPaint(id);this.WindowIndex[id]=null;this.Frame.SetSizeChage(true);this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();}return;}if(!this.Frame.SubFrame)return;if(id>=this.Frame.SubFrame.length)return;this.Frame.RestoreIndexWindows();var delFrame=this.Frame.SubFrame[id].Frame;this.DeleteIndexPaint(id);this.Frame.SubFrame[id].Frame.ClearToolbar();var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[id],WindowIndex:id};event.Callback(event,sendData,this);}this.Frame.SubFrame.splice(id,1);this.WindowIndex.splice(id,1);this.TitlePaint.splice(id+1,1);//删除对应的动态标题
7345
7352
  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;item.Identify=i;}if(this.ChartDrawPicture.length>0){var aryDrawPicture=[];for(var i in this.ChartDrawPicture){var item=this.ChartDrawPicture[i];if(item.Frame==delFrame)continue;aryDrawPicture.push(item);}this.ChartDrawPicture=aryDrawPicture;}this.Frame.SetSizeChage(true);this.UpdateFrameMaxMin();this.ResetFrameXYSplit();this.Draw();};//获取当前的显示的指标
7346
7353
  this.GetIndexInfo=function(){var aryIndex=[];for(var i in this.WindowIndex){var item=this.WindowIndex[i];var info={Name:item.Name};if(item.ID)info.ID=item.ID;if(item.Arguments)//参数
@@ -7378,9 +7385,9 @@ for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];fo
7378
7385
  this.ChangeSymbol=function(symbol,option){this.CancelAutoUpdate();//先停止定时器
7379
7386
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');this.ClearRectSelect(true);this.ClearCustomKLine();this.ClearKLineCaluate();this.HideTooltip();this.ResetScrollBar();this.ClearIndexRunCount();this.Frame.ClearYCoordinateMaxMin();this.Symbol=symbol;if(!symbol){this.DrawEmpty();return;}if(option){if(option.KLine){var item=option.KLine;if(IFrameSplitOperator.IsNumber(item.Right))this.Right=item.Right;if(IFrameSplitOperator.IsNumber(item.Period))this.Period=item.Period;}}if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))this.Right=0;//指数没有复权
7380
7387
  this.ClearIndexPaint();//清空指标
7381
- if(option){if(option.Windows&&Array.isArray(option.Windows)&&option.Windows.length>0){var windows=option.Windows;var systemScript=new JSIndexScript();for(var i in windows){if(i>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
7388
+ if(option){if(IFrameSplitOperator.IsNonEmptyArray(option.Windows)){var windows=option.Windows;for(var i=0;i<windows.length;++i){if(i>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
7382
7389
  var item=windows[i];if(!item)continue;if(item.Script){this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
7383
- }else if(item.API){var apiItem=item.API;this.WindowIndex[i]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexInfo=systemScript.Get(indexID);if(indexInfo){var args=indexInfo.Args;if(item.Args)indexInfo.Args=item.Args;indexInfo.ID=indexID;this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7390
+ }else if(item.API){var apiItem=item.API;this.WindowIndex[i]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var systemScript=new JSIndexScript();var indexInfo=systemScript.Get(indexID);if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,item);indexInfo.ID=indexID;this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7384
7391
  }}}}}this.ReloadChartDrawPicture();this.Frame.ClearUpDonwFrameYData();if(ChartData.IsDayPeriod(this.Period,true)){this.ClearStockCache();this.RequestHistoryData();//请求日线数据
7385
7392
  //this.ReqeustKLineInfoData();
7386
7393
  }else if(ChartData.IsMinutePeriod(this.Period,true)||ChartData.IsSecondPeriod(this.Period)||ChartData.IsMilliSecondPeriod(this.Period)){this.ClearStockCache();this.RequestHistoryMinuteData();//请求分钟数据
@@ -7837,8 +7844,7 @@ var apiItem=indexData.API;this.WindowIndex[windowIndex]=new APIScriptIndex(apiIt
7837
7844
  this.UpdataDataoffset();//更新数据偏移
7838
7845
  this.UpdateFrameMaxMin();//调整坐标最大 最小值
7839
7846
  this.Draw();};this.ChangeIndex=function(windowIndex,indexName,option){if(this.Frame.SubFrame.length<3)return;if(option&&option.API)return this.ChangeAPIIndex(windowIndex,option);//查找系统指标
7840
- var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;if(windowIndex<2)windowIndex=2;if(windowIndex>=this.Frame.SubFrame.length)windowIndex=2;var indexData={Name:indexInfo.Name,Script:indexInfo.Script,Args:indexInfo.Args,ID:indexName,//扩展属性 可以是空
7841
- KLineType:indexInfo.KLineType,YSpecificMaxMin:indexInfo.YSpecificMaxMin,YSplitScale:indexInfo.YSplitScale,FloatPrecision:indexInfo.FloatPrecision,Condition:indexInfo.Condition,StringFormat:indexInfo.StringFormat,OutName:indexInfo.OutName};if(option){if(option.FloatPrecision>=0)indexData.FloatPrecision=option.FloatPrecision;if(option.StringFormat>0)indexData.StringFormat=option.StringFormat;if(option.Args)indexData.Args=option.Args;if(IFrameSplitOperator.IsNumber(option.YSplitType))indexData.YSplitType=option.YSplitType;if(option.Lock)indexData.Lock=option.Lock;}return this.ChangeScriptIndex(windowIndex,indexData,option);};//设置指标窗口个数
7847
+ var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;if(windowIndex<2)windowIndex=2;if(windowIndex>=this.Frame.SubFrame.length)windowIndex=2;JSIndexScript.ModifyAttribute(indexInfo,option);return this.ChangeScriptIndex(windowIndex,indexInfo,option);};//设置指标窗口个数
7842
7848
  this.ChangeIndexWindowCount=function(count){var _this31=this;if(count<2)return;//1,2个窗口固定的不能动
7843
7849
  if(this.Frame.SubFrame.length==count)return;var currentLength=this.Frame.SubFrame.length;if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.DeleteIndexPaint(i);var item=this.Frame.SubFrame[i].Frame;if(item.ClearToolbar)item.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);}else{//创建新的指标窗口
7844
7850
  var mainFrame=this.Frame.SubFrame[0].Frame;for(var i=currentLength;i<count;++i){var subFrame=this.CreateSubFrameItem(i,mainFrame);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this31.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}//创建指标
@@ -7851,11 +7857,10 @@ this.Draw();};this.ChangeIndexTemplate=function(option)//切换指标模板 可
7851
7857
  {var _this32=this;if(!Array.isArray(option.Windows))return;var count=option.Windows.length;var currentLength=this.Frame.SubFrame.length;var startWindowIndex=2;count+=startWindowIndex;var dayCount=null;if(IFrameSplitOperator.IsNumber(option.DayCount)&&option.DayCount!=this.DayCount)dayCount=option.DayCount;//天数
7852
7858
  var bRefreshData=dayCount!=null;//清空所有的指标图型
7853
7859
  for(var i=startWindowIndex;i<currentLength;++i){this.DeleteIndexPaint(i);var frame=this.Frame.SubFrame[i];frame.YSpecificMaxMin=null;frame.IsLocked=false;frame.YSplitScale=null;}if(currentLength>count){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_DELETE_FRAME);for(var i=currentLength-1;i>=count;--i){this.Frame.SubFrame[i].Frame.ClearToolbar();if(event&&event.Callback){var sendData={SubFrame:this.Frame.SubFrame[i],WindowIndex:i};event.Callback(event,sendData,this);}}this.Frame.SubFrame.splice(count,currentLength-count);this.WindowIndex.splice(count,currentLength-count);}else{for(var i=currentLength;i<count;++i)//创建新的指标窗口
7854
- {var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this32.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}}var systemScript=new JSIndexScript();for(var i=0;i<count;++i){var windowIndex=i;var item=null,frameItem=null;if(option.Frame&&option.Frame.length>i)frameItem=option.Frame[windowIndex];if(windowIndex>=startWindowIndex)item=option.Windows[windowIndex-startWindowIndex];var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;if(item){if(item.Script)//自定义指标脚本
7860
+ {var subFrame=this.CreateSubFrameItem(i);this.Frame.SubFrame[i]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[i].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this32.GetEventCallback(id);};titlePaint.SelectedChart=this.SelectedChart;this.TitlePaint[i+1]=titlePaint;}}for(var i=0;i<count;++i){var windowIndex=i;var item=null,frameItem=null;if(option.Frame&&option.Frame.length>i)frameItem=option.Frame[windowIndex];if(windowIndex>=startWindowIndex)item=option.Windows[windowIndex-startWindowIndex];var titleIndex=windowIndex+1;this.TitlePaint[titleIndex].Data=[];this.TitlePaint[titleIndex].Title=null;if(item){if(item.Script)//自定义指标脚本
7855
7861
  {this.WindowIndex[windowIndex]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
7856
7862
  }else if(item.API)//后台指标
7857
- {var apiItem=item.API;this.WindowIndex[windowIndex]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexItem=JSIndexMap.Get(indexID);if(indexItem){this.WindowIndex[windowIndex]=indexItem.Create();this.CreateWindowIndex(windowIndex);}else{var indexInfo=systemScript.Get(indexID);if(indexInfo){var args=indexInfo.Args;if(item.Args)args=item.Args;var indexData={Name:indexInfo.Name,Script:indexInfo.Script,Args:args,ID:indexID,//扩展属性 可以是空
7858
- KLineType:indexInfo.KLineType,YSpecificMaxMin:indexInfo.YSpecificMaxMin,YSplitScale:indexInfo.YSplitScale,FloatPrecision:indexInfo.FloatPrecision,Condition:indexInfo.Condition,OutName:indexInfo.OutName};if(item.TitleFont)indexData.TitleFont=item.TitleFont;this.WindowIndex[windowIndex]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
7863
+ {var apiItem=item.API;this.WindowIndex[windowIndex]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexItem=JSIndexMap.Get(indexID);if(indexItem){this.WindowIndex[windowIndex]=indexItem.Create();this.CreateWindowIndex(windowIndex);}else{var systemScript=new JSIndexScript();var indexInfo=systemScript.Get(indexID);if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,item);this.WindowIndex[windowIndex]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7859
7864
  }}}}this.SetSubFrameAttribute(this.Frame.SubFrame[windowIndex],item,frameItem);}//最后一个显示X轴坐标
7860
7865
  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;}if(!bRefreshData){var bindData=this.SourceData;for(var i=0;i<count;++i){this.BindIndexData(i,bindData);//执行脚本
7861
7866
  }this.UpdataDataoffset();//更新数据偏移
@@ -7884,9 +7889,9 @@ chart.Data.Data=[];//清空数据
7884
7889
  }};//切换股票代码
7885
7890
  this.ChangeSymbol=function(symbol,option){this.StopDisplayLatest();this.CancelAutoUpdate();this.AutoUpdateEvent(false,"MinuteChartContainer::ChangeSymbol");this.Symbol=symbol;this.ResetDayOffset();this.ResetDataStatus();this.ClearIndexPaint();//清空指标
7886
7891
  this.ResetOverlaySymbolStatus();this.ReloadChartDrawPicture();this.ClearIndexRunCount();this.ClearStockCache();this.Frame.ClearYCoordinateMaxMin();if(option){if(IFrameSplitOperator.IsNumber(option.DayCount))this.DayCount=option.DayCount;if(IFrameSplitOperator.IsNonEmptyArray(option.Windows))//切换指标
7887
- {var systemScript=new JSIndexScript();for(var i=0;i<option.Windows.length;++i){var index=2+i;if(index>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
7892
+ {for(var i=0;i<option.Windows.length;++i){var index=2+i;if(index>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
7888
7893
  var item=option.Windows[i];if(!item)continue;if(item.Script){this.WindowIndex[index]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
7889
- }else if(item.API){var apiItem=item.API;this.WindowIndex[index]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexInfo=systemScript.Get(indexID);if(indexInfo){var args=indexInfo.Args;if(item.Args)indexInfo.Args=item.Args;indexInfo.ID=indexID;this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7894
+ }else if(item.API){var apiItem=item.API;this.WindowIndex[index]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var systemScript=new JSIndexScript();var indexID=item.Index;var indexInfo=systemScript.Get(indexID);if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,item);indexInfo.ID=indexID;this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
7890
7895
  }}}}//清空叠加股票
7891
7896
  if(option.ClearOverlay===true){for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];item.IsDelete=true;}this.OverlayChartPaint=[];this.Frame.SubFrame[0].Frame.YSplitOperator.OverlayChartPaint=this.OverlayChartPaint;this.TitlePaint[0].OverlayChartPaint=this.OverlayChartPaint;//绑定叠加
7892
7897
  }//叠加股票
@@ -11491,7 +11496,7 @@ return true;}else if(this.InstructionType==1)//交易系统
11491
11496
  return true;}};this.BindData=function(hqChart,windowIndex,hisData){if(windowIndex==0&&this.InstructionType){this.BindInstructionData(hqChart,windowIndex,hisData);return;}//清空主指标图形
11492
11497
  hqChart.DeleteIndexPaint(windowIndex);if(windowIndex==0)hqChart.ShowKLine(true);if(this.OutVar==null||this.OutVar.length<0)return;//叠加一个K线背景
11493
11498
  if(this.KLineType!=null){if(this.KLineType===0||this.KLineType===1||this.KLineType===2)this.CreateSelfKLine(hqChart,windowIndex,hisData);else if(this.KLineType===-1&&windowIndex==0)hqChart.ShowKLine(false);}if(windowIndex>=1&&hqChart.Frame){//Y轴刻度格式 默认跟标题栏一致
11494
- var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;ySpliter.FloatPrecision=this.FloatPrecision;if(this.YAxis){if(IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision))ySpliter.FloatPrecision=this.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(this.YAxis.StringFormat))ySpliter.StringFormat=this.YAxis.StringFormat;}if(this.YSpecificMaxMin)hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin;//最大最小值
11499
+ var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;if(ySpliter){ySpliter.Reset();ySpliter.FloatPrecision=this.FloatPrecision;if(this.YAxis)ySpliter.SetOption(this.YAxis);}if(this.YSpecificMaxMin)hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin;//最大最小值
11495
11500
  if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale;//固定刻度
11496
11501
  }if(IFrameSplitOperator.IsNumber(this.YSplitType))hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.SplitType=this.YSplitType;/*
11497
11502
  if (this.Name=='MA') //测试多线段
@@ -11542,7 +11547,7 @@ this.newMethod(name,script,args,option);delete this.newMethod;this.ClassName="Ov
11542
11547
  this.OverlayIndex=null;// { IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }
11543
11548
  //显示指标不符合条件
11544
11549
  this.ShowConditionError=function(param,msg){var hqChart=param.HQChart;var windowIndex=param.WindowIndex;var message='指标不支持当前品种或周期';if(msg)message=msg;var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;frame.ChartPaint=[];var chart=new ChartLine();chart.Canvas=hqChart.Canvas;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.NotSupportMessage=message;frame.ChartPaint.push(chart);hqChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){if(!this.OverlayIndex||this.OverlayIndex.IsOverlay!=true)return;this.OverlayIndex.Frame.ChartPaint=[];if(!IFrameSplitOperator.IsNonEmptyArray(this.OutVar))return;//修改Y轴分割方式
11545
- var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;if(IFrameSplitOperator.IsNumber(this.YSplitType))ySpliter.SplitType=this.YSplitType;ySpliter.FloatPrecision=this.FloatPrecision;ySpliter.EnableRemoveZero=true;if(this.YAxis){if(IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision))ySpliter.FloatPrecision=this.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(this.YAxis.StringFormat))ySpliter.StringFormat=this.YAxis.StringFormat;if(IFrameSplitOperator.IsBool(this.YAxis.EnableRemoveZero))ySpliter.EnableRemoveZero=this.YAxis.EnableRemoveZero;}//指标名字
11550
+ var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;if(ySpliter){ySpliter.Reset();ySpliter.FloatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(this.YSplitType))ySpliter.SplitType=this.YSplitType;if(this.YAxis)ySpliter.SetOption(this.YAxis);}//指标名字
11546
11551
  var titleInfo={Data:[],Title:this.Name,Frame:this.OverlayIndex.Frame.Frame,Script:this};var indexParam='';for(var i in this.Arguments){var _item29=this.Arguments[i];if(indexParam.length>0)indexParam+=',';indexParam+=_item29.Value.toString();}if(indexParam.length>0)titleInfo.Title=this.Name+'('+indexParam+')';var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments,this.OverlayIndex.Identify);}this.OverlayIndex.Frame.Frame.Title=this.Name;//给子框架设置标题
11547
11552
  if(hqChart.Frame.SubFrame[windowIndex]){var mainFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(mainFrame)this.OverlayIndex.Frame.Frame.XPointCount=mainFrame.XPointCount;//跟主窗口同步下页面显示数据个数
11548
11553
  }for(var i=0;i<this.OutVar.length;++i){var _item30=this.OutVar[i];if(_item30.IsExData===true)continue;//扩展数据不显示图形
@@ -12803,7 +12808,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
12803
12808
  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);};}/********************************************************************************
12804
12809
  * 版本信息输出
12805
12810
  *
12806
- */var HQCHART_VERSION="1.1.12927";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();//把给外界调用的方法暴露出来
12811
+ */var HQCHART_VERSION="1.1.12938";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();//把给外界调用的方法暴露出来
12807
12812
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12808
12813
  // BaseIndex:BaseIndex,
12809
12814
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.12928",
3
+ "version": "1.1.12939",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -21299,13 +21299,13 @@ function ScriptIndex(name,script,args,option)
21299
21299
  {
21300
21300
  //Y轴刻度格式 默认跟标题栏一致
21301
21301
  var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;
21302
- ySpliter.FloatPrecision=this.FloatPrecision;
21303
- if (this.YAxis)
21302
+ if (ySpliter)
21304
21303
  {
21305
- if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
21306
- if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
21304
+ ySpliter.Reset();
21305
+ ySpliter.FloatPrecision=this.FloatPrecision;
21306
+ if (this.YAxis) ySpliter.SetOption(this.YAxis);
21307
21307
  }
21308
-
21308
+
21309
21309
  if (this.YSpecificMaxMin) hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin; //最大最小值
21310
21310
  if (this.YSplitScale) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale; //固定刻度
21311
21311
  }
@@ -21678,14 +21678,12 @@ function OverlayScriptIndex(name,script,args,option)
21678
21678
 
21679
21679
  //修改Y轴分割方式
21680
21680
  var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;
21681
- if (IFrameSplitOperator.IsNumber(this.YSplitType)) ySpliter.SplitType=this.YSplitType;
21682
- ySpliter.FloatPrecision=this.FloatPrecision;
21683
- ySpliter.EnableRemoveZero=true;
21684
- if (this.YAxis)
21685
- {
21686
- if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
21687
- if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
21688
- if (IFrameSplitOperator.IsBool(this.YAxis.EnableRemoveZero)) ySpliter.EnableRemoveZero=this.YAxis.EnableRemoveZero;
21681
+ if (ySpliter)
21682
+ {
21683
+ ySpliter.Reset();
21684
+ ySpliter.FloatPrecision=this.FloatPrecision;
21685
+ if (IFrameSplitOperator.IsNumber(this.YSplitType)) ySpliter.SplitType=this.YSplitType;
21686
+ if (this.YAxis) ySpliter.SetOption(this.YAxis);
21689
21687
  }
21690
21688
 
21691
21689
  //指标名字
@@ -26,7 +26,7 @@
26
26
  Condition: 限制条件 { Symbol:'Index'/'Stock'(只支持指数/股票),Period:[](支持的周期), Include:[](指定支持的股票,代码全部大写包括后缀, Message:"提示信息")}
27
27
  OutName:动态输出变量名字 [{Name:原始变量名, DynamicName:动态名字格式}] 如 {Name:"MA1", DynamicName:"MA{M1}"};
28
28
  SplitType: Y轴分割类型,
29
- YAxis:{ FloatPrecision:小数位数, StringFormat: } //Y轴刻度输出格式
29
+ YAxis:{ FloatPrecision:小数位数, StringFormat:, EnableRemoveZero } //Y轴刻度输出格式
30
30
  */
31
31
 
32
32
  //周期条件枚举
@@ -168,6 +168,30 @@ JSIndexScript.AddIndex=function(aryIndex) //添加自定义指标
168
168
  }
169
169
  }
170
170
 
171
+ //修改指标属性
172
+ JSIndexScript.ModifyAttribute=function(indexInfo, attribute)
173
+ {
174
+ if (!attribute) return;
175
+
176
+ if (attribute.Args) indexInfo.Args=attribute.Args; //外部可以设置参数
177
+ if (IFrameSplitOperator.IsNumber(attribute.FloatPrecision)) indexInfo.FloatPrecision=attribute.FloatPrecision;
178
+ if (IFrameSplitOperator.IsNumber(attribute.StringFormat)) indexInfo.StringFormat=attribute.StringFormat;
179
+ if (IFrameSplitOperator.IsBool(attribute.IsSync)) indexInfo.IsSync=attribute.IsSync;
180
+ if (IFrameSplitOperator.IsBool(attribute.IsShortTitle)) indexInfo.IsShortTitle=attribute.IsShortTitle;
181
+ if (attribute.TitleFont) indexInfo.TitleFont=attribute.TitleFont;
182
+ if (attribute.Lock) indexInfo.Lock=attribute.Lock;
183
+ if (IFrameSplitOperator.IsNumber(attribute.YSplitType)) indexInfo.YSplitType=attribute.YSplitType;
184
+
185
+ if (attribute.YAxis)
186
+ {
187
+ var item=attribute.YAxis;
188
+ if (!indexInfo.YAxis) indexInfo.YAxis={ };
189
+ if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.FloatPrecision;
190
+ if (IFrameSplitOperator.IsNumber(item.StringFormat)) indexInfo.YAxis.StringFormat=item.StringFormat;
191
+ if (IFrameSplitOperator.IsBool(item.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=item.EnableRemoveZero;
192
+ }
193
+ }
194
+
171
195
  JSIndexScript.prototype.Get=function(id)
172
196
  {
173
197
  var data=g_CustomIndex.Get(id);