hqchart 1.1.12437 → 1.1.12446
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 +29 -29
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +69 -30
- package/src/jscommon/umychart.js +9 -9
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +79 -40
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +79 -40
- package/src/jscommon/umychart.wechat/umychart.complier.wechat.js +39 -0
- package/src/jscommon/umychart.wechat/umychart.framesplit.wechat.js +41 -0
- package/src/jscommon/umychart.wechat/umychart.version.wechat.js +1 -1
- package/src/jscommon/umychart.wechat/umychart.wechat.3.0.js +1 -0
package/lib/umychart.vue.js
CHANGED
|
@@ -4896,7 +4896,7 @@ return year.toString()+'-'+IFrameSplitOperator.NumberToString(month)+'-'+IFrameS
|
|
|
4896
4896
|
IFrameSplitOperator.FormatReportDateString=function(value){var year=parseInt(value/10000);var month=parseInt(value/100)%100;var monthText;switch(month){case 3:monthText="一季度报";break;case 6:monthText="半年报";break;case 9:monthText="三季度报";break;case 12:monthText="年报";break;}return year.toString()+monthText;};IFrameSplitOperator.FormatDateTimeString=function(value,isShowDate,isShowTime){var aryValue=value.split(' ');if(aryValue.length<2)return"";var result="";if(isShowDate){var date=parseInt(aryValue[0]);var year=parseInt(date/10000);var month=parseInt(date%10000/100);var day=date%100;var text=year.toString()+'-'+(month<10?'0'+month.toString():month.toString())+'-'+(day<10?'0'+day.toString():day.toString());result+=text;}if(isShowTime){var time=parseInt(aryValue[1]);if(time<10000){var minute=time%100;var hour=parseInt(time/100);var text=IFrameSplitOperator.NumberToString(hour)+':'+IFrameSplitOperator.NumberToString(minute);if(result.length>0)result+=" ";result+=text;}else{var hour=parseInt(time/10000);var minute=parseInt(time%10000/100);var second=time%100;var text=IFrameSplitOperator.NumberToString(hour)+':'+IFrameSplitOperator.NumberToString(minute)+':'+IFrameSplitOperator.NumberToString(second);if(result.length>0)result+=" ";result+=text;}}return result;};//字段颜色格式化
|
|
4897
4897
|
IFrameSplitOperator.FormatValueColor=function(value,value2){if(value!=null&&value2==null)//只传一个值的 就判断value正负
|
|
4898
4898
|
{if(value==0)return'PriceNull';else if(value>0)return'PriceUp';else return'PriceDown';}//2个数值对比 返回颜色
|
|
4899
|
-
if(value==null||value2==null)return'PriceNull';if(value==value2)return'PriceNull';else if(value>value2)return'PriceUp';else return'PriceDown';};IFrameSplitOperator.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return
|
|
4899
|
+
if(value==null||value2==null)return'PriceNull';if(value==value2)return'PriceNull';else if(value>value2)return'PriceUp';else return'PriceDown';};IFrameSplitOperator.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return typeof value=='number';};//判断是否是正数
|
|
4900
4900
|
IFrameSplitOperator.IsPlusNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return value>0;};//是否是整形
|
|
4901
4901
|
IFrameSplitOperator.IsInteger=function(x){return typeof x==='number'&&x%1===0;};//判断字段是否存在
|
|
4902
4902
|
IFrameSplitOperator.IsObjectExist=function(obj){if(obj===undefined)return false;if(obj==null)return false;return true;};//是否时bool
|
|
@@ -9374,41 +9374,41 @@ var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.len
|
|
|
9374
9374
|
if(_i53<data.length&&_i53<data2.length){if(this.IsNumber(data[_i53])&&this.IsDivideNumber(data2[_i53]))result[_i53]=data[_i53]/data2[_i53];}}return result;}if(isNumber)//单数据-数组
|
|
9375
9375
|
{for(var _i54 in data2){result[_i54]=null;if(this.IsNumber(data)&&this.IsDivideNumber(data2[_i54]))result[_i54]=data/data2[_i54];}}else//数组-单数据
|
|
9376
9376
|
{for(var _i55 in data){result[_i55]=null;if(this.IsNumber(data[_i55])&&this.IsDivideNumber(data2))result[_i55]=data[_i55]/data2;}}return result;};//大于
|
|
9377
|
-
this.GT=function(data,data2){var isNumber=
|
|
9377
|
+
this.GT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9378
9378
|
if(isNumber&&isNumber2)return data>data2?1:0;//都是数组比较
|
|
9379
|
-
var result=[];if(
|
|
9380
|
-
if(_i56<data.length&&_i56<data2.length){if(!isNaN(data[_i56])&&!isNaN(data2[_i56]))result[_i56]=data[_i56]>data2[_i56]?1:0;}}return result;}if(isNumber)//单数据-数组
|
|
9381
|
-
{for(var _i57 in data2){result[_i57]=null;if(!isNaN(data)&&!isNaN(data2[_i57]))result[_i57]=data>data2[_i57]?1:0;}}else//数组-单数据
|
|
9379
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i56=0;_i56<count;++_i56){result[_i56]=null;//初始化
|
|
9380
|
+
if(_i56<data.length&&_i56<data2.length){if(!isNaN(data[_i56])&&!isNaN(data2[_i56]))result[_i56]=data[_i56]>data2[_i56]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9381
|
+
{for(var _i57 in data2){result[_i57]=null;if(!isNaN(data)&&!isNaN(data2[_i57]))result[_i57]=data>data2[_i57]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9382
9382
|
{for(var _i58 in data){result[_i58]=null;if(!isNaN(data[_i58])&&!isNaN(data2))result[_i58]=data[_i58]>data2?1:0;}}return result;};//大于等于
|
|
9383
|
-
this.GTE=function(data,data2){var isNumber=
|
|
9383
|
+
this.GTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9384
9384
|
if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
|
|
9385
|
-
var result=[];if(
|
|
9386
|
-
if(_i59<data.length&&_i59<data2.length){if(!isNaN(data[_i59])&&!isNaN(data2[_i59]))result[_i59]=data[_i59]>=data2[_i59]?1:0;}}return result;}if(isNumber)//单数据-数组
|
|
9387
|
-
{for(var _i60 in data2){result[_i60]=null;if(!isNaN(data)&&!isNaN(data2[_i60]))result[_i60]=data>=data2[_i60]?1:0;}}else//数组-单数据
|
|
9385
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i59=0;_i59<count;++_i59){result[_i59]=null;//初始化
|
|
9386
|
+
if(_i59<data.length&&_i59<data2.length){if(!isNaN(data[_i59])&&!isNaN(data2[_i59]))result[_i59]=data[_i59]>=data2[_i59]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9387
|
+
{for(var _i60 in data2){result[_i60]=null;if(!isNaN(data)&&!isNaN(data2[_i60]))result[_i60]=data>=data2[_i60]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9388
9388
|
{for(var _i61 in data){result[_i61]=null;if(!isNaN(data[_i61])&&!isNaN(data2))result[_i61]=data[_i61]>=data2?1:0;}}return result;};//小于
|
|
9389
|
-
this.LT=function(data,data2){var isNumber=
|
|
9389
|
+
this.LT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9390
9390
|
if(isNumber&&isNumber2)return data<data2?1:0;//都是数组比较
|
|
9391
|
-
var result=[];if(
|
|
9392
|
-
if(_i62<data.length&&_i62<data2.length){if(!isNaN(data[_i62])&&!isNaN(data2[_i62]))result[_i62]=data[_i62]<data2[_i62]?1:0;}}return result;}if(isNumber)//单数据-数组
|
|
9393
|
-
{for(var _i63 in data2){result[_i63]=null;if(!isNaN(data)&&!isNaN(data2[_i63]))result[_i63]=data<data2[_i63]?1:0;}}else//数组-单数据
|
|
9391
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i62=0;_i62<count;++_i62){result[_i62]=null;//初始化
|
|
9392
|
+
if(_i62<data.length&&_i62<data2.length){if(!isNaN(data[_i62])&&!isNaN(data2[_i62]))result[_i62]=data[_i62]<data2[_i62]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9393
|
+
{for(var _i63 in data2){result[_i63]=null;if(!isNaN(data)&&!isNaN(data2[_i63]))result[_i63]=data<data2[_i63]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9394
9394
|
{for(var _i64 in data){result[_i64]=null;if(!isNaN(data[_i64])&&!isNaN(data2))result[_i64]=data[_i64]<data2?1:0;}}return result;};//小于等于
|
|
9395
|
-
this.LTE=function(data,data2){var isNumber=
|
|
9395
|
+
this.LTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9396
9396
|
if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
|
|
9397
|
-
var result=[];if(
|
|
9398
|
-
if(_i65<data.length&&_i65<data2.length){if(!isNaN(data[_i65])&&!isNaN(data2[_i65]))result[_i65]=data[_i65]<=data2[_i65]?1:0;}}return result;}if(isNumber)//单数据-数组
|
|
9399
|
-
{for(var _i66 in data2){result[_i66]=null;if(!isNaN(data)&&!isNaN(data2[_i66]))result[_i66]=data<=data2[_i66]?1:0;}}else//数组-单数据
|
|
9397
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i65=0;_i65<count;++_i65){result[_i65]=null;//初始化
|
|
9398
|
+
if(_i65<data.length&&_i65<data2.length){if(!isNaN(data[_i65])&&!isNaN(data2[_i65]))result[_i65]=data[_i65]<=data2[_i65]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9399
|
+
{for(var _i66 in data2){result[_i66]=null;if(!isNaN(data)&&!isNaN(data2[_i66]))result[_i66]=data<=data2[_i66]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9400
9400
|
{for(var _i67 in data){result[_i67]=null;if(!isNaN(data[_i67])&&!isNaN(data2))result[_i67]=data[_i67]<=data2?1:0;}}return result;};//等于
|
|
9401
|
-
this.EQ=function(data,data2){var isNumber=
|
|
9401
|
+
this.EQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9402
9402
|
if(isNumber&&isNumber2)return data==data2?1:0;//都是数组比较
|
|
9403
|
-
var result=[];if(
|
|
9404
|
-
if(_i68<data.length&&_i68<data2.length){if(!isNaN(data[_i68])&&!isNaN(data2[_i68]))result[_i68]=data[_i68]==data2[_i68]?1:0;}}return result;}if(isNumber)//单数据-数组
|
|
9405
|
-
{for(var _i69 in data2){result[_i69]=null;if(!isNaN(data)&&!isNaN(data2[_i69]))result[_i69]=data==data2[_i69]?1:0;}}else//数组-单数据
|
|
9403
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i68=0;_i68<count;++_i68){result[_i68]=null;//初始化
|
|
9404
|
+
if(_i68<data.length&&_i68<data2.length){if(!isNaN(data[_i68])&&!isNaN(data2[_i68]))result[_i68]=data[_i68]==data2[_i68]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9405
|
+
{for(var _i69 in data2){result[_i69]=null;if(!isNaN(data)&&!isNaN(data2[_i69]))result[_i69]=data==data2[_i69]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9406
9406
|
{for(var _i70 in data){result[_i70]=null;if(!isNaN(data[_i70])&&!isNaN(data2))result[_i70]=data[_i70]==data2?1:0;}}return result;};//不等于
|
|
9407
|
-
this.NEQ=function(data,data2){var isNumber=
|
|
9407
|
+
this.NEQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9408
9408
|
if(isNumber&&isNumber2)return data!=data2?1:0;//都是数组比较
|
|
9409
|
-
var result=[];if(
|
|
9410
|
-
if(_i71<data.length&&_i71<data2.length){if(!isNaN(data[_i71])&&!isNaN(data2[_i71]))result[_i71]=data[_i71]!=data2[_i71]?1:0;}}return result;}if(isNumber)//单数据-数组
|
|
9411
|
-
{for(var _i72 in data2){result[_i72]=null;if(!isNaN(data)&&!isNaN(data2[_i72]))result[_i72]=data!=data2[_i72]?1:0;}}else//数组-单数据
|
|
9409
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i71=0;_i71<count;++_i71){result[_i71]=null;//初始化
|
|
9410
|
+
if(_i71<data.length&&_i71<data2.length){if(!isNaN(data[_i71])&&!isNaN(data2[_i71]))result[_i71]=data[_i71]!=data2[_i71]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9411
|
+
{for(var _i72 in data2){result[_i72]=null;if(!isNaN(data)&&!isNaN(data2[_i72]))result[_i72]=data!=data2[_i72]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9412
9412
|
{for(var _i73 in data){result[_i73]=null;if(!isNaN(data[_i73])&&!isNaN(data2))result[_i73]=data[_i73]!=data2?1:0;}}return result;};//AND &&
|
|
9413
9413
|
this.And=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值 &&
|
|
9414
9414
|
if(isNumber&&isNumber2)return data&&data2?1:0;//都是数组 &&
|
|
@@ -10728,7 +10728,7 @@ var endWeek=endDate.getDay();if(endWeek==0)endWeek=7;var beginWeek=beginDate.get
|
|
|
10728
10728
|
var millisDiff=endDate.getTime()-beginDate.getTime();var dayDiff=Math.floor((millisDiff+(beginWeek-endWeek)*(24*60*60*1000))/86400000);return Math.ceil(dayDiff/7)+1;};this.REFDATE=function(data,date){var result=null;var findDate=null;if(Array.isArray(date)){if(date.length>0)findDate=date[date.length-1];}else if(this.IsNumber(date)){findDate=date;}if(findDate==null)return null;if(findDate<5000000)findDate+=19000000;var index=null;for(var _i138 in this.Data.Data)//查找日期对应的索引
|
|
10729
10729
|
{if(this.Data.Data[_i138].Date==findDate){index=parseInt(_i138);break;}}if(index==null||index>=data.length)return null;return data[index];};//用法:结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年
|
|
10730
10730
|
this.PERIOD=function(){//Period周期 0=日线 1=周线 2=月线 3=年线 9=季线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟
|
|
10731
|
-
var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_MAP.length-1)return PERIOD_MAP[this.Period];return this.Period;};this.GetDrawNull=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i139 in this.Data.Data){result[_i139]=null;}return result;};/*
|
|
10731
|
+
var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_MAP.length-1)return PERIOD_MAP[this.Period];return this.Period;};this.GetDrawNull=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i139 in this.Data.Data){result[_i139]=null;}return result;};this.HOUR=function(){var result=[];if(!this.Data||!this.Data.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return result;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];result[i]=0;if(IFrameSplitOperator.IsNumber(item.Time))result[i]=parseInt(item.Time/100);}return result;};this.MINUTE=function(){var result=[];if(!this.Data||!this.Data.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return result;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];result[i]=0;if(IFrameSplitOperator.IsNumber(item.Time))result[i]=item.Time%100;}return result;};/*
|
|
10732
10732
|
飞狐函数 SYSPARAM
|
|
10733
10733
|
SYSPARAM(1)画面上光标位置(K线序号)
|
|
10734
10734
|
SYSPARAM(2)主图可见K线最初位置
|
|
@@ -10861,7 +10861,7 @@ this.ConstVarTable=new _map2.default([//个股数据
|
|
|
10861
10861
|
["ZSTJJ",null],//分时图均价线,对于分时图周期指标有效.
|
|
10862
10862
|
["ISEQUAL",null],["ISUP",null],["ISDOWN"],//ISUP=收阳 ISEQUAL=平盘 ISDOWN=收阴
|
|
10863
10863
|
//日期类
|
|
10864
|
-
['DATE',null],['YEAR',null],['MONTH',null],['PERIOD',null],['WEEK',null],['WEEKDAY',null],["TIME",null],["DAY",null],["DATETIME",null],["TIME2",null],["WEEKOFYEAR",null],["DAYSTOTODAY",null],//大盘数据
|
|
10864
|
+
['DATE',null],['YEAR',null],['MONTH',null],['PERIOD',null],['WEEK',null],['WEEKDAY',null],["TIME",null],["DAY",null],["DATETIME",null],["TIME2",null],["WEEKOFYEAR",null],["DAYSTOTODAY",null],["HOUR",null],["MINUTE",null],//大盘数据
|
|
10865
10865
|
['INDEXA',null],['INDEXC',null],['INDEXH',null],['INDEXL',null],['INDEXO',null],['INDEXV',null],['INDEXADV',null],['INDEXDEC',null],["ADVANCE",null],['DECLINE',null],['FROMOPEN',null],//已开盘有多长分钟
|
|
10866
10866
|
['TOTALFZNUM',null],//该品种的每天的总交易分钟数.
|
|
10867
10867
|
['CURRBARSCOUNT',null],//到最后交易日的周期数
|
|
@@ -10920,7 +10920,7 @@ return this.SymbolData.GetVariantData(jobItem);case JS_EXECUTE_JOB_ID.JOB_CUSTOM
|
|
|
10920
10920
|
case"ISUP"://收阳
|
|
10921
10921
|
case"ISDOWN"://收阴
|
|
10922
10922
|
return this.SymbolData.GetSymbolCacheData(name);case'VOLR':return this.SymbolData.GetVolRateCacheData(node);//大盘数据
|
|
10923
|
-
case'INDEXA':case'INDEXC':case'INDEXH':case'INDEXH':case'INDEXO':case'INDEXV':case'INDEXL':case'INDEXADV':case'INDEXDEC':return this.SymbolData.GetIndexCacheData(name);case'CURRBARSCOUNT':return this.SymbolData.GetCurrBarsCount();case"BARPOS":return this.SymbolData.GetBarPos();case"TOTALBARSCOUNT":return this.SymbolData.GetTotalBarsCount();case"TOTALFZNUM":return this.SymbolData.GetTotalTradeMinuteCount();case'ISLASTBAR':return this.SymbolData.GetIsLastBar();case"BARSTATUS":return this.SymbolData.GetBarStatus();case"TOTALCAPITAL":case'CAPITAL':case'EXCHANGE':case"HYBLOCK":case"DYBLOCK":case"GNBLOCK":case"FGBLOCK":case"ZSBLOCK":case"ZHBLOCK":case"ZDBLOCK":case"HYZSCODE":case"GNBLOCKNUM":case"FGBLOCKNUM":case"ZSBLOCKNUM":case"ZHBLOCKNUM":case"ZDBLOCKNUM":case"HYSYL":case"HYSJL":return this.SymbolData.GetStockCacheData({VariantName:name,Node:node});case'SETCODE':return this.SymbolData.SETCODE();case'CODE':return this.SymbolData.GetSymbol();case'STKNAME':return this.SymbolData.GetName();case"TIME":return this.SymbolData.TIME();case"TIME2":return this.SymbolData.TIME2();case'DATE':return this.SymbolData.DATE();case"DATETIME":return this.SymbolData.DateTime();case'YEAR':return this.SymbolData.YEAR();case'MONTH':return this.SymbolData.MONTH();case'WEEK':case"WEEKDAY":return this.SymbolData.WEEK();case"DAY":return this.SymbolData.DAY();case'PERIOD':return this.SymbolData.PERIOD();case'FROMOPEN':return this.SymbolData.GetLatestIndexCacheData('FROMOPEN');case'DRAWNULL':case"NULL":return this.SymbolData.GetDrawNull();case'ADVANCE':case'DECLINE':return this.SymbolData.GetIndexIncreaseCacheData(name,this.SymbolData.Symbol,node);case"TQFLAG":return this.SymbolData.Right;case"MACHINEDATE":{var now=new Date();return now.getFullYear()*10000+now.getMonth()*1*100+now.getDate()-19000000;}case"MACHINETIME":{var now=new Date();return now.getHours()*10000+now.getMinutes()*1*100+now.getSeconds();}case"MACHINEWEEK":{var now=new Date();return now.getDay();}case"WEEKOFYEAR":return this.SymbolData.WEEKOFYEAR();case"DAYSTOTODAY":return this.SymbolData.DAYSTOTODAY();}};this.ReadCustomVariant=function(name,node){return this.SymbolData.GetStockCacheData({VariantName:name,Node:node});};//读取变量
|
|
10923
|
+
case'INDEXA':case'INDEXC':case'INDEXH':case'INDEXH':case'INDEXO':case'INDEXV':case'INDEXL':case'INDEXADV':case'INDEXDEC':return this.SymbolData.GetIndexCacheData(name);case'CURRBARSCOUNT':return this.SymbolData.GetCurrBarsCount();case"BARPOS":return this.SymbolData.GetBarPos();case"TOTALBARSCOUNT":return this.SymbolData.GetTotalBarsCount();case"TOTALFZNUM":return this.SymbolData.GetTotalTradeMinuteCount();case'ISLASTBAR':return this.SymbolData.GetIsLastBar();case"BARSTATUS":return this.SymbolData.GetBarStatus();case"TOTALCAPITAL":case'CAPITAL':case'EXCHANGE':case"HYBLOCK":case"DYBLOCK":case"GNBLOCK":case"FGBLOCK":case"ZSBLOCK":case"ZHBLOCK":case"ZDBLOCK":case"HYZSCODE":case"GNBLOCKNUM":case"FGBLOCKNUM":case"ZSBLOCKNUM":case"ZHBLOCKNUM":case"ZDBLOCKNUM":case"HYSYL":case"HYSJL":return this.SymbolData.GetStockCacheData({VariantName:name,Node:node});case'SETCODE':return this.SymbolData.SETCODE();case'CODE':return this.SymbolData.GetSymbol();case'STKNAME':return this.SymbolData.GetName();case"TIME":return this.SymbolData.TIME();case"TIME2":return this.SymbolData.TIME2();case'DATE':return this.SymbolData.DATE();case"DATETIME":return this.SymbolData.DateTime();case'YEAR':return this.SymbolData.YEAR();case'MONTH':return this.SymbolData.MONTH();case'WEEK':case"WEEKDAY":return this.SymbolData.WEEK();case"DAY":return this.SymbolData.DAY();case'PERIOD':return this.SymbolData.PERIOD();case'FROMOPEN':return this.SymbolData.GetLatestIndexCacheData('FROMOPEN');case"HOUR":return this.SymbolData.HOUR();case"MINUTE":return this.SymbolData.MINUTE();case'DRAWNULL':case"NULL":return this.SymbolData.GetDrawNull();case'ADVANCE':case'DECLINE':return this.SymbolData.GetIndexIncreaseCacheData(name,this.SymbolData.Symbol,node);case"TQFLAG":return this.SymbolData.Right;case"MACHINEDATE":{var now=new Date();return now.getFullYear()*10000+now.getMonth()*1*100+now.getDate()-19000000;}case"MACHINETIME":{var now=new Date();return now.getHours()*10000+now.getMinutes()*1*100+now.getSeconds();}case"MACHINEWEEK":{var now=new Date();return now.getDay();}case"WEEKOFYEAR":return this.SymbolData.WEEKOFYEAR();case"DAYSTOTODAY":return this.SymbolData.DAYSTOTODAY();}};this.ReadCustomVariant=function(name,node){return this.SymbolData.GetStockCacheData({VariantName:name,Node:node});};//读取变量
|
|
10924
10924
|
this.ReadVariable=function(name,node){if(this.ConstVarTable.has(name)){var data=this.ConstVarTable.get(name);if(data==null)//动态加载,用到再加载
|
|
10925
10925
|
{data=this.ReadSymbolData(name,node);this.ConstVarTable.set(name,data);}return data;}if(g_JSComplierResource.IsCustomVariant(name))return this.ReadCustomVariant(name,node);//读取自定义变量
|
|
10926
10926
|
if(this.VarTable.has(name))return this.VarTable.get(name);if(name.indexOf('#')>0){var aryPeriod=name.split('#');return this.SymbolData.GetSymbolPeriodCacheData(aryPeriod[0],aryPeriod[1]);}if(name.indexOf("COLOR")==0){var colorValue=JSComplier.ColorVarToRGB(name);if(colorValue)return colorValue;}this.ThrowUnexpectedNode(node,'变量'+name+'不存在',name);return null;};this.ReadMemberVariable=function(node){var obj=node.Object;var member=node.Property;var maiObj=void 0;if(obj.Type==Syntax.BinaryExpression||obj.Type==Syntax.LogicalExpression)maiObj=this.VisitBinaryExpression(obj);else if(obj.Type==Syntax.CallExpression)maiObj=this.VisitCallExpression(obj);else maiObj=this.GetNodeValue(obj);if(!maiObj)return null;var value=maiObj[member.Name];if(value)return value;return null;};//单数据转成数组 个数和历史数据一致
|
|
@@ -12469,7 +12469,7 @@ this.AreaColor=g_JSChartResource.ScrollBar.BGChart.AreaColor;//面积图颜色
|
|
|
12469
12469
|
};this.Draw=function(){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return;this.Canvas.save();if(this.LineWidth>0)this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();var bottom=this.ChartBorder.GetBottom();this.Canvas.strokeStyle=this.Color;var bFirstPoint=true;var drawCount=0,x,y;var firstPoint={};for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];var value=item.Close;if(!IFrameSplitOperator.IsNumber(value))continue;x=this.ChartFrame.GetXFromIndex(i);y=this.ChartFrame.GetYFromData(value);if(bFirstPoint){this.Canvas.beginPath();this.Canvas.moveTo(x,y);bFirstPoint=false;firstPoint={X:x,Y:y};}else{this.Canvas.lineTo(x,y);}++drawCount;}if(drawCount>0){this.Canvas.stroke();this.Canvas.lineTo(x,bottom);this.Canvas.lineTo(firstPoint.X,bottom);this.Canvas.closePath();this.Canvas.fillStyle=this.AreaColor;this.Canvas.fill();}this.Canvas.restore();};this.GetMaxMin=function(){var range={Max:null,Min:null};if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return range;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];var value=item.Close;if(!IFrameSplitOperator.IsNumber(value))continue;if(range.Max==null||range.Max<value)range.Max=value;if(range.Min==null||range.Min>value)range.Min=value;}return range;};}/********************************************************************************
|
|
12470
12470
|
* 版本信息输出
|
|
12471
12471
|
*
|
|
12472
|
-
*/var HQCHART_VERSION="1.1.
|
|
12472
|
+
*/var HQCHART_VERSION="1.1.12445";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();//把给外界调用的方法暴露出来
|
|
12473
12473
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12474
12474
|
// BaseIndex:BaseIndex,
|
|
12475
12475
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -2411,15 +2411,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2411
2411
|
//大于
|
|
2412
2412
|
this.GT=function(data,data2)
|
|
2413
2413
|
{
|
|
2414
|
-
let isNumber=
|
|
2415
|
-
let isNumber2=
|
|
2414
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
2415
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
2416
2416
|
|
|
2417
2417
|
//单数值比较
|
|
2418
2418
|
if (isNumber && isNumber2) return (data>data2 ? 1 : 0);
|
|
2419
2419
|
|
|
2420
2420
|
//都是数组比较
|
|
2421
2421
|
let result=[];
|
|
2422
|
-
if (
|
|
2422
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
2423
2423
|
{
|
|
2424
2424
|
let count=Math.max(data.length, data2.length);
|
|
2425
2425
|
for(let i=0;i<count;++i)
|
|
@@ -2435,7 +2435,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2435
2435
|
return result;
|
|
2436
2436
|
}
|
|
2437
2437
|
|
|
2438
|
-
if (isNumber) //单数据-数组
|
|
2438
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
2439
2439
|
{
|
|
2440
2440
|
for(let i in data2)
|
|
2441
2441
|
{
|
|
@@ -2443,7 +2443,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2443
2443
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>data2[i] ? 1 : 0);
|
|
2444
2444
|
}
|
|
2445
2445
|
}
|
|
2446
|
-
else
|
|
2446
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
2447
2447
|
{
|
|
2448
2448
|
for(let i in data)
|
|
2449
2449
|
{
|
|
@@ -2458,15 +2458,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2458
2458
|
//大于等于
|
|
2459
2459
|
this.GTE=function(data,data2)
|
|
2460
2460
|
{
|
|
2461
|
-
let isNumber=
|
|
2462
|
-
let isNumber2=
|
|
2461
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
2462
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
2463
2463
|
|
|
2464
2464
|
//单数值比较
|
|
2465
2465
|
if (isNumber && isNumber2) return (data>=data2 ? 1 : 0);
|
|
2466
2466
|
|
|
2467
2467
|
//都是数组比较
|
|
2468
2468
|
let result=[];
|
|
2469
|
-
if (
|
|
2469
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
2470
2470
|
{
|
|
2471
2471
|
let count=Math.max(data.length, data2.length);
|
|
2472
2472
|
for(let i=0;i<count;++i)
|
|
@@ -2482,7 +2482,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2482
2482
|
return result;
|
|
2483
2483
|
}
|
|
2484
2484
|
|
|
2485
|
-
if (isNumber) //单数据-数组
|
|
2485
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
2486
2486
|
{
|
|
2487
2487
|
for(let i in data2)
|
|
2488
2488
|
{
|
|
@@ -2490,7 +2490,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2490
2490
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>=data2[i] ? 1 : 0);
|
|
2491
2491
|
}
|
|
2492
2492
|
}
|
|
2493
|
-
else
|
|
2493
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
2494
2494
|
{
|
|
2495
2495
|
for(let i in data)
|
|
2496
2496
|
{
|
|
@@ -2505,15 +2505,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2505
2505
|
//小于
|
|
2506
2506
|
this.LT=function(data,data2)
|
|
2507
2507
|
{
|
|
2508
|
-
let isNumber=
|
|
2509
|
-
let isNumber2=
|
|
2508
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
2509
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
2510
2510
|
|
|
2511
2511
|
//单数值比较
|
|
2512
2512
|
if (isNumber && isNumber2) return (data<data2 ? 1 : 0);
|
|
2513
2513
|
|
|
2514
2514
|
//都是数组比较
|
|
2515
2515
|
let result=[];
|
|
2516
|
-
if (
|
|
2516
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
2517
2517
|
{
|
|
2518
2518
|
let count=Math.max(data.length, data2.length);
|
|
2519
2519
|
for(let i=0;i<count;++i)
|
|
@@ -2529,7 +2529,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2529
2529
|
return result;
|
|
2530
2530
|
}
|
|
2531
2531
|
|
|
2532
|
-
if (isNumber) //单数据-数组
|
|
2532
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
2533
2533
|
{
|
|
2534
2534
|
for(let i in data2)
|
|
2535
2535
|
{
|
|
@@ -2537,7 +2537,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2537
2537
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<data2[i] ? 1 : 0);
|
|
2538
2538
|
}
|
|
2539
2539
|
}
|
|
2540
|
-
else
|
|
2540
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
2541
2541
|
{
|
|
2542
2542
|
for(let i in data)
|
|
2543
2543
|
{
|
|
@@ -2552,15 +2552,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2552
2552
|
//小于等于
|
|
2553
2553
|
this.LTE=function(data,data2)
|
|
2554
2554
|
{
|
|
2555
|
-
let isNumber=
|
|
2556
|
-
let isNumber2=
|
|
2555
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
2556
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
2557
2557
|
|
|
2558
2558
|
//单数值比较
|
|
2559
2559
|
if (isNumber && isNumber2) return (data>=data2 ? 1 : 0);
|
|
2560
2560
|
|
|
2561
2561
|
//都是数组比较
|
|
2562
2562
|
let result=[];
|
|
2563
|
-
if (
|
|
2563
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
2564
2564
|
{
|
|
2565
2565
|
let count=Math.max(data.length, data2.length);
|
|
2566
2566
|
for(let i=0;i<count;++i)
|
|
@@ -2576,7 +2576,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2576
2576
|
return result;
|
|
2577
2577
|
}
|
|
2578
2578
|
|
|
2579
|
-
if (isNumber) //单数据-数组
|
|
2579
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
2580
2580
|
{
|
|
2581
2581
|
for(let i in data2)
|
|
2582
2582
|
{
|
|
@@ -2584,7 +2584,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2584
2584
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<=data2[i] ? 1 : 0);
|
|
2585
2585
|
}
|
|
2586
2586
|
}
|
|
2587
|
-
else
|
|
2587
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
2588
2588
|
{
|
|
2589
2589
|
for(let i in data)
|
|
2590
2590
|
{
|
|
@@ -2599,15 +2599,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2599
2599
|
//等于
|
|
2600
2600
|
this.EQ=function(data,data2)
|
|
2601
2601
|
{
|
|
2602
|
-
let isNumber=
|
|
2603
|
-
let isNumber2=
|
|
2602
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
2603
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
2604
2604
|
|
|
2605
2605
|
//单数值比较
|
|
2606
2606
|
if (isNumber && isNumber2) return (data==data2 ? 1 : 0);
|
|
2607
2607
|
|
|
2608
2608
|
//都是数组比较
|
|
2609
2609
|
let result=[];
|
|
2610
|
-
if (
|
|
2610
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
2611
2611
|
{
|
|
2612
2612
|
let count=Math.max(data.length, data2.length);
|
|
2613
2613
|
for(let i=0;i<count;++i)
|
|
@@ -2623,7 +2623,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2623
2623
|
return result;
|
|
2624
2624
|
}
|
|
2625
2625
|
|
|
2626
|
-
if (isNumber) //单数据-数组
|
|
2626
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
2627
2627
|
{
|
|
2628
2628
|
for(let i in data2)
|
|
2629
2629
|
{
|
|
@@ -2631,7 +2631,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2631
2631
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data==data2[i] ? 1 : 0);
|
|
2632
2632
|
}
|
|
2633
2633
|
}
|
|
2634
|
-
else
|
|
2634
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
2635
2635
|
{
|
|
2636
2636
|
for(let i in data)
|
|
2637
2637
|
{
|
|
@@ -2646,15 +2646,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2646
2646
|
//不等于
|
|
2647
2647
|
this.NEQ=function(data,data2)
|
|
2648
2648
|
{
|
|
2649
|
-
let isNumber=
|
|
2650
|
-
let isNumber2=
|
|
2649
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
2650
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
2651
2651
|
|
|
2652
2652
|
//单数值比较
|
|
2653
2653
|
if (isNumber && isNumber2) return (data!=data2 ? 1 : 0);
|
|
2654
2654
|
|
|
2655
2655
|
//都是数组比较
|
|
2656
2656
|
let result=[];
|
|
2657
|
-
if (
|
|
2657
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
2658
2658
|
{
|
|
2659
2659
|
let count=Math.max(data.length, data2.length);
|
|
2660
2660
|
for(let i=0;i<count;++i)
|
|
@@ -2670,7 +2670,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2670
2670
|
return result;
|
|
2671
2671
|
}
|
|
2672
2672
|
|
|
2673
|
-
if (isNumber) //单数据-数组
|
|
2673
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
2674
2674
|
{
|
|
2675
2675
|
for(let i in data2)
|
|
2676
2676
|
{
|
|
@@ -2678,7 +2678,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2678
2678
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data!=data2[i] ? 1 : 0);
|
|
2679
2679
|
}
|
|
2680
2680
|
}
|
|
2681
|
-
else
|
|
2681
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
2682
2682
|
{
|
|
2683
2683
|
for(let i in data)
|
|
2684
2684
|
{
|
|
@@ -15699,6 +15699,38 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
15699
15699
|
return result;
|
|
15700
15700
|
}
|
|
15701
15701
|
|
|
15702
|
+
this.HOUR=function()
|
|
15703
|
+
{
|
|
15704
|
+
var result=[];
|
|
15705
|
+
if (!this.Data || !this.Data.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return result;
|
|
15706
|
+
|
|
15707
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
15708
|
+
{
|
|
15709
|
+
var item=this.Data.Data[i];
|
|
15710
|
+
|
|
15711
|
+
result[i]=0;
|
|
15712
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) result[i]=parseInt(item.Time/100);
|
|
15713
|
+
}
|
|
15714
|
+
|
|
15715
|
+
return result;
|
|
15716
|
+
}
|
|
15717
|
+
|
|
15718
|
+
this.MINUTE=function()
|
|
15719
|
+
{
|
|
15720
|
+
var result=[];
|
|
15721
|
+
if (!this.Data || !this.Data.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return result;
|
|
15722
|
+
|
|
15723
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
15724
|
+
{
|
|
15725
|
+
var item=this.Data.Data[i];
|
|
15726
|
+
|
|
15727
|
+
result[i]=0;
|
|
15728
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) result[i]=item.Time%100;
|
|
15729
|
+
}
|
|
15730
|
+
|
|
15731
|
+
return result;
|
|
15732
|
+
}
|
|
15733
|
+
|
|
15702
15734
|
/*
|
|
15703
15735
|
飞狐函数 SYSPARAM
|
|
15704
15736
|
SYSPARAM(1)画面上光标位置(K线序号)
|
|
@@ -16071,6 +16103,8 @@ function JSExecute(ast,option)
|
|
|
16071
16103
|
['DATE',null],['YEAR',null],['MONTH',null],['PERIOD', null],['WEEK',null],['WEEKDAY',null],["TIME",null],["DAY",null],["DATETIME",null],["TIME2",null],
|
|
16072
16104
|
["WEEKOFYEAR", null],["DAYSTOTODAY", null],
|
|
16073
16105
|
|
|
16106
|
+
["HOUR",null],["MINUTE",null],
|
|
16107
|
+
|
|
16074
16108
|
//大盘数据
|
|
16075
16109
|
['INDEXA',null],['INDEXC',null],['INDEXH',null],['INDEXL',null],['INDEXO',null],['INDEXV',null],
|
|
16076
16110
|
['INDEXADV',null],['INDEXDEC',null],
|
|
@@ -16359,6 +16393,11 @@ function JSExecute(ast,option)
|
|
|
16359
16393
|
case 'FROMOPEN':
|
|
16360
16394
|
return this.SymbolData.GetLatestIndexCacheData('FROMOPEN');
|
|
16361
16395
|
|
|
16396
|
+
case "HOUR":
|
|
16397
|
+
return this.SymbolData.HOUR();
|
|
16398
|
+
case "MINUTE":
|
|
16399
|
+
return this.SymbolData.MINUTE();
|
|
16400
|
+
|
|
16362
16401
|
case 'DRAWNULL':
|
|
16363
16402
|
case "NULL":
|
|
16364
16403
|
return this.SymbolData.GetDrawNull();
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -42430,7 +42430,7 @@ IFrameSplitOperator.IsNumber=function(value)
|
|
|
42430
42430
|
if (value==null) return false;
|
|
42431
42431
|
if (isNaN(value)) return false;
|
|
42432
42432
|
|
|
42433
|
-
return
|
|
42433
|
+
return typeof(value)=='number';
|
|
42434
42434
|
}
|
|
42435
42435
|
|
|
42436
42436
|
//判断是否是正数
|
|
@@ -44292,13 +44292,13 @@ function FrameSplitMinutePriceY()
|
|
|
44292
44292
|
if (IFrameSplitOperator.IsNumber(range.Max) && max<range.Max) max=range.Max;
|
|
44293
44293
|
if (IFrameSplitOperator.IsNumber(range.Min) && min>range.Min) min=range.Min;
|
|
44294
44294
|
|
|
44295
|
-
|
|
44296
|
-
|
|
44297
|
-
|
|
44298
|
-
|
|
44299
|
-
|
|
44300
|
-
|
|
44301
|
-
|
|
44295
|
+
//叠加指标
|
|
44296
|
+
var overlayRange=this.GetOverlayMaxMin();
|
|
44297
|
+
if (overlayRange)
|
|
44298
|
+
{
|
|
44299
|
+
if (IFrameSplitOperator.IsNumber(overlayRange.Max) && overlayRange.Max>max) max=overlayRange.Max;
|
|
44300
|
+
if (IFrameSplitOperator.IsNumber(overlayRange.Min) && overlayRange.Min<min) min=overlayRange.Min;
|
|
44301
|
+
}
|
|
44302
44302
|
|
|
44303
44303
|
|
|
44304
44304
|
return { Max:max, Min:min };
|
|
@@ -44325,7 +44325,7 @@ function FrameSplitMinutePriceY()
|
|
|
44325
44325
|
{
|
|
44326
44326
|
var paint=item.ChartPaint[j];
|
|
44327
44327
|
if (paint.IsShow==false) continue;
|
|
44328
|
-
|
|
44328
|
+
|
|
44329
44329
|
var value=paint.GetMaxMin();
|
|
44330
44330
|
if (value==null || value.Max==null || value.Min==null) continue;
|
|
44331
44331
|
|
|
@@ -46510,7 +46510,7 @@ IFrameSplitOperator.IsNumber=function(value)
|
|
|
46510
46510
|
if (value==null) return false;
|
|
46511
46511
|
if (isNaN(value)) return false;
|
|
46512
46512
|
|
|
46513
|
-
return
|
|
46513
|
+
return typeof(value)=='number';
|
|
46514
46514
|
}
|
|
46515
46515
|
|
|
46516
46516
|
//判断是否是正数
|
|
@@ -48372,13 +48372,13 @@ function FrameSplitMinutePriceY()
|
|
|
48372
48372
|
if (IFrameSplitOperator.IsNumber(range.Max) && max<range.Max) max=range.Max;
|
|
48373
48373
|
if (IFrameSplitOperator.IsNumber(range.Min) && min>range.Min) min=range.Min;
|
|
48374
48374
|
|
|
48375
|
-
|
|
48376
|
-
|
|
48377
|
-
|
|
48378
|
-
|
|
48379
|
-
|
|
48380
|
-
|
|
48381
|
-
|
|
48375
|
+
//叠加指标
|
|
48376
|
+
var overlayRange=this.GetOverlayMaxMin();
|
|
48377
|
+
if (overlayRange)
|
|
48378
|
+
{
|
|
48379
|
+
if (IFrameSplitOperator.IsNumber(overlayRange.Max) && overlayRange.Max>max) max=overlayRange.Max;
|
|
48380
|
+
if (IFrameSplitOperator.IsNumber(overlayRange.Min) && overlayRange.Min<min) min=overlayRange.Min;
|
|
48381
|
+
}
|
|
48382
48382
|
|
|
48383
48383
|
|
|
48384
48384
|
return { Max:max, Min:min };
|
|
@@ -48405,7 +48405,7 @@ function FrameSplitMinutePriceY()
|
|
|
48405
48405
|
{
|
|
48406
48406
|
var paint=item.ChartPaint[j];
|
|
48407
48407
|
if (paint.IsShow==false) continue;
|
|
48408
|
-
|
|
48408
|
+
|
|
48409
48409
|
var value=paint.GetMaxMin();
|
|
48410
48410
|
if (value==null || value.Max==null || value.Min==null) continue;
|
|
48411
48411
|
|
|
@@ -94504,15 +94504,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94504
94504
|
//大于
|
|
94505
94505
|
this.GT=function(data,data2)
|
|
94506
94506
|
{
|
|
94507
|
-
let isNumber=
|
|
94508
|
-
let isNumber2=
|
|
94507
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94508
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94509
94509
|
|
|
94510
94510
|
//单数值比较
|
|
94511
94511
|
if (isNumber && isNumber2) return (data>data2 ? 1 : 0);
|
|
94512
94512
|
|
|
94513
94513
|
//都是数组比较
|
|
94514
94514
|
let result=[];
|
|
94515
|
-
if (
|
|
94515
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94516
94516
|
{
|
|
94517
94517
|
let count=Math.max(data.length, data2.length);
|
|
94518
94518
|
for(let i=0;i<count;++i)
|
|
@@ -94528,7 +94528,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94528
94528
|
return result;
|
|
94529
94529
|
}
|
|
94530
94530
|
|
|
94531
|
-
if (isNumber) //单数据-数组
|
|
94531
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94532
94532
|
{
|
|
94533
94533
|
for(let i in data2)
|
|
94534
94534
|
{
|
|
@@ -94536,7 +94536,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94536
94536
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>data2[i] ? 1 : 0);
|
|
94537
94537
|
}
|
|
94538
94538
|
}
|
|
94539
|
-
else
|
|
94539
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94540
94540
|
{
|
|
94541
94541
|
for(let i in data)
|
|
94542
94542
|
{
|
|
@@ -94551,15 +94551,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94551
94551
|
//大于等于
|
|
94552
94552
|
this.GTE=function(data,data2)
|
|
94553
94553
|
{
|
|
94554
|
-
let isNumber=
|
|
94555
|
-
let isNumber2=
|
|
94554
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94555
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94556
94556
|
|
|
94557
94557
|
//单数值比较
|
|
94558
94558
|
if (isNumber && isNumber2) return (data>=data2 ? 1 : 0);
|
|
94559
94559
|
|
|
94560
94560
|
//都是数组比较
|
|
94561
94561
|
let result=[];
|
|
94562
|
-
if (
|
|
94562
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94563
94563
|
{
|
|
94564
94564
|
let count=Math.max(data.length, data2.length);
|
|
94565
94565
|
for(let i=0;i<count;++i)
|
|
@@ -94575,7 +94575,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94575
94575
|
return result;
|
|
94576
94576
|
}
|
|
94577
94577
|
|
|
94578
|
-
if (isNumber) //单数据-数组
|
|
94578
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94579
94579
|
{
|
|
94580
94580
|
for(let i in data2)
|
|
94581
94581
|
{
|
|
@@ -94583,7 +94583,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94583
94583
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>=data2[i] ? 1 : 0);
|
|
94584
94584
|
}
|
|
94585
94585
|
}
|
|
94586
|
-
else
|
|
94586
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94587
94587
|
{
|
|
94588
94588
|
for(let i in data)
|
|
94589
94589
|
{
|
|
@@ -94598,15 +94598,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94598
94598
|
//小于
|
|
94599
94599
|
this.LT=function(data,data2)
|
|
94600
94600
|
{
|
|
94601
|
-
let isNumber=
|
|
94602
|
-
let isNumber2=
|
|
94601
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94602
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94603
94603
|
|
|
94604
94604
|
//单数值比较
|
|
94605
94605
|
if (isNumber && isNumber2) return (data<data2 ? 1 : 0);
|
|
94606
94606
|
|
|
94607
94607
|
//都是数组比较
|
|
94608
94608
|
let result=[];
|
|
94609
|
-
if (
|
|
94609
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94610
94610
|
{
|
|
94611
94611
|
let count=Math.max(data.length, data2.length);
|
|
94612
94612
|
for(let i=0;i<count;++i)
|
|
@@ -94622,7 +94622,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94622
94622
|
return result;
|
|
94623
94623
|
}
|
|
94624
94624
|
|
|
94625
|
-
if (isNumber) //单数据-数组
|
|
94625
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94626
94626
|
{
|
|
94627
94627
|
for(let i in data2)
|
|
94628
94628
|
{
|
|
@@ -94630,7 +94630,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94630
94630
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<data2[i] ? 1 : 0);
|
|
94631
94631
|
}
|
|
94632
94632
|
}
|
|
94633
|
-
else
|
|
94633
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94634
94634
|
{
|
|
94635
94635
|
for(let i in data)
|
|
94636
94636
|
{
|
|
@@ -94645,15 +94645,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94645
94645
|
//小于等于
|
|
94646
94646
|
this.LTE=function(data,data2)
|
|
94647
94647
|
{
|
|
94648
|
-
let isNumber=
|
|
94649
|
-
let isNumber2=
|
|
94648
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94649
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94650
94650
|
|
|
94651
94651
|
//单数值比较
|
|
94652
94652
|
if (isNumber && isNumber2) return (data>=data2 ? 1 : 0);
|
|
94653
94653
|
|
|
94654
94654
|
//都是数组比较
|
|
94655
94655
|
let result=[];
|
|
94656
|
-
if (
|
|
94656
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94657
94657
|
{
|
|
94658
94658
|
let count=Math.max(data.length, data2.length);
|
|
94659
94659
|
for(let i=0;i<count;++i)
|
|
@@ -94669,7 +94669,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94669
94669
|
return result;
|
|
94670
94670
|
}
|
|
94671
94671
|
|
|
94672
|
-
if (isNumber) //单数据-数组
|
|
94672
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94673
94673
|
{
|
|
94674
94674
|
for(let i in data2)
|
|
94675
94675
|
{
|
|
@@ -94677,7 +94677,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94677
94677
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<=data2[i] ? 1 : 0);
|
|
94678
94678
|
}
|
|
94679
94679
|
}
|
|
94680
|
-
else
|
|
94680
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94681
94681
|
{
|
|
94682
94682
|
for(let i in data)
|
|
94683
94683
|
{
|
|
@@ -94692,15 +94692,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94692
94692
|
//等于
|
|
94693
94693
|
this.EQ=function(data,data2)
|
|
94694
94694
|
{
|
|
94695
|
-
let isNumber=
|
|
94696
|
-
let isNumber2=
|
|
94695
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94696
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94697
94697
|
|
|
94698
94698
|
//单数值比较
|
|
94699
94699
|
if (isNumber && isNumber2) return (data==data2 ? 1 : 0);
|
|
94700
94700
|
|
|
94701
94701
|
//都是数组比较
|
|
94702
94702
|
let result=[];
|
|
94703
|
-
if (
|
|
94703
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94704
94704
|
{
|
|
94705
94705
|
let count=Math.max(data.length, data2.length);
|
|
94706
94706
|
for(let i=0;i<count;++i)
|
|
@@ -94716,7 +94716,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94716
94716
|
return result;
|
|
94717
94717
|
}
|
|
94718
94718
|
|
|
94719
|
-
if (isNumber) //单数据-数组
|
|
94719
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94720
94720
|
{
|
|
94721
94721
|
for(let i in data2)
|
|
94722
94722
|
{
|
|
@@ -94724,7 +94724,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94724
94724
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data==data2[i] ? 1 : 0);
|
|
94725
94725
|
}
|
|
94726
94726
|
}
|
|
94727
|
-
else
|
|
94727
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94728
94728
|
{
|
|
94729
94729
|
for(let i in data)
|
|
94730
94730
|
{
|
|
@@ -94739,15 +94739,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94739
94739
|
//不等于
|
|
94740
94740
|
this.NEQ=function(data,data2)
|
|
94741
94741
|
{
|
|
94742
|
-
let isNumber=
|
|
94743
|
-
let isNumber2=
|
|
94742
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94743
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94744
94744
|
|
|
94745
94745
|
//单数值比较
|
|
94746
94746
|
if (isNumber && isNumber2) return (data!=data2 ? 1 : 0);
|
|
94747
94747
|
|
|
94748
94748
|
//都是数组比较
|
|
94749
94749
|
let result=[];
|
|
94750
|
-
if (
|
|
94750
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94751
94751
|
{
|
|
94752
94752
|
let count=Math.max(data.length, data2.length);
|
|
94753
94753
|
for(let i=0;i<count;++i)
|
|
@@ -94763,7 +94763,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94763
94763
|
return result;
|
|
94764
94764
|
}
|
|
94765
94765
|
|
|
94766
|
-
if (isNumber) //单数据-数组
|
|
94766
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94767
94767
|
{
|
|
94768
94768
|
for(let i in data2)
|
|
94769
94769
|
{
|
|
@@ -94771,7 +94771,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94771
94771
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data!=data2[i] ? 1 : 0);
|
|
94772
94772
|
}
|
|
94773
94773
|
}
|
|
94774
|
-
else
|
|
94774
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94775
94775
|
{
|
|
94776
94776
|
for(let i in data)
|
|
94777
94777
|
{
|
|
@@ -107792,6 +107792,38 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
107792
107792
|
return result;
|
|
107793
107793
|
}
|
|
107794
107794
|
|
|
107795
|
+
this.HOUR=function()
|
|
107796
|
+
{
|
|
107797
|
+
var result=[];
|
|
107798
|
+
if (!this.Data || !this.Data.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return result;
|
|
107799
|
+
|
|
107800
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
107801
|
+
{
|
|
107802
|
+
var item=this.Data.Data[i];
|
|
107803
|
+
|
|
107804
|
+
result[i]=0;
|
|
107805
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) result[i]=parseInt(item.Time/100);
|
|
107806
|
+
}
|
|
107807
|
+
|
|
107808
|
+
return result;
|
|
107809
|
+
}
|
|
107810
|
+
|
|
107811
|
+
this.MINUTE=function()
|
|
107812
|
+
{
|
|
107813
|
+
var result=[];
|
|
107814
|
+
if (!this.Data || !this.Data.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return result;
|
|
107815
|
+
|
|
107816
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
107817
|
+
{
|
|
107818
|
+
var item=this.Data.Data[i];
|
|
107819
|
+
|
|
107820
|
+
result[i]=0;
|
|
107821
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) result[i]=item.Time%100;
|
|
107822
|
+
}
|
|
107823
|
+
|
|
107824
|
+
return result;
|
|
107825
|
+
}
|
|
107826
|
+
|
|
107795
107827
|
/*
|
|
107796
107828
|
飞狐函数 SYSPARAM
|
|
107797
107829
|
SYSPARAM(1)画面上光标位置(K线序号)
|
|
@@ -108164,6 +108196,8 @@ function JSExecute(ast,option)
|
|
|
108164
108196
|
['DATE',null],['YEAR',null],['MONTH',null],['PERIOD', null],['WEEK',null],['WEEKDAY',null],["TIME",null],["DAY",null],["DATETIME",null],["TIME2",null],
|
|
108165
108197
|
["WEEKOFYEAR", null],["DAYSTOTODAY", null],
|
|
108166
108198
|
|
|
108199
|
+
["HOUR",null],["MINUTE",null],
|
|
108200
|
+
|
|
108167
108201
|
//大盘数据
|
|
108168
108202
|
['INDEXA',null],['INDEXC',null],['INDEXH',null],['INDEXL',null],['INDEXO',null],['INDEXV',null],
|
|
108169
108203
|
['INDEXADV',null],['INDEXDEC',null],
|
|
@@ -108452,6 +108486,11 @@ function JSExecute(ast,option)
|
|
|
108452
108486
|
case 'FROMOPEN':
|
|
108453
108487
|
return this.SymbolData.GetLatestIndexCacheData('FROMOPEN');
|
|
108454
108488
|
|
|
108489
|
+
case "HOUR":
|
|
108490
|
+
return this.SymbolData.HOUR();
|
|
108491
|
+
case "MINUTE":
|
|
108492
|
+
return this.SymbolData.MINUTE();
|
|
108493
|
+
|
|
108455
108494
|
case 'DRAWNULL':
|
|
108456
108495
|
case "NULL":
|
|
108457
108496
|
return this.SymbolData.GetDrawNull();
|
|
@@ -127641,7 +127680,7 @@ function ScrollBarBGChart()
|
|
|
127641
127680
|
|
|
127642
127681
|
|
|
127643
127682
|
|
|
127644
|
-
var HQCHART_VERSION="1.1.
|
|
127683
|
+
var HQCHART_VERSION="1.1.12445";
|
|
127645
127684
|
|
|
127646
127685
|
function PrintHQChartVersion()
|
|
127647
127686
|
{
|
|
@@ -46554,7 +46554,7 @@ IFrameSplitOperator.IsNumber=function(value)
|
|
|
46554
46554
|
if (value==null) return false;
|
|
46555
46555
|
if (isNaN(value)) return false;
|
|
46556
46556
|
|
|
46557
|
-
return
|
|
46557
|
+
return typeof(value)=='number';
|
|
46558
46558
|
}
|
|
46559
46559
|
|
|
46560
46560
|
//判断是否是正数
|
|
@@ -48416,13 +48416,13 @@ function FrameSplitMinutePriceY()
|
|
|
48416
48416
|
if (IFrameSplitOperator.IsNumber(range.Max) && max<range.Max) max=range.Max;
|
|
48417
48417
|
if (IFrameSplitOperator.IsNumber(range.Min) && min>range.Min) min=range.Min;
|
|
48418
48418
|
|
|
48419
|
-
|
|
48420
|
-
|
|
48421
|
-
|
|
48422
|
-
|
|
48423
|
-
|
|
48424
|
-
|
|
48425
|
-
|
|
48419
|
+
//叠加指标
|
|
48420
|
+
var overlayRange=this.GetOverlayMaxMin();
|
|
48421
|
+
if (overlayRange)
|
|
48422
|
+
{
|
|
48423
|
+
if (IFrameSplitOperator.IsNumber(overlayRange.Max) && overlayRange.Max>max) max=overlayRange.Max;
|
|
48424
|
+
if (IFrameSplitOperator.IsNumber(overlayRange.Min) && overlayRange.Min<min) min=overlayRange.Min;
|
|
48425
|
+
}
|
|
48426
48426
|
|
|
48427
48427
|
|
|
48428
48428
|
return { Max:max, Min:min };
|
|
@@ -48449,7 +48449,7 @@ function FrameSplitMinutePriceY()
|
|
|
48449
48449
|
{
|
|
48450
48450
|
var paint=item.ChartPaint[j];
|
|
48451
48451
|
if (paint.IsShow==false) continue;
|
|
48452
|
-
|
|
48452
|
+
|
|
48453
48453
|
var value=paint.GetMaxMin();
|
|
48454
48454
|
if (value==null || value.Max==null || value.Min==null) continue;
|
|
48455
48455
|
|
|
@@ -94548,15 +94548,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94548
94548
|
//大于
|
|
94549
94549
|
this.GT=function(data,data2)
|
|
94550
94550
|
{
|
|
94551
|
-
let isNumber=
|
|
94552
|
-
let isNumber2=
|
|
94551
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94552
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94553
94553
|
|
|
94554
94554
|
//单数值比较
|
|
94555
94555
|
if (isNumber && isNumber2) return (data>data2 ? 1 : 0);
|
|
94556
94556
|
|
|
94557
94557
|
//都是数组比较
|
|
94558
94558
|
let result=[];
|
|
94559
|
-
if (
|
|
94559
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94560
94560
|
{
|
|
94561
94561
|
let count=Math.max(data.length, data2.length);
|
|
94562
94562
|
for(let i=0;i<count;++i)
|
|
@@ -94572,7 +94572,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94572
94572
|
return result;
|
|
94573
94573
|
}
|
|
94574
94574
|
|
|
94575
|
-
if (isNumber) //单数据-数组
|
|
94575
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94576
94576
|
{
|
|
94577
94577
|
for(let i in data2)
|
|
94578
94578
|
{
|
|
@@ -94580,7 +94580,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94580
94580
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>data2[i] ? 1 : 0);
|
|
94581
94581
|
}
|
|
94582
94582
|
}
|
|
94583
|
-
else
|
|
94583
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94584
94584
|
{
|
|
94585
94585
|
for(let i in data)
|
|
94586
94586
|
{
|
|
@@ -94595,15 +94595,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94595
94595
|
//大于等于
|
|
94596
94596
|
this.GTE=function(data,data2)
|
|
94597
94597
|
{
|
|
94598
|
-
let isNumber=
|
|
94599
|
-
let isNumber2=
|
|
94598
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94599
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94600
94600
|
|
|
94601
94601
|
//单数值比较
|
|
94602
94602
|
if (isNumber && isNumber2) return (data>=data2 ? 1 : 0);
|
|
94603
94603
|
|
|
94604
94604
|
//都是数组比较
|
|
94605
94605
|
let result=[];
|
|
94606
|
-
if (
|
|
94606
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94607
94607
|
{
|
|
94608
94608
|
let count=Math.max(data.length, data2.length);
|
|
94609
94609
|
for(let i=0;i<count;++i)
|
|
@@ -94619,7 +94619,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94619
94619
|
return result;
|
|
94620
94620
|
}
|
|
94621
94621
|
|
|
94622
|
-
if (isNumber) //单数据-数组
|
|
94622
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94623
94623
|
{
|
|
94624
94624
|
for(let i in data2)
|
|
94625
94625
|
{
|
|
@@ -94627,7 +94627,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94627
94627
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>=data2[i] ? 1 : 0);
|
|
94628
94628
|
}
|
|
94629
94629
|
}
|
|
94630
|
-
else
|
|
94630
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94631
94631
|
{
|
|
94632
94632
|
for(let i in data)
|
|
94633
94633
|
{
|
|
@@ -94642,15 +94642,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94642
94642
|
//小于
|
|
94643
94643
|
this.LT=function(data,data2)
|
|
94644
94644
|
{
|
|
94645
|
-
let isNumber=
|
|
94646
|
-
let isNumber2=
|
|
94645
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94646
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94647
94647
|
|
|
94648
94648
|
//单数值比较
|
|
94649
94649
|
if (isNumber && isNumber2) return (data<data2 ? 1 : 0);
|
|
94650
94650
|
|
|
94651
94651
|
//都是数组比较
|
|
94652
94652
|
let result=[];
|
|
94653
|
-
if (
|
|
94653
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94654
94654
|
{
|
|
94655
94655
|
let count=Math.max(data.length, data2.length);
|
|
94656
94656
|
for(let i=0;i<count;++i)
|
|
@@ -94666,7 +94666,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94666
94666
|
return result;
|
|
94667
94667
|
}
|
|
94668
94668
|
|
|
94669
|
-
if (isNumber) //单数据-数组
|
|
94669
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94670
94670
|
{
|
|
94671
94671
|
for(let i in data2)
|
|
94672
94672
|
{
|
|
@@ -94674,7 +94674,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94674
94674
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<data2[i] ? 1 : 0);
|
|
94675
94675
|
}
|
|
94676
94676
|
}
|
|
94677
|
-
else
|
|
94677
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94678
94678
|
{
|
|
94679
94679
|
for(let i in data)
|
|
94680
94680
|
{
|
|
@@ -94689,15 +94689,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94689
94689
|
//小于等于
|
|
94690
94690
|
this.LTE=function(data,data2)
|
|
94691
94691
|
{
|
|
94692
|
-
let isNumber=
|
|
94693
|
-
let isNumber2=
|
|
94692
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94693
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94694
94694
|
|
|
94695
94695
|
//单数值比较
|
|
94696
94696
|
if (isNumber && isNumber2) return (data>=data2 ? 1 : 0);
|
|
94697
94697
|
|
|
94698
94698
|
//都是数组比较
|
|
94699
94699
|
let result=[];
|
|
94700
|
-
if (
|
|
94700
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94701
94701
|
{
|
|
94702
94702
|
let count=Math.max(data.length, data2.length);
|
|
94703
94703
|
for(let i=0;i<count;++i)
|
|
@@ -94713,7 +94713,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94713
94713
|
return result;
|
|
94714
94714
|
}
|
|
94715
94715
|
|
|
94716
|
-
if (isNumber) //单数据-数组
|
|
94716
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94717
94717
|
{
|
|
94718
94718
|
for(let i in data2)
|
|
94719
94719
|
{
|
|
@@ -94721,7 +94721,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94721
94721
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<=data2[i] ? 1 : 0);
|
|
94722
94722
|
}
|
|
94723
94723
|
}
|
|
94724
|
-
else
|
|
94724
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94725
94725
|
{
|
|
94726
94726
|
for(let i in data)
|
|
94727
94727
|
{
|
|
@@ -94736,15 +94736,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94736
94736
|
//等于
|
|
94737
94737
|
this.EQ=function(data,data2)
|
|
94738
94738
|
{
|
|
94739
|
-
let isNumber=
|
|
94740
|
-
let isNumber2=
|
|
94739
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94740
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94741
94741
|
|
|
94742
94742
|
//单数值比较
|
|
94743
94743
|
if (isNumber && isNumber2) return (data==data2 ? 1 : 0);
|
|
94744
94744
|
|
|
94745
94745
|
//都是数组比较
|
|
94746
94746
|
let result=[];
|
|
94747
|
-
if (
|
|
94747
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94748
94748
|
{
|
|
94749
94749
|
let count=Math.max(data.length, data2.length);
|
|
94750
94750
|
for(let i=0;i<count;++i)
|
|
@@ -94760,7 +94760,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94760
94760
|
return result;
|
|
94761
94761
|
}
|
|
94762
94762
|
|
|
94763
|
-
if (isNumber) //单数据-数组
|
|
94763
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94764
94764
|
{
|
|
94765
94765
|
for(let i in data2)
|
|
94766
94766
|
{
|
|
@@ -94768,7 +94768,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94768
94768
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data==data2[i] ? 1 : 0);
|
|
94769
94769
|
}
|
|
94770
94770
|
}
|
|
94771
|
-
else
|
|
94771
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94772
94772
|
{
|
|
94773
94773
|
for(let i in data)
|
|
94774
94774
|
{
|
|
@@ -94783,15 +94783,15 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94783
94783
|
//不等于
|
|
94784
94784
|
this.NEQ=function(data,data2)
|
|
94785
94785
|
{
|
|
94786
|
-
let isNumber=
|
|
94787
|
-
let isNumber2=
|
|
94786
|
+
let isNumber=IFrameSplitOperator.IsNumber(data);
|
|
94787
|
+
let isNumber2=IFrameSplitOperator.IsNumber(data2);
|
|
94788
94788
|
|
|
94789
94789
|
//单数值比较
|
|
94790
94790
|
if (isNumber && isNumber2) return (data!=data2 ? 1 : 0);
|
|
94791
94791
|
|
|
94792
94792
|
//都是数组比较
|
|
94793
94793
|
let result=[];
|
|
94794
|
-
if (
|
|
94794
|
+
if (Array.isArray(data) && Array.isArray(data2))
|
|
94795
94795
|
{
|
|
94796
94796
|
let count=Math.max(data.length, data2.length);
|
|
94797
94797
|
for(let i=0;i<count;++i)
|
|
@@ -94807,7 +94807,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94807
94807
|
return result;
|
|
94808
94808
|
}
|
|
94809
94809
|
|
|
94810
|
-
if (isNumber) //单数据-数组
|
|
94810
|
+
if (isNumber && Array.isArray(data2)) //单数据-数组
|
|
94811
94811
|
{
|
|
94812
94812
|
for(let i in data2)
|
|
94813
94813
|
{
|
|
@@ -94815,7 +94815,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94815
94815
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data!=data2[i] ? 1 : 0);
|
|
94816
94816
|
}
|
|
94817
94817
|
}
|
|
94818
|
-
else
|
|
94818
|
+
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
94819
94819
|
{
|
|
94820
94820
|
for(let i in data)
|
|
94821
94821
|
{
|
|
@@ -107836,6 +107836,38 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
107836
107836
|
return result;
|
|
107837
107837
|
}
|
|
107838
107838
|
|
|
107839
|
+
this.HOUR=function()
|
|
107840
|
+
{
|
|
107841
|
+
var result=[];
|
|
107842
|
+
if (!this.Data || !this.Data.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return result;
|
|
107843
|
+
|
|
107844
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
107845
|
+
{
|
|
107846
|
+
var item=this.Data.Data[i];
|
|
107847
|
+
|
|
107848
|
+
result[i]=0;
|
|
107849
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) result[i]=parseInt(item.Time/100);
|
|
107850
|
+
}
|
|
107851
|
+
|
|
107852
|
+
return result;
|
|
107853
|
+
}
|
|
107854
|
+
|
|
107855
|
+
this.MINUTE=function()
|
|
107856
|
+
{
|
|
107857
|
+
var result=[];
|
|
107858
|
+
if (!this.Data || !this.Data.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return result;
|
|
107859
|
+
|
|
107860
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
107861
|
+
{
|
|
107862
|
+
var item=this.Data.Data[i];
|
|
107863
|
+
|
|
107864
|
+
result[i]=0;
|
|
107865
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) result[i]=item.Time%100;
|
|
107866
|
+
}
|
|
107867
|
+
|
|
107868
|
+
return result;
|
|
107869
|
+
}
|
|
107870
|
+
|
|
107839
107871
|
/*
|
|
107840
107872
|
飞狐函数 SYSPARAM
|
|
107841
107873
|
SYSPARAM(1)画面上光标位置(K线序号)
|
|
@@ -108208,6 +108240,8 @@ function JSExecute(ast,option)
|
|
|
108208
108240
|
['DATE',null],['YEAR',null],['MONTH',null],['PERIOD', null],['WEEK',null],['WEEKDAY',null],["TIME",null],["DAY",null],["DATETIME",null],["TIME2",null],
|
|
108209
108241
|
["WEEKOFYEAR", null],["DAYSTOTODAY", null],
|
|
108210
108242
|
|
|
108243
|
+
["HOUR",null],["MINUTE",null],
|
|
108244
|
+
|
|
108211
108245
|
//大盘数据
|
|
108212
108246
|
['INDEXA',null],['INDEXC',null],['INDEXH',null],['INDEXL',null],['INDEXO',null],['INDEXV',null],
|
|
108213
108247
|
['INDEXADV',null],['INDEXDEC',null],
|
|
@@ -108496,6 +108530,11 @@ function JSExecute(ast,option)
|
|
|
108496
108530
|
case 'FROMOPEN':
|
|
108497
108531
|
return this.SymbolData.GetLatestIndexCacheData('FROMOPEN');
|
|
108498
108532
|
|
|
108533
|
+
case "HOUR":
|
|
108534
|
+
return this.SymbolData.HOUR();
|
|
108535
|
+
case "MINUTE":
|
|
108536
|
+
return this.SymbolData.MINUTE();
|
|
108537
|
+
|
|
108499
108538
|
case 'DRAWNULL':
|
|
108500
108539
|
case "NULL":
|
|
108501
108540
|
return this.SymbolData.GetDrawNull();
|
|
@@ -127685,7 +127724,7 @@ function ScrollBarBGChart()
|
|
|
127685
127724
|
|
|
127686
127725
|
|
|
127687
127726
|
|
|
127688
|
-
var HQCHART_VERSION="1.1.
|
|
127727
|
+
var HQCHART_VERSION="1.1.12445";
|
|
127689
127728
|
|
|
127690
127729
|
function PrintHQChartVersion()
|
|
127691
127730
|
{
|
|
@@ -12054,6 +12054,38 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
12054
12054
|
|
|
12055
12055
|
return result;
|
|
12056
12056
|
}
|
|
12057
|
+
|
|
12058
|
+
this.HOUR=function()
|
|
12059
|
+
{
|
|
12060
|
+
var result=[];
|
|
12061
|
+
if (!this.Data || !this.Data.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return result;
|
|
12062
|
+
|
|
12063
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
12064
|
+
{
|
|
12065
|
+
var item=this.Data.Data[i];
|
|
12066
|
+
|
|
12067
|
+
result[i]=0;
|
|
12068
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) result[i]=parseInt(item.Time/100);
|
|
12069
|
+
}
|
|
12070
|
+
|
|
12071
|
+
return result;
|
|
12072
|
+
}
|
|
12073
|
+
|
|
12074
|
+
this.MINUTE=function()
|
|
12075
|
+
{
|
|
12076
|
+
var result=[];
|
|
12077
|
+
if (!this.Data || !this.Data.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return result;
|
|
12078
|
+
|
|
12079
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
12080
|
+
{
|
|
12081
|
+
var item=this.Data.Data[i];
|
|
12082
|
+
|
|
12083
|
+
result[i]=0;
|
|
12084
|
+
if (IFrameSplitOperator.IsNumber(item.Time)) result[i]=item.Time%100;
|
|
12085
|
+
}
|
|
12086
|
+
|
|
12087
|
+
return result;
|
|
12088
|
+
}
|
|
12057
12089
|
}
|
|
12058
12090
|
|
|
12059
12091
|
//是否有是有效的数字
|
|
@@ -12244,6 +12276,8 @@ function JSExecute(ast,option)
|
|
|
12244
12276
|
['DATE', null], ['YEAR', null], ['MONTH', null], ['PERIOD', null], ['WEEK', null],['WEEKDAY',null],["TIME",null],["DATETIME",null],["TIME2",null],
|
|
12245
12277
|
["WEEKOFYEAR", null],["DAYSTOTODAY", null],
|
|
12246
12278
|
|
|
12279
|
+
["HOUR",null],["MINUTE",null],
|
|
12280
|
+
|
|
12247
12281
|
//大盘数据
|
|
12248
12282
|
['INDEXA',null],['INDEXC',null],['INDEXH',null],['INDEXL',null],['INDEXO',null],['INDEXV',null],
|
|
12249
12283
|
['INDEXADV', null], ['INDEXDEC', null],
|
|
@@ -12489,6 +12523,11 @@ function JSExecute(ast,option)
|
|
|
12489
12523
|
case "NULL":
|
|
12490
12524
|
return this.SymbolData.GetDrawNull();
|
|
12491
12525
|
|
|
12526
|
+
case "HOUR":
|
|
12527
|
+
return this.SymbolData.HOUR();
|
|
12528
|
+
case "MINUTE":
|
|
12529
|
+
return this.SymbolData.MINUTE();
|
|
12530
|
+
|
|
12492
12531
|
case "TQFLAG":
|
|
12493
12532
|
return this.SymbolData.Right;
|
|
12494
12533
|
|
|
@@ -1253,9 +1253,50 @@ function FrameSplitMinutePriceY()
|
|
|
1253
1253
|
if (min > this.Low) min = this.Low;
|
|
1254
1254
|
}
|
|
1255
1255
|
|
|
1256
|
+
//叠加指标
|
|
1257
|
+
var overlayRange=this.GetOverlayMaxMin();
|
|
1258
|
+
if (overlayRange)
|
|
1259
|
+
{
|
|
1260
|
+
if (IFrameSplitOperator.IsNumber(overlayRange.Max) && overlayRange.Max>max) max=overlayRange.Max;
|
|
1261
|
+
if (IFrameSplitOperator.IsNumber(overlayRange.Min) && overlayRange.Min<min) min=overlayRange.Min;
|
|
1262
|
+
}
|
|
1263
|
+
|
|
1256
1264
|
return { Max: max, Min: min };
|
|
1257
1265
|
}
|
|
1258
1266
|
|
|
1267
|
+
//获取共享Y轴叠加指标最大,最小值
|
|
1268
|
+
this.GetOverlayMaxMin=function()
|
|
1269
|
+
{
|
|
1270
|
+
if (!this.HQChart) return null;
|
|
1271
|
+
if (!this.HQChart.Frame || !this.HQChart.Frame.SubFrame) return null;
|
|
1272
|
+
var subFrame=this.HQChart.Frame.SubFrame[0];
|
|
1273
|
+
if (!subFrame) return null;
|
|
1274
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(subFrame.OverlayIndex)) return null;
|
|
1275
|
+
|
|
1276
|
+
var range={ Max:null, Min:null };
|
|
1277
|
+
for(var i=0;i<subFrame.OverlayIndex.length;++i)
|
|
1278
|
+
{
|
|
1279
|
+
var item=subFrame.OverlayIndex[i];
|
|
1280
|
+
if (!item || !item.Frame) continue;
|
|
1281
|
+
var overlayFrame=item.Frame;
|
|
1282
|
+
if (overlayFrame.IsShareY!=true) continue;
|
|
1283
|
+
if (overlayFrame.IsCalculateYMaxMin===false) continue; //叠加坐标Y轴不调整
|
|
1284
|
+
for(var j=0;j<item.ChartPaint.length; ++j)
|
|
1285
|
+
{
|
|
1286
|
+
var paint=item.ChartPaint[j];
|
|
1287
|
+
if (paint.IsShow==false) continue;
|
|
1288
|
+
|
|
1289
|
+
var value=paint.GetMaxMin();
|
|
1290
|
+
if (value==null || value.Max==null || value.Min==null) continue;
|
|
1291
|
+
|
|
1292
|
+
if (range.Max==null || range.Max<value.Max) range.Max=value.Max;
|
|
1293
|
+
if (range.Min==null || range.Min>value.Min ) range.Min=value.Min;
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1297
|
+
return range;
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1259
1300
|
this.USASplit=function(range)
|
|
1260
1301
|
{
|
|
1261
1302
|
var max=range.Max;
|
|
@@ -8368,6 +8368,7 @@ function MinuteChartContainer(uielement)
|
|
|
8368
8368
|
frame.YSplitOperator = new FrameSplitMinutePriceY();
|
|
8369
8369
|
frame.YSplitOperator.FrameSplitData = this.FrameSplitData.get('price');
|
|
8370
8370
|
frame.YSplitOperator.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
|
|
8371
|
+
frame.YSplitOperator.HQChart=this;
|
|
8371
8372
|
}
|
|
8372
8373
|
else
|
|
8373
8374
|
{
|