hqchart 1.1.12470 → 1.1.12475
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 -19
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +62 -13
- package/src/jscommon/umychart.js +10 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +73 -14
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +185 -14
- package/src/jscommon/umychart.vue.build/umychart.vue.bat +1 -1
- package/src/jscommon/umychart.vue.build/umychart.vue.export.js +3 -0
package/lib/umychart.vue.js
CHANGED
|
@@ -4910,7 +4910,8 @@ IFrameSplitOperator.IsPlusNumber=function(value){if(value==null)return false;if(
|
|
|
4910
4910
|
IFrameSplitOperator.IsInteger=function(x){return typeof x==='number'&&x%1===0;};//判断字段是否存在
|
|
4911
4911
|
IFrameSplitOperator.IsObjectExist=function(obj){if(obj===undefined)return false;if(obj==null)return false;return true;};//是否时bool
|
|
4912
4912
|
IFrameSplitOperator.IsBool=function(value){if(value===true||value===false)return true;return false;};IFrameSplitOperator.IsString=function(value){var type=typeof value==='undefined'?'undefined':(0,_typeof3.default)(value);if(type=='string')return true;return false;};//是否是非空的数组
|
|
4913
|
-
IFrameSplitOperator.IsNonEmptyArray=function(ary){if(!ary)return false;if(!Array.isArray(ary))return false;return ary.length>0;};IFrameSplitOperator.IsFloat=function(value){if(value===undefined)return false;if(value==null)return false;if(isNaN(value))return false;return value!=parseInt(value);}
|
|
4913
|
+
IFrameSplitOperator.IsNonEmptyArray=function(ary){if(!ary)return false;if(!Array.isArray(ary))return false;return ary.length>0;};IFrameSplitOperator.IsFloat=function(value){if(value===undefined)return false;if(value==null)return false;if(isNaN(value))return false;return value!=parseInt(value);};//是否有效
|
|
4914
|
+
IFrameSplitOperator.IsVaild=function(value){if(isNaN(value))return false;if(value==null)return false;if(value===undefined)return false;return true;};IFrameSplitOperator.RemoveZero=function(strValue){while(strValue.length>0){var index=strValue.length-1;var ch=strValue[index];if(ch=="0"){strValue=strValue.substr(0,index);}else if(ch=="."){strValue=strValue.substr(0,index);break;}else{break;}}return strValue;};function FrameSplitKLinePriceY(){this.newMethod=IFrameSplitOperator;//派生
|
|
4914
4915
|
this.newMethod();delete this.newMethod;this.CoordinateType=0;//坐标类型 0=普通坐标 1=百分比坐标 (右边坐标刻度) 2=对数对标 3=等比坐标 4=等分坐标 5=黄金分割
|
|
4915
4916
|
this.Symbol;this.Data;//K线数据 (计算百分比坐标)
|
|
4916
4917
|
this.FrameSplitData2;//坐标轴分割方法(计算百分比刻度)
|
|
@@ -9381,27 +9382,27 @@ if(_i53<data.length&&_i53<data2.length){if(this.IsNumber(data[_i53])&&this.IsDiv
|
|
|
9381
9382
|
this.GT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9382
9383
|
if(isNumber&&isNumber2)return data>data2?1:0;//都是数组比较
|
|
9383
9384
|
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i56=0;_i56<count;++_i56){result[_i56]=null;//初始化
|
|
9384
|
-
if(_i56<data.length&&_i56<data2.length){if(!isNaN(data[_i56])&&!isNaN(data2[_i56]))result[_i56]=data[_i56]>data2[_i56]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9385
|
-
{for(var _i57 in data2){result[_i57]=null;if(!isNaN(data)&&!isNaN(data2[_i57]))result[_i57]=data>data2[_i57]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9386
|
-
{for(var _i58 in data){result[_i58]=null;if(!isNaN(data[_i58])&&!isNaN(data2))result[_i58]=data[_i58]>data2?1:0;}}return result;};//大于等于
|
|
9385
|
+
if(_i56<data.length&&_i56<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i56]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i56]))continue;if(!isNaN(data[_i56])&&!isNaN(data2[_i56]))result[_i56]=data[_i56]>data2[_i56]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9386
|
+
{for(var _i57 in data2){result[_i57]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i57]))continue;if(!isNaN(data)&&!isNaN(data2[_i57]))result[_i57]=data>data2[_i57]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9387
|
+
{for(var _i58 in data){result[_i58]=null;if(!IFrameSplitOperator.IsVaild(data[_i58]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;if(!isNaN(data[_i58])&&!isNaN(data2))result[_i58]=data[_i58]>data2?1:0;}}return result;};//大于等于
|
|
9387
9388
|
this.GTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9388
9389
|
if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
|
|
9389
9390
|
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i59=0;_i59<count;++_i59){result[_i59]=null;//初始化
|
|
9390
|
-
if(_i59<data.length&&_i59<data2.length){if(!
|
|
9391
|
-
{for(var _i60 in data2){result[_i60]=null;if(!
|
|
9392
|
-
{for(var _i61 in data){result[_i61]=null;if(!
|
|
9391
|
+
if(_i59<data.length&&_i59<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i59]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i59]))continue;result[_i59]=data[_i59]>=data2[_i59]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9392
|
+
{for(var _i60 in data2){result[_i60]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i60]))continue;result[_i60]=data>=data2[_i60]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9393
|
+
{for(var _i61 in data){result[_i61]=null;if(!IFrameSplitOperator.IsVaild(data[_i61]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i61]=data[_i61]>=data2?1:0;}}return result;};//小于
|
|
9393
9394
|
this.LT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9394
9395
|
if(isNumber&&isNumber2)return data<data2?1:0;//都是数组比较
|
|
9395
9396
|
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i62=0;_i62<count;++_i62){result[_i62]=null;//初始化
|
|
9396
|
-
if(_i62<data.length&&_i62<data2.length){if(!
|
|
9397
|
-
{for(var _i63 in data2){result[_i63]=null;if(!
|
|
9398
|
-
{for(var _i64 in data){result[_i64]=null;if(!
|
|
9397
|
+
if(_i62<data.length&&_i62<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i62]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i62]))continue;result[_i62]=data[_i62]<data2[_i62]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9398
|
+
{for(var _i63 in data2){result[_i63]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i63]))continue;result[_i63]=data<data2[_i63]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9399
|
+
{for(var _i64 in data){result[_i64]=null;if(!IFrameSplitOperator.IsVaild(data[_i64]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i64]=data[_i64]<data2?1:0;}}return result;};//小于等于
|
|
9399
9400
|
this.LTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9400
9401
|
if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
|
|
9401
9402
|
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i65=0;_i65<count;++_i65){result[_i65]=null;//初始化
|
|
9402
|
-
if(_i65<data.length&&_i65<data2.length){if(!
|
|
9403
|
-
{for(var _i66 in data2){result[_i66]=null;if(!
|
|
9404
|
-
{for(var _i67 in data){result[_i67]=null;if(!
|
|
9403
|
+
if(_i65<data.length&&_i65<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i65]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i65]))continue;result[_i65]=data[_i65]<=data2[_i65]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9404
|
+
{for(var _i66 in data2){result[_i66]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i66]))continue;result[_i66]=data<=data2[_i66]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9405
|
+
{for(var _i67 in data){result[_i67]=null;if(!IFrameSplitOperator.IsVaild(data[_i67]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i67]=data[_i67]<=data2?1:0;}}return result;};//等于
|
|
9405
9406
|
this.EQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9406
9407
|
if(isNumber&&isNumber2)return data==data2?1:0;//都是数组比较
|
|
9407
9408
|
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i68=0;_i68<count;++_i68){result[_i68]=null;//初始化
|
|
@@ -9512,7 +9513,8 @@ this.EXPMEMA=function(data,dayCount){var result=[];if(dayCount>=data.length)retu
|
|
|
9512
9513
|
用法:COUNT(X, N), 统计N周期中满足X条件的周期数, 若N<0则从第一个有效值开始.
|
|
9513
9514
|
例如 :COUNT(CLOSE>OPEN, 20)表示统计20周期内收阳的周期数
|
|
9514
9515
|
N 支持数组
|
|
9515
|
-
*/this.COUNT=function(data,n){if(Array.isArray(n)){var start=null;var dataCount=data.length;for(var i=0;i<dataCount;++i){if(this.IsNumber(data[i])){start=i;break;}}if(start==null)return[];var result=[];var count=0;for(var i=0;i<n.length;++i){var period=n[i];if(!IFrameSplitOperator.IsNumber(period))
|
|
9516
|
+
*/this.COUNT=function(data,n){if(Array.isArray(n)){var start=null;var dataCount=data.length;for(var i=0;i<dataCount;++i){if(this.IsNumber(data[i])){start=i;break;}}if(start==null)return[];var result=[];var count=0;for(var i=0;i<n.length;++i){var period=n[i];if(period==0){result[i]=0;continue;}if(!IFrameSplitOperator.IsNumber(period))period=i+1;//无效周期 第一个有效值开始.
|
|
9517
|
+
else if(period<0)period=i+1;count=0;for(var j=i,k=0;j>=0&&k<period;--j,++k)//当前往前period天 统计
|
|
9516
9518
|
{if(data[j])++count;}result[i]=count;}return result;}else{var period=n;var dataCount=data.length;var period=period<1?dataCount:period;var i=0,j=0;for(;i<dataCount;++i)// 取第1个有效数据
|
|
9517
9519
|
{if(this.IsNumber(data[i]))break;}var result=[];var days=0;for(;i<dataCount&&j<period;++i,++j){days=data[i]?days+1:days;result[i]=days;}for(;i<dataCount;++i){if(data[i-period]&&days)days--;days=data[i]?days+1:days;result[i]=days;}return result;}};/*
|
|
9518
9520
|
HHV 最高值
|
|
@@ -9580,8 +9582,9 @@ this.CROSS=function(data,data2){var result=[];if(Array.isArray(data)&&Array.isAr
|
|
|
9580
9582
|
CROSSUP(MA5,MA10),ICON(1,'ICO4');//MA5上穿MA10,标注红箭头。
|
|
9581
9583
|
//CROSSUP(MA5,MA10),ICON(1,'ICO4'); 与 CROSSUP(MA5,MA10)=1,ICON(1,'ICO4');表达同等意义
|
|
9582
9584
|
*/this.CROSSUP=function(data,data2){return this.CROSS(data,data2);};//累乘
|
|
9583
|
-
this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n)return result;if(n==0){var index=n;for(;index<data.length;++index){if(this.IsNumber(data[index])){result[index]=data[index];break;}}for(++index;index<data.length;++index){result[index]=result[index-1]*data[index];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]*=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!this.IsNumber(totalCount))continue;totalCount=parseInt(totalCount);if(totalCount<0)continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]*=data[j];}}}return result;};this.SUM=function(data,n){var result=[];if(!Array.isArray(n)){if(n
|
|
9584
|
-
{if(IFrameSplitOperator.IsNumber(data[i])){start=i;break;}}if(start<0)return result;result[start]=data[start];for(var i=start+1;i<data.length;++i){result[i]=result[i-1]+data[i];}}else{
|
|
9585
|
+
this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n)return result;if(n==0){var index=n;for(;index<data.length;++index){if(this.IsNumber(data[index])){result[index]=data[index];break;}}for(++index;index<data.length;++index){result[index]=result[index-1]*data[index];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]*=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!this.IsNumber(totalCount))continue;totalCount=parseInt(totalCount);if(totalCount<0)continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]*=data[j];}}}return result;};this.SUM=function(data,n){var result=[];if(!Array.isArray(n)){if(n<=0){var start=-1;for(var i=0;i<data.length;++i)//取第1个有效数
|
|
9586
|
+
{if(IFrameSplitOperator.IsNumber(data[i])){start=i;break;}}if(start<0)return result;result[start]=data[start];for(var i=start+1;i<data.length;++i){result[i]=result[i-1]+data[i];}}else{result[0]=data[0];for(var i=1;i<n&&i<data.length;++i)//前面小于N周期的累加
|
|
9587
|
+
{result[i]=result[i-1]+data[i];}for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]+=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!(totalCount>0))continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]+=data[j];}}}return result;};/*
|
|
9585
9588
|
BARSCOUNT 有效数据周期数
|
|
9586
9589
|
求总的周期数。
|
|
9587
9590
|
用法: BARSCOUNT(X) 第一个有效数据到当前的天数。
|
|
@@ -12474,10 +12477,17 @@ this.AreaColor=g_JSChartResource.ScrollBar.BGChart.AreaColor;//面积图颜色
|
|
|
12474
12477
|
this.ReloadResource=function(resource){this.Color=g_JSChartResource.ScrollBar.BGChart.Color;//线段颜色
|
|
12475
12478
|
this.LineWidth=g_JSChartResource.ScrollBar.BGChart.LineWidth;//线段宽度
|
|
12476
12479
|
this.AreaColor=g_JSChartResource.ScrollBar.BGChart.AreaColor;//面积图颜色
|
|
12477
|
-
};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;};}
|
|
12480
|
+
};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;};}///////////////////////////////////////////////////////////////////////////////////
|
|
12481
|
+
// 工作线程计算指标示例
|
|
12482
|
+
//
|
|
12483
|
+
//
|
|
12484
|
+
//////////////////////////////////////////////////////////////////////////////////
|
|
12485
|
+
function HQChartScriptWorker(){this.Create=function(){var _this60=this;addEventListener('message',function(obj){_this60.OnRecvMessage(obj);});};this.NetworkFilter=function(data,callback,indexInfo){JSConsole.Complier.Log('[HQChartScriptWorker::NetworkFilter] ['+data.Name+']['+data.Explain+'] data=',data);//数据下载
|
|
12486
|
+
};this.ExecuteScript=function(indexData,message){var _this61=this;var scriptObj={};if(indexData.Script){scriptObj.Name=indexData.Name;scriptObj.ID=indexData.Index;scriptObj.Script=indexData.Script;}else{if(!indexData.Index)return false;var scriptData=new JSIndexScript();var finder=scriptData.Get(indexData.Index);if(!finder)return false;scriptObj.ID=indexData.Index;scriptObj.Name=finder.Name;scriptObj.Script=finder.Script;scriptObj.Args=finder.Args;}if(indexData.Args)scriptObj.Args=indexData.Args;var indexInfo={Name:scriptObj.Name,ID:scriptObj.ID,Script:scriptObj.Script,Args:scriptObj.Args,Guid:message.Guid};scriptObj.ErrorCallback=function(error){_this61.OnExecuteError(error,indexInfo);};scriptObj.FinishCallback=function(data,jsExectute){_this61.OnExecuteFinish(data,indexInfo,jsExectute);};scriptObj.NetworkFilter=function(data,callback){_this61.NetworkFilter(data,callback,indexInfo);};JSConsole.Complier.Log('[HQChartScriptWorker::ExecuteScript] scriptObj=',scriptObj);var indexConsole=new ScriptIndexConsole(scriptObj);var hisData=null;if(message&&message.Data){hisData=new ChartData();hisData.Data=message.Data;hisData.Right=message.Right;hisData.Period=message.Period;hisData.DataType=message.DataType;//0=日线 1=分钟
|
|
12487
|
+
hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,Stock:{Symbol:message.Symbol},Request:{MaxDataCount:500,MaxMinuteDayCount:5},Period:message.Period,Right:message.Right,Data:hisData};if(IFrameSplitOperator.IsNumber(message.HQDataType))stockObj.HQDataType=message.HQDataType;indexConsole.ExecuteScript(stockObj);};this.OnRecvMessage=function(message){var data=message.data;if(!data)return;if(data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT){if(!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex))return;for(var i=0;i<data.AryIndex.length;++i){var item=data.AryIndex[i];this.ExecuteScript(item,data);}}};this.OnExecuteFinish=function(data,indexInfo,jsExectute){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT};postMessage(message);};this.OnExecuteError=function(error,indexInfo){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
12478
12488
|
* 版本信息输出
|
|
12479
12489
|
*
|
|
12480
|
-
*/var HQCHART_VERSION="1.1.
|
|
12490
|
+
*/var HQCHART_VERSION="1.1.12474";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();//把给外界调用的方法暴露出来
|
|
12481
12491
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12482
12492
|
// BaseIndex:BaseIndex,
|
|
12483
12493
|
// ChartLine:ChartLine,
|
|
@@ -12504,4 +12514,4 @@ GetDevicePixelRatio:GetDevicePixelRatio},(0,_defineProperty3.default)(_jsChartIn
|
|
|
12504
12514
|
HQMinuteTimeStringFormat:HQMinuteTimeStringFormat,//分时图X轴 十字光标输出格式化
|
|
12505
12515
|
HQDateStringFormat:HQDateStringFormat,//K线图X轴 十字光标输出格式化
|
|
12506
12516
|
HQPriceStringFormat:HQPriceStringFormat//分时图,K线图Y轴 十字光标输出格式化
|
|
12507
|
-
}),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'JS_ID',{JSCHART_EVENT_ID:JSCHART_EVENT_ID,JSCHART_OPERATOR_ID:JSCHART_OPERATOR_ID,JSCHART_DRAG_ID:JSCHART_DRAG_ID,JSCHART_BUTTON_ID:JSCHART_BUTTON_ID,JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID}),_jsChartInit$jsChartS);
|
|
12517
|
+
}),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'JS_ID',{JSCHART_EVENT_ID:JSCHART_EVENT_ID,JSCHART_OPERATOR_ID:JSCHART_OPERATOR_ID,JSCHART_DRAG_ID:JSCHART_DRAG_ID,JSCHART_BUTTON_ID:JSCHART_BUTTON_ID,JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID}),(0,_defineProperty3.default)(_jsChartInit$jsChartS,'HQChartScriptWorker',HQChartScriptWorker),_jsChartInit$jsChartS);
|
package/package.json
CHANGED
|
@@ -2428,6 +2428,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2428
2428
|
|
|
2429
2429
|
if (i<data.length && i<data2.length)
|
|
2430
2430
|
{
|
|
2431
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2432
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2433
|
+
|
|
2431
2434
|
if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]>data2[i] ? 1:0);
|
|
2432
2435
|
}
|
|
2433
2436
|
}
|
|
@@ -2440,6 +2443,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2440
2443
|
for(let i in data2)
|
|
2441
2444
|
{
|
|
2442
2445
|
result[i]=null;
|
|
2446
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
2447
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2448
|
+
|
|
2443
2449
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>data2[i] ? 1 : 0);
|
|
2444
2450
|
}
|
|
2445
2451
|
}
|
|
@@ -2448,6 +2454,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2448
2454
|
for(let i in data)
|
|
2449
2455
|
{
|
|
2450
2456
|
result[i]=null;
|
|
2457
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2458
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
2459
|
+
|
|
2451
2460
|
if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]>data2 ? 1 : 0);
|
|
2452
2461
|
}
|
|
2453
2462
|
}
|
|
@@ -2475,7 +2484,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2475
2484
|
|
|
2476
2485
|
if (i<data.length && i<data2.length)
|
|
2477
2486
|
{
|
|
2478
|
-
if (
|
|
2487
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2488
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2489
|
+
|
|
2490
|
+
result[i]=(data[i]>=data2[i] ? 1:0);
|
|
2479
2491
|
}
|
|
2480
2492
|
}
|
|
2481
2493
|
|
|
@@ -2487,7 +2499,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2487
2499
|
for(let i in data2)
|
|
2488
2500
|
{
|
|
2489
2501
|
result[i]=null;
|
|
2490
|
-
if (
|
|
2502
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
2503
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2504
|
+
|
|
2505
|
+
result[i]=(data>=data2[i] ? 1 : 0);
|
|
2491
2506
|
}
|
|
2492
2507
|
}
|
|
2493
2508
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -2495,7 +2510,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2495
2510
|
for(let i in data)
|
|
2496
2511
|
{
|
|
2497
2512
|
result[i]=null;
|
|
2498
|
-
if (
|
|
2513
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2514
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
2515
|
+
|
|
2516
|
+
result[i]=(data[i]>=data2 ? 1 : 0);
|
|
2499
2517
|
}
|
|
2500
2518
|
}
|
|
2501
2519
|
|
|
@@ -2522,7 +2540,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2522
2540
|
|
|
2523
2541
|
if (i<data.length && i<data2.length)
|
|
2524
2542
|
{
|
|
2525
|
-
if (
|
|
2543
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2544
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2545
|
+
|
|
2546
|
+
result[i]=(data[i]<data2[i] ? 1:0);
|
|
2526
2547
|
}
|
|
2527
2548
|
}
|
|
2528
2549
|
|
|
@@ -2534,7 +2555,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2534
2555
|
for(let i in data2)
|
|
2535
2556
|
{
|
|
2536
2557
|
result[i]=null;
|
|
2537
|
-
if (
|
|
2558
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
2559
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2560
|
+
|
|
2561
|
+
result[i]=(data<data2[i] ? 1 : 0);
|
|
2538
2562
|
}
|
|
2539
2563
|
}
|
|
2540
2564
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -2542,7 +2566,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2542
2566
|
for(let i in data)
|
|
2543
2567
|
{
|
|
2544
2568
|
result[i]=null;
|
|
2545
|
-
if (
|
|
2569
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2570
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
2571
|
+
|
|
2572
|
+
result[i]=(data[i]<data2 ? 1 : 0);
|
|
2546
2573
|
}
|
|
2547
2574
|
}
|
|
2548
2575
|
|
|
@@ -2569,7 +2596,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2569
2596
|
|
|
2570
2597
|
if (i<data.length && i<data2.length)
|
|
2571
2598
|
{
|
|
2572
|
-
if (
|
|
2599
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2600
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2601
|
+
|
|
2602
|
+
result[i]=(data[i]<=data2[i] ? 1:0);
|
|
2573
2603
|
}
|
|
2574
2604
|
}
|
|
2575
2605
|
|
|
@@ -2581,7 +2611,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2581
2611
|
for(let i in data2)
|
|
2582
2612
|
{
|
|
2583
2613
|
result[i]=null;
|
|
2584
|
-
if (
|
|
2614
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
2615
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2616
|
+
|
|
2617
|
+
result[i]=(data<=data2[i] ? 1 : 0);
|
|
2585
2618
|
}
|
|
2586
2619
|
}
|
|
2587
2620
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -2589,7 +2622,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2589
2622
|
for(let i in data)
|
|
2590
2623
|
{
|
|
2591
2624
|
result[i]=null;
|
|
2592
|
-
if (
|
|
2625
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2626
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
2627
|
+
|
|
2628
|
+
result[i]=(data[i]<=data2 ? 1 : 0);
|
|
2593
2629
|
}
|
|
2594
2630
|
}
|
|
2595
2631
|
|
|
@@ -3676,9 +3712,16 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
3676
3712
|
for(var i=0;i<n.length;++i)
|
|
3677
3713
|
{
|
|
3678
3714
|
var period=n[i];
|
|
3679
|
-
|
|
3680
|
-
|
|
3681
|
-
|
|
3715
|
+
|
|
3716
|
+
if (period==0)
|
|
3717
|
+
{
|
|
3718
|
+
result[i]=0;
|
|
3719
|
+
continue;
|
|
3720
|
+
}
|
|
3721
|
+
|
|
3722
|
+
if (!IFrameSplitOperator.IsNumber(period) ) period=i+1; //无效周期 第一个有效值开始.
|
|
3723
|
+
else if (period<0) period=i+1;
|
|
3724
|
+
|
|
3682
3725
|
count=0;
|
|
3683
3726
|
for(var j=i, k=0 ;j>=0 && k<period ;--j,++k) //当前往前period天 统计
|
|
3684
3727
|
{
|
|
@@ -4142,7 +4185,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
4142
4185
|
|
|
4143
4186
|
if (!Array.isArray(n))
|
|
4144
4187
|
{
|
|
4145
|
-
if (n
|
|
4188
|
+
if (n<=0)
|
|
4146
4189
|
{
|
|
4147
4190
|
var start=-1;
|
|
4148
4191
|
for(var i=0; i<data.length; ++i) //取第1个有效数
|
|
@@ -4165,6 +4208,12 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
4165
4208
|
}
|
|
4166
4209
|
else
|
|
4167
4210
|
{
|
|
4211
|
+
result[0]=data[0];
|
|
4212
|
+
for(var i=1;i<n && i<data.length;++i) //前面小于N周期的累加
|
|
4213
|
+
{
|
|
4214
|
+
result[i] = result[i-1]+data[i];
|
|
4215
|
+
}
|
|
4216
|
+
|
|
4168
4217
|
for(var i=n-1,j=0;i<data.length;++i,++j)
|
|
4169
4218
|
{
|
|
4170
4219
|
for(var k=0;k<n;++k)
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -42552,6 +42552,16 @@ IFrameSplitOperator.IsFloat=function(value)
|
|
|
42552
42552
|
return value!=parseInt(value);
|
|
42553
42553
|
}
|
|
42554
42554
|
|
|
42555
|
+
//是否有效
|
|
42556
|
+
IFrameSplitOperator.IsVaild=function(value)
|
|
42557
|
+
{
|
|
42558
|
+
if (isNaN(value)) return false;
|
|
42559
|
+
if (value==null) return false;
|
|
42560
|
+
if (value===undefined) return false;
|
|
42561
|
+
|
|
42562
|
+
return true;
|
|
42563
|
+
}
|
|
42564
|
+
|
|
42555
42565
|
IFrameSplitOperator.RemoveZero=function(strValue)
|
|
42556
42566
|
{
|
|
42557
42567
|
while(strValue.length>0)
|
|
@@ -46632,6 +46632,16 @@ IFrameSplitOperator.IsFloat=function(value)
|
|
|
46632
46632
|
return value!=parseInt(value);
|
|
46633
46633
|
}
|
|
46634
46634
|
|
|
46635
|
+
//是否有效
|
|
46636
|
+
IFrameSplitOperator.IsVaild=function(value)
|
|
46637
|
+
{
|
|
46638
|
+
if (isNaN(value)) return false;
|
|
46639
|
+
if (value==null) return false;
|
|
46640
|
+
if (value===undefined) return false;
|
|
46641
|
+
|
|
46642
|
+
return true;
|
|
46643
|
+
}
|
|
46644
|
+
|
|
46635
46645
|
IFrameSplitOperator.RemoveZero=function(strValue)
|
|
46636
46646
|
{
|
|
46637
46647
|
while(strValue.length>0)
|
|
@@ -94792,6 +94802,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94792
94802
|
|
|
94793
94803
|
if (i<data.length && i<data2.length)
|
|
94794
94804
|
{
|
|
94805
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94806
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94807
|
+
|
|
94795
94808
|
if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]>data2[i] ? 1:0);
|
|
94796
94809
|
}
|
|
94797
94810
|
}
|
|
@@ -94804,6 +94817,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94804
94817
|
for(let i in data2)
|
|
94805
94818
|
{
|
|
94806
94819
|
result[i]=null;
|
|
94820
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
94821
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94822
|
+
|
|
94807
94823
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>data2[i] ? 1 : 0);
|
|
94808
94824
|
}
|
|
94809
94825
|
}
|
|
@@ -94812,6 +94828,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94812
94828
|
for(let i in data)
|
|
94813
94829
|
{
|
|
94814
94830
|
result[i]=null;
|
|
94831
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94832
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
94833
|
+
|
|
94815
94834
|
if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]>data2 ? 1 : 0);
|
|
94816
94835
|
}
|
|
94817
94836
|
}
|
|
@@ -94839,7 +94858,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94839
94858
|
|
|
94840
94859
|
if (i<data.length && i<data2.length)
|
|
94841
94860
|
{
|
|
94842
|
-
if (
|
|
94861
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94862
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94863
|
+
|
|
94864
|
+
result[i]=(data[i]>=data2[i] ? 1:0);
|
|
94843
94865
|
}
|
|
94844
94866
|
}
|
|
94845
94867
|
|
|
@@ -94851,7 +94873,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94851
94873
|
for(let i in data2)
|
|
94852
94874
|
{
|
|
94853
94875
|
result[i]=null;
|
|
94854
|
-
if (
|
|
94876
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
94877
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94878
|
+
|
|
94879
|
+
result[i]=(data>=data2[i] ? 1 : 0);
|
|
94855
94880
|
}
|
|
94856
94881
|
}
|
|
94857
94882
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -94859,7 +94884,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94859
94884
|
for(let i in data)
|
|
94860
94885
|
{
|
|
94861
94886
|
result[i]=null;
|
|
94862
|
-
if (
|
|
94887
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94888
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
94889
|
+
|
|
94890
|
+
result[i]=(data[i]>=data2 ? 1 : 0);
|
|
94863
94891
|
}
|
|
94864
94892
|
}
|
|
94865
94893
|
|
|
@@ -94886,7 +94914,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94886
94914
|
|
|
94887
94915
|
if (i<data.length && i<data2.length)
|
|
94888
94916
|
{
|
|
94889
|
-
if (
|
|
94917
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94918
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94919
|
+
|
|
94920
|
+
result[i]=(data[i]<data2[i] ? 1:0);
|
|
94890
94921
|
}
|
|
94891
94922
|
}
|
|
94892
94923
|
|
|
@@ -94898,7 +94929,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94898
94929
|
for(let i in data2)
|
|
94899
94930
|
{
|
|
94900
94931
|
result[i]=null;
|
|
94901
|
-
if (
|
|
94932
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
94933
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94934
|
+
|
|
94935
|
+
result[i]=(data<data2[i] ? 1 : 0);
|
|
94902
94936
|
}
|
|
94903
94937
|
}
|
|
94904
94938
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -94906,7 +94940,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94906
94940
|
for(let i in data)
|
|
94907
94941
|
{
|
|
94908
94942
|
result[i]=null;
|
|
94909
|
-
if (
|
|
94943
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94944
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
94945
|
+
|
|
94946
|
+
result[i]=(data[i]<data2 ? 1 : 0);
|
|
94910
94947
|
}
|
|
94911
94948
|
}
|
|
94912
94949
|
|
|
@@ -94933,7 +94970,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94933
94970
|
|
|
94934
94971
|
if (i<data.length && i<data2.length)
|
|
94935
94972
|
{
|
|
94936
|
-
if (
|
|
94973
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94974
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94975
|
+
|
|
94976
|
+
result[i]=(data[i]<=data2[i] ? 1:0);
|
|
94937
94977
|
}
|
|
94938
94978
|
}
|
|
94939
94979
|
|
|
@@ -94945,7 +94985,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94945
94985
|
for(let i in data2)
|
|
94946
94986
|
{
|
|
94947
94987
|
result[i]=null;
|
|
94948
|
-
if (
|
|
94988
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
94989
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94990
|
+
|
|
94991
|
+
result[i]=(data<=data2[i] ? 1 : 0);
|
|
94949
94992
|
}
|
|
94950
94993
|
}
|
|
94951
94994
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -94953,7 +94996,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94953
94996
|
for(let i in data)
|
|
94954
94997
|
{
|
|
94955
94998
|
result[i]=null;
|
|
94956
|
-
if (
|
|
94999
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
95000
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
95001
|
+
|
|
95002
|
+
result[i]=(data[i]<=data2 ? 1 : 0);
|
|
94957
95003
|
}
|
|
94958
95004
|
}
|
|
94959
95005
|
|
|
@@ -96040,9 +96086,16 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
96040
96086
|
for(var i=0;i<n.length;++i)
|
|
96041
96087
|
{
|
|
96042
96088
|
var period=n[i];
|
|
96043
|
-
|
|
96044
|
-
|
|
96045
|
-
|
|
96089
|
+
|
|
96090
|
+
if (period==0)
|
|
96091
|
+
{
|
|
96092
|
+
result[i]=0;
|
|
96093
|
+
continue;
|
|
96094
|
+
}
|
|
96095
|
+
|
|
96096
|
+
if (!IFrameSplitOperator.IsNumber(period) ) period=i+1; //无效周期 第一个有效值开始.
|
|
96097
|
+
else if (period<0) period=i+1;
|
|
96098
|
+
|
|
96046
96099
|
count=0;
|
|
96047
96100
|
for(var j=i, k=0 ;j>=0 && k<period ;--j,++k) //当前往前period天 统计
|
|
96048
96101
|
{
|
|
@@ -96506,7 +96559,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
96506
96559
|
|
|
96507
96560
|
if (!Array.isArray(n))
|
|
96508
96561
|
{
|
|
96509
|
-
if (n
|
|
96562
|
+
if (n<=0)
|
|
96510
96563
|
{
|
|
96511
96564
|
var start=-1;
|
|
96512
96565
|
for(var i=0; i<data.length; ++i) //取第1个有效数
|
|
@@ -96529,6 +96582,12 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
96529
96582
|
}
|
|
96530
96583
|
else
|
|
96531
96584
|
{
|
|
96585
|
+
result[0]=data[0];
|
|
96586
|
+
for(var i=1;i<n && i<data.length;++i) //前面小于N周期的累加
|
|
96587
|
+
{
|
|
96588
|
+
result[i] = result[i-1]+data[i];
|
|
96589
|
+
}
|
|
96590
|
+
|
|
96532
96591
|
for(var i=n-1,j=0;i<data.length;++i,++j)
|
|
96533
96592
|
{
|
|
96534
96593
|
for(var k=0;k<n;++k)
|
|
@@ -127966,7 +128025,7 @@ function ScrollBarBGChart()
|
|
|
127966
128025
|
|
|
127967
128026
|
|
|
127968
128027
|
|
|
127969
|
-
var HQCHART_VERSION="1.1.
|
|
128028
|
+
var HQCHART_VERSION="1.1.12474";
|
|
127970
128029
|
|
|
127971
128030
|
function PrintHQChartVersion()
|
|
127972
128031
|
{
|
|
@@ -46676,6 +46676,16 @@ IFrameSplitOperator.IsFloat=function(value)
|
|
|
46676
46676
|
return value!=parseInt(value);
|
|
46677
46677
|
}
|
|
46678
46678
|
|
|
46679
|
+
//是否有效
|
|
46680
|
+
IFrameSplitOperator.IsVaild=function(value)
|
|
46681
|
+
{
|
|
46682
|
+
if (isNaN(value)) return false;
|
|
46683
|
+
if (value==null) return false;
|
|
46684
|
+
if (value===undefined) return false;
|
|
46685
|
+
|
|
46686
|
+
return true;
|
|
46687
|
+
}
|
|
46688
|
+
|
|
46679
46689
|
IFrameSplitOperator.RemoveZero=function(strValue)
|
|
46680
46690
|
{
|
|
46681
46691
|
while(strValue.length>0)
|
|
@@ -94836,6 +94846,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94836
94846
|
|
|
94837
94847
|
if (i<data.length && i<data2.length)
|
|
94838
94848
|
{
|
|
94849
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94850
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94851
|
+
|
|
94839
94852
|
if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]>data2[i] ? 1:0);
|
|
94840
94853
|
}
|
|
94841
94854
|
}
|
|
@@ -94848,6 +94861,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94848
94861
|
for(let i in data2)
|
|
94849
94862
|
{
|
|
94850
94863
|
result[i]=null;
|
|
94864
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
94865
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94866
|
+
|
|
94851
94867
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>data2[i] ? 1 : 0);
|
|
94852
94868
|
}
|
|
94853
94869
|
}
|
|
@@ -94856,6 +94872,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94856
94872
|
for(let i in data)
|
|
94857
94873
|
{
|
|
94858
94874
|
result[i]=null;
|
|
94875
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94876
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
94877
|
+
|
|
94859
94878
|
if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]>data2 ? 1 : 0);
|
|
94860
94879
|
}
|
|
94861
94880
|
}
|
|
@@ -94883,7 +94902,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94883
94902
|
|
|
94884
94903
|
if (i<data.length && i<data2.length)
|
|
94885
94904
|
{
|
|
94886
|
-
if (
|
|
94905
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94906
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94907
|
+
|
|
94908
|
+
result[i]=(data[i]>=data2[i] ? 1:0);
|
|
94887
94909
|
}
|
|
94888
94910
|
}
|
|
94889
94911
|
|
|
@@ -94895,7 +94917,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94895
94917
|
for(let i in data2)
|
|
94896
94918
|
{
|
|
94897
94919
|
result[i]=null;
|
|
94898
|
-
if (
|
|
94920
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
94921
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94922
|
+
|
|
94923
|
+
result[i]=(data>=data2[i] ? 1 : 0);
|
|
94899
94924
|
}
|
|
94900
94925
|
}
|
|
94901
94926
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -94903,7 +94928,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94903
94928
|
for(let i in data)
|
|
94904
94929
|
{
|
|
94905
94930
|
result[i]=null;
|
|
94906
|
-
if (
|
|
94931
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94932
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
94933
|
+
|
|
94934
|
+
result[i]=(data[i]>=data2 ? 1 : 0);
|
|
94907
94935
|
}
|
|
94908
94936
|
}
|
|
94909
94937
|
|
|
@@ -94930,7 +94958,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94930
94958
|
|
|
94931
94959
|
if (i<data.length && i<data2.length)
|
|
94932
94960
|
{
|
|
94933
|
-
if (
|
|
94961
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94962
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94963
|
+
|
|
94964
|
+
result[i]=(data[i]<data2[i] ? 1:0);
|
|
94934
94965
|
}
|
|
94935
94966
|
}
|
|
94936
94967
|
|
|
@@ -94942,7 +94973,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94942
94973
|
for(let i in data2)
|
|
94943
94974
|
{
|
|
94944
94975
|
result[i]=null;
|
|
94945
|
-
if (
|
|
94976
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
94977
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
94978
|
+
|
|
94979
|
+
result[i]=(data<data2[i] ? 1 : 0);
|
|
94946
94980
|
}
|
|
94947
94981
|
}
|
|
94948
94982
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -94950,7 +94984,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94950
94984
|
for(let i in data)
|
|
94951
94985
|
{
|
|
94952
94986
|
result[i]=null;
|
|
94953
|
-
if (
|
|
94987
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
94988
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
94989
|
+
|
|
94990
|
+
result[i]=(data[i]<data2 ? 1 : 0);
|
|
94954
94991
|
}
|
|
94955
94992
|
}
|
|
94956
94993
|
|
|
@@ -94977,7 +95014,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94977
95014
|
|
|
94978
95015
|
if (i<data.length && i<data2.length)
|
|
94979
95016
|
{
|
|
94980
|
-
if (
|
|
95017
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
95018
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
95019
|
+
|
|
95020
|
+
result[i]=(data[i]<=data2[i] ? 1:0);
|
|
94981
95021
|
}
|
|
94982
95022
|
}
|
|
94983
95023
|
|
|
@@ -94989,7 +95029,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94989
95029
|
for(let i in data2)
|
|
94990
95030
|
{
|
|
94991
95031
|
result[i]=null;
|
|
94992
|
-
if (
|
|
95032
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
95033
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
95034
|
+
|
|
95035
|
+
result[i]=(data<=data2[i] ? 1 : 0);
|
|
94993
95036
|
}
|
|
94994
95037
|
}
|
|
94995
95038
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -94997,7 +95040,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
94997
95040
|
for(let i in data)
|
|
94998
95041
|
{
|
|
94999
95042
|
result[i]=null;
|
|
95000
|
-
if (
|
|
95043
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
95044
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
95045
|
+
|
|
95046
|
+
result[i]=(data[i]<=data2 ? 1 : 0);
|
|
95001
95047
|
}
|
|
95002
95048
|
}
|
|
95003
95049
|
|
|
@@ -96084,9 +96130,16 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
96084
96130
|
for(var i=0;i<n.length;++i)
|
|
96085
96131
|
{
|
|
96086
96132
|
var period=n[i];
|
|
96087
|
-
|
|
96088
|
-
|
|
96089
|
-
|
|
96133
|
+
|
|
96134
|
+
if (period==0)
|
|
96135
|
+
{
|
|
96136
|
+
result[i]=0;
|
|
96137
|
+
continue;
|
|
96138
|
+
}
|
|
96139
|
+
|
|
96140
|
+
if (!IFrameSplitOperator.IsNumber(period) ) period=i+1; //无效周期 第一个有效值开始.
|
|
96141
|
+
else if (period<0) period=i+1;
|
|
96142
|
+
|
|
96090
96143
|
count=0;
|
|
96091
96144
|
for(var j=i, k=0 ;j>=0 && k<period ;--j,++k) //当前往前period天 统计
|
|
96092
96145
|
{
|
|
@@ -96550,7 +96603,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
96550
96603
|
|
|
96551
96604
|
if (!Array.isArray(n))
|
|
96552
96605
|
{
|
|
96553
|
-
if (n
|
|
96606
|
+
if (n<=0)
|
|
96554
96607
|
{
|
|
96555
96608
|
var start=-1;
|
|
96556
96609
|
for(var i=0; i<data.length; ++i) //取第1个有效数
|
|
@@ -96573,6 +96626,12 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
96573
96626
|
}
|
|
96574
96627
|
else
|
|
96575
96628
|
{
|
|
96629
|
+
result[0]=data[0];
|
|
96630
|
+
for(var i=1;i<n && i<data.length;++i) //前面小于N周期的累加
|
|
96631
|
+
{
|
|
96632
|
+
result[i] = result[i-1]+data[i];
|
|
96633
|
+
}
|
|
96634
|
+
|
|
96576
96635
|
for(var i=n-1,j=0;i<data.length;++i,++j)
|
|
96577
96636
|
{
|
|
96578
96637
|
for(var k=0;k<n;++k)
|
|
@@ -128003,6 +128062,115 @@ function ScrollBarBGChart()
|
|
|
128003
128062
|
}
|
|
128004
128063
|
|
|
128005
128064
|
|
|
128065
|
+
///////////////////////////////////////////////////////////////////////////////////
|
|
128066
|
+
// 工作线程计算指标示例
|
|
128067
|
+
//
|
|
128068
|
+
//
|
|
128069
|
+
//////////////////////////////////////////////////////////////////////////////////
|
|
128070
|
+
|
|
128071
|
+
function HQChartScriptWorker()
|
|
128072
|
+
{
|
|
128073
|
+
|
|
128074
|
+
this.Create=function()
|
|
128075
|
+
{
|
|
128076
|
+
addEventListener('message', (obj)=>{ this.OnRecvMessage(obj); });
|
|
128077
|
+
}
|
|
128078
|
+
|
|
128079
|
+
this.NetworkFilter=function(data, callback, indexInfo)
|
|
128080
|
+
{
|
|
128081
|
+
JSConsole.Complier.Log(`[HQChartScriptWorker::NetworkFilter] [${data.Name}][${data.Explain}] data=`, data);
|
|
128082
|
+
//数据下载
|
|
128083
|
+
}
|
|
128084
|
+
|
|
128085
|
+
this.ExecuteScript=function(indexData, message)
|
|
128086
|
+
{
|
|
128087
|
+
var scriptObj={ };
|
|
128088
|
+
|
|
128089
|
+
if (indexData.Script)
|
|
128090
|
+
{
|
|
128091
|
+
scriptObj.Name=indexData.Name;
|
|
128092
|
+
scriptObj.ID=indexData.Index;
|
|
128093
|
+
scriptObj.Script=indexData.Script;
|
|
128094
|
+
}
|
|
128095
|
+
else
|
|
128096
|
+
{
|
|
128097
|
+
if (!indexData.Index) return false;
|
|
128098
|
+
var scriptData = new JSIndexScript();
|
|
128099
|
+
var finder = scriptData.Get(indexData.Index);
|
|
128100
|
+
if (!finder) return false;
|
|
128101
|
+
|
|
128102
|
+
scriptObj.ID=indexData.Index;
|
|
128103
|
+
scriptObj.Name=finder.Name;
|
|
128104
|
+
scriptObj.Script=finder.Script;
|
|
128105
|
+
scriptObj.Args=finder.Args;
|
|
128106
|
+
}
|
|
128107
|
+
|
|
128108
|
+
if (indexData.Args) scriptObj.Args=indexData.Args;
|
|
128109
|
+
|
|
128110
|
+
var indexInfo={ Name:scriptObj.Name, ID:scriptObj.ID, Script:scriptObj.Script, Args:scriptObj.Args, Guid:message.Guid };
|
|
128111
|
+
scriptObj.ErrorCallback=(error)=>{ this.OnExecuteError(error,indexInfo); };
|
|
128112
|
+
scriptObj.FinishCallback=(data, jsExectute)=>{ this.OnExecuteFinish(data, indexInfo, jsExectute); };
|
|
128113
|
+
scriptObj.NetworkFilter=(data, callback)=>{ this.NetworkFilter(data, callback, indexInfo); };
|
|
128114
|
+
|
|
128115
|
+
JSConsole.Complier.Log('[HQChartScriptWorker::ExecuteScript] scriptObj=',scriptObj);
|
|
128116
|
+
|
|
128117
|
+
var indexConsole=new ScriptIndexConsole(scriptObj);
|
|
128118
|
+
|
|
128119
|
+
var hisData=null;
|
|
128120
|
+
if (message && message.Data)
|
|
128121
|
+
{
|
|
128122
|
+
hisData=new ChartData();
|
|
128123
|
+
hisData.Data=message.Data;
|
|
128124
|
+
hisData.Right=message.Right;
|
|
128125
|
+
hisData.Period=message.Period;
|
|
128126
|
+
hisData.DataType=message.DataType; //0=日线 1=分钟
|
|
128127
|
+
hisData.Symbol=message.symbol;
|
|
128128
|
+
}
|
|
128129
|
+
|
|
128130
|
+
var stockObj=
|
|
128131
|
+
{
|
|
128132
|
+
HQDataType:HQ_DATA_TYPE.KLINE_ID,
|
|
128133
|
+
Stock: { Symbol:message.Symbol },
|
|
128134
|
+
Request: { MaxDataCount: 500, MaxMinuteDayCount:5 },
|
|
128135
|
+
Period:message.Period , Right:message.Right,
|
|
128136
|
+
Data:hisData
|
|
128137
|
+
};
|
|
128138
|
+
|
|
128139
|
+
if (IFrameSplitOperator.IsNumber(message.HQDataType)) stockObj.HQDataType=message.HQDataType;
|
|
128140
|
+
|
|
128141
|
+
indexConsole.ExecuteScript(stockObj);
|
|
128142
|
+
}
|
|
128143
|
+
|
|
128144
|
+
this.OnRecvMessage=function(message)
|
|
128145
|
+
{
|
|
128146
|
+
var data=message.data;
|
|
128147
|
+
if (!data) return;
|
|
128148
|
+
|
|
128149
|
+
if (data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT)
|
|
128150
|
+
{
|
|
128151
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex)) return;
|
|
128152
|
+
|
|
128153
|
+
for(var i=0;i<data.AryIndex.length;++i)
|
|
128154
|
+
{
|
|
128155
|
+
var item=data.AryIndex[i];
|
|
128156
|
+
this.ExecuteScript(item,data);
|
|
128157
|
+
}
|
|
128158
|
+
}
|
|
128159
|
+
}
|
|
128160
|
+
|
|
128161
|
+
this.OnExecuteFinish=function(data, indexInfo, jsExectute)
|
|
128162
|
+
{
|
|
128163
|
+
var message={ Data:data, IndexInfo:indexInfo , ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT };
|
|
128164
|
+
postMessage(message);
|
|
128165
|
+
}
|
|
128166
|
+
|
|
128167
|
+
this.OnExecuteError=function(error,indexInfo)
|
|
128168
|
+
{
|
|
128169
|
+
var message={ IndexInfo:indexInfo, ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT, Error:error };
|
|
128170
|
+
postMessage(message);
|
|
128171
|
+
}
|
|
128172
|
+
}
|
|
128173
|
+
|
|
128006
128174
|
/********************************************************************************
|
|
128007
128175
|
* 版本信息输出
|
|
128008
128176
|
*
|
|
@@ -128010,7 +128178,7 @@ function ScrollBarBGChart()
|
|
|
128010
128178
|
|
|
128011
128179
|
|
|
128012
128180
|
|
|
128013
|
-
var HQCHART_VERSION="1.1.
|
|
128181
|
+
var HQCHART_VERSION="1.1.12474";
|
|
128014
128182
|
|
|
128015
128183
|
function PrintHQChartVersion()
|
|
128016
128184
|
{
|
|
@@ -128140,5 +128308,8 @@ export default {
|
|
|
128140
128308
|
JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,
|
|
128141
128309
|
JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID
|
|
128142
128310
|
},
|
|
128311
|
+
|
|
128312
|
+
|
|
128313
|
+
HQChartScriptWorker:HQChartScriptWorker, //计算工作线程
|
|
128143
128314
|
|
|
128144
128315
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
copy ..\umychart.console.js+..\umychart.network.js+..\umychart.index.data.js+..\umychart.js+..\umychart.complier.js+..\umychart.style.js+..\umychart.deal.js+..\umychart.report.js+..\umychart.keyboard.js+..\umychart.scrollbar.js+..\umychart.version.js+umychart.vue.export.js ..\umychart.vue\umychart.vue.js /b
|
|
1
|
+
copy ..\umychart.console.js+..\umychart.network.js+..\umychart.index.data.js+..\umychart.js+..\umychart.complier.js+..\umychart.style.js+..\umychart.deal.js+..\umychart.report.js+..\umychart.keyboard.js+..\umychart.scrollbar.js+..\umychart.worker.js+..\umychart.version.js+umychart.vue.export.js ..\umychart.vue\umychart.vue.js /b
|
|
2
2
|
copy ..\umychart.regressiontest.js+umychart.regressiontest.vue.export.js ..\umychart.vue\umychart.regressiontest.vue.js /b
|
|
3
3
|
copy ..\umychart.listctrl.js+umychart.listctrl.vue.export.js ..\umychart.vue\umychart.listctrl.vue.js /b
|
|
4
4
|
|