hqchart 1.1.12920 → 1.1.12928

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.
@@ -49,7 +49,8 @@ JSNetwork.HttpReqeust=function(obj) //对请求进行封装
49
49
  StringFormat: 1=带单位万/亿 2=原始格式
50
50
  Condition: 限制条件 { Symbol:'Index'/'Stock'(只支持指数/股票),Period:[](支持的周期), Include:[](指定支持的股票,代码全部大写包括后缀, Message:"提示信息")}
51
51
  OutName:动态输出变量名字 [{Name:原始变量名, DynamicName:动态名字格式}] 如 {Name:"MA1", DynamicName:"MA{M1}"};
52
- SplitType: Y轴分割类型
52
+ SplitType: Y轴分割类型,
53
+ YAxis:{ FloatPrecision:小数位数, StringFormat: } //Y轴刻度输出格式
53
54
  *///周期条件枚举
54
55
  var CONDITION_PERIOD={MINUTE_ID:101,//分钟 走势图
55
56
  MULTIDAY_MINUTE_ID:102,//多日分钟 走势图
@@ -373,7 +374,7 @@ STICKLINE(SS == -1 OR SM <= -1 AND SS == 0, B1, C, 10, 0), COLORCYAN;\n\
373
374
  STICKLINE(SS == 2, B2, C, 10, 1), COLORRED;\n\
374
375
  STICKLINE(SS == -2, B2, C, 10, 0), COLORCYAN;\n\
375
376
  STICKLINE((SS == -1 OR SS == -2) AND SM > 0, B2, B1, 10, 1), COLORRED;\n\
376
- STICKLINE((SS == 1 OR SS == 2) AND SM < 0, B2, B1, 10, 0), COLORCYAN;'};return data;};JSIndexScript.prototype.AMO=function(){var data={Name:'AMO',Description:'成交金额',IsMainIndex:false,Args:[{Name:'M1',Value:5},{Name:'M2',Value:10}],Script://脚本
377
+ STICKLINE((SS == 1 OR SS == 2) AND SM < 0, B2, B1, 10, 0), COLORCYAN;'};return data;};JSIndexScript.prototype.AMO=function(){var data={Name:'AMO',Description:'成交金额',IsMainIndex:false,StringFormat:2,YAxis:{FloatPrecision:0,StringFormat:2},Args:[{Name:'M1',Value:5},{Name:'M2',Value:10}],Script://脚本
377
378
  'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
378
379
  AMO1:MA(AMOW,M1);\n\
379
380
  AMO2:MA(AMOW,M2);'};return data;};JSIndexScript.prototype.VRSI=function(){var data={Name:'VRSI',Description:'相对强弱量',IsMainIndex:false,Args:[{Name:'N1',Value:6},{Name:'N2',Value:12},{Name:'N3',Value:24}],Script://脚本
@@ -1385,7 +1386,7 @@ var scriptData=new JSIndexScript();if(option.ColorIndex)//五彩K线
1385
1386
  }else if(item.JsonData){chart.WindowIndex[i]=new JsonDataIndex(item.Name,item.Script,item.Args,item);//脚本执行
1386
1387
  }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:指标执行地址 }
1387
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);//脚本执行
1388
- 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;}}//叠加指标宽度
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;}}//叠加指标宽度
1389
1390
  if(option.OverlayIndexFrameWidth>40)chart.Frame.FixedRightWidth.Overlay=option.OverlayIndexFrameWidth;//叠加指标
1390
1391
  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线图
1391
1392
  this.CreateCustomKLineChartContainer=function(option){var chart=new CustomKLineChartContainer(this.CanvasElement);//创建改参数div
@@ -2074,8 +2075,7 @@ this.Frame.SetSizeChage(true);if(this.UpdateXShowText)this.UpdateXShowText();thi
2074
2075
  this.Draw();return index;};//增加一个指标窗口
2075
2076
  this.AddIndexWindow=function(indexName,option){//查找系统指标
2076
2077
  var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;this.RemoveMinSizeWindows();//清空隐藏的指标
2077
- var index=this.AddNewSubFrame(option);var indexData={Name:indexInfo.Name,Script:indexInfo.Script,Args:indexInfo.Args,ID:indexName,//扩展属性 可以是空
2078
- 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(option.Lock)indexData.Lock=option.Lock;}this.WindowIndex[index]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
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);//脚本执行
2079
2079
  if(this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenContainer")var bindData=this.SourceData;else var bindData=this.ChartPaint[0].Data;this.BindIndexData(index,bindData);//执行脚本
2080
2080
  };this.AddAPIIndexWindow=function(indexData,option){if(!indexData.API)return;this.RemoveMinSizeWindows();//清空隐藏的指标
2081
2081
  var index=this.AddNewSubFrame(option);//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
@@ -4966,7 +4966,7 @@ PAGE_LAST_OVERLAY_INDEX_VALUE_ID:5//叠加指标前屏最后一个数据刻度
4966
4966
  this.Frame;//框架信息
4967
4967
  this.FrameSplitData;//坐标轴分割方法
4968
4968
  this.SplitCount=5;//刻度个数
4969
- this.StringFormat=0;//刻度字符串格式
4969
+ this.StringFormat=0;//刻度字符串格式 2=原始格式
4970
4970
  this.IsShowLeftText=true;//显示左边刻度
4971
4971
  this.IsShowRightText=true;//显示右边刻度
4972
4972
  this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;this.GetEventCallback;//事件回调
@@ -4993,7 +4993,8 @@ if(IFrameSplitOperator.IsNumber(option.LineType))info.LineType=option.LineType;i
4993
4993
  if(!pageInfo)return;if(!this.OverlayIndex)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.OverlayIndex.ChartPaint))return;var event=null;if(this.GetEventCallback)event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_OVERLAY_INDEX_Y_LABEL);var endIndex=pageInfo.End.Index;var floatPrecision=2;if(IFrameSplitOperator.IsNumber(this.FloatPrecision))floatPrecision=this.FloatPrecision;for(var i=0,j=0;i<this.OverlayIndex.ChartPaint.length;++i){var chart=this.OverlayIndex.ChartPaint[i];if(!chart.ChartFrame)continue;if(!chart.GetItemData)continue;var aryItem=chart.GetItemData({Index:endIndex});if(!IFrameSplitOperator.IsNonEmptyArray(aryItem))continue;for(j=0;j<aryItem.length;++j){var item=aryItem[j];var info=new CoordinateInfo();info.Type=1;info.TextColor=g_JSChartResource.FrameLatestPrice.TextColor;info.LineColor=item.Color;info.LineType=-1;//默认不画线
4994
4994
  info.IsLast=pageInfo.IsLast;//是否是最后一个数据
4995
4995
  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
- 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;};}//字符串格式化 千分位分割
4996
+ 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
+ {};}//字符串格式化 千分位分割
4997
4998
  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=小数位数
4998
4999
  IFrameSplitOperator.FormatValueString=function(value,floatPrecision,languageID){/*
4999
5000
  if (value==null || isNaN(value))
@@ -5170,7 +5171,8 @@ coordinate.Message[1]=IFrameSplitOperator.FormatValueString(value,floatPrecision
5170
5171
  //this.Frame.HorizontalInfo[i].TextColor="rgb(100,0,200)";
5171
5172
  //this.Frame.HorizontalInfo[i].LineColor="rgb(220,220,220)";
5172
5173
  }}this.FilterIgnoreYValue();this.CustomCoordinate();if(this.SplitType!=1)this.Frame.HorizontalInfo=this.Filter(this.Frame.HorizontalInfo,splitData.Max>0&&splitData.Min<0);this.RightFrameSplitY();this.CallAcutionSplitY(this.SplitCount,splitData);if(this.EnableRemoveZero)this.RemoveZero(this.Frame.HorizontalInfo);this.DynamicMessageText();this.Frame.HorizontalMax=splitData.Max;this.Frame.HorizontalMin=splitData.Min;if(this.EnableZoomUpDown==true&&!this.FixedYMaxMin)this.FixedYMaxMin={Max:splitData.Max,Min:splitData.Min};if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};if(this.OverlayIdentify)data.OverlayIdentify=this.OverlayIdentify;event.Callback(event,data,this);}}};this.FormatValueString=function(value){var text;if(this.StringFormat==1)//手机端格式 如果有万,亿单位了 去掉小数
5173
- {var floatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(value)&&Math.abs(value)>1000)floatPrecision=0;text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}else{var absValue=Math.abs(value);if(absValue<0.0000000001){text=0;}else if(absValue<this.FLOATPRECISION_RANGE[this.FLOATPRECISION_RANGE.length-1]){text=value.toExponential(2).toString();}else{var floatPrecision=this.GetFloatPrecision(absValue,this.FloatPrecision);//数据比小数位数还小, 调整小数位数
5174
+ {var floatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(value)&&Math.abs(value)>1000)floatPrecision=0;text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}else if(this.StringFormat==2)//原始数据输出
5175
+ {text=''+value.toFixed(this.FloatPrecision);}else{var absValue=Math.abs(value);if(absValue<0.0000000001){text=0;}else if(absValue<this.FLOATPRECISION_RANGE[this.FLOATPRECISION_RANGE.length-1]){text=value.toExponential(2).toString();}else{var floatPrecision=this.GetFloatPrecision(absValue,this.FloatPrecision);//数据比小数位数还小, 调整小数位数
5174
5176
  text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);}}return text;};this.FilterIgnoreYValue=function(){if(!this.IgnoreYValue||this.IgnoreYValue.length<=0)return;var setValue=new _set2.default(this.IgnoreYValue);this.Frame.HorizontalInfo=this.Frame.HorizontalInfo.filter(function(item){return!setValue.has(item.Value);});};this.DynamicMessageText=function(){if(this.SplitType==2){for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];if(item.Message[0])item.Message[0]+='%';if(item.Message[1])item.Message[1]+='%';}}};this.CallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var aryCallAcution=this.GetCallAcutionSplitY(count,splitData);if(!aryCallAcution)return;for(var i=0;i<this.Frame.HorizontalInfo.length;++i)//把显示的数据迁移到 Message[2] Message[3]
5175
5177
  {var item=this.Frame.HorizontalInfo[i];if(aryCallAcution.IsBeforeData){item.Message[2]=item.Message[0];item.Message[0]=null;}if(aryCallAcution.IsAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){item.Message[3]=item.Message[1];item.Message[1]=null;}}//集合竞价的坐标插入最后
5176
5178
  for(var i=0;i<aryCallAcution.HorizontalInfo.length;++i){var item=aryCallAcution.HorizontalInfo[i];this.Frame.HorizontalInfo.push(item);}};this.GetCallAcutionSplitY=function(count,splitData){if(this.Frame.Identify!=1)return null;var isBeforeData=this.IsBeforeData==true&&this.BeforeOpenData&&(this.BeforeOpenData.Ver==2.0||this.BeforeOpenData.Ver==3.0);var isAfterData=this.IsAfterData==true&&this.AfterCloseData&&(this.AfterCloseData.Ver==2.0||this.AfterCloseData.Ver==3.0);if(isBeforeData||isAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);if(isBeforeData)var intervalLeft=(this.BeforeOpenData.VolMax-this.BeforeOpenData.VolMin)/(count-1);if(isAfterData)var intervalRight=(this.AfterCloseData.VolMax-this.AfterCloseData.VolMin)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=8;if(isBeforeData){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);}if(isAfterData&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);}aryHorizontalInfo.push(item);}return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isBeforeData,IsAfterData:isAfterData};}var isMultiDayBeforeData=false;var intervalLeft=null;if(this.MultiDayBeforeOpenData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData)){isMultiDayBeforeData=true;var firstDayData=this.MultiDayBeforeOpenData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalLeft=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}var isMultiDayAfterData=false;var intervalRight=null;if(this.MultiDayAfterCloseData&&IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData)){isMultiDayAfterData=true;var firstDayData=this.MultiDayAfterCloseData[0];if(firstDayData.Ver==2.0||firstDayData.Ver==3.0){var intervalRight=(firstDayData.VolMax-firstDayData.VolMin)/(count-1);}}if(isMultiDayBeforeData||isMultiDayAfterData){var intervalY=(splitData.Max-splitData.Min)/(count-1);var aryHorizontalInfo=[];for(var i=0;i<count;++i){var item=new CoordinateInfo();var yValue=intervalY*i;item.Value=yValue;item.LineType=9;var isVaild=false;if(intervalLeft!=null){var leftValue=intervalLeft*i;item.Message[0]=this.FormatValueString(leftValue);isVaild=true;}if(intervalRight!=null&&(this.ShareAfterVol==0||this.ShareAfterVol==2)){var rightValue=intervalRight*i;item.Message[1]=this.FormatValueString(rightValue);isVaild=true;}if(isVaild)aryHorizontalInfo.push(item);}if(IFrameSplitOperator.IsNonEmptyArray(aryHorizontalInfo))return{HorizontalInfo:aryHorizontalInfo,IsBeforeData:isMultiDayBeforeData,IsAfterData:isMultiDayAfterData};}return null;};this.RightFrameSplitY=function(){if(!this.Frame.RightFrame)return;var rightFrame=this.Frame.RightFrame;if(rightFrame.YSplitOperator)rightFrame.YSplitOperator.Operator();for(var i=0;i<this.Frame.HorizontalInfo.length;++i){var item=this.Frame.HorizontalInfo[i];var y=this.Frame.GetYFromData(item.Value);var yValue=rightFrame.GetYData(y);item.Message[1]=IFrameSplitOperator.FormatValueString(yValue,this.FloatPrecision,this.LanguageID);}};this.CustomCoordinate=function(){this.Frame.CustomHorizontalInfo=[];var data=this.InvokeCustomYCoordinateCallback();if(data&&data.PreventDefault==true)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.Custom))return;for(var i=0;i<this.Custom.length;++i){var item=this.Custom[i];if(item.Type==JSCHART_CUSTOM_YCOORDINATE_ID.PAGE_LAST_INDEX_VALUE_ID)//当前屏最后一个数据
@@ -7293,9 +7295,8 @@ if(IFrameSplitOperator.IsBool(obj.IsShareY))frame.IsShareY=obj.IsShareY;if(IFram
7293
7295
  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;//自定义刻度绘制在主图上
7294
7296
  if(IFrameSplitOperator.IsBool(item.IsShowToolbar))frame.IsShowToolbar=item.IsShowToolbar;//是否显示工具栏
7295
7297
  }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};//叠加指标信息
7296
- overlayFrame.Script=apiIndex;}else if(indexInfo){var args=indexInfo.Args;if(obj.Args)args=obj.Args;//外部可以设置参数
7297
- var indexData={Name:indexInfo.Name,Script:indexInfo.Script,Args:args,ID:indexName,//扩展属性 可以是空
7298
- KLineType:indexInfo.KLineType,YSpecificMaxMin:indexInfo.YSpecificMaxMin,YSplitScale:indexInfo.YSplitScale,FloatPrecision:indexInfo.FloatPrecision,Condition:indexInfo.Condition,OutName:indexInfo.OutName};if(IFrameSplitOperator.IsNumber(obj.FloatPrecision))indexData.FloatPrecision=obj.FloatPrecision;if(IFrameSplitOperator.IsNumber(obj.StringFormat))indexData.StringFormat=obj.StringFormat;if(IFrameSplitOperator.IsBool(obj.IsSync))indexData.IsSync=obj.IsSync;var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
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);//脚本执行
7299
7300
  scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
7300
7301
  overlayFrame.Script=scriptIndex;}else{var scriptIndex=indexCustom.Create();scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
7301
7302
  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)//删除叠加指标
@@ -7334,8 +7335,7 @@ for(var i=0;i<currentLength;++i){this.DeleteIndexPaint(i);var frame=this.Frame.S
7334
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)//自定义指标脚本
7335
7336
  {this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
7336
7337
  }else if(item.API)//后台指标
7337
- {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;var indexData={Name:indexInfo.Name,Script:indexInfo.Script,Args:args,ID:indexID,//扩展属性 可以是空
7338
- 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[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
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
7339
  }}}this.SetSubFrameAttribute(this.Frame.SubFrame[i],item,frameItem);}//最后一个显示X轴坐标
7340
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
7341
  {this.BindIndexData(i,bindData);}this.UpdataDataoffset();//更新数据偏移
@@ -11385,6 +11385,7 @@ this.LockCallback=null;this.LockID=null;this.LockBG=null;//锁背景色
11385
11385
  this.LockTextColor=null;this.LockText=null;this.LockFont=null;this.LockCount=20;this.LockMinWidth=null;this.TitleFont=g_JSChartResource.TitleFont;//标题字体
11386
11386
  this.IsShortTitle=false;//是否显示指标参数
11387
11387
  this.IsUsePageData=false;//是否使用了K线界面数据
11388
+ this.YAxis=null;//Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
11388
11389
  //调试信息
11389
11390
  this.Debug;// { Callback:, Count: }
11390
11391
  this.IsSync=false;//是否是同步计算 (无数据请求)
@@ -11394,7 +11395,7 @@ this.MaxRunCount=-1;//最大执行次数 -1=无限
11394
11395
  if(option){if(option.FloatPrecision>=0)this.FloatPrecision=option.FloatPrecision;if(option.StringFormat>0)this.StringFormat=option.StringFormat;if(option.ID)this.ID=option.ID;if(option.KLineType>=0||option.KLineType===-1)this.KLineType=option.KLineType;if(option.InstructionType)this.InstructionType=option.InstructionType;if(option.YSpecificMaxMin)this.YSpecificMaxMin=option.YSpecificMaxMin;if(option.YSplitScale)this.YSplitScale=option.YSplitScale;if(option.Condition)this.Condition=option.Condition;if(option.TitleFont)this.TitleFont=option.TitleFont;if(option.IsShortTitle)this.IsShortTitle=option.IsShortTitle;if(option.OutName)this.OutName=option.OutName;if(IFrameSplitOperator.IsNumber(option.YSplitType))this.YSplitType=option.YSplitType;if(IFrameSplitOperator.IsBool(option.IsSync))this.IsSync=option.IsSync;if(IFrameSplitOperator.IsNumber(option.MaxRunCount))this.MaxRunCount=option.MaxRunCount;if(option.Debug){if(IFrameSplitOperator.IsPlusNumber(option.Debug.Count)&&option.Debug.Callback){this.Debug={Count:option.Debug.Count,Callback:option.Debug.Callback};}}}if(option&&option.Lock){if(option.Lock.IsLocked==true)this.IsLocked=true;//指标上锁
11395
11396
  if(option.Lock.Callback)this.LockCallback=option.Lock.Callback;//锁回调
11396
11397
  if(option.Lock.ID)this.LockID=option.Lock.ID;//锁ID
11397
- if(option.Lock.BG)this.LockBG=option.Lock.BG;if(option.Lock.TextColor)this.LockTextColor=option.Lock.TextColor;if(option.Lock.Text)this.LockText=option.Lock.Text;if(option.Lock.Font)this.LockFont=option.Lock.Font;if(option.Lock.Count)this.LockCount=option.Lock.Count;if(option.Lock.MinWidth)this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();}if(args)this.Arguments=args;this.CopyTo=function(dest)//赋值到新实例出来
11398
+ if(option.Lock.BG)this.LockBG=option.Lock.BG;if(option.Lock.TextColor)this.LockTextColor=option.Lock.TextColor;if(option.Lock.Text)this.LockText=option.Lock.Text;if(option.Lock.Font)this.LockFont=option.Lock.Font;if(option.Lock.Count)this.LockCount=option.Lock.Count;if(option.Lock.MinWidth)this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();}if(option&&option.YAxis){this.YAxis={};if(IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision))this.YAxis.FloatPrecision=option.YAxis.FloatPrecision;if(IFrameSplitOperator.IsNumber(option.YAxis.StringFormat))this.YAxis.StringFormat=option.YAxis.StringFormat;if(IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero))this.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;}if(args)this.Arguments=args;this.CopyTo=function(dest)//赋值到新实例出来
11398
11399
  {dest.FloatPrecision=this.FloatPrecision;dest.StringFormat=this.StringFormat;dest.KLineType=this.KLineType;dest.InstructionType=this.InstructionType;dest.Condition=this.Condition;dest.TitleFont=this.TitleFont;dest.IsShortTitle=this.IsShortTitle;dest.OutName=this.OutName;dest.Arguments=this.Arguments;dest.Script=this.Script;dest.Name=this.Name;dest.ID=this.ID;};this.SetLock=function(lockData){if(lockData.IsLocked==true){this.IsLocked=true;//指标上锁
11399
11400
  if(lockData.Callback)this.LockCallback=lockData.Callback;//锁回调
11400
11401
  if(lockData.ID)this.LockID=lockData.ID;//锁ID
@@ -11489,7 +11490,8 @@ return true;}else if(this.InstructionType==1)//交易系统
11489
11490
  {var buyData,sellData;for(var i in this.OutVar){var _item26=this.OutVar[i];if(_item26.Name=='ENTERLONG')buyData=_item26.Data;else if(_item26.Name=='EXITLONG')sellData=_item26.Data;}hqChart.SetInstructionData(this.InstructionType,{Buy:buyData,Sell:sellData,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
11490
11491
  return true;}};this.BindData=function(hqChart,windowIndex,hisData){if(windowIndex==0&&this.InstructionType){this.BindInstructionData(hqChart,windowIndex,hisData);return;}//清空主指标图形
11491
11492
  hqChart.DeleteIndexPaint(windowIndex);if(windowIndex==0)hqChart.ShowKLine(true);if(this.OutVar==null||this.OutVar.length<0)return;//叠加一个K线背景
11492
- if(this.KLineType!=null){if(this.KLineType===0||this.KLineType===1||this.KLineType===2)this.CreateSelfKLine(hqChart,windowIndex,hisData);else if(this.KLineType===-1&&windowIndex==0)hqChart.ShowKLine(false);}if(windowIndex>=1&&hqChart.Frame){hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.FloatPrecision=this.FloatPrecision;if(this.YSpecificMaxMin)hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin;//最大最小值
11493
+ 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;//最大最小值
11493
11495
  if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale;//固定刻度
11494
11496
  }if(IFrameSplitOperator.IsNumber(this.YSplitType))hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.SplitType=this.YSplitType;/*
11495
11497
  if (this.Name=='MA') //测试多线段
@@ -11540,7 +11542,7 @@ this.newMethod(name,script,args,option);delete this.newMethod;this.ClassName="Ov
11540
11542
  this.OverlayIndex=null;// { IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }
11541
11543
  //显示指标不符合条件
11542
11544
  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轴分割方式
11543
- if(IFrameSplitOperator.IsNumber(this.YSplitType))this.OverlayIndex.Frame.Frame.YSplitOperator.SplitType=this.YSplitType;//指标名字
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;}//指标名字
11544
11546
  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;//给子框架设置标题
11545
11547
  if(hqChart.Frame.SubFrame[windowIndex]){var mainFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(mainFrame)this.OverlayIndex.Frame.Frame.XPointCount=mainFrame.XPointCount;//跟主窗口同步下页面显示数据个数
11546
11548
  }for(var i=0;i<this.OutVar.length;++i){var _item30=this.OutVar[i];if(_item30.IsExData===true)continue;//扩展数据不显示图形
@@ -12801,7 +12803,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
12801
12803
  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);};}/********************************************************************************
12802
12804
  * 版本信息输出
12803
12805
  *
12804
- */var HQCHART_VERSION="1.1.12919";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();//把给外界调用的方法暴露出来
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();//把给外界调用的方法暴露出来
12805
12807
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12806
12808
  // BaseIndex:BaseIndex,
12807
12809
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.12920",
3
+ "version": "1.1.12928",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -19560,6 +19560,8 @@ function ScriptIndex(name,script,args,option)
19560
19560
  this.TitleFont=g_JSChartResource.TitleFont; //标题字体
19561
19561
  this.IsShortTitle=false; //是否显示指标参数
19562
19562
  this.IsUsePageData=false; //是否使用了K线界面数据
19563
+
19564
+ this.YAxis=null; //Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
19563
19565
 
19564
19566
  //调试信息
19565
19567
  this.Debug; // { Callback:, Count: }
@@ -19609,6 +19611,15 @@ function ScriptIndex(name,script,args,option)
19609
19611
  if (option.Lock.MinWidth) this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();
19610
19612
  }
19611
19613
 
19614
+ if (option && option.YAxis)
19615
+ {
19616
+ this.YAxis={ };
19617
+ if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) this.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
19618
+ if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) this.YAxis.StringFormat=option.YAxis.StringFormat;
19619
+ if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) this.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
19620
+
19621
+ }
19622
+
19612
19623
  if (args) this.Arguments=args;
19613
19624
 
19614
19625
  this.CopyTo=function(dest) //赋值到新实例出来
@@ -21286,7 +21297,15 @@ function ScriptIndex(name,script,args,option)
21286
21297
 
21287
21298
  if (windowIndex>=1 && hqChart.Frame)
21288
21299
  {
21289
- hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.FloatPrecision=this.FloatPrecision;
21300
+ //Y轴刻度格式 默认跟标题栏一致
21301
+ var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;
21302
+ ySpliter.FloatPrecision=this.FloatPrecision;
21303
+ if (this.YAxis)
21304
+ {
21305
+ if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
21306
+ if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
21307
+ }
21308
+
21290
21309
  if (this.YSpecificMaxMin) hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin; //最大最小值
21291
21310
  if (this.YSplitScale) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale; //固定刻度
21292
21311
  }
@@ -21658,7 +21677,16 @@ function OverlayScriptIndex(name,script,args,option)
21658
21677
  if (!IFrameSplitOperator.IsNonEmptyArray(this.OutVar)) return;
21659
21678
 
21660
21679
  //修改Y轴分割方式
21661
- if (IFrameSplitOperator.IsNumber(this.YSplitType)) this.OverlayIndex.Frame.Frame.YSplitOperator.SplitType=this.YSplitType;
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;
21689
+ }
21662
21690
 
21663
21691
  //指标名字
21664
21692
  var titleInfo={ Data:[], Title:this.Name, Frame:this.OverlayIndex.Frame.Frame, Script:this };
@@ -25,7 +25,8 @@
25
25
  StringFormat: 1=带单位万/亿 2=原始格式
26
26
  Condition: 限制条件 { Symbol:'Index'/'Stock'(只支持指数/股票),Period:[](支持的周期), Include:[](指定支持的股票,代码全部大写包括后缀, Message:"提示信息")}
27
27
  OutName:动态输出变量名字 [{Name:原始变量名, DynamicName:动态名字格式}] 如 {Name:"MA1", DynamicName:"MA{M1}"};
28
- SplitType: Y轴分割类型
28
+ SplitType: Y轴分割类型,
29
+ YAxis:{ FloatPrecision:小数位数, StringFormat: } //Y轴刻度输出格式
29
30
  */
30
31
 
31
32
  //周期条件枚举
@@ -1581,7 +1582,7 @@ JSIndexScript.prototype.AMO = function ()
1581
1582
  {
1582
1583
  let data =
1583
1584
  {
1584
- Name: 'AMO', Description: '成交金额', IsMainIndex: false,
1585
+ Name: 'AMO', Description: '成交金额', IsMainIndex: false, StringFormat:2, YAxis:{ FloatPrecision:0, StringFormat:2 },
1585
1586
  Args: [{ Name: 'M1', Value: 5 },{ Name: 'M2', Value: 10 }],
1586
1587
  Script: //脚本
1587
1588
  'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
@@ -622,6 +622,14 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
622
622
  chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, args,indexInfo); //脚本执行
623
623
  if (item.StringFormat>0) chart.WindowIndex[i].StringFormat=item.StringFormat;
624
624
  if (item.FloatPrecision>=0) chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;
625
+
626
+ if (item.YAxis)
627
+ {
628
+ if (!indexInfo.YAxis) indexInfo.YAxis={ };
629
+ if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
630
+ if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
631
+ if (IFrameSplitOperator.IsBool(item.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=item.YAxis.EnableRemoveZero;
632
+ }
625
633
  }
626
634
 
627
635
  }
@@ -8062,7 +8070,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8062
8070
  subFrame.Frame.IsShowYText[1]=option.IsShowRightText;
8063
8071
  subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText; //显示右边刻度
8064
8072
  }
8065
-
8066
8073
  }
8067
8074
 
8068
8075
  this.AddNewSubFrame=function(option)
@@ -8110,24 +8117,22 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
8110
8117
  this.RemoveMinSizeWindows(); //清空隐藏的指标
8111
8118
  var index=this.AddNewSubFrame(option);
8112
8119
 
8113
- var indexData =
8114
- {
8115
- Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName ,
8116
- //扩展属性 可以是空
8117
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
8118
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,StringFormat:indexInfo.StringFormat,
8119
- OutName:indexInfo.OutName
8120
- };
8121
-
8122
8120
  if (option)
8123
8121
  {
8124
- if (option.FloatPrecision>=0) indexData.FloatPrecision=option.FloatPrecision;
8125
- if (option.StringFormat>0) indexData.StringFormat=option.StringFormat;
8126
- if (option.Args) indexData.Args=option.Args;
8127
- if (option.Lock) indexData.Lock=option.Lock;
8122
+ if (option.FloatPrecision>=0) indexInfo.FloatPrecision=option.FloatPrecision;
8123
+ if (option.StringFormat>0) indexInfo.StringFormat=option.StringFormat;
8124
+ if (option.Args) indexInfo.Args=option.Args;
8125
+ if (option.Lock) indexInfo.Lock=option.Lock;
8126
+ if (option.YAxis)
8127
+ {
8128
+ indexInfo.YAxis={ };
8129
+ if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
8130
+ if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=option.YAxis.StringFormat;
8131
+ if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
8132
+ }
8128
8133
  }
8129
8134
 
8130
- this.WindowIndex[index] = new ScriptIndex(indexData.Name, indexData.Script, indexData.Args,indexData); //脚本执行
8135
+ this.WindowIndex[index] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
8131
8136
  if (this.ClassName=="MinuteChartContainer" || this.ClassName=="MinuteChartHScreenContainer")
8132
8137
  var bindData=this.SourceData;
8133
8138
  else
@@ -42777,7 +42782,7 @@ function IFrameSplitOperator()
42777
42782
  this.Frame; //框架信息
42778
42783
  this.FrameSplitData; //坐标轴分割方法
42779
42784
  this.SplitCount=5; //刻度个数
42780
- this.StringFormat=0; //刻度字符串格式
42785
+ this.StringFormat=0; //刻度字符串格式 2=原始格式
42781
42786
  this.IsShowLeftText=true; //显示左边刻度
42782
42787
  this.IsShowRightText=true; //显示右边刻度
42783
42788
  this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;
@@ -43120,6 +43125,11 @@ function IFrameSplitOperator()
43120
43125
 
43121
43126
  return data;
43122
43127
  }
43128
+
43129
+ this.Reset=function() //重置
43130
+ {
43131
+
43132
+ }
43123
43133
  }
43124
43134
 
43125
43135
  //字符串格式化 千分位分割
@@ -44594,6 +44604,10 @@ function FrameSplitY()
44594
44604
  if (IFrameSplitOperator.IsNumber(value) && Math.abs(value) > 1000) floatPrecision=0;
44595
44605
  text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);
44596
44606
  }
44607
+ else if (this.StringFormat==2) //原始数据输出
44608
+ {
44609
+ text=`${value.toFixed(this.FloatPrecision)}`;
44610
+ }
44597
44611
  else
44598
44612
  {
44599
44613
  var absValue=Math.abs(value);
@@ -67778,6 +67792,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
67778
67792
  this.Draw();
67779
67793
  }
67780
67794
 
67795
+
67781
67796
  this.OnKLinePageChange=function(eventid)
67782
67797
  {
67783
67798
  if (!this.ChartPaint[0]) return;
@@ -68003,21 +68018,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68003
68018
  }
68004
68019
  else if (indexInfo)
68005
68020
  {
68006
- var args=indexInfo.Args;
68007
- if (obj.Args) args=obj.Args; //外部可以设置参数
68008
- let indexData =
68009
- {
68010
- Name:indexInfo.Name, Script:indexInfo.Script, Args: args, ID:indexName,
68011
- //扩展属性 可以是空
68012
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
68013
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,
68014
- OutName:indexInfo.OutName
68015
- };
68021
+ if (obj.Args) indexInfo.Args=obj.Args; //外部可以设置参数
68022
+ if (IFrameSplitOperator.IsNumber(obj.FloatPrecision)) indexInfo.FloatPrecision=obj.FloatPrecision;
68023
+ if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexInfo.StringFormat=obj.StringFormat;
68024
+ if (IFrameSplitOperator.IsBool(obj.IsSync)) indexInfo.IsSync=obj.IsSync;
68025
+ if (obj.YAxis)
68026
+ {
68027
+ if (!indexInfo.YAxis) indexInfo.YAxis={ };
68028
+ if (IFrameSplitOperator.IsNumber(obj.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=obj.YAxis.FloatPrecision;
68029
+ if (IFrameSplitOperator.IsNumber(obj.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=obj.YAxis.StringFormat;
68030
+ if (IFrameSplitOperator.IsBool(obj.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=obj.YAxis.EnableRemoveZero;
68031
+ }
68016
68032
 
68017
- if (IFrameSplitOperator.IsNumber(obj.FloatPrecision)) indexData.FloatPrecision=obj.FloatPrecision;
68018
- if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexData.StringFormat=obj.StringFormat;
68019
- if (IFrameSplitOperator.IsBool(obj.IsSync)) indexData.IsSync=obj.IsSync;
68020
- var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
68033
+ var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
68021
68034
  scriptIndex.OverlayIndex={ IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }; //叠加指标信息
68022
68035
  overlayFrame.Script=scriptIndex;
68023
68036
  }
@@ -68388,17 +68401,18 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
68388
68401
  {
68389
68402
  var args=indexInfo.Args;
68390
68403
  if (option.Windows[i].Args) args=option.Windows[i].Args;
68391
- let indexData =
68392
- {
68393
- Name:indexInfo.Name, Script:indexInfo.Script, Args: args, ID:indexID ,
68394
- //扩展属性 可以是空
68395
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
68396
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,
68397
- OutName:indexInfo.OutName
68398
- };
68399
- if (item.TitleFont) indexData.TitleFont=item.TitleFont;
68404
+ if (item.TitleFont) indexInfo.TitleFont=item.TitleFont;
68405
+ if (item.IsShortTitle) indexInfo.IsShortTitle=item.IsShortTitle;
68406
+ if (IFrameSplitOperator.IsBool(item.IsSync)) indexInfo.IsSync=item.IsSync;
68407
+
68408
+ if (item.YAxis)
68409
+ {
68410
+ if (!indexInfo.YAxis) indexInfo.YAxis={ };
68411
+ if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
68412
+ if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
68413
+ }
68400
68414
 
68401
- this.WindowIndex[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
68415
+ this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo); //脚本执行
68402
68416
  }
68403
68417
  }
68404
68418
  }
@@ -37,7 +37,8 @@ var JSConsole=
37
37
  StringFormat: 1=带单位万/亿 2=原始格式
38
38
  Condition: 限制条件 { Symbol:'Index'/'Stock'(只支持指数/股票),Period:[](支持的周期), Include:[](指定支持的股票,代码全部大写包括后缀, Message:"提示信息")}
39
39
  OutName:动态输出变量名字 [{Name:原始变量名, DynamicName:动态名字格式}] 如 {Name:"MA1", DynamicName:"MA{M1}"};
40
- SplitType: Y轴分割类型
40
+ SplitType: Y轴分割类型,
41
+ YAxis:{ FloatPrecision:小数位数, StringFormat: } //Y轴刻度输出格式
41
42
  */
42
43
 
43
44
  //周期条件枚举
@@ -1593,7 +1594,7 @@ JSIndexScript.prototype.AMO = function ()
1593
1594
  {
1594
1595
  let data =
1595
1596
  {
1596
- Name: 'AMO', Description: '成交金额', IsMainIndex: false,
1597
+ Name: 'AMO', Description: '成交金额', IsMainIndex: false, StringFormat:2, YAxis:{ FloatPrecision:0, StringFormat:2 },
1597
1598
  Args: [{ Name: 'M1', Value: 5 },{ Name: 'M2', Value: 10 }],
1598
1599
  Script: //脚本
1599
1600
  'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
@@ -4789,6 +4790,14 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4789
4790
  chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, args,indexInfo); //脚本执行
4790
4791
  if (item.StringFormat>0) chart.WindowIndex[i].StringFormat=item.StringFormat;
4791
4792
  if (item.FloatPrecision>=0) chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;
4793
+
4794
+ if (item.YAxis)
4795
+ {
4796
+ if (!indexInfo.YAxis) indexInfo.YAxis={ };
4797
+ if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
4798
+ if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
4799
+ if (IFrameSplitOperator.IsBool(item.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=item.YAxis.EnableRemoveZero;
4800
+ }
4792
4801
  }
4793
4802
 
4794
4803
  }
@@ -12229,7 +12238,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12229
12238
  subFrame.Frame.IsShowYText[1]=option.IsShowRightText;
12230
12239
  subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText; //显示右边刻度
12231
12240
  }
12232
-
12233
12241
  }
12234
12242
 
12235
12243
  this.AddNewSubFrame=function(option)
@@ -12277,24 +12285,22 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12277
12285
  this.RemoveMinSizeWindows(); //清空隐藏的指标
12278
12286
  var index=this.AddNewSubFrame(option);
12279
12287
 
12280
- var indexData =
12281
- {
12282
- Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName ,
12283
- //扩展属性 可以是空
12284
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
12285
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,StringFormat:indexInfo.StringFormat,
12286
- OutName:indexInfo.OutName
12287
- };
12288
-
12289
12288
  if (option)
12290
12289
  {
12291
- if (option.FloatPrecision>=0) indexData.FloatPrecision=option.FloatPrecision;
12292
- if (option.StringFormat>0) indexData.StringFormat=option.StringFormat;
12293
- if (option.Args) indexData.Args=option.Args;
12294
- if (option.Lock) indexData.Lock=option.Lock;
12290
+ if (option.FloatPrecision>=0) indexInfo.FloatPrecision=option.FloatPrecision;
12291
+ if (option.StringFormat>0) indexInfo.StringFormat=option.StringFormat;
12292
+ if (option.Args) indexInfo.Args=option.Args;
12293
+ if (option.Lock) indexInfo.Lock=option.Lock;
12294
+ if (option.YAxis)
12295
+ {
12296
+ indexInfo.YAxis={ };
12297
+ if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
12298
+ if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=option.YAxis.StringFormat;
12299
+ if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
12300
+ }
12295
12301
  }
12296
12302
 
12297
- this.WindowIndex[index] = new ScriptIndex(indexData.Name, indexData.Script, indexData.Args,indexData); //脚本执行
12303
+ this.WindowIndex[index] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
12298
12304
  if (this.ClassName=="MinuteChartContainer" || this.ClassName=="MinuteChartHScreenContainer")
12299
12305
  var bindData=this.SourceData;
12300
12306
  else
@@ -46944,7 +46950,7 @@ function IFrameSplitOperator()
46944
46950
  this.Frame; //框架信息
46945
46951
  this.FrameSplitData; //坐标轴分割方法
46946
46952
  this.SplitCount=5; //刻度个数
46947
- this.StringFormat=0; //刻度字符串格式
46953
+ this.StringFormat=0; //刻度字符串格式 2=原始格式
46948
46954
  this.IsShowLeftText=true; //显示左边刻度
46949
46955
  this.IsShowRightText=true; //显示右边刻度
46950
46956
  this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;
@@ -47287,6 +47293,11 @@ function IFrameSplitOperator()
47287
47293
 
47288
47294
  return data;
47289
47295
  }
47296
+
47297
+ this.Reset=function() //重置
47298
+ {
47299
+
47300
+ }
47290
47301
  }
47291
47302
 
47292
47303
  //字符串格式化 千分位分割
@@ -48761,6 +48772,10 @@ function FrameSplitY()
48761
48772
  if (IFrameSplitOperator.IsNumber(value) && Math.abs(value) > 1000) floatPrecision=0;
48762
48773
  text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);
48763
48774
  }
48775
+ else if (this.StringFormat==2) //原始数据输出
48776
+ {
48777
+ text=`${value.toFixed(this.FloatPrecision)}`;
48778
+ }
48764
48779
  else
48765
48780
  {
48766
48781
  var absValue=Math.abs(value);
@@ -71945,6 +71960,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71945
71960
  this.Draw();
71946
71961
  }
71947
71962
 
71963
+
71948
71964
  this.OnKLinePageChange=function(eventid)
71949
71965
  {
71950
71966
  if (!this.ChartPaint[0]) return;
@@ -72170,21 +72186,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72170
72186
  }
72171
72187
  else if (indexInfo)
72172
72188
  {
72173
- var args=indexInfo.Args;
72174
- if (obj.Args) args=obj.Args; //外部可以设置参数
72175
- let indexData =
72176
- {
72177
- Name:indexInfo.Name, Script:indexInfo.Script, Args: args, ID:indexName,
72178
- //扩展属性 可以是空
72179
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
72180
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,
72181
- OutName:indexInfo.OutName
72182
- };
72189
+ if (obj.Args) indexInfo.Args=obj.Args; //外部可以设置参数
72190
+ if (IFrameSplitOperator.IsNumber(obj.FloatPrecision)) indexInfo.FloatPrecision=obj.FloatPrecision;
72191
+ if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexInfo.StringFormat=obj.StringFormat;
72192
+ if (IFrameSplitOperator.IsBool(obj.IsSync)) indexInfo.IsSync=obj.IsSync;
72193
+ if (obj.YAxis)
72194
+ {
72195
+ if (!indexInfo.YAxis) indexInfo.YAxis={ };
72196
+ if (IFrameSplitOperator.IsNumber(obj.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=obj.YAxis.FloatPrecision;
72197
+ if (IFrameSplitOperator.IsNumber(obj.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=obj.YAxis.StringFormat;
72198
+ if (IFrameSplitOperator.IsBool(obj.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=obj.YAxis.EnableRemoveZero;
72199
+ }
72183
72200
 
72184
- if (IFrameSplitOperator.IsNumber(obj.FloatPrecision)) indexData.FloatPrecision=obj.FloatPrecision;
72185
- if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexData.StringFormat=obj.StringFormat;
72186
- if (IFrameSplitOperator.IsBool(obj.IsSync)) indexData.IsSync=obj.IsSync;
72187
- var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
72201
+ var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
72188
72202
  scriptIndex.OverlayIndex={ IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }; //叠加指标信息
72189
72203
  overlayFrame.Script=scriptIndex;
72190
72204
  }
@@ -72555,17 +72569,18 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72555
72569
  {
72556
72570
  var args=indexInfo.Args;
72557
72571
  if (option.Windows[i].Args) args=option.Windows[i].Args;
72558
- let indexData =
72559
- {
72560
- Name:indexInfo.Name, Script:indexInfo.Script, Args: args, ID:indexID ,
72561
- //扩展属性 可以是空
72562
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
72563
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,
72564
- OutName:indexInfo.OutName
72565
- };
72566
- if (item.TitleFont) indexData.TitleFont=item.TitleFont;
72572
+ if (item.TitleFont) indexInfo.TitleFont=item.TitleFont;
72573
+ if (item.IsShortTitle) indexInfo.IsShortTitle=item.IsShortTitle;
72574
+ if (IFrameSplitOperator.IsBool(item.IsSync)) indexInfo.IsSync=item.IsSync;
72575
+
72576
+ if (item.YAxis)
72577
+ {
72578
+ if (!indexInfo.YAxis) indexInfo.YAxis={ };
72579
+ if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
72580
+ if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
72581
+ }
72567
72582
 
72568
- this.WindowIndex[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
72583
+ this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo); //脚本执行
72569
72584
  }
72570
72585
  }
72571
72586
  }
@@ -112403,6 +112418,8 @@ function ScriptIndex(name,script,args,option)
112403
112418
  this.TitleFont=g_JSChartResource.TitleFont; //标题字体
112404
112419
  this.IsShortTitle=false; //是否显示指标参数
112405
112420
  this.IsUsePageData=false; //是否使用了K线界面数据
112421
+
112422
+ this.YAxis=null; //Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
112406
112423
 
112407
112424
  //调试信息
112408
112425
  this.Debug; // { Callback:, Count: }
@@ -112452,6 +112469,15 @@ function ScriptIndex(name,script,args,option)
112452
112469
  if (option.Lock.MinWidth) this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();
112453
112470
  }
112454
112471
 
112472
+ if (option && option.YAxis)
112473
+ {
112474
+ this.YAxis={ };
112475
+ if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) this.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
112476
+ if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) this.YAxis.StringFormat=option.YAxis.StringFormat;
112477
+ if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) this.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
112478
+
112479
+ }
112480
+
112455
112481
  if (args) this.Arguments=args;
112456
112482
 
112457
112483
  this.CopyTo=function(dest) //赋值到新实例出来
@@ -114129,7 +114155,15 @@ function ScriptIndex(name,script,args,option)
114129
114155
 
114130
114156
  if (windowIndex>=1 && hqChart.Frame)
114131
114157
  {
114132
- hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.FloatPrecision=this.FloatPrecision;
114158
+ //Y轴刻度格式 默认跟标题栏一致
114159
+ var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;
114160
+ ySpliter.FloatPrecision=this.FloatPrecision;
114161
+ if (this.YAxis)
114162
+ {
114163
+ if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
114164
+ if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
114165
+ }
114166
+
114133
114167
  if (this.YSpecificMaxMin) hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin; //最大最小值
114134
114168
  if (this.YSplitScale) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale; //固定刻度
114135
114169
  }
@@ -114501,7 +114535,16 @@ function OverlayScriptIndex(name,script,args,option)
114501
114535
  if (!IFrameSplitOperator.IsNonEmptyArray(this.OutVar)) return;
114502
114536
 
114503
114537
  //修改Y轴分割方式
114504
- if (IFrameSplitOperator.IsNumber(this.YSplitType)) this.OverlayIndex.Frame.Frame.YSplitOperator.SplitType=this.YSplitType;
114538
+ var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;
114539
+ if (IFrameSplitOperator.IsNumber(this.YSplitType)) ySpliter.SplitType=this.YSplitType;
114540
+ ySpliter.FloatPrecision=this.FloatPrecision;
114541
+ ySpliter.EnableRemoveZero=true;
114542
+ if (this.YAxis)
114543
+ {
114544
+ if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
114545
+ if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
114546
+ if (IFrameSplitOperator.IsBool(this.YAxis.EnableRemoveZero)) ySpliter.EnableRemoveZero=this.YAxis.EnableRemoveZero;
114547
+ }
114505
114548
 
114506
114549
  //指标名字
114507
114550
  var titleInfo={ Data:[], Title:this.Name, Frame:this.OverlayIndex.Frame.Frame, Script:this };
@@ -129282,7 +129325,7 @@ function ScrollBarBGChart()
129282
129325
 
129283
129326
 
129284
129327
 
129285
- var HQCHART_VERSION="1.1.12919";
129328
+ var HQCHART_VERSION="1.1.12927";
129286
129329
 
129287
129330
  function PrintHQChartVersion()
129288
129331
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12919";
8
+ var HQCHART_VERSION="1.1.12927";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -81,7 +81,8 @@ JSNetwork.HttpRequest=function(obj) //对请求进行封装
81
81
  StringFormat: 1=带单位万/亿 2=原始格式
82
82
  Condition: 限制条件 { Symbol:'Index'/'Stock'(只支持指数/股票),Period:[](支持的周期), Include:[](指定支持的股票,代码全部大写包括后缀, Message:"提示信息")}
83
83
  OutName:动态输出变量名字 [{Name:原始变量名, DynamicName:动态名字格式}] 如 {Name:"MA1", DynamicName:"MA{M1}"};
84
- SplitType: Y轴分割类型
84
+ SplitType: Y轴分割类型,
85
+ YAxis:{ FloatPrecision:小数位数, StringFormat: } //Y轴刻度输出格式
85
86
  */
86
87
 
87
88
  //周期条件枚举
@@ -1637,7 +1638,7 @@ JSIndexScript.prototype.AMO = function ()
1637
1638
  {
1638
1639
  let data =
1639
1640
  {
1640
- Name: 'AMO', Description: '成交金额', IsMainIndex: false,
1641
+ Name: 'AMO', Description: '成交金额', IsMainIndex: false, StringFormat:2, YAxis:{ FloatPrecision:0, StringFormat:2 },
1641
1642
  Args: [{ Name: 'M1', Value: 5 },{ Name: 'M2', Value: 10 }],
1642
1643
  Script: //脚本
1643
1644
  'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
@@ -4833,6 +4834,14 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4833
4834
  chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, args,indexInfo); //脚本执行
4834
4835
  if (item.StringFormat>0) chart.WindowIndex[i].StringFormat=item.StringFormat;
4835
4836
  if (item.FloatPrecision>=0) chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;
4837
+
4838
+ if (item.YAxis)
4839
+ {
4840
+ if (!indexInfo.YAxis) indexInfo.YAxis={ };
4841
+ if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
4842
+ if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
4843
+ if (IFrameSplitOperator.IsBool(item.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=item.YAxis.EnableRemoveZero;
4844
+ }
4836
4845
  }
4837
4846
 
4838
4847
  }
@@ -12273,7 +12282,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12273
12282
  subFrame.Frame.IsShowYText[1]=option.IsShowRightText;
12274
12283
  subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText; //显示右边刻度
12275
12284
  }
12276
-
12277
12285
  }
12278
12286
 
12279
12287
  this.AddNewSubFrame=function(option)
@@ -12321,24 +12329,22 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12321
12329
  this.RemoveMinSizeWindows(); //清空隐藏的指标
12322
12330
  var index=this.AddNewSubFrame(option);
12323
12331
 
12324
- var indexData =
12325
- {
12326
- Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName ,
12327
- //扩展属性 可以是空
12328
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
12329
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,StringFormat:indexInfo.StringFormat,
12330
- OutName:indexInfo.OutName
12331
- };
12332
-
12333
12332
  if (option)
12334
12333
  {
12335
- if (option.FloatPrecision>=0) indexData.FloatPrecision=option.FloatPrecision;
12336
- if (option.StringFormat>0) indexData.StringFormat=option.StringFormat;
12337
- if (option.Args) indexData.Args=option.Args;
12338
- if (option.Lock) indexData.Lock=option.Lock;
12334
+ if (option.FloatPrecision>=0) indexInfo.FloatPrecision=option.FloatPrecision;
12335
+ if (option.StringFormat>0) indexInfo.StringFormat=option.StringFormat;
12336
+ if (option.Args) indexInfo.Args=option.Args;
12337
+ if (option.Lock) indexInfo.Lock=option.Lock;
12338
+ if (option.YAxis)
12339
+ {
12340
+ indexInfo.YAxis={ };
12341
+ if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
12342
+ if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=option.YAxis.StringFormat;
12343
+ if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
12344
+ }
12339
12345
  }
12340
12346
 
12341
- this.WindowIndex[index] = new ScriptIndex(indexData.Name, indexData.Script, indexData.Args,indexData); //脚本执行
12347
+ this.WindowIndex[index] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
12342
12348
  if (this.ClassName=="MinuteChartContainer" || this.ClassName=="MinuteChartHScreenContainer")
12343
12349
  var bindData=this.SourceData;
12344
12350
  else
@@ -46988,7 +46994,7 @@ function IFrameSplitOperator()
46988
46994
  this.Frame; //框架信息
46989
46995
  this.FrameSplitData; //坐标轴分割方法
46990
46996
  this.SplitCount=5; //刻度个数
46991
- this.StringFormat=0; //刻度字符串格式
46997
+ this.StringFormat=0; //刻度字符串格式 2=原始格式
46992
46998
  this.IsShowLeftText=true; //显示左边刻度
46993
46999
  this.IsShowRightText=true; //显示右边刻度
46994
47000
  this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;
@@ -47331,6 +47337,11 @@ function IFrameSplitOperator()
47331
47337
 
47332
47338
  return data;
47333
47339
  }
47340
+
47341
+ this.Reset=function() //重置
47342
+ {
47343
+
47344
+ }
47334
47345
  }
47335
47346
 
47336
47347
  //字符串格式化 千分位分割
@@ -48805,6 +48816,10 @@ function FrameSplitY()
48805
48816
  if (IFrameSplitOperator.IsNumber(value) && Math.abs(value) > 1000) floatPrecision=0;
48806
48817
  text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);
48807
48818
  }
48819
+ else if (this.StringFormat==2) //原始数据输出
48820
+ {
48821
+ text=`${value.toFixed(this.FloatPrecision)}`;
48822
+ }
48808
48823
  else
48809
48824
  {
48810
48825
  var absValue=Math.abs(value);
@@ -71989,6 +72004,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71989
72004
  this.Draw();
71990
72005
  }
71991
72006
 
72007
+
71992
72008
  this.OnKLinePageChange=function(eventid)
71993
72009
  {
71994
72010
  if (!this.ChartPaint[0]) return;
@@ -72214,21 +72230,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72214
72230
  }
72215
72231
  else if (indexInfo)
72216
72232
  {
72217
- var args=indexInfo.Args;
72218
- if (obj.Args) args=obj.Args; //外部可以设置参数
72219
- let indexData =
72220
- {
72221
- Name:indexInfo.Name, Script:indexInfo.Script, Args: args, ID:indexName,
72222
- //扩展属性 可以是空
72223
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
72224
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,
72225
- OutName:indexInfo.OutName
72226
- };
72233
+ if (obj.Args) indexInfo.Args=obj.Args; //外部可以设置参数
72234
+ if (IFrameSplitOperator.IsNumber(obj.FloatPrecision)) indexInfo.FloatPrecision=obj.FloatPrecision;
72235
+ if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexInfo.StringFormat=obj.StringFormat;
72236
+ if (IFrameSplitOperator.IsBool(obj.IsSync)) indexInfo.IsSync=obj.IsSync;
72237
+ if (obj.YAxis)
72238
+ {
72239
+ if (!indexInfo.YAxis) indexInfo.YAxis={ };
72240
+ if (IFrameSplitOperator.IsNumber(obj.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=obj.YAxis.FloatPrecision;
72241
+ if (IFrameSplitOperator.IsNumber(obj.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=obj.YAxis.StringFormat;
72242
+ if (IFrameSplitOperator.IsBool(obj.YAxis.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=obj.YAxis.EnableRemoveZero;
72243
+ }
72227
72244
 
72228
- if (IFrameSplitOperator.IsNumber(obj.FloatPrecision)) indexData.FloatPrecision=obj.FloatPrecision;
72229
- if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexData.StringFormat=obj.StringFormat;
72230
- if (IFrameSplitOperator.IsBool(obj.IsSync)) indexData.IsSync=obj.IsSync;
72231
- var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
72245
+ var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
72232
72246
  scriptIndex.OverlayIndex={ IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }; //叠加指标信息
72233
72247
  overlayFrame.Script=scriptIndex;
72234
72248
  }
@@ -72599,17 +72613,18 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72599
72613
  {
72600
72614
  var args=indexInfo.Args;
72601
72615
  if (option.Windows[i].Args) args=option.Windows[i].Args;
72602
- let indexData =
72603
- {
72604
- Name:indexInfo.Name, Script:indexInfo.Script, Args: args, ID:indexID ,
72605
- //扩展属性 可以是空
72606
- KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale,
72607
- FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition,
72608
- OutName:indexInfo.OutName
72609
- };
72610
- if (item.TitleFont) indexData.TitleFont=item.TitleFont;
72616
+ if (item.TitleFont) indexInfo.TitleFont=item.TitleFont;
72617
+ if (item.IsShortTitle) indexInfo.IsShortTitle=item.IsShortTitle;
72618
+ if (IFrameSplitOperator.IsBool(item.IsSync)) indexInfo.IsSync=item.IsSync;
72619
+
72620
+ if (item.YAxis)
72621
+ {
72622
+ if (!indexInfo.YAxis) indexInfo.YAxis={ };
72623
+ if (IFrameSplitOperator.IsNumber(item.YAxis.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.YAxis.FloatPrecision;
72624
+ if (IFrameSplitOperator.IsNumber(item.YAxis.StringFormat)) indexInfo.YAxis.StringFormat=item.YAxis.StringFormat;
72625
+ }
72611
72626
 
72612
- this.WindowIndex[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
72627
+ this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo); //脚本执行
72613
72628
  }
72614
72629
  }
72615
72630
  }
@@ -112447,6 +112462,8 @@ function ScriptIndex(name,script,args,option)
112447
112462
  this.TitleFont=g_JSChartResource.TitleFont; //标题字体
112448
112463
  this.IsShortTitle=false; //是否显示指标参数
112449
112464
  this.IsUsePageData=false; //是否使用了K线界面数据
112465
+
112466
+ this.YAxis=null; //Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
112450
112467
 
112451
112468
  //调试信息
112452
112469
  this.Debug; // { Callback:, Count: }
@@ -112496,6 +112513,15 @@ function ScriptIndex(name,script,args,option)
112496
112513
  if (option.Lock.MinWidth) this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();
112497
112514
  }
112498
112515
 
112516
+ if (option && option.YAxis)
112517
+ {
112518
+ this.YAxis={ };
112519
+ if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) this.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
112520
+ if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) this.YAxis.StringFormat=option.YAxis.StringFormat;
112521
+ if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) this.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
112522
+
112523
+ }
112524
+
112499
112525
  if (args) this.Arguments=args;
112500
112526
 
112501
112527
  this.CopyTo=function(dest) //赋值到新实例出来
@@ -114173,7 +114199,15 @@ function ScriptIndex(name,script,args,option)
114173
114199
 
114174
114200
  if (windowIndex>=1 && hqChart.Frame)
114175
114201
  {
114176
- hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.FloatPrecision=this.FloatPrecision;
114202
+ //Y轴刻度格式 默认跟标题栏一致
114203
+ var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;
114204
+ ySpliter.FloatPrecision=this.FloatPrecision;
114205
+ if (this.YAxis)
114206
+ {
114207
+ if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
114208
+ if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
114209
+ }
114210
+
114177
114211
  if (this.YSpecificMaxMin) hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin; //最大最小值
114178
114212
  if (this.YSplitScale) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale; //固定刻度
114179
114213
  }
@@ -114545,7 +114579,16 @@ function OverlayScriptIndex(name,script,args,option)
114545
114579
  if (!IFrameSplitOperator.IsNonEmptyArray(this.OutVar)) return;
114546
114580
 
114547
114581
  //修改Y轴分割方式
114548
- if (IFrameSplitOperator.IsNumber(this.YSplitType)) this.OverlayIndex.Frame.Frame.YSplitOperator.SplitType=this.YSplitType;
114582
+ var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;
114583
+ if (IFrameSplitOperator.IsNumber(this.YSplitType)) ySpliter.SplitType=this.YSplitType;
114584
+ ySpliter.FloatPrecision=this.FloatPrecision;
114585
+ ySpliter.EnableRemoveZero=true;
114586
+ if (this.YAxis)
114587
+ {
114588
+ if (IFrameSplitOperator.IsNumber(this.YAxis.FloatPrecision)) ySpliter.FloatPrecision=this.YAxis.FloatPrecision;
114589
+ if (IFrameSplitOperator.IsNumber(this.YAxis.StringFormat)) ySpliter.StringFormat=this.YAxis.StringFormat;
114590
+ if (IFrameSplitOperator.IsBool(this.YAxis.EnableRemoveZero)) ySpliter.EnableRemoveZero=this.YAxis.EnableRemoveZero;
114591
+ }
114549
114592
 
114550
114593
  //指标名字
114551
114594
  var titleInfo={ Data:[], Title:this.Name, Frame:this.OverlayIndex.Frame.Frame, Script:this };
@@ -129440,7 +129483,7 @@ function HQChartScriptWorker()
129440
129483
 
129441
129484
 
129442
129485
 
129443
- var HQCHART_VERSION="1.1.12919";
129486
+ var HQCHART_VERSION="1.1.12927";
129444
129487
 
129445
129488
  function PrintHQChartVersion()
129446
129489
  {