hqchart 1.1.12920 → 1.1.12935
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.
- package/lib/umychart.vue.js +27 -22
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +28 -2
- package/src/jscommon/umychart.index.data.js +26 -2
- package/src/jscommon/umychart.js +45 -69
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +100 -74
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +100 -74
package/lib/umychart.vue.js
CHANGED
|
@@ -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:, EnableRemoveZero } //Y轴刻度输出格式
|
|
53
54
|
*///周期条件枚举
|
|
54
55
|
var CONDITION_PERIOD={MINUTE_ID:101,//分钟 走势图
|
|
55
56
|
MULTIDAY_MINUTE_ID:102,//多日分钟 走势图
|
|
@@ -65,7 +66,9 @@ this.Get=function(id){if(!this.DataMap.has(id))return null;return this.DataMap.g
|
|
|
65
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],//交易系统
|
|
66
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]//测试用
|
|
67
68
|
]);}JSIndexScript.AddIndex=function(aryIndex)//添加自定义指标
|
|
68
|
-
{for(var i in aryIndex){g_CustomIndex.Add(aryIndex[i]);}}
|
|
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(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://脚本
|
|
69
72
|
'MA1:MA(CLOSE,M1);\n\
|
|
70
73
|
MA2:MA(CLOSE,M2);\n\
|
|
71
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://脚本
|
|
@@ -373,7 +376,7 @@ STICKLINE(SS == -1 OR SM <= -1 AND SS == 0, B1, C, 10, 0), COLORCYAN;\n\
|
|
|
373
376
|
STICKLINE(SS == 2, B2, C, 10, 1), COLORRED;\n\
|
|
374
377
|
STICKLINE(SS == -2, B2, C, 10, 0), COLORCYAN;\n\
|
|
375
378
|
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://脚本
|
|
379
|
+
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
380
|
'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
|
|
378
381
|
AMO1:MA(AMOW,M1);\n\
|
|
379
382
|
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://脚本
|
|
@@ -1384,7 +1387,7 @@ var scriptData=new JSIndexScript();if(option.ColorIndex)//五彩K线
|
|
|
1384
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);//脚本执行
|
|
1385
1388
|
}else if(item.JsonData){chart.WindowIndex[i]=new JsonDataIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
1386
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:指标执行地址 }
|
|
1387
|
-
{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;
|
|
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 _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);//脚本执行
|
|
1388
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;}}//叠加指标宽度
|
|
1389
1392
|
if(option.OverlayIndexFrameWidth>40)chart.Frame.FixedRightWidth.Overlay=option.OverlayIndexFrameWidth;//叠加指标
|
|
1390
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线图
|
|
@@ -2074,8 +2077,7 @@ this.Frame.SetSizeChage(true);if(this.UpdateXShowText)this.UpdateXShowText();thi
|
|
|
2074
2077
|
this.Draw();return index;};//增加一个指标窗口
|
|
2075
2078
|
this.AddIndexWindow=function(indexName,option){//查找系统指标
|
|
2076
2079
|
var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;this.RemoveMinSizeWindows();//清空隐藏的指标
|
|
2077
|
-
var index=this.AddNewSubFrame(option);
|
|
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);//脚本执行
|
|
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:指标执行地址 }
|
|
@@ -4966,7 +4968,7 @@ PAGE_LAST_OVERLAY_INDEX_VALUE_ID:5//叠加指标前屏最后一个数据刻度
|
|
|
4966
4968
|
this.Frame;//框架信息
|
|
4967
4969
|
this.FrameSplitData;//坐标轴分割方法
|
|
4968
4970
|
this.SplitCount=5;//刻度个数
|
|
4969
|
-
this.StringFormat=0;//刻度字符串格式
|
|
4971
|
+
this.StringFormat=0;//刻度字符串格式 2=原始格式
|
|
4970
4972
|
this.IsShowLeftText=true;//显示左边刻度
|
|
4971
4973
|
this.IsShowRightText=true;//显示右边刻度
|
|
4972
4974
|
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;this.GetEventCallback;//事件回调
|
|
@@ -4993,7 +4995,8 @@ if(IFrameSplitOperator.IsNumber(option.LineType))info.LineType=option.LineType;i
|
|
|
4993
4995
|
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
4996
|
info.IsLast=pageInfo.IsLast;//是否是最后一个数据
|
|
4995
4997
|
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;};
|
|
4998
|
+
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()//重置
|
|
4999
|
+
{};this.SetOption=function(option){};}//字符串格式化 千分位分割
|
|
4997
5000
|
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
5001
|
IFrameSplitOperator.FormatValueString=function(value,floatPrecision,languageID){/*
|
|
4999
5002
|
if (value==null || isNaN(value))
|
|
@@ -5157,11 +5160,12 @@ this.FloatPrecision=2;//坐标小数位数(默认2)
|
|
|
5157
5160
|
this.FLOATPRECISION_RANGE=[1,0.1,0.01,0.001,0.0001];this.SplitType=0;//0=自动分割 1=固定分割 2=堆积图(0-100)
|
|
5158
5161
|
this.DefaultSplitType=0;this.Custom=[];//[{Type:0}]; 定制刻度
|
|
5159
5162
|
this.DefaultYMaxMin;//{ Max:null, Min:null }; //指定最大,最小, Y轴范围必须比最大值大, 比最小值小
|
|
5160
|
-
this.EnableRemoveZero=
|
|
5163
|
+
this.EnableRemoveZero=g_JSChartResource.Frame.EnableRemoveZero;this.LineType=null;//线段样式
|
|
5161
5164
|
this.IgnoreYValue=null;//在这个数组里的数字不显示在刻度上
|
|
5162
5165
|
this.FixedYMaxMin;//{ Max, Min} 固定Y轴最大最小值
|
|
5163
5166
|
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;//叠加指标信息
|
|
5164
|
-
this.IsEnableDragY=function(){return true;};this.
|
|
5167
|
+
this.IsEnableDragY=function(){return true;};this.Reset=function()//重置
|
|
5168
|
+
{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)//原始的数据范围
|
|
5165
5169
|
{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)//如果一样上下扩大下
|
|
5166
5170
|
{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轴范围
|
|
5167
5171
|
{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)//固定坐标
|
|
@@ -5170,7 +5174,8 @@ coordinate.Message[1]=IFrameSplitOperator.FormatValueString(value,floatPrecision
|
|
|
5170
5174
|
//this.Frame.HorizontalInfo[i].TextColor="rgb(100,0,200)";
|
|
5171
5175
|
//this.Frame.HorizontalInfo[i].LineColor="rgb(220,220,220)";
|
|
5172
5176
|
}}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
|
|
5177
|
+
{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)//原始数据输出
|
|
5178
|
+
{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
5179
|
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
5180
|
{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
5181
|
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)//当前屏最后一个数据
|
|
@@ -6516,7 +6521,8 @@ this.FrameSplitTextFont=14*GetDevicePixelRatio()+"px 微软雅黑";//坐标刻
|
|
|
6516
6521
|
this.FrameTitleBGColor="rgb(246,251,253)";//标题栏背景色
|
|
6517
6522
|
this.SelFrameBorderColor='rgb(130, 130, 130)';this.Frame={XBottomOffset:2*GetDevicePixelRatio(),//X轴文字向下偏移
|
|
6518
6523
|
YTopOffset:2*GetDevicePixelRatio(),//Y轴顶部文字向下偏移
|
|
6519
|
-
YTextPadding:[2,2]
|
|
6524
|
+
YTextPadding:[2,2],EnableRemoveZero:true,//移除小数点后面的0
|
|
6525
|
+
StringFormat:0};this.ToolbarButtonStyle=0;this.FrameLogo={TextColor:'rgb(178,34,34)',Font:"bold "+16*GetDevicePixelRatio()+"px 微软雅黑",Text:"*仅学习使用*",//不要修改声明, 任何修改声明产生的任何法律责任由修改者自行独立承担,与HQChart插件作者无关。
|
|
6520
6526
|
BGColor:"rgba(230,230,230, 0.5)"};//百分比坐标文字颜色
|
|
6521
6527
|
this.Frame.PercentageText={PriceColor:'rgb(117,125,129)',PercentageColor:"rgb(117,125,129)",SplitColor:"rgb(117,125,129)",Font:14*GetDevicePixelRatio()+"px 微软雅黑"};//对数坐标
|
|
6522
6528
|
this.FrameLogarithmic={OpenPriceFont:"bold "+14*GetDevicePixelRatio()+"px 微软雅黑",//开盘价刻度文字字体
|
|
@@ -7265,7 +7271,7 @@ this.ChangeIndex=function(windowIndex,indexName,option){if(option&&option.API)//
|
|
|
7265
7271
|
return this.ChangeAPIIndex(windowIndex,option);var indexItem=JSIndexMap.Get(indexName);if(!indexItem){//查找系统指标
|
|
7266
7272
|
var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;if(indexInfo.IsMainIndex){windowIndex=0;//主图指标只能在主图显示
|
|
7267
7273
|
}else{if(windowIndex==0)windowIndex=1;//幅图指标,不能再主图显示
|
|
7268
|
-
}
|
|
7274
|
+
}JSIndexScript.ModifyAttribute(indexInfo,option);return this.ChangeScriptIndex(windowIndex,indexInfo,option);}//主图指标
|
|
7269
7275
|
if(indexItem.IsMainIndex){if(windowIndex>0)windowIndex=0;//主图指标只能在主图显示
|
|
7270
7276
|
}else{if(windowIndex==0)windowIndex=1;//幅图指标,不能再主图显示
|
|
7271
7277
|
}var paint=new Array();//踢出当前窗口的指标画法
|
|
@@ -7293,9 +7299,7 @@ if(IFrameSplitOperator.IsBool(obj.IsShareY))frame.IsShareY=obj.IsShareY;if(IFram
|
|
|
7293
7299
|
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
7300
|
if(IFrameSplitOperator.IsBool(item.IsShowToolbar))frame.IsShowToolbar=item.IsShowToolbar;//是否显示工具栏
|
|
7295
7301
|
}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
|
|
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);//脚本执行
|
|
7302
|
+
overlayFrame.Script=apiIndex;}else if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,obj);var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
|
|
7299
7303
|
scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
|
|
7300
7304
|
overlayFrame.Script=scriptIndex;}else{var scriptIndex=indexCustom.Create();scriptIndex.OverlayIndex={IsOverlay:true,Identify:overlayFrame.Identify,WindowIndex:windowIndex,Frame:overlayFrame};//叠加指标信息
|
|
7301
7305
|
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 +7338,7 @@ for(var i=0;i<currentLength;++i){this.DeleteIndexPaint(i);var frame=this.Frame.S
|
|
|
7334
7338
|
{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
7339
|
{this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
7336
7340
|
}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){
|
|
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);//脚本执行
|
|
7341
|
+
{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){JSIndexScript.ModifyAttribute(indexInfo,item);this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
|
|
7339
7342
|
}}}this.SetSubFrameAttribute(this.Frame.SubFrame[i],item,frameItem);}//最后一个显示X轴坐标
|
|
7340
7343
|
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
7344
|
{this.BindIndexData(i,bindData);}this.UpdataDataoffset();//更新数据偏移
|
|
@@ -11385,6 +11388,7 @@ this.LockCallback=null;this.LockID=null;this.LockBG=null;//锁背景色
|
|
|
11385
11388
|
this.LockTextColor=null;this.LockText=null;this.LockFont=null;this.LockCount=20;this.LockMinWidth=null;this.TitleFont=g_JSChartResource.TitleFont;//标题字体
|
|
11386
11389
|
this.IsShortTitle=false;//是否显示指标参数
|
|
11387
11390
|
this.IsUsePageData=false;//是否使用了K线界面数据
|
|
11391
|
+
this.YAxis=null;//Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
|
|
11388
11392
|
//调试信息
|
|
11389
11393
|
this.Debug;// { Callback:, Count: }
|
|
11390
11394
|
this.IsSync=false;//是否是同步计算 (无数据请求)
|
|
@@ -11394,7 +11398,7 @@ this.MaxRunCount=-1;//最大执行次数 -1=无限
|
|
|
11394
11398
|
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
11399
|
if(option.Lock.Callback)this.LockCallback=option.Lock.Callback;//锁回调
|
|
11396
11400
|
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)//赋值到新实例出来
|
|
11401
|
+
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
11402
|
{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
11403
|
if(lockData.Callback)this.LockCallback=lockData.Callback;//锁回调
|
|
11400
11404
|
if(lockData.ID)this.LockID=lockData.ID;//锁ID
|
|
@@ -11489,7 +11493,8 @@ return true;}else if(this.InstructionType==1)//交易系统
|
|
|
11489
11493
|
{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
11494
|
return true;}};this.BindData=function(hqChart,windowIndex,hisData){if(windowIndex==0&&this.InstructionType){this.BindInstructionData(hqChart,windowIndex,hisData);return;}//清空主指标图形
|
|
11491
11495
|
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){
|
|
11496
|
+
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轴刻度格式 默认跟标题栏一致
|
|
11497
|
+
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;//最大最小值
|
|
11493
11498
|
if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale;//固定刻度
|
|
11494
11499
|
}if(IFrameSplitOperator.IsNumber(this.YSplitType))hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.SplitType=this.YSplitType;/*
|
|
11495
11500
|
if (this.Name=='MA') //测试多线段
|
|
@@ -11540,7 +11545,7 @@ this.newMethod(name,script,args,option);delete this.newMethod;this.ClassName="Ov
|
|
|
11540
11545
|
this.OverlayIndex=null;// { IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }
|
|
11541
11546
|
//显示指标不符合条件
|
|
11542
11547
|
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.
|
|
11548
|
+
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);}//指标名字
|
|
11544
11549
|
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
11550
|
if(hqChart.Frame.SubFrame[windowIndex]){var mainFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(mainFrame)this.OverlayIndex.Frame.Frame.XPointCount=mainFrame.XPointCount;//跟主窗口同步下页面显示数据个数
|
|
11546
11551
|
}for(var i=0;i<this.OutVar.length;++i){var _item30=this.OutVar[i];if(_item30.IsExData===true)continue;//扩展数据不显示图形
|
|
@@ -12801,7 +12806,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
12801
12806
|
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
12807
|
* 版本信息输出
|
|
12803
12808
|
*
|
|
12804
|
-
*/var HQCHART_VERSION="1.1.
|
|
12809
|
+
*/var HQCHART_VERSION="1.1.12934";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
12810
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12806
12811
|
// BaseIndex:BaseIndex,
|
|
12807
12812
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -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
|
-
|
|
21300
|
+
//Y轴刻度格式 默认跟标题栏一致
|
|
21301
|
+
var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;
|
|
21302
|
+
if (ySpliter)
|
|
21303
|
+
{
|
|
21304
|
+
ySpliter.Reset();
|
|
21305
|
+
ySpliter.FloatPrecision=this.FloatPrecision;
|
|
21306
|
+
if (this.YAxis) ySpliter.SetOption(this.YAxis);
|
|
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,14 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
21658
21677
|
if (!IFrameSplitOperator.IsNonEmptyArray(this.OutVar)) return;
|
|
21659
21678
|
|
|
21660
21679
|
//修改Y轴分割方式
|
|
21661
|
-
|
|
21680
|
+
var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;
|
|
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);
|
|
21687
|
+
}
|
|
21662
21688
|
|
|
21663
21689
|
//指标名字
|
|
21664
21690
|
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:, EnableRemoveZero } //Y轴刻度输出格式
|
|
29
30
|
*/
|
|
30
31
|
|
|
31
32
|
//周期条件枚举
|
|
@@ -167,6 +168,29 @@ JSIndexScript.AddIndex=function(aryIndex) //添加自定义指标
|
|
|
167
168
|
}
|
|
168
169
|
}
|
|
169
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
|
+
|
|
184
|
+
if (attribute.YAxis)
|
|
185
|
+
{
|
|
186
|
+
var item=attribute.YAxis;
|
|
187
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
188
|
+
if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.FloatPrecision;
|
|
189
|
+
if (IFrameSplitOperator.IsNumber(item.StringFormat)) indexInfo.YAxis.StringFormat=item.StringFormat;
|
|
190
|
+
if (IFrameSplitOperator.IsBool(item.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=item.EnableRemoveZero;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
170
194
|
JSIndexScript.prototype.Get=function(id)
|
|
171
195
|
{
|
|
172
196
|
var data=g_CustomIndex.Get(id);
|
|
@@ -1581,7 +1605,7 @@ JSIndexScript.prototype.AMO = function ()
|
|
|
1581
1605
|
{
|
|
1582
1606
|
let data =
|
|
1583
1607
|
{
|
|
1584
|
-
Name: 'AMO', Description: '成交金额', IsMainIndex: false,
|
|
1608
|
+
Name: 'AMO', Description: '成交金额', IsMainIndex: false, StringFormat:2, YAxis:{ FloatPrecision:0, StringFormat:2 },
|
|
1585
1609
|
Args: [{ Name: 'M1', Value: 5 },{ Name: 'M2', Value: 10 }],
|
|
1586
1610
|
Script: //脚本
|
|
1587
1611
|
'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -611,15 +611,10 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
611
611
|
{
|
|
612
612
|
let indexInfo = scriptData.Get(item.Index);
|
|
613
613
|
if (!indexInfo) continue;
|
|
614
|
-
|
|
615
|
-
if (item.Lock) indexInfo.Lock=item.Lock;
|
|
614
|
+
JSIndexScript.ModifyAttribute(indexInfo, item);
|
|
616
615
|
indexInfo.ID=item.Index;
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
if (item.IsShortTitle) indexInfo.IsShortTitle=item.IsShortTitle;
|
|
620
|
-
if (item.TitleFont) indexInfo.TitleFont=item.TitleFont;
|
|
621
|
-
if (IFrameSplitOperator.IsBool(item.IsSync)) indexInfo.IsSync=item.IsSync;
|
|
622
|
-
chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, args,indexInfo); //脚本执行
|
|
616
|
+
|
|
617
|
+
chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
|
|
623
618
|
if (item.StringFormat>0) chart.WindowIndex[i].StringFormat=item.StringFormat;
|
|
624
619
|
if (item.FloatPrecision>=0) chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;
|
|
625
620
|
}
|
|
@@ -8062,7 +8057,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8062
8057
|
subFrame.Frame.IsShowYText[1]=option.IsShowRightText;
|
|
8063
8058
|
subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText; //显示右边刻度
|
|
8064
8059
|
}
|
|
8065
|
-
|
|
8066
8060
|
}
|
|
8067
8061
|
|
|
8068
8062
|
this.AddNewSubFrame=function(option)
|
|
@@ -8110,24 +8104,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8110
8104
|
this.RemoveMinSizeWindows(); //清空隐藏的指标
|
|
8111
8105
|
var index=this.AddNewSubFrame(option);
|
|
8112
8106
|
|
|
8113
|
-
|
|
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
|
-
};
|
|
8107
|
+
JSIndexScript.ModifyAttribute(indexInfo, option);
|
|
8121
8108
|
|
|
8122
|
-
|
|
8123
|
-
{
|
|
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;
|
|
8128
|
-
}
|
|
8129
|
-
|
|
8130
|
-
this.WindowIndex[index] = new ScriptIndex(indexData.Name, indexData.Script, indexData.Args,indexData); //脚本执行
|
|
8109
|
+
this.WindowIndex[index] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
|
|
8131
8110
|
if (this.ClassName=="MinuteChartContainer" || this.ClassName=="MinuteChartHScreenContainer")
|
|
8132
8111
|
var bindData=this.SourceData;
|
|
8133
8112
|
else
|
|
@@ -42777,7 +42756,7 @@ function IFrameSplitOperator()
|
|
|
42777
42756
|
this.Frame; //框架信息
|
|
42778
42757
|
this.FrameSplitData; //坐标轴分割方法
|
|
42779
42758
|
this.SplitCount=5; //刻度个数
|
|
42780
|
-
this.StringFormat=0; //刻度字符串格式
|
|
42759
|
+
this.StringFormat=0; //刻度字符串格式 2=原始格式
|
|
42781
42760
|
this.IsShowLeftText=true; //显示左边刻度
|
|
42782
42761
|
this.IsShowRightText=true; //显示右边刻度
|
|
42783
42762
|
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;
|
|
@@ -43120,6 +43099,13 @@ function IFrameSplitOperator()
|
|
|
43120
43099
|
|
|
43121
43100
|
return data;
|
|
43122
43101
|
}
|
|
43102
|
+
|
|
43103
|
+
this.Reset=function() //重置
|
|
43104
|
+
{
|
|
43105
|
+
|
|
43106
|
+
}
|
|
43107
|
+
|
|
43108
|
+
this.SetOption=function(option) { }
|
|
43123
43109
|
}
|
|
43124
43110
|
|
|
43125
43111
|
//字符串格式化 千分位分割
|
|
@@ -44386,7 +44372,7 @@ function FrameSplitY()
|
|
|
44386
44372
|
this.DefaultSplitType=0;
|
|
44387
44373
|
this.Custom=[]; //[{Type:0}]; 定制刻度
|
|
44388
44374
|
this.DefaultYMaxMin; //{ Max:null, Min:null }; //指定最大,最小, Y轴范围必须比最大值大, 比最小值小
|
|
44389
|
-
this.EnableRemoveZero=
|
|
44375
|
+
this.EnableRemoveZero=g_JSChartResource.Frame.EnableRemoveZero;
|
|
44390
44376
|
this.LineType=null; //线段样式
|
|
44391
44377
|
this.IgnoreYValue = null; //在这个数组里的数字不显示在刻度上
|
|
44392
44378
|
this.FixedYMaxMin; //{ Max, Min} 固定Y轴最大最小值
|
|
@@ -44411,6 +44397,22 @@ function FrameSplitY()
|
|
|
44411
44397
|
return true;
|
|
44412
44398
|
}
|
|
44413
44399
|
|
|
44400
|
+
|
|
44401
|
+
this.Reset=function() //重置
|
|
44402
|
+
{
|
|
44403
|
+
this.EnableRemoveZero=g_JSChartResource.Frame.EnableRemoveZero;
|
|
44404
|
+
this.StringFormat=g_JSChartResource.Frame.StringFormat;
|
|
44405
|
+
}
|
|
44406
|
+
|
|
44407
|
+
this.SetOption=function(option)
|
|
44408
|
+
{
|
|
44409
|
+
if (!option) return;
|
|
44410
|
+
|
|
44411
|
+
if (IFrameSplitOperator.IsNumber(option.FloatPrecision)) this.FloatPrecision=option.FloatPrecision;
|
|
44412
|
+
if (IFrameSplitOperator.IsNumber(option.StringFormat)) this.StringFormat=option.StringFormat;
|
|
44413
|
+
if (IFrameSplitOperator.IsBool(option.EnableRemoveZero)) this.EnableRemoveZero=option.EnableRemoveZero;
|
|
44414
|
+
}
|
|
44415
|
+
|
|
44414
44416
|
this.GetFloatPrecision=function(value,floatPrecision)
|
|
44415
44417
|
{
|
|
44416
44418
|
if (value>this.FLOATPRECISION_RANGE[0]) return floatPrecision;
|
|
@@ -44594,6 +44596,10 @@ function FrameSplitY()
|
|
|
44594
44596
|
if (IFrameSplitOperator.IsNumber(value) && Math.abs(value) > 1000) floatPrecision=0;
|
|
44595
44597
|
text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);
|
|
44596
44598
|
}
|
|
44599
|
+
else if (this.StringFormat==2) //原始数据输出
|
|
44600
|
+
{
|
|
44601
|
+
text=`${value.toFixed(this.FloatPrecision)}`;
|
|
44602
|
+
}
|
|
44597
44603
|
else
|
|
44598
44604
|
{
|
|
44599
44605
|
var absValue=Math.abs(value);
|
|
@@ -61818,7 +61824,9 @@ function JSChartResource()
|
|
|
61818
61824
|
this.Frame={
|
|
61819
61825
|
XBottomOffset:2*GetDevicePixelRatio(), //X轴文字向下偏移
|
|
61820
61826
|
YTopOffset:2*GetDevicePixelRatio(), //Y轴顶部文字向下偏移
|
|
61821
|
-
YTextPadding:[2,2]
|
|
61827
|
+
YTextPadding:[2,2],
|
|
61828
|
+
EnableRemoveZero:true, //移除小数点后面的0
|
|
61829
|
+
StringFormat:0
|
|
61822
61830
|
};
|
|
61823
61831
|
this.ToolbarButtonStyle=0;
|
|
61824
61832
|
|
|
@@ -67778,6 +67786,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
67778
67786
|
this.Draw();
|
|
67779
67787
|
}
|
|
67780
67788
|
|
|
67789
|
+
|
|
67781
67790
|
this.OnKLinePageChange=function(eventid)
|
|
67782
67791
|
{
|
|
67783
67792
|
if (!this.ChartPaint[0]) return;
|
|
@@ -67846,18 +67855,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
67846
67855
|
{
|
|
67847
67856
|
if (windowIndex == 0) windowIndex = 1; //幅图指标,不能再主图显示
|
|
67848
67857
|
}
|
|
67849
|
-
|
|
67850
|
-
|
|
67851
|
-
|
|
67852
|
-
if (option.FloatPrecision>=0) indexData.FloatPrecision=option.FloatPrecision;
|
|
67853
|
-
if (option.StringFormat>0) indexData.StringFormat=option.StringFormat;
|
|
67854
|
-
if (option.Args) indexData.Args=option.Args;
|
|
67855
|
-
if (option.TitleFont) indexData.TitleFont=option.TitleFont;
|
|
67856
|
-
if (option.IsShortTitle) indexData.IsShortTitle=option.IsShortTitle;
|
|
67857
|
-
if (option.Lock) indexData.Lock=option.Lock;
|
|
67858
|
-
}
|
|
67859
|
-
|
|
67860
|
-
return this.ChangeScriptIndex(windowIndex, indexData,option);
|
|
67858
|
+
|
|
67859
|
+
JSIndexScript.ModifyAttribute(indexInfo, option)
|
|
67860
|
+
return this.ChangeScriptIndex(windowIndex, indexInfo, option);
|
|
67861
67861
|
}
|
|
67862
67862
|
|
|
67863
67863
|
//主图指标
|
|
@@ -68003,21 +68003,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
68003
68003
|
}
|
|
68004
68004
|
else if (indexInfo)
|
|
68005
68005
|
{
|
|
68006
|
-
|
|
68007
|
-
|
|
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
|
-
};
|
|
68016
|
-
|
|
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); //脚本执行
|
|
68006
|
+
JSIndexScript.ModifyAttribute(indexInfo, obj);
|
|
68007
|
+
var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
|
|
68021
68008
|
scriptIndex.OverlayIndex={ IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }; //叠加指标信息
|
|
68022
68009
|
overlayFrame.Script=scriptIndex;
|
|
68023
68010
|
}
|
|
@@ -68386,19 +68373,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
68386
68373
|
var indexInfo = systemScript.Get(indexID);
|
|
68387
68374
|
if (indexInfo)
|
|
68388
68375
|
{
|
|
68389
|
-
|
|
68390
|
-
|
|
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;
|
|
68400
|
-
|
|
68401
|
-
this.WindowIndex[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
|
|
68376
|
+
JSIndexScript.ModifyAttribute(indexInfo,item);
|
|
68377
|
+
this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
|
|
68402
68378
|
}
|
|
68403
68379
|
}
|
|
68404
68380
|
}
|
|
@@ -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:, EnableRemoveZero } //Y轴刻度输出格式
|
|
41
42
|
*/
|
|
42
43
|
|
|
43
44
|
//周期条件枚举
|
|
@@ -179,6 +180,29 @@ JSIndexScript.AddIndex=function(aryIndex) //添加自定义指标
|
|
|
179
180
|
}
|
|
180
181
|
}
|
|
181
182
|
|
|
183
|
+
//修改指标属性
|
|
184
|
+
JSIndexScript.ModifyAttribute=function(indexInfo, attribute)
|
|
185
|
+
{
|
|
186
|
+
if (!attribute) return;
|
|
187
|
+
|
|
188
|
+
if (attribute.Args) indexInfo.Args=attribute.Args; //外部可以设置参数
|
|
189
|
+
if (IFrameSplitOperator.IsNumber(attribute.FloatPrecision)) indexInfo.FloatPrecision=attribute.FloatPrecision;
|
|
190
|
+
if (IFrameSplitOperator.IsNumber(attribute.StringFormat)) indexInfo.StringFormat=attribute.StringFormat;
|
|
191
|
+
if (IFrameSplitOperator.IsBool(attribute.IsSync)) indexInfo.IsSync=attribute.IsSync;
|
|
192
|
+
if (IFrameSplitOperator.IsBool(attribute.IsShortTitle)) indexInfo.IsShortTitle=attribute.IsShortTitle;
|
|
193
|
+
if (attribute.TitleFont) indexInfo.TitleFont=attribute.TitleFont;
|
|
194
|
+
if (attribute.Lock) indexInfo.Lock=attribute.Lock;
|
|
195
|
+
|
|
196
|
+
if (attribute.YAxis)
|
|
197
|
+
{
|
|
198
|
+
var item=attribute.YAxis;
|
|
199
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
200
|
+
if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.FloatPrecision;
|
|
201
|
+
if (IFrameSplitOperator.IsNumber(item.StringFormat)) indexInfo.YAxis.StringFormat=item.StringFormat;
|
|
202
|
+
if (IFrameSplitOperator.IsBool(item.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=item.EnableRemoveZero;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
182
206
|
JSIndexScript.prototype.Get=function(id)
|
|
183
207
|
{
|
|
184
208
|
var data=g_CustomIndex.Get(id);
|
|
@@ -1593,7 +1617,7 @@ JSIndexScript.prototype.AMO = function ()
|
|
|
1593
1617
|
{
|
|
1594
1618
|
let data =
|
|
1595
1619
|
{
|
|
1596
|
-
Name: 'AMO', Description: '成交金额', IsMainIndex: false,
|
|
1620
|
+
Name: 'AMO', Description: '成交金额', IsMainIndex: false, StringFormat:2, YAxis:{ FloatPrecision:0, StringFormat:2 },
|
|
1597
1621
|
Args: [{ Name: 'M1', Value: 5 },{ Name: 'M2', Value: 10 }],
|
|
1598
1622
|
Script: //脚本
|
|
1599
1623
|
'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
|
|
@@ -4778,15 +4802,10 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4778
4802
|
{
|
|
4779
4803
|
let indexInfo = scriptData.Get(item.Index);
|
|
4780
4804
|
if (!indexInfo) continue;
|
|
4781
|
-
|
|
4782
|
-
if (item.Lock) indexInfo.Lock=item.Lock;
|
|
4805
|
+
JSIndexScript.ModifyAttribute(indexInfo, item);
|
|
4783
4806
|
indexInfo.ID=item.Index;
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
if (item.IsShortTitle) indexInfo.IsShortTitle=item.IsShortTitle;
|
|
4787
|
-
if (item.TitleFont) indexInfo.TitleFont=item.TitleFont;
|
|
4788
|
-
if (IFrameSplitOperator.IsBool(item.IsSync)) indexInfo.IsSync=item.IsSync;
|
|
4789
|
-
chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, args,indexInfo); //脚本执行
|
|
4807
|
+
|
|
4808
|
+
chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
|
|
4790
4809
|
if (item.StringFormat>0) chart.WindowIndex[i].StringFormat=item.StringFormat;
|
|
4791
4810
|
if (item.FloatPrecision>=0) chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;
|
|
4792
4811
|
}
|
|
@@ -12229,7 +12248,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12229
12248
|
subFrame.Frame.IsShowYText[1]=option.IsShowRightText;
|
|
12230
12249
|
subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText; //显示右边刻度
|
|
12231
12250
|
}
|
|
12232
|
-
|
|
12233
12251
|
}
|
|
12234
12252
|
|
|
12235
12253
|
this.AddNewSubFrame=function(option)
|
|
@@ -12277,24 +12295,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12277
12295
|
this.RemoveMinSizeWindows(); //清空隐藏的指标
|
|
12278
12296
|
var index=this.AddNewSubFrame(option);
|
|
12279
12297
|
|
|
12280
|
-
|
|
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
|
-
};
|
|
12298
|
+
JSIndexScript.ModifyAttribute(indexInfo, option);
|
|
12288
12299
|
|
|
12289
|
-
|
|
12290
|
-
{
|
|
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;
|
|
12295
|
-
}
|
|
12296
|
-
|
|
12297
|
-
this.WindowIndex[index] = new ScriptIndex(indexData.Name, indexData.Script, indexData.Args,indexData); //脚本执行
|
|
12300
|
+
this.WindowIndex[index] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
|
|
12298
12301
|
if (this.ClassName=="MinuteChartContainer" || this.ClassName=="MinuteChartHScreenContainer")
|
|
12299
12302
|
var bindData=this.SourceData;
|
|
12300
12303
|
else
|
|
@@ -46944,7 +46947,7 @@ function IFrameSplitOperator()
|
|
|
46944
46947
|
this.Frame; //框架信息
|
|
46945
46948
|
this.FrameSplitData; //坐标轴分割方法
|
|
46946
46949
|
this.SplitCount=5; //刻度个数
|
|
46947
|
-
this.StringFormat=0; //刻度字符串格式
|
|
46950
|
+
this.StringFormat=0; //刻度字符串格式 2=原始格式
|
|
46948
46951
|
this.IsShowLeftText=true; //显示左边刻度
|
|
46949
46952
|
this.IsShowRightText=true; //显示右边刻度
|
|
46950
46953
|
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;
|
|
@@ -47287,6 +47290,13 @@ function IFrameSplitOperator()
|
|
|
47287
47290
|
|
|
47288
47291
|
return data;
|
|
47289
47292
|
}
|
|
47293
|
+
|
|
47294
|
+
this.Reset=function() //重置
|
|
47295
|
+
{
|
|
47296
|
+
|
|
47297
|
+
}
|
|
47298
|
+
|
|
47299
|
+
this.SetOption=function(option) { }
|
|
47290
47300
|
}
|
|
47291
47301
|
|
|
47292
47302
|
//字符串格式化 千分位分割
|
|
@@ -48553,7 +48563,7 @@ function FrameSplitY()
|
|
|
48553
48563
|
this.DefaultSplitType=0;
|
|
48554
48564
|
this.Custom=[]; //[{Type:0}]; 定制刻度
|
|
48555
48565
|
this.DefaultYMaxMin; //{ Max:null, Min:null }; //指定最大,最小, Y轴范围必须比最大值大, 比最小值小
|
|
48556
|
-
this.EnableRemoveZero=
|
|
48566
|
+
this.EnableRemoveZero=g_JSChartResource.Frame.EnableRemoveZero;
|
|
48557
48567
|
this.LineType=null; //线段样式
|
|
48558
48568
|
this.IgnoreYValue = null; //在这个数组里的数字不显示在刻度上
|
|
48559
48569
|
this.FixedYMaxMin; //{ Max, Min} 固定Y轴最大最小值
|
|
@@ -48578,6 +48588,22 @@ function FrameSplitY()
|
|
|
48578
48588
|
return true;
|
|
48579
48589
|
}
|
|
48580
48590
|
|
|
48591
|
+
|
|
48592
|
+
this.Reset=function() //重置
|
|
48593
|
+
{
|
|
48594
|
+
this.EnableRemoveZero=g_JSChartResource.Frame.EnableRemoveZero;
|
|
48595
|
+
this.StringFormat=g_JSChartResource.Frame.StringFormat;
|
|
48596
|
+
}
|
|
48597
|
+
|
|
48598
|
+
this.SetOption=function(option)
|
|
48599
|
+
{
|
|
48600
|
+
if (!option) return;
|
|
48601
|
+
|
|
48602
|
+
if (IFrameSplitOperator.IsNumber(option.FloatPrecision)) this.FloatPrecision=option.FloatPrecision;
|
|
48603
|
+
if (IFrameSplitOperator.IsNumber(option.StringFormat)) this.StringFormat=option.StringFormat;
|
|
48604
|
+
if (IFrameSplitOperator.IsBool(option.EnableRemoveZero)) this.EnableRemoveZero=option.EnableRemoveZero;
|
|
48605
|
+
}
|
|
48606
|
+
|
|
48581
48607
|
this.GetFloatPrecision=function(value,floatPrecision)
|
|
48582
48608
|
{
|
|
48583
48609
|
if (value>this.FLOATPRECISION_RANGE[0]) return floatPrecision;
|
|
@@ -48761,6 +48787,10 @@ function FrameSplitY()
|
|
|
48761
48787
|
if (IFrameSplitOperator.IsNumber(value) && Math.abs(value) > 1000) floatPrecision=0;
|
|
48762
48788
|
text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);
|
|
48763
48789
|
}
|
|
48790
|
+
else if (this.StringFormat==2) //原始数据输出
|
|
48791
|
+
{
|
|
48792
|
+
text=`${value.toFixed(this.FloatPrecision)}`;
|
|
48793
|
+
}
|
|
48764
48794
|
else
|
|
48765
48795
|
{
|
|
48766
48796
|
var absValue=Math.abs(value);
|
|
@@ -65985,7 +66015,9 @@ function JSChartResource()
|
|
|
65985
66015
|
this.Frame={
|
|
65986
66016
|
XBottomOffset:2*GetDevicePixelRatio(), //X轴文字向下偏移
|
|
65987
66017
|
YTopOffset:2*GetDevicePixelRatio(), //Y轴顶部文字向下偏移
|
|
65988
|
-
YTextPadding:[2,2]
|
|
66018
|
+
YTextPadding:[2,2],
|
|
66019
|
+
EnableRemoveZero:true, //移除小数点后面的0
|
|
66020
|
+
StringFormat:0
|
|
65989
66021
|
};
|
|
65990
66022
|
this.ToolbarButtonStyle=0;
|
|
65991
66023
|
|
|
@@ -71945,6 +71977,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71945
71977
|
this.Draw();
|
|
71946
71978
|
}
|
|
71947
71979
|
|
|
71980
|
+
|
|
71948
71981
|
this.OnKLinePageChange=function(eventid)
|
|
71949
71982
|
{
|
|
71950
71983
|
if (!this.ChartPaint[0]) return;
|
|
@@ -72013,18 +72046,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72013
72046
|
{
|
|
72014
72047
|
if (windowIndex == 0) windowIndex = 1; //幅图指标,不能再主图显示
|
|
72015
72048
|
}
|
|
72016
|
-
|
|
72017
|
-
|
|
72018
|
-
|
|
72019
|
-
if (option.FloatPrecision>=0) indexData.FloatPrecision=option.FloatPrecision;
|
|
72020
|
-
if (option.StringFormat>0) indexData.StringFormat=option.StringFormat;
|
|
72021
|
-
if (option.Args) indexData.Args=option.Args;
|
|
72022
|
-
if (option.TitleFont) indexData.TitleFont=option.TitleFont;
|
|
72023
|
-
if (option.IsShortTitle) indexData.IsShortTitle=option.IsShortTitle;
|
|
72024
|
-
if (option.Lock) indexData.Lock=option.Lock;
|
|
72025
|
-
}
|
|
72026
|
-
|
|
72027
|
-
return this.ChangeScriptIndex(windowIndex, indexData,option);
|
|
72049
|
+
|
|
72050
|
+
JSIndexScript.ModifyAttribute(indexInfo, option)
|
|
72051
|
+
return this.ChangeScriptIndex(windowIndex, indexInfo, option);
|
|
72028
72052
|
}
|
|
72029
72053
|
|
|
72030
72054
|
//主图指标
|
|
@@ -72170,21 +72194,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72170
72194
|
}
|
|
72171
72195
|
else if (indexInfo)
|
|
72172
72196
|
{
|
|
72173
|
-
|
|
72174
|
-
|
|
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
|
-
};
|
|
72183
|
-
|
|
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); //脚本执行
|
|
72197
|
+
JSIndexScript.ModifyAttribute(indexInfo, obj);
|
|
72198
|
+
var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
|
|
72188
72199
|
scriptIndex.OverlayIndex={ IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }; //叠加指标信息
|
|
72189
72200
|
overlayFrame.Script=scriptIndex;
|
|
72190
72201
|
}
|
|
@@ -72553,19 +72564,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72553
72564
|
var indexInfo = systemScript.Get(indexID);
|
|
72554
72565
|
if (indexInfo)
|
|
72555
72566
|
{
|
|
72556
|
-
|
|
72557
|
-
|
|
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;
|
|
72567
|
-
|
|
72568
|
-
this.WindowIndex[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
|
|
72567
|
+
JSIndexScript.ModifyAttribute(indexInfo,item);
|
|
72568
|
+
this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
|
|
72569
72569
|
}
|
|
72570
72570
|
}
|
|
72571
72571
|
}
|
|
@@ -112403,6 +112403,8 @@ function ScriptIndex(name,script,args,option)
|
|
|
112403
112403
|
this.TitleFont=g_JSChartResource.TitleFont; //标题字体
|
|
112404
112404
|
this.IsShortTitle=false; //是否显示指标参数
|
|
112405
112405
|
this.IsUsePageData=false; //是否使用了K线界面数据
|
|
112406
|
+
|
|
112407
|
+
this.YAxis=null; //Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
|
|
112406
112408
|
|
|
112407
112409
|
//调试信息
|
|
112408
112410
|
this.Debug; // { Callback:, Count: }
|
|
@@ -112452,6 +112454,15 @@ function ScriptIndex(name,script,args,option)
|
|
|
112452
112454
|
if (option.Lock.MinWidth) this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();
|
|
112453
112455
|
}
|
|
112454
112456
|
|
|
112457
|
+
if (option && option.YAxis)
|
|
112458
|
+
{
|
|
112459
|
+
this.YAxis={ };
|
|
112460
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) this.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
|
|
112461
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) this.YAxis.StringFormat=option.YAxis.StringFormat;
|
|
112462
|
+
if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) this.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
|
|
112463
|
+
|
|
112464
|
+
}
|
|
112465
|
+
|
|
112455
112466
|
if (args) this.Arguments=args;
|
|
112456
112467
|
|
|
112457
112468
|
this.CopyTo=function(dest) //赋值到新实例出来
|
|
@@ -114129,7 +114140,15 @@ function ScriptIndex(name,script,args,option)
|
|
|
114129
114140
|
|
|
114130
114141
|
if (windowIndex>=1 && hqChart.Frame)
|
|
114131
114142
|
{
|
|
114132
|
-
|
|
114143
|
+
//Y轴刻度格式 默认跟标题栏一致
|
|
114144
|
+
var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;
|
|
114145
|
+
if (ySpliter)
|
|
114146
|
+
{
|
|
114147
|
+
ySpliter.Reset();
|
|
114148
|
+
ySpliter.FloatPrecision=this.FloatPrecision;
|
|
114149
|
+
if (this.YAxis) ySpliter.SetOption(this.YAxis);
|
|
114150
|
+
}
|
|
114151
|
+
|
|
114133
114152
|
if (this.YSpecificMaxMin) hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin; //最大最小值
|
|
114134
114153
|
if (this.YSplitScale) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale; //固定刻度
|
|
114135
114154
|
}
|
|
@@ -114501,7 +114520,14 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
114501
114520
|
if (!IFrameSplitOperator.IsNonEmptyArray(this.OutVar)) return;
|
|
114502
114521
|
|
|
114503
114522
|
//修改Y轴分割方式
|
|
114504
|
-
|
|
114523
|
+
var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;
|
|
114524
|
+
if (ySpliter)
|
|
114525
|
+
{
|
|
114526
|
+
ySpliter.Reset();
|
|
114527
|
+
ySpliter.FloatPrecision=this.FloatPrecision;
|
|
114528
|
+
if (IFrameSplitOperator.IsNumber(this.YSplitType)) ySpliter.SplitType=this.YSplitType;
|
|
114529
|
+
if (this.YAxis) ySpliter.SetOption(this.YAxis);
|
|
114530
|
+
}
|
|
114505
114531
|
|
|
114506
114532
|
//指标名字
|
|
114507
114533
|
var titleInfo={ Data:[], Title:this.Name, Frame:this.OverlayIndex.Frame.Frame, Script:this };
|
|
@@ -129282,7 +129308,7 @@ function ScrollBarBGChart()
|
|
|
129282
129308
|
|
|
129283
129309
|
|
|
129284
129310
|
|
|
129285
|
-
var HQCHART_VERSION="1.1.
|
|
129311
|
+
var HQCHART_VERSION="1.1.12934";
|
|
129286
129312
|
|
|
129287
129313
|
function PrintHQChartVersion()
|
|
129288
129314
|
{
|
|
@@ -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:, EnableRemoveZero } //Y轴刻度输出格式
|
|
85
86
|
*/
|
|
86
87
|
|
|
87
88
|
//周期条件枚举
|
|
@@ -223,6 +224,29 @@ JSIndexScript.AddIndex=function(aryIndex) //添加自定义指标
|
|
|
223
224
|
}
|
|
224
225
|
}
|
|
225
226
|
|
|
227
|
+
//修改指标属性
|
|
228
|
+
JSIndexScript.ModifyAttribute=function(indexInfo, attribute)
|
|
229
|
+
{
|
|
230
|
+
if (!attribute) return;
|
|
231
|
+
|
|
232
|
+
if (attribute.Args) indexInfo.Args=attribute.Args; //外部可以设置参数
|
|
233
|
+
if (IFrameSplitOperator.IsNumber(attribute.FloatPrecision)) indexInfo.FloatPrecision=attribute.FloatPrecision;
|
|
234
|
+
if (IFrameSplitOperator.IsNumber(attribute.StringFormat)) indexInfo.StringFormat=attribute.StringFormat;
|
|
235
|
+
if (IFrameSplitOperator.IsBool(attribute.IsSync)) indexInfo.IsSync=attribute.IsSync;
|
|
236
|
+
if (IFrameSplitOperator.IsBool(attribute.IsShortTitle)) indexInfo.IsShortTitle=attribute.IsShortTitle;
|
|
237
|
+
if (attribute.TitleFont) indexInfo.TitleFont=attribute.TitleFont;
|
|
238
|
+
if (attribute.Lock) indexInfo.Lock=attribute.Lock;
|
|
239
|
+
|
|
240
|
+
if (attribute.YAxis)
|
|
241
|
+
{
|
|
242
|
+
var item=attribute.YAxis;
|
|
243
|
+
if (!indexInfo.YAxis) indexInfo.YAxis={ };
|
|
244
|
+
if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.FloatPrecision;
|
|
245
|
+
if (IFrameSplitOperator.IsNumber(item.StringFormat)) indexInfo.YAxis.StringFormat=item.StringFormat;
|
|
246
|
+
if (IFrameSplitOperator.IsBool(item.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=item.EnableRemoveZero;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
226
250
|
JSIndexScript.prototype.Get=function(id)
|
|
227
251
|
{
|
|
228
252
|
var data=g_CustomIndex.Get(id);
|
|
@@ -1637,7 +1661,7 @@ JSIndexScript.prototype.AMO = function ()
|
|
|
1637
1661
|
{
|
|
1638
1662
|
let data =
|
|
1639
1663
|
{
|
|
1640
|
-
Name: 'AMO', Description: '成交金额', IsMainIndex: false,
|
|
1664
|
+
Name: 'AMO', Description: '成交金额', IsMainIndex: false, StringFormat:2, YAxis:{ FloatPrecision:0, StringFormat:2 },
|
|
1641
1665
|
Args: [{ Name: 'M1', Value: 5 },{ Name: 'M2', Value: 10 }],
|
|
1642
1666
|
Script: //脚本
|
|
1643
1667
|
'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
|
|
@@ -4822,15 +4846,10 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4822
4846
|
{
|
|
4823
4847
|
let indexInfo = scriptData.Get(item.Index);
|
|
4824
4848
|
if (!indexInfo) continue;
|
|
4825
|
-
|
|
4826
|
-
if (item.Lock) indexInfo.Lock=item.Lock;
|
|
4849
|
+
JSIndexScript.ModifyAttribute(indexInfo, item);
|
|
4827
4850
|
indexInfo.ID=item.Index;
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
if (item.IsShortTitle) indexInfo.IsShortTitle=item.IsShortTitle;
|
|
4831
|
-
if (item.TitleFont) indexInfo.TitleFont=item.TitleFont;
|
|
4832
|
-
if (IFrameSplitOperator.IsBool(item.IsSync)) indexInfo.IsSync=item.IsSync;
|
|
4833
|
-
chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, args,indexInfo); //脚本执行
|
|
4851
|
+
|
|
4852
|
+
chart.WindowIndex[i] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
|
|
4834
4853
|
if (item.StringFormat>0) chart.WindowIndex[i].StringFormat=item.StringFormat;
|
|
4835
4854
|
if (item.FloatPrecision>=0) chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;
|
|
4836
4855
|
}
|
|
@@ -12273,7 +12292,6 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12273
12292
|
subFrame.Frame.IsShowYText[1]=option.IsShowRightText;
|
|
12274
12293
|
subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText; //显示右边刻度
|
|
12275
12294
|
}
|
|
12276
|
-
|
|
12277
12295
|
}
|
|
12278
12296
|
|
|
12279
12297
|
this.AddNewSubFrame=function(option)
|
|
@@ -12321,24 +12339,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
12321
12339
|
this.RemoveMinSizeWindows(); //清空隐藏的指标
|
|
12322
12340
|
var index=this.AddNewSubFrame(option);
|
|
12323
12341
|
|
|
12324
|
-
|
|
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
|
-
};
|
|
12342
|
+
JSIndexScript.ModifyAttribute(indexInfo, option);
|
|
12332
12343
|
|
|
12333
|
-
|
|
12334
|
-
{
|
|
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;
|
|
12339
|
-
}
|
|
12340
|
-
|
|
12341
|
-
this.WindowIndex[index] = new ScriptIndex(indexData.Name, indexData.Script, indexData.Args,indexData); //脚本执行
|
|
12344
|
+
this.WindowIndex[index] = new ScriptIndex(indexInfo.Name, indexInfo.Script, indexInfo.Args,indexInfo); //脚本执行
|
|
12342
12345
|
if (this.ClassName=="MinuteChartContainer" || this.ClassName=="MinuteChartHScreenContainer")
|
|
12343
12346
|
var bindData=this.SourceData;
|
|
12344
12347
|
else
|
|
@@ -46988,7 +46991,7 @@ function IFrameSplitOperator()
|
|
|
46988
46991
|
this.Frame; //框架信息
|
|
46989
46992
|
this.FrameSplitData; //坐标轴分割方法
|
|
46990
46993
|
this.SplitCount=5; //刻度个数
|
|
46991
|
-
this.StringFormat=0; //刻度字符串格式
|
|
46994
|
+
this.StringFormat=0; //刻度字符串格式 2=原始格式
|
|
46992
46995
|
this.IsShowLeftText=true; //显示左边刻度
|
|
46993
46996
|
this.IsShowRightText=true; //显示右边刻度
|
|
46994
46997
|
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;
|
|
@@ -47331,6 +47334,13 @@ function IFrameSplitOperator()
|
|
|
47331
47334
|
|
|
47332
47335
|
return data;
|
|
47333
47336
|
}
|
|
47337
|
+
|
|
47338
|
+
this.Reset=function() //重置
|
|
47339
|
+
{
|
|
47340
|
+
|
|
47341
|
+
}
|
|
47342
|
+
|
|
47343
|
+
this.SetOption=function(option) { }
|
|
47334
47344
|
}
|
|
47335
47345
|
|
|
47336
47346
|
//字符串格式化 千分位分割
|
|
@@ -48597,7 +48607,7 @@ function FrameSplitY()
|
|
|
48597
48607
|
this.DefaultSplitType=0;
|
|
48598
48608
|
this.Custom=[]; //[{Type:0}]; 定制刻度
|
|
48599
48609
|
this.DefaultYMaxMin; //{ Max:null, Min:null }; //指定最大,最小, Y轴范围必须比最大值大, 比最小值小
|
|
48600
|
-
this.EnableRemoveZero=
|
|
48610
|
+
this.EnableRemoveZero=g_JSChartResource.Frame.EnableRemoveZero;
|
|
48601
48611
|
this.LineType=null; //线段样式
|
|
48602
48612
|
this.IgnoreYValue = null; //在这个数组里的数字不显示在刻度上
|
|
48603
48613
|
this.FixedYMaxMin; //{ Max, Min} 固定Y轴最大最小值
|
|
@@ -48622,6 +48632,22 @@ function FrameSplitY()
|
|
|
48622
48632
|
return true;
|
|
48623
48633
|
}
|
|
48624
48634
|
|
|
48635
|
+
|
|
48636
|
+
this.Reset=function() //重置
|
|
48637
|
+
{
|
|
48638
|
+
this.EnableRemoveZero=g_JSChartResource.Frame.EnableRemoveZero;
|
|
48639
|
+
this.StringFormat=g_JSChartResource.Frame.StringFormat;
|
|
48640
|
+
}
|
|
48641
|
+
|
|
48642
|
+
this.SetOption=function(option)
|
|
48643
|
+
{
|
|
48644
|
+
if (!option) return;
|
|
48645
|
+
|
|
48646
|
+
if (IFrameSplitOperator.IsNumber(option.FloatPrecision)) this.FloatPrecision=option.FloatPrecision;
|
|
48647
|
+
if (IFrameSplitOperator.IsNumber(option.StringFormat)) this.StringFormat=option.StringFormat;
|
|
48648
|
+
if (IFrameSplitOperator.IsBool(option.EnableRemoveZero)) this.EnableRemoveZero=option.EnableRemoveZero;
|
|
48649
|
+
}
|
|
48650
|
+
|
|
48625
48651
|
this.GetFloatPrecision=function(value,floatPrecision)
|
|
48626
48652
|
{
|
|
48627
48653
|
if (value>this.FLOATPRECISION_RANGE[0]) return floatPrecision;
|
|
@@ -48805,6 +48831,10 @@ function FrameSplitY()
|
|
|
48805
48831
|
if (IFrameSplitOperator.IsNumber(value) && Math.abs(value) > 1000) floatPrecision=0;
|
|
48806
48832
|
text=IFrameSplitOperator.FormatValueString(value,floatPrecision,this.LanguageID);
|
|
48807
48833
|
}
|
|
48834
|
+
else if (this.StringFormat==2) //原始数据输出
|
|
48835
|
+
{
|
|
48836
|
+
text=`${value.toFixed(this.FloatPrecision)}`;
|
|
48837
|
+
}
|
|
48808
48838
|
else
|
|
48809
48839
|
{
|
|
48810
48840
|
var absValue=Math.abs(value);
|
|
@@ -66029,7 +66059,9 @@ function JSChartResource()
|
|
|
66029
66059
|
this.Frame={
|
|
66030
66060
|
XBottomOffset:2*GetDevicePixelRatio(), //X轴文字向下偏移
|
|
66031
66061
|
YTopOffset:2*GetDevicePixelRatio(), //Y轴顶部文字向下偏移
|
|
66032
|
-
YTextPadding:[2,2]
|
|
66062
|
+
YTextPadding:[2,2],
|
|
66063
|
+
EnableRemoveZero:true, //移除小数点后面的0
|
|
66064
|
+
StringFormat:0
|
|
66033
66065
|
};
|
|
66034
66066
|
this.ToolbarButtonStyle=0;
|
|
66035
66067
|
|
|
@@ -71989,6 +72021,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71989
72021
|
this.Draw();
|
|
71990
72022
|
}
|
|
71991
72023
|
|
|
72024
|
+
|
|
71992
72025
|
this.OnKLinePageChange=function(eventid)
|
|
71993
72026
|
{
|
|
71994
72027
|
if (!this.ChartPaint[0]) return;
|
|
@@ -72057,18 +72090,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72057
72090
|
{
|
|
72058
72091
|
if (windowIndex == 0) windowIndex = 1; //幅图指标,不能再主图显示
|
|
72059
72092
|
}
|
|
72060
|
-
|
|
72061
|
-
|
|
72062
|
-
|
|
72063
|
-
if (option.FloatPrecision>=0) indexData.FloatPrecision=option.FloatPrecision;
|
|
72064
|
-
if (option.StringFormat>0) indexData.StringFormat=option.StringFormat;
|
|
72065
|
-
if (option.Args) indexData.Args=option.Args;
|
|
72066
|
-
if (option.TitleFont) indexData.TitleFont=option.TitleFont;
|
|
72067
|
-
if (option.IsShortTitle) indexData.IsShortTitle=option.IsShortTitle;
|
|
72068
|
-
if (option.Lock) indexData.Lock=option.Lock;
|
|
72069
|
-
}
|
|
72070
|
-
|
|
72071
|
-
return this.ChangeScriptIndex(windowIndex, indexData,option);
|
|
72093
|
+
|
|
72094
|
+
JSIndexScript.ModifyAttribute(indexInfo, option)
|
|
72095
|
+
return this.ChangeScriptIndex(windowIndex, indexInfo, option);
|
|
72072
72096
|
}
|
|
72073
72097
|
|
|
72074
72098
|
//主图指标
|
|
@@ -72214,21 +72238,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72214
72238
|
}
|
|
72215
72239
|
else if (indexInfo)
|
|
72216
72240
|
{
|
|
72217
|
-
|
|
72218
|
-
|
|
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
|
-
};
|
|
72227
|
-
|
|
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); //脚本执行
|
|
72241
|
+
JSIndexScript.ModifyAttribute(indexInfo, obj);
|
|
72242
|
+
var scriptIndex=new OverlayScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
|
|
72232
72243
|
scriptIndex.OverlayIndex={ IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }; //叠加指标信息
|
|
72233
72244
|
overlayFrame.Script=scriptIndex;
|
|
72234
72245
|
}
|
|
@@ -72597,19 +72608,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72597
72608
|
var indexInfo = systemScript.Get(indexID);
|
|
72598
72609
|
if (indexInfo)
|
|
72599
72610
|
{
|
|
72600
|
-
|
|
72601
|
-
|
|
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;
|
|
72611
|
-
|
|
72612
|
-
this.WindowIndex[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
|
|
72611
|
+
JSIndexScript.ModifyAttribute(indexInfo,item);
|
|
72612
|
+
this.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
|
|
72613
72613
|
}
|
|
72614
72614
|
}
|
|
72615
72615
|
}
|
|
@@ -112447,6 +112447,8 @@ function ScriptIndex(name,script,args,option)
|
|
|
112447
112447
|
this.TitleFont=g_JSChartResource.TitleFont; //标题字体
|
|
112448
112448
|
this.IsShortTitle=false; //是否显示指标参数
|
|
112449
112449
|
this.IsUsePageData=false; //是否使用了K线界面数据
|
|
112450
|
+
|
|
112451
|
+
this.YAxis=null; //Y轴刻度设置 { FloatPrecision, StringFormat, EnableRemoveZero }
|
|
112450
112452
|
|
|
112451
112453
|
//调试信息
|
|
112452
112454
|
this.Debug; // { Callback:, Count: }
|
|
@@ -112496,6 +112498,15 @@ function ScriptIndex(name,script,args,option)
|
|
|
112496
112498
|
if (option.Lock.MinWidth) this.LockMinWidth=option.Lock.MinWidth*GetDevicePixelRatio();
|
|
112497
112499
|
}
|
|
112498
112500
|
|
|
112501
|
+
if (option && option.YAxis)
|
|
112502
|
+
{
|
|
112503
|
+
this.YAxis={ };
|
|
112504
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.FloatPrecision)) this.YAxis.FloatPrecision=option.YAxis.FloatPrecision;
|
|
112505
|
+
if (IFrameSplitOperator.IsNumber(option.YAxis.StringFormat)) this.YAxis.StringFormat=option.YAxis.StringFormat;
|
|
112506
|
+
if (IFrameSplitOperator.IsBool(option.YAxis.EnableRemoveZero)) this.YAxis.EnableRemoveZero=option.YAxis.EnableRemoveZero;
|
|
112507
|
+
|
|
112508
|
+
}
|
|
112509
|
+
|
|
112499
112510
|
if (args) this.Arguments=args;
|
|
112500
112511
|
|
|
112501
112512
|
this.CopyTo=function(dest) //赋值到新实例出来
|
|
@@ -114173,7 +114184,15 @@ function ScriptIndex(name,script,args,option)
|
|
|
114173
114184
|
|
|
114174
114185
|
if (windowIndex>=1 && hqChart.Frame)
|
|
114175
114186
|
{
|
|
114176
|
-
|
|
114187
|
+
//Y轴刻度格式 默认跟标题栏一致
|
|
114188
|
+
var ySpliter=hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator;
|
|
114189
|
+
if (ySpliter)
|
|
114190
|
+
{
|
|
114191
|
+
ySpliter.Reset();
|
|
114192
|
+
ySpliter.FloatPrecision=this.FloatPrecision;
|
|
114193
|
+
if (this.YAxis) ySpliter.SetOption(this.YAxis);
|
|
114194
|
+
}
|
|
114195
|
+
|
|
114177
114196
|
if (this.YSpecificMaxMin) hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin=this.YSpecificMaxMin; //最大最小值
|
|
114178
114197
|
if (this.YSplitScale) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.YSplitScale; //固定刻度
|
|
114179
114198
|
}
|
|
@@ -114545,7 +114564,14 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
114545
114564
|
if (!IFrameSplitOperator.IsNonEmptyArray(this.OutVar)) return;
|
|
114546
114565
|
|
|
114547
114566
|
//修改Y轴分割方式
|
|
114548
|
-
|
|
114567
|
+
var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;
|
|
114568
|
+
if (ySpliter)
|
|
114569
|
+
{
|
|
114570
|
+
ySpliter.Reset();
|
|
114571
|
+
ySpliter.FloatPrecision=this.FloatPrecision;
|
|
114572
|
+
if (IFrameSplitOperator.IsNumber(this.YSplitType)) ySpliter.SplitType=this.YSplitType;
|
|
114573
|
+
if (this.YAxis) ySpliter.SetOption(this.YAxis);
|
|
114574
|
+
}
|
|
114549
114575
|
|
|
114550
114576
|
//指标名字
|
|
114551
114577
|
var titleInfo={ Data:[], Title:this.Name, Frame:this.OverlayIndex.Frame.Frame, Script:this };
|
|
@@ -129440,7 +129466,7 @@ function HQChartScriptWorker()
|
|
|
129440
129466
|
|
|
129441
129467
|
|
|
129442
129468
|
|
|
129443
|
-
var HQCHART_VERSION="1.1.
|
|
129469
|
+
var HQCHART_VERSION="1.1.12934";
|
|
129444
129470
|
|
|
129445
129471
|
function PrintHQChartVersion()
|
|
129446
129472
|
{
|