hqchart 1.1.12655 → 1.1.12669
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 +37 -5
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +46 -0
- package/src/jscommon/umychart.index.data.js +64 -0
- package/src/jscommon/umychart.resource/js/codemirror/javascript.js +6 -2
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +111 -1
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +111 -1
- package/src/jscommon/umychart.wechat/umychart.chartpaint.wechat.js +10 -0
- package/src/jscommon/umychart.wechat/umychart.complier.wechat.js +44 -0
- package/src/jscommon/umychart.wechat/umychart.element.wechart.js +1 -1
- package/src/jscommon/umychart.wechat/umychart.framesplit.wechat.js +2 -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
|
@@ -58,7 +58,7 @@ HISTORY_MINUTE_ID:103,//历史分钟 走势图
|
|
|
58
58
|
KLINE_DAY_ID:0,KLINE_WEEK_ID:1,KLINE_TWOWEEK_ID:21,KLINE_MONTH_ID:2,KLINE_QUARTER_ID:9,KLINE_YEAR_ID:3,KLINE_MINUTE_ID:4,KLINE_5_MINUTE_ID:5,KLINE_15_MINUTE_ID:6,KLINE_30_MINUTE_ID:7,KLINE_60_MINUTE_ID:8};//自定义的指标脚本
|
|
59
59
|
function CustomIndexScript(){this.DataMap=new _map2.default();//key=指标id, value=data {ID:, Name:指标名字, Description:指标描述信息 Args:参数 ......}
|
|
60
60
|
this.Get=function(id){if(!this.DataMap.has(id))return null;return this.DataMap.get(id);};this.Add=function(data){this.DataMap.set(data.ID,data);};}var g_CustomIndex=new CustomIndexScript();function JSIndexScript(){this.DataMap=new _map2.default([['MA',this.MA],['均线',this.MA],["MA4",this.MA4],["MA5",this.MA5],["MA6",this.MA6],["MA7",this.MA7],["MA8",this.MA8],['BOLL',this.BOLL],['BOLL副图',this.BOLL2],['BBI',this.BBI],['DKX',this.DKX],['MIKE',this.MIKE],['PBX',this.PBX],['ENE',this.ENE],['MACD',this.MACD],['KDJ',this.KDJ],["MACD2",this.MACD2],['VOL',this.VOL],["VOL_OVERLAY",this.VOL_OVERLAY],['RSI',this.RSI],['BRAR',this.BRAR],['WR',this.WR],['BIAS',this.BIAS],['OBV',this.OBV],['DMI',this.DMI],['CR',this.CR],['PSY',this.PSY],['CCI',this.CCI],['DMA',this.DMA],['TRIX',this.TRIX],['VR',this.VR],['EMV',this.EMV],['ROC',this.ROC],['MTM',this.MTM],['FSL',this.FSL],['CYR',this.CYR],['MASS',this.MASS],['WAD',this.WAD],['CHO',this.CHO],['ADTM',this.ADTM],['HSL',this.HSL],['BIAS36',this.BIAS36],['BIAS_QL',this.BIAS_QL],['DPO',this.DPO],['OSC',this.OSC],['ATR',this.ATR],['NVI',this.NVI],['PVI',this.PVI],['UOS',this.UOS],['CYW',this.CYW],['LON',this.LON],['NDB',this.NDB],['SKDJ',this.SKDJ],['KD',this.KD],['FKX',this.FKX],['DKCOL',this.DKCOL],['UDL',this.UDL],['MFI',this.MFI],['LWR',this.LWR],['MARSI',this.MARSI],['CYD',this.CYD],['CYF',this.CYF],['TAPI',this.TAPI],['VMACD',this.VMACD],['QACD',this.QACD],['VPT',this.VPT],['WVAD',this.WVAD],['DBQR',this.DBQR],['JS',this.JS],['CYE',this.CYE],['QR',this.QR],['GDX',this.GDX],['JLHB',this.JLHB],['PCNT',this.PCNT],['BTX',this.BTX],['AMO',this.AMO],['VRSI',this.VRSI],['HSCOL',this.HSCOL],['DBQRV',this.DBQRV],['DBLB',this.DBLB],['ACD',this.ACD],['EXPMA',this.EXPMA],['EXPMA_S',this.EXPMA_S],['HMA',this.HMA],['LMA',this.LMA],['VMA',this.VMA],['AMV',this.AMV],['BBIBOLL',this.BBIBOLL],['ALLIGAT',this.ALLIGAT],['ZX',this.ZX],['XS',this.XS],['XS2',this.XS2],['SG-XDT',this.SG_XDT],['SG-SMX',this.SG_SMX],['SG-LB',this.SG_LB],['SG-PF',this.SG_PF],['RAD',this.RAD],['SHT',this.SHT],['ZLJC',this.ZLJC],['ZLMM',this.ZLMM],['SLZT',this.SLZT],['ADVOL',this.ADVOL],['CYC',this.CYC],['CYS',this.CYS],['CYQKL',this.CYQKL],['SCR',this.SCR],['ASR',this.ASR],['SAR',this.SAR],['TJCJL',this.TJCJL],['量比',this.VOLRate],['平均K线',this.HeikinAshi],["ADL",this.ADL],["SQJZ",this.SQJZ],["XT",this.XT],["CFJT",this.CFJT],["CYX",this.CYX],["WAVE",this.WAVE],['VOL-TDX',this.VOL_TDX],['EMPTY',this.EMPTY],//什么都不显示的指标
|
|
61
|
-
['神奇九转',this.NineTurns],['EMA',this.EMA3],['EMA4',this.EMA4],['EMA5',this.EMA5],['EMA6',this.EMA6],//通达信特色指标
|
|
61
|
+
['神奇九转',this.NineTurns],['EMA',this.EMA3],['EMA4',this.EMA4],['EMA5',this.EMA5],['EMA6',this.EMA6],["ICHIMOKU",this.ICHIMOKU],["CDP-STD",this.CDP_STD],["TBP-STD",this.TBP_STD],//通达信特色指标
|
|
62
62
|
["散户线",this.ShareholderCount],["NXTS",this.NXTS],["FKX",this.FKX],["两融资金",this.Margin4],["ZSDB",this.ZSDB],['CJL2',this.CJL],//期货持仓量
|
|
63
63
|
['ASI',this.ASI],['DC',this.DC],['DEMA',this.DEMA],["VWAP",this.VWAP],['飞龙四式',this.Dragon4_Main],['飞龙四式-附图',this.Dragon4_Fig],['资金分析',this.FundsAnalysis],['融资占比',this.MarginProportion],['负面新闻',this.NewsNegative],['涨跌趋势',this.UpDownAnalyze],['北上资金',this.HK2SHSZ],['股东人数',this.ShareHolder],["两融余额",this.Margin2],["两融余额2",this.Margin3],['Zealink-资金吸筹',this.Zealink_Index1],['Zealink-牛熊区间',this.Zealink_Index2],['Zealink-持仓信号',this.Zealink_Index3],['Zealink-增减持',this.Zealink_Index4],['Zealink-大宗交易',this.Zealink_Index5],['Zealink-信托持股',this.Zealink_Index6],['Zealink-官网新闻',this.Zealink_Index7],['Zealink-高管要闻',this.Zealink_Index8],['Zealink-股权质押',this.Zealink_Index9],['Zealink-操盘BS点',this.Zealink_Index10],['Zealink-操盘BS点2',this.Zealink_Index11],//外包指标
|
|
64
64
|
['放心股-操盘BS点',this.FXG_BSPoint],['放心股-涨停多空线',this.FXG_INDEX],['放心股-涨停吸筹区',this.FXG_INDEX2],['放心股-量能黄金点',this.FXG_INDEX3],//五彩K线(函数COLOR_开头)
|
|
@@ -1292,7 +1292,37 @@ DRAWTEXT(D5,H*1.010,'5'),COLORBLUE;\n\
|
|
|
1292
1292
|
DRAWTEXT(D6,H*1.010,'6'),COLORBLUE;\n\
|
|
1293
1293
|
DRAWTEXT(D7,H*1.010,'7'),COLORBLUE;\n\
|
|
1294
1294
|
DRAWTEXT(D8,H*1.010,'8'),COLORBLUE;\n\
|
|
1295
|
-
DRAWTEXT(D9,H*1.010,'9'),COLORGREEN;"};return data;};JSIndexScript.prototype.
|
|
1295
|
+
DRAWTEXT(D9,H*1.010,'9'),COLORGREEN;"};return data;};JSIndexScript.prototype.ICHIMOKU=function(){var data={Name:'ICHIMOKU',Description:'一目均衡图',IsMainIndex:true,Args:[{Name:'SHORT',Value:7},{Name:'MID',Value:22},{Name:'LONG',Value:44}],Script://脚本
|
|
1296
|
+
"转换线:(HHV(H,SHORT)+LLV(L,SHORT))/2,COLORRED,LINETHICK2;\n\
|
|
1297
|
+
基准线:(HHV(H,MID)+LLV(L,MID))/2,COLORFF8040,LINETHICK2;\n\
|
|
1298
|
+
迟行带:REFXV(C,MID),COLORGRAY,LINETHICK2;\n\
|
|
1299
|
+
A:=REF((转换线+基准线)/2,MID);\n\
|
|
1300
|
+
B:=REF((HHV(H,LONG)+LLV(L,LONG))/2,MID);\n\
|
|
1301
|
+
STICKLINE(A<B,A,B,2,1),COLOR339933;\n\
|
|
1302
|
+
STICKLINE(A>=B,A,B,2,1),COLOR0033CC;\n\
|
|
1303
|
+
先行带A:PLOYLINE(1,A),COLORBROWN;\n\
|
|
1304
|
+
先行带B:PLOYLINE(1,B),COLORLIGREEN;"};return data;};JSIndexScript.prototype.CDP_STD=function(){var data={Name:'CDP-STD',Description:'逆势操作',IsMainIndex:true,Script://脚本
|
|
1305
|
+
"CH:=REF(H,1);\n\
|
|
1306
|
+
CL:=REF(L,1);\n\
|
|
1307
|
+
CC:=REF(C,1);\n\
|
|
1308
|
+
CDP:(CH+CL+CC)/3;\n\
|
|
1309
|
+
AH:2*CDP+CH-2*CL;\n\
|
|
1310
|
+
NH:CDP+CDP-CL;\n\
|
|
1311
|
+
NL:CDP+CDP-CH;\n\
|
|
1312
|
+
AL:2*CDP-2*CH+CL;"};return data;};JSIndexScript.prototype.TBP_STD=function(){var data={Name:'TBP-STD',Description:'趋势平衡点',IsMainIndex:true,Script://脚本
|
|
1313
|
+
"APX:=(H+L+C)/3;\n\
|
|
1314
|
+
TR0:=MAX(H-L,MAX(ABS(H-REF(C,1)),ABS(L-REF(C,1))));\n\
|
|
1315
|
+
MF0:=C-REF(C,2);\n\
|
|
1316
|
+
MF1:=REF(MF0,1);\n\
|
|
1317
|
+
MF2:=REF(MF0,2);\n\
|
|
1318
|
+
DIRECT1:=BARSLAST(MF0>MF1 AND MF0>MF2);\n\
|
|
1319
|
+
DIRECT2:=BARSLAST(MF0<MF1 AND MF0<MF2);\n\
|
|
1320
|
+
DIRECT0:=IF(DIRECT1<DIRECT2,100,-100);\n\
|
|
1321
|
+
TBP:REF(REF(C,1)+IF(DIRECT0>50,MIN(MF0,MF1),MAX(MF0,MF1)),1);\n\
|
|
1322
|
+
多头获利:REF(IF(DIRECT0>50,APX*2-L,DRAWNULL),1),NODRAW;\n\
|
|
1323
|
+
多头停损:REF(IF(DIRECT0>50,APX-TR0,DRAWNULL),1),NODRAW;\n\
|
|
1324
|
+
空头回补:REF(IF(DIRECT0<-50,APX*2-H,DRAWNULL),1),NODRAW;\n\
|
|
1325
|
+
空头停损:REF(IF(DIRECT0<-50,APX+TR0,DRAWNULL),1),NODRAW;"};return data;};JSIndexScript.prototype.TEST=function(){var data={Name:'TEST',Description:'测试脚本',IsMainIndex:false,Args:[{Name:'N',Value:10}],Script://脚本
|
|
1296
1326
|
"DRAWCHANNEL(OPEN>C,H,L, 'RGB(255,94,102)', 2 ,'5,5','RGBA(58,20,62,0.3)' );"};return data;};/*
|
|
1297
1327
|
Copyright (c) 2018 jones
|
|
1298
1328
|
|
|
@@ -9834,7 +9864,9 @@ else if(period<0)period=i+1;count=0;for(var j=i,k=0;j>=0&&k<period;--j,++k)//当
|
|
|
9834
9864
|
ZL:VALUEWHEN(DATE<>REF(DATE,1),LV(L,N));//在分钟周期上,求昨天最低价。
|
|
9835
9865
|
例3:
|
|
9836
9866
|
LV(L,5) 和 REF(LLV(L,5),1) 的结果是一样的,用LV编写更加方便。
|
|
9837
|
-
*/this.LV=function(data,n){var result=this.LLV(data,n);return this.REF(result,1);};this.STD=function(data,n){var result=[];if(!Array.isArray(data))return result;var nStart=this.GetFirstVaildIndex(data);if(!IFrameSplitOperator.IsNumber(n))return result;if(nStart+n>data.length||n<1)return result;var i=nStart,j=0,bFirst=true,dTotal=0,dAvg=0;for(i+=n-1;i<data.length;++i){dTotal=0;if(bFirst){bFirst=false;for(j=i-n+1;j<=i;++j){dAvg+=data[j];}dAvg/=n;}else{dAvg+=(data[i]-data[i-n])/n;}for(j=i-n+1;j<=i;++j){dTotal+=(data[j]-dAvg)*(data[j]-dAvg);}result[i]=Math.sqrt(dTotal/(n-1));}return result;}
|
|
9867
|
+
*/this.LV=function(data,n){var result=this.LLV(data,n);return this.REF(result,1);};this.STD=function(data,n){var result=[];if(!Array.isArray(data))return result;var nStart=this.GetFirstVaildIndex(data);if(!IFrameSplitOperator.IsNumber(n))return result;if(nStart+n>data.length||n<1)return result;var i=nStart,j=0,bFirst=true,dTotal=0,dAvg=0;for(i+=n-1;i<data.length;++i){dTotal=0;if(bFirst){bFirst=false;for(j=i-n+1;j<=i;++j){dAvg+=data[j];}dAvg/=n;}else{dAvg+=(data[i]-data[i-n])/n;}for(j=i-n+1;j<=i;++j){dTotal+=(data[j]-dAvg)*(data[j]-dAvg);}result[i]=Math.sqrt(dTotal/(n-1));}return result;};//STDDEV(X,N) 返回标准偏差
|
|
9868
|
+
//将标准差除以样本大小N的平方根即可得出标准误差。标准误差 = σ/sqrt(n)
|
|
9869
|
+
this.STDDEV=function(data,n){var result=[];if(!Array.isArray(data))return result;var nStart=this.GetFirstVaildIndex(data);if(!IFrameSplitOperator.IsNumber(n))return result;if(nStart+n>data.length||n<1)return result;var i=nStart,j=0,bFirst=true,dTotal=0,dAvg=0;for(i+=n-1;i<data.length;++i){dTotal=0;if(bFirst){bFirst=false;for(j=i-n+1;j<=i;++j){dAvg+=data[j];}dAvg/=n;}else{dAvg+=(data[i]-data[i-n])/n;}for(j=i-n+1;j<=i;++j){dTotal+=(data[j]-dAvg)*(data[j]-dAvg);}result[i]=Math.sqrt(dTotal/(n-1))/Math.sqrt(n);}return result;};//平均绝对方差
|
|
9838
9870
|
this.AVEDEV=function(data,n){var result=[];var total=0;var averageData=[];//平均值
|
|
9839
9871
|
for(var i=n-1;i<data.length;++i){total=0;for(var j=0;j<n;++j){total+=data[i-j];}averageData[i]=total/n;}for(var i=n-1;i<data.length;++i){total=0;for(var j=0;j<n;++j){total+=Math.abs(data[i-j]-averageData[i]);}result[i]=total/n;}return result;};//上穿
|
|
9840
9872
|
this.CROSS=function(data,data2){var result=[];if(Array.isArray(data)&&Array.isArray(data2)){if(data.length!=data2.length)return result=[];var index=0;for(;index<data.length;++index){if(this.IsNumber(data[index])&&this.IsNumber(data2[index]))break;}for(++index;index<data.length;++index){result[index]=data[index]>data2[index]&&data[index-1]<data2[index-1]?1:0;}}else if(Array.isArray(data)&&typeof data2=='number'){var index=0;for(;index<data.length;++index){if(this.IsNumber(data[index]))break;}for(++index;index<data.length;++index){result[index]=data[index]>data2&&data[index-1]<data2?1:0;}}else if(typeof data=='number'&&Array.isArray(data2)){var index=0;for(;index<data2.length;++index){if(this.IsNumber(data2[index]))break;}for(++index;index<data2.length;++index){result[index]=data2[index]<data&&data2[index-1]>data?1:0;}}return result;};/*
|
|
@@ -10405,7 +10437,7 @@ this.STRFORMAT=function(strFormat,args,node){var aryParam=strFormat.match(/{[0-9
|
|
|
10405
10437
|
var maxIndex=-1;for(var i=0;i<aryParam.length;++i){var item=aryParam[i];if(item.length<3)continue;var value=item.slice(1,item.length-1);var index=-1,decimal=-1;if(value.indexOf(":")>0){var aryTemp=value.split(":");if(aryTemp){if(aryTemp[0])index=parseInt(aryTemp[0]);if(aryTemp[1]){if(aryTemp[1].indexOf(".")>=0){var zeroCount=0;var strTemp=aryTemp[1];for(var j=strTemp.length-1;j>=0;--j){if(strTemp[j]=="0")++zeroCount;else break;}if(zeroCount>0)decimal=zeroCount;}else if(aryTemp[1]=="0"){decimal=0;}}}}else{index=parseInt(value);}if(index<0)continue;var paramItem={Src:item,Index:index,Text:null,Decimal:null};if(decimal>=0)paramItem.Decimal=decimal;if(maxIndex<index)maxIndex=index;mapParam.set(index,paramItem);}var isArray=false;//是否输出数组字符串
|
|
10406
10438
|
var maxCount=0;for(var i=1;i<args.length;++i){var item=args[i];if(Array.isArray(item)){isArray=true;if(maxCount<item.length)maxCount=item.length;}}if(isArray){var result=[];for(var i=0;i<maxCount;++i){var strItem=strFormat;var _iteratorNormalCompletion19=true;var _didIteratorError19=false;var _iteratorError19=undefined;try{for(var _iterator19=(0,_getIterator3.default)(mapParam),_step19;!(_iteratorNormalCompletion19=(_step19=_iterator19.next()).done);_iteratorNormalCompletion19=true){var item=_step19.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){if(Array.isArray(paramItem)){var value=paramItem[i];if(value){if(IFrameSplitOperator.IsNumber(paramInfo.Decimal))text=''+value.toFixed(paramInfo.Decimal);else text=''+value;}}else{text=''+paramItem;}}strItem=strItem.replace(paramInfo.Src,text);}}catch(err){_didIteratorError19=true;_iteratorError19=err;}finally{try{if(!_iteratorNormalCompletion19&&_iterator19.return){_iterator19.return();}}finally{if(_didIteratorError19){throw _iteratorError19;}}}result[i]=strItem;}return result;}else{var result=strFormat;var _iteratorNormalCompletion20=true;var _didIteratorError20=false;var _iteratorError20=undefined;try{for(var _iterator20=(0,_getIterator3.default)(mapParam),_step20;!(_iteratorNormalCompletion20=(_step20=_iterator20.next()).done);_iteratorNormalCompletion20=true){var item=_step20.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){text=''+paramItem;}result=result.replace(paramInfo.Src,text);}}catch(err){_didIteratorError20=true;_iteratorError20=err;}finally{try{if(!_iteratorNormalCompletion20&&_iterator20.return){_iterator20.return();}}finally{if(_didIteratorError20){throw _iteratorError20;}}}return result;}};//函数调用
|
|
10407
10439
|
this.CallFunction=function(name,args,node,symbolData){switch(name){case'MAX':case"MAX6":return this.MAX(args,node);case'MIN':case"MIN6":return this.MIN(args,node);case'REF':return this.REF(args[0],args[1]);case"REFV":return this.REFV(args[0],args[1]);case'REFX':return this.REFX(args[0],args[1]);case"REFXV":return this.REFXV(args[0],args[1]);case"REFX1"://文华函数
|
|
10408
|
-
return this.REFX(args[0],args[1]);case'ABS':return this.ABS(args[0]);case'MA':return this.MA(args[0],args[1]);case"EMA":return this.EMA(args[0],args[1]);case"SMA":return this.SMA(args[0],args[1],args[2]);case"DMA":return this.DMA(args[0],args[1]);case"XMA":return this.XMA(args[0],args[1]);case'EXPMA':return this.EXPMA(args[0],args[1]);case'EXPMEMA':return this.EXPMEMA(args[0],args[1]);case'COUNT':return this.COUNT(args[0],args[1]);case'LLV':return this.LLV(args[0],args[1]);case"LV":return this.LV(args[0],args[1]);case'LLVBARS':return this.LLVBARS(args[0],args[1]);case'HHV':return this.HHV(args[0],args[1]);case'HV':return this.HV(args[0],args[1]);case'HHVBARS':return this.HHVBARS(args[0],args[1]);case'MULAR':return this.MULAR(args[0],args[1]);case'CROSS':return this.CROSS(args[0],args[1]);case'LONGCROSS':return this.LONGCROSS(args[0],args[1],args[2]);case"ISVALID":return this.ISVALID(args[0]);case"CROSSDOWN":return this.CROSSDOWN(args[0],args[1]);case"CROSSUP":return this.CROSSUP(args[0],args[1]);case'AVEDEV':return this.AVEDEV(args[0],args[1]);case'STD':return this.STD(args[0],args[1]);case'IF':case'IFF':case"IFELSE":return this.IF(args[0],args[1],args[2]);case'IFN':return this.IFN(args[0],args[1],args[2]);case'NOT':return this.NOT(args[0]);case'SUM':return this.SUM(args[0],args[1]);case'RANGE':return this.RANGE(args[0],args[1],args[2]);case'EXIST':return this.EXIST(args[0],args[1]);case'EXISTR':return this.EXISTR(args[0],args[1],args[2]);case'FILTER':return this.FILTER(args[0],args[1]);case'TFILTER':return this.TFILTER(args[0],args[1],args[2]);case'SLOPE':return this.SLOPE(args[0],args[1]);case'BARSLAST':return this.BARSLAST(args[0]);case'BARSCOUNT':return this.BARSCOUNT(args[0]);case'BARSSINCEN':return this.BARSSINCEN(args[0],args[1]);case'BARSSINCE':return this.BARSSINCE(args[0]);case'LAST':return this.LAST(args[0],args[1],args[2]);case'EVERY':return this.EVERY(args[0],args[1]);case'DEVSQ':return this.DEVSQ(args[0],args[1]);case'ZIG':return this.ZIG(args[0],args[1]);case'TROUGHBARS':return this.TROUGHBARS(args[0],args[1],args[2]);case"TROUGH":return this.TROUGH(args[0],args[1],args[2]);case'PEAKBARS':return this.PEAKBARS(args[0],args[1],args[2]);case'PEAK':return this.PEAK(args[0],args[1],args[2]);case'COST':return this.COST(args[0]);case'WINNER':return this.WINNER(args[0],node);case'PPART':return this.PPART(args[0],node);case"COSTEX":return this.COSTEX(args[0],args[1],node);case"LWINNER":return this.LWINNER(args[0],args[1],node);case"PWINNER":return this.PWINNER(args[0],args[1],node);case'FORCAST':return this.FORCAST(args[0],args[1]);case"TSMA":return this.TSMA(args[0],args[1]);case'STDP':return this.STDP(args[0],args[1]);case'VAR':return this.VAR(args[0],args[1]);case'VARP':return this.VARP(args[0],args[1]);case'UPNDAY':return this.UPNDAY(args[0],args[1]);case'DOWNNDAY':return this.DOWNNDAY(args[0],args[1]);case'NDAY':return this.NDAY(args[0],args[1],args[2]);case'RELATE':return this.RELATE(args[0],args[1],args[2]);case'COVAR':return this.COVAR(args[0],args[1],args[2]);case'BETA':return this.BETA(args[0]);case'BETA2':return this.BETA2(args[0],args[1],args[2]);case'WMA':return this.WMA(args[0],args[1]);case'MEMA':return this.MEMA(args[0],args[1]);case'SUMBARS':return this.SUMBARS(args[0],args[1]);case'REVERSE':return this.REVERSE(args[0]);case'SAR':return this.SAR(args[0],args[1],args[2]);case'SARTURN':return this.SARTURN(args[0],args[1],args[2]);case'BACKSET':return this.BACKSET(args[0],args[1]);case'BETWEEN':return this.BETWEEN(args[0],args[1],args[2]);case'STRCAT':return this.STRCAT(args[0],args[1]);case'CON2STR':return this.CON2STR(args[0],args[1]);case"VAR2STR":return this.VAR2STR(args[0],args[1]);case"VARCAT":return this.VARCAT(args[0],args[1]);case"STRSPACE":return this.STRSPACE(args[0]);case"FINDSTR":return this.FINDSTR(args[0],args[1]);case"STRCMP":return this.STRCMP(args[0],args[1]);case"STRLEN":return this.STRLEN(args[0]);case"STRFORMAT":return this.STRFORMAT(args[0],args,node);case'DTPRICE':return this.DTPRICE(args[0],args[1]);case'ZTPRICE':return this.ZTPRICE(args[0],args[1]);case'MOD':return this.MOD(args[0],args[1]);case'POW':return this.POW(args[0],args[1]);case'CEILING':return this.CEILING(args[0]);case'FLOOR':return this.FLOOR(args[0]);case'FRACPART':return this.FRACPART(args[0]);case"SIGN":return this.SIGN(args[0]);case'BARSLASTCOUNT':return this.BARSLASTCOUNT(args[0]);case'INTPART':return this.INTPART(args[0]);case"CONST":return this.CONST(args[0]);case"TOPRANGE":return this.TOPRANGE(args[0]);case"LOWRANGE":return this.LOWRANGE(args[0]);case"FINDLOW":return this.FINDLOW(args[0],args[1],args[2],args[3]);case"FINDLOWBARS":return this.FINDLOWBARS(args[0],args[1],args[2],args[3]);case"FINDHIGH":return this.FINDHIGH(args[0],args[1],args[2],args[3]);case"FINDHIGHBARS":return this.FINDHIGHBARS(args[0],args[1],args[2],args[3]);case"BARSNEXT":return this.BARSNEXT(args[0]);case"HOD":return this.HOD(args[0],args[1]);case"LOD":return this.LOD(args[0],args[1]);case"AMA":return this.AMA(args[0],args[1]);case"TMA":return this.TMA(args[0],args[1],args[2]);case"ROUND":return this.ROUND(args[0]);case"ROUND2":return this.ROUND2(args[0],args[1]);case"TRMA":return this.TRMA(args[0],args[1]);case"VALUEWHEN":return this.VALUEWHEN(args[0],args[1]);case"HARMEAN":return this.HARMEAN(args[0],args[1]);case"DATETODAY":return this.DATETODAY(args[0]);case"DAYTODATE":return this.DAYTODATE(args[0]);case"TIMETOSEC":return this.TIMETOSEC(args[0]);case"SECTOTIME":return this.SECTOTIME(args[0]);case"ANY":return this.ANY(args[0],args[1]);case"ALL":return this.ALL(args[0],args[1]);case"TESTSKIP":return this.TESTSKIP(args[0],node);case"SUMBARS":return this.SUMBARS(args[0],args[1]);case"ALIGNRIGHT":return this.ALIGNRIGHT(args[0]);//三角函数
|
|
10440
|
+
return this.REFX(args[0],args[1]);case'ABS':return this.ABS(args[0]);case'MA':return this.MA(args[0],args[1]);case"EMA":return this.EMA(args[0],args[1]);case"SMA":return this.SMA(args[0],args[1],args[2]);case"DMA":return this.DMA(args[0],args[1]);case"XMA":return this.XMA(args[0],args[1]);case'EXPMA':return this.EXPMA(args[0],args[1]);case'EXPMEMA':return this.EXPMEMA(args[0],args[1]);case'COUNT':return this.COUNT(args[0],args[1]);case'LLV':return this.LLV(args[0],args[1]);case"LV":return this.LV(args[0],args[1]);case'LLVBARS':return this.LLVBARS(args[0],args[1]);case'HHV':return this.HHV(args[0],args[1]);case'HV':return this.HV(args[0],args[1]);case'HHVBARS':return this.HHVBARS(args[0],args[1]);case'MULAR':return this.MULAR(args[0],args[1]);case'CROSS':return this.CROSS(args[0],args[1]);case'LONGCROSS':return this.LONGCROSS(args[0],args[1],args[2]);case"ISVALID":return this.ISVALID(args[0]);case"CROSSDOWN":return this.CROSSDOWN(args[0],args[1]);case"CROSSUP":return this.CROSSUP(args[0],args[1]);case'AVEDEV':return this.AVEDEV(args[0],args[1]);case'STD':return this.STD(args[0],args[1]);case"STDDEV":return this.STDDEV(args[0],args[1]);case'IF':case'IFF':case"IFELSE":return this.IF(args[0],args[1],args[2]);case'IFN':return this.IFN(args[0],args[1],args[2]);case'NOT':return this.NOT(args[0]);case'SUM':return this.SUM(args[0],args[1]);case'RANGE':return this.RANGE(args[0],args[1],args[2]);case'EXIST':return this.EXIST(args[0],args[1]);case'EXISTR':return this.EXISTR(args[0],args[1],args[2]);case'FILTER':return this.FILTER(args[0],args[1]);case'TFILTER':return this.TFILTER(args[0],args[1],args[2]);case'SLOPE':return this.SLOPE(args[0],args[1]);case'BARSLAST':return this.BARSLAST(args[0]);case'BARSCOUNT':return this.BARSCOUNT(args[0]);case'BARSSINCEN':return this.BARSSINCEN(args[0],args[1]);case'BARSSINCE':return this.BARSSINCE(args[0]);case'LAST':return this.LAST(args[0],args[1],args[2]);case'EVERY':return this.EVERY(args[0],args[1]);case'DEVSQ':return this.DEVSQ(args[0],args[1]);case'ZIG':return this.ZIG(args[0],args[1]);case'TROUGHBARS':return this.TROUGHBARS(args[0],args[1],args[2]);case"TROUGH":return this.TROUGH(args[0],args[1],args[2]);case'PEAKBARS':return this.PEAKBARS(args[0],args[1],args[2]);case'PEAK':return this.PEAK(args[0],args[1],args[2]);case'COST':return this.COST(args[0]);case'WINNER':return this.WINNER(args[0],node);case'PPART':return this.PPART(args[0],node);case"COSTEX":return this.COSTEX(args[0],args[1],node);case"LWINNER":return this.LWINNER(args[0],args[1],node);case"PWINNER":return this.PWINNER(args[0],args[1],node);case'FORCAST':return this.FORCAST(args[0],args[1]);case"TSMA":return this.TSMA(args[0],args[1]);case'STDP':return this.STDP(args[0],args[1]);case'VAR':return this.VAR(args[0],args[1]);case'VARP':return this.VARP(args[0],args[1]);case'UPNDAY':return this.UPNDAY(args[0],args[1]);case'DOWNNDAY':return this.DOWNNDAY(args[0],args[1]);case'NDAY':return this.NDAY(args[0],args[1],args[2]);case'RELATE':return this.RELATE(args[0],args[1],args[2]);case'COVAR':return this.COVAR(args[0],args[1],args[2]);case'BETA':return this.BETA(args[0]);case'BETA2':return this.BETA2(args[0],args[1],args[2]);case'WMA':return this.WMA(args[0],args[1]);case'MEMA':return this.MEMA(args[0],args[1]);case'SUMBARS':return this.SUMBARS(args[0],args[1]);case'REVERSE':return this.REVERSE(args[0]);case'SAR':return this.SAR(args[0],args[1],args[2]);case'SARTURN':return this.SARTURN(args[0],args[1],args[2]);case'BACKSET':return this.BACKSET(args[0],args[1]);case'BETWEEN':return this.BETWEEN(args[0],args[1],args[2]);case'STRCAT':return this.STRCAT(args[0],args[1]);case'CON2STR':return this.CON2STR(args[0],args[1]);case"VAR2STR":return this.VAR2STR(args[0],args[1]);case"VARCAT":return this.VARCAT(args[0],args[1]);case"STRSPACE":return this.STRSPACE(args[0]);case"FINDSTR":return this.FINDSTR(args[0],args[1]);case"STRCMP":return this.STRCMP(args[0],args[1]);case"STRLEN":return this.STRLEN(args[0]);case"STRFORMAT":return this.STRFORMAT(args[0],args,node);case'DTPRICE':return this.DTPRICE(args[0],args[1]);case'ZTPRICE':return this.ZTPRICE(args[0],args[1]);case'MOD':return this.MOD(args[0],args[1]);case'POW':return this.POW(args[0],args[1]);case'CEILING':return this.CEILING(args[0]);case'FLOOR':return this.FLOOR(args[0]);case'FRACPART':return this.FRACPART(args[0]);case"SIGN":return this.SIGN(args[0]);case'BARSLASTCOUNT':return this.BARSLASTCOUNT(args[0]);case'INTPART':return this.INTPART(args[0]);case"CONST":return this.CONST(args[0]);case"TOPRANGE":return this.TOPRANGE(args[0]);case"LOWRANGE":return this.LOWRANGE(args[0]);case"FINDLOW":return this.FINDLOW(args[0],args[1],args[2],args[3]);case"FINDLOWBARS":return this.FINDLOWBARS(args[0],args[1],args[2],args[3]);case"FINDHIGH":return this.FINDHIGH(args[0],args[1],args[2],args[3]);case"FINDHIGHBARS":return this.FINDHIGHBARS(args[0],args[1],args[2],args[3]);case"BARSNEXT":return this.BARSNEXT(args[0]);case"HOD":return this.HOD(args[0],args[1]);case"LOD":return this.LOD(args[0],args[1]);case"AMA":return this.AMA(args[0],args[1]);case"TMA":return this.TMA(args[0],args[1],args[2]);case"ROUND":return this.ROUND(args[0]);case"ROUND2":return this.ROUND2(args[0],args[1]);case"TRMA":return this.TRMA(args[0],args[1]);case"VALUEWHEN":return this.VALUEWHEN(args[0],args[1]);case"HARMEAN":return this.HARMEAN(args[0],args[1]);case"DATETODAY":return this.DATETODAY(args[0]);case"DAYTODATE":return this.DAYTODATE(args[0]);case"TIMETOSEC":return this.TIMETOSEC(args[0]);case"SECTOTIME":return this.SECTOTIME(args[0]);case"ANY":return this.ANY(args[0],args[1]);case"ALL":return this.ALL(args[0],args[1]);case"TESTSKIP":return this.TESTSKIP(args[0],node);case"SUMBARS":return this.SUMBARS(args[0],args[1]);case"ALIGNRIGHT":return this.ALIGNRIGHT(args[0]);//三角函数
|
|
10409
10441
|
case'ATAN':return this.Trigonometric(args[0],Math.atan);case'ACOS':return this.ACOS(args[0]);case'ASIN':return this.ASIN(args[0]);case'COS':return this.Trigonometric(args[0],Math.cos);case'SIN':return this.Trigonometric(args[0],Math.sin);case'TAN':return this.Trigonometric(args[0],Math.tan);case'LN':return this.Trigonometric(args[0],Math.log);case'LOG':return this.Trigonometric(args[0],_log2.default);case'EXP':return this.Trigonometric(args[0],Math.exp);case'SQRT':return this.Trigonometric(args[0],Math.sqrt);case"RAND":return this.RAND(args[0]);default:this.ThrowUnexpectedNode(node,'函数'+name+'不存在',name);}};//调用自定义函数 返回数据格式{Out:输出数据, Draw:绘图数据(可选)}
|
|
10410
10442
|
this.CallCustomFunction=function(name,args,symbolData,node){var functionInfo=g_JSComplierResource.CustomFunction.Data.get(name);var dwonloadData=symbolData.GetStockCacheData({CustomName:name,Node:node});if(!functionInfo.Invoke)return{Out:dwonloadData};JSConsole.Complier.Log('[JSAlgorithm::CallCustomFunction] call custom function functionInfo=',functionInfo);var self=this;var obj={Name:name,Args:args,Symbol:symbolData.Symbol,Period:symbolData.Period,Right:symbolData.Right,KData:symbolData.Data,//K线数据
|
|
10411
10443
|
DownloadData:dwonloadData,ThrowError:function ThrowError(error){self.ThrowUnexpectedNode(node,error);}};return functionInfo.Invoke(obj);};this.ThrowUnexpectedNode=function(node,message,word){var marker=node.Marker;var msg=message||"执行异常";return this.ErrorHandler.ThrowError(marker.Index,marker.Line,marker.Column,msg,word);};}//是否有是有效的数字
|
|
@@ -12796,7 +12828,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
12796
12828
|
this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
12797
12829
|
* 版本信息输出
|
|
12798
12830
|
*
|
|
12799
|
-
*/var HQCHART_VERSION="1.1.
|
|
12831
|
+
*/var HQCHART_VERSION="1.1.12668";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();//把给外界调用的方法暴露出来
|
|
12800
12832
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12801
12833
|
// BaseIndex:BaseIndex,
|
|
12802
12834
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -4003,6 +4003,50 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
4003
4003
|
return result;
|
|
4004
4004
|
}
|
|
4005
4005
|
|
|
4006
|
+
|
|
4007
|
+
|
|
4008
|
+
//STDDEV(X,N) 返回标准偏差
|
|
4009
|
+
//将标准差除以样本大小N的平方根即可得出标准误差。标准误差 = σ/sqrt(n)
|
|
4010
|
+
this.STDDEV=function(data,n)
|
|
4011
|
+
{
|
|
4012
|
+
var result=[];
|
|
4013
|
+
|
|
4014
|
+
if (!Array.isArray(data)) return result;
|
|
4015
|
+
var nStart=this.GetFirstVaildIndex(data);
|
|
4016
|
+
if (!IFrameSplitOperator.IsNumber(n)) return result;
|
|
4017
|
+
if(nStart+n>data.length || n<1) return result;
|
|
4018
|
+
|
|
4019
|
+
var i=nStart, j=0, bFirst=true, dTotal=0, dAvg=0;
|
|
4020
|
+
for(i+=n-1;i<data.length;++i)
|
|
4021
|
+
{
|
|
4022
|
+
dTotal = 0;
|
|
4023
|
+
if(bFirst)
|
|
4024
|
+
{
|
|
4025
|
+
bFirst = false;
|
|
4026
|
+
for(j=i-n+1;j<=i;++j)
|
|
4027
|
+
{
|
|
4028
|
+
dAvg += data[j];
|
|
4029
|
+
}
|
|
4030
|
+
|
|
4031
|
+
dAvg /= n;
|
|
4032
|
+
}
|
|
4033
|
+
else
|
|
4034
|
+
{
|
|
4035
|
+
dAvg += (data[i]-data[i-n])/n;
|
|
4036
|
+
}
|
|
4037
|
+
|
|
4038
|
+
for(j=i-n+1;j<=i;++j)
|
|
4039
|
+
{
|
|
4040
|
+
dTotal += (data[j]-dAvg)*(data[j]-dAvg);
|
|
4041
|
+
}
|
|
4042
|
+
|
|
4043
|
+
|
|
4044
|
+
result[i] = Math.sqrt(dTotal/(n-1))/Math.sqrt(n);
|
|
4045
|
+
}
|
|
4046
|
+
|
|
4047
|
+
return result;
|
|
4048
|
+
}
|
|
4049
|
+
|
|
4006
4050
|
//平均绝对方差
|
|
4007
4051
|
this.AVEDEV=function(data,n)
|
|
4008
4052
|
{
|
|
@@ -8814,6 +8858,8 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
8814
8858
|
return this.AVEDEV(args[0], args[1]);
|
|
8815
8859
|
case 'STD':
|
|
8816
8860
|
return this.STD(args[0], args[1]);
|
|
8861
|
+
case "STDDEV":
|
|
8862
|
+
return this.STDDEV(args[0], args[1]);
|
|
8817
8863
|
case 'IF':
|
|
8818
8864
|
case 'IFF':
|
|
8819
8865
|
case "IFELSE":
|
|
@@ -109,6 +109,7 @@ function JSIndexScript()
|
|
|
109
109
|
['EMPTY', this.EMPTY], //什么都不显示的指标
|
|
110
110
|
['神奇九转', this.NineTurns],
|
|
111
111
|
['EMA', this.EMA3], ['EMA4', this.EMA4], ['EMA5', this.EMA5],['EMA6', this.EMA6],
|
|
112
|
+
["ICHIMOKU",this.ICHIMOKU],["CDP-STD", this.CDP_STD],["TBP-STD",this.TBP_STD],
|
|
112
113
|
|
|
113
114
|
//通达信特色指标
|
|
114
115
|
["散户线", this.ShareholderCount],["NXTS", this.NXTS],["FKX", this.FKX],["两融资金", this.Margin4],
|
|
@@ -4049,6 +4050,69 @@ DRAWTEXT(D9,H*1.010,'9'),COLORGREEN;"
|
|
|
4049
4050
|
return data;
|
|
4050
4051
|
}
|
|
4051
4052
|
|
|
4053
|
+
JSIndexScript.prototype.ICHIMOKU=function()
|
|
4054
|
+
{
|
|
4055
|
+
let data =
|
|
4056
|
+
{
|
|
4057
|
+
Name: 'ICHIMOKU', Description: '一目均衡图', IsMainIndex: true,
|
|
4058
|
+
Args: [{ Name: 'SHORT', Value: 7 },{ Name: 'MID', Value: 22 },{ Name: 'LONG', Value: 44 }],
|
|
4059
|
+
Script: //脚本
|
|
4060
|
+
"转换线:(HHV(H,SHORT)+LLV(L,SHORT))/2,COLORRED,LINETHICK2;\n\
|
|
4061
|
+
基准线:(HHV(H,MID)+LLV(L,MID))/2,COLORFF8040,LINETHICK2;\n\
|
|
4062
|
+
迟行带:REFXV(C,MID),COLORGRAY,LINETHICK2;\n\
|
|
4063
|
+
A:=REF((转换线+基准线)/2,MID);\n\
|
|
4064
|
+
B:=REF((HHV(H,LONG)+LLV(L,LONG))/2,MID);\n\
|
|
4065
|
+
STICKLINE(A<B,A,B,2,1),COLOR339933;\n\
|
|
4066
|
+
STICKLINE(A>=B,A,B,2,1),COLOR0033CC;\n\
|
|
4067
|
+
先行带A:PLOYLINE(1,A),COLORBROWN;\n\
|
|
4068
|
+
先行带B:PLOYLINE(1,B),COLORLIGREEN;"
|
|
4069
|
+
};
|
|
4070
|
+
|
|
4071
|
+
return data;
|
|
4072
|
+
}
|
|
4073
|
+
|
|
4074
|
+
JSIndexScript.prototype.CDP_STD=function()
|
|
4075
|
+
{
|
|
4076
|
+
let data =
|
|
4077
|
+
{
|
|
4078
|
+
Name: 'CDP-STD', Description: '逆势操作', IsMainIndex: true,
|
|
4079
|
+
Script: //脚本
|
|
4080
|
+
"CH:=REF(H,1);\n\
|
|
4081
|
+
CL:=REF(L,1);\n\
|
|
4082
|
+
CC:=REF(C,1);\n\
|
|
4083
|
+
CDP:(CH+CL+CC)/3;\n\
|
|
4084
|
+
AH:2*CDP+CH-2*CL;\n\
|
|
4085
|
+
NH:CDP+CDP-CL;\n\
|
|
4086
|
+
NL:CDP+CDP-CH;\n\
|
|
4087
|
+
AL:2*CDP-2*CH+CL;"
|
|
4088
|
+
};
|
|
4089
|
+
|
|
4090
|
+
return data;
|
|
4091
|
+
}
|
|
4092
|
+
|
|
4093
|
+
JSIndexScript.prototype.TBP_STD=function()
|
|
4094
|
+
{
|
|
4095
|
+
let data =
|
|
4096
|
+
{
|
|
4097
|
+
Name: 'TBP-STD', Description: '趋势平衡点', IsMainIndex: true,
|
|
4098
|
+
Script: //脚本
|
|
4099
|
+
"APX:=(H+L+C)/3;\n\
|
|
4100
|
+
TR0:=MAX(H-L,MAX(ABS(H-REF(C,1)),ABS(L-REF(C,1))));\n\
|
|
4101
|
+
MF0:=C-REF(C,2);\n\
|
|
4102
|
+
MF1:=REF(MF0,1);\n\
|
|
4103
|
+
MF2:=REF(MF0,2);\n\
|
|
4104
|
+
DIRECT1:=BARSLAST(MF0>MF1 AND MF0>MF2);\n\
|
|
4105
|
+
DIRECT2:=BARSLAST(MF0<MF1 AND MF0<MF2);\n\
|
|
4106
|
+
DIRECT0:=IF(DIRECT1<DIRECT2,100,-100);\n\
|
|
4107
|
+
TBP:REF(REF(C,1)+IF(DIRECT0>50,MIN(MF0,MF1),MAX(MF0,MF1)),1);\n\
|
|
4108
|
+
多头获利:REF(IF(DIRECT0>50,APX*2-L,DRAWNULL),1),NODRAW;\n\
|
|
4109
|
+
多头停损:REF(IF(DIRECT0>50,APX-TR0,DRAWNULL),1),NODRAW;\n\
|
|
4110
|
+
空头回补:REF(IF(DIRECT0<-50,APX*2-H,DRAWNULL),1),NODRAW;\n\
|
|
4111
|
+
空头停损:REF(IF(DIRECT0<-50,APX+TR0,DRAWNULL),1),NODRAW;"
|
|
4112
|
+
};
|
|
4113
|
+
|
|
4114
|
+
return data;
|
|
4115
|
+
}
|
|
4052
4116
|
|
|
4053
4117
|
|
|
4054
4118
|
JSIndexScript.prototype.TEST = function ()
|
|
@@ -81,6 +81,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|
|
81
81
|
'MEMA':FUNCTION_NAME,'WMA':FUNCTION_NAME,"STRLEN":FUNCTION_NAME,"TMA":FUNCTION_NAME,"HV":FUNCTION_NAME,"HOD":FUNCTION_NAME,"LV":FUNCTION_NAME,
|
|
82
82
|
"VALUEWHEN":FUNCTION_NAME,"TESTSKIP":FUNCTION_NAME,"IFC":FUNCTION_NAME,"IFN":FUNCTION_NAME,"RGB":FUNCTION_NAME,"RGBX":FUNCTION_NAME,
|
|
83
83
|
"SYSPARAM":FUNCTION_NAME,"CALCSTOCKINDEX":FUNCTION_NAME,"STKINDI":FUNCTION_NAME,"RGBA":FUNCTION_NAME,
|
|
84
|
+
"STDDEV":FUNCTION_NAME,"STD":FUNCTION_NAME,
|
|
84
85
|
|
|
85
86
|
"ISUP":DATA_NAME,"ISEQUAL":DATA_NAME,"ISDOWN":DATA_NAME,
|
|
86
87
|
|
|
@@ -108,6 +109,8 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|
|
108
109
|
//绘图函数
|
|
109
110
|
'DRAWTEXT':FUNCTION_NAME,'STICKLINE':FUNCTION_NAME,'DRAWBAND':FUNCTION_NAME,'DRAWKLINE':FUNCTION_NAME,
|
|
110
111
|
'PLOYLINE':FUNCTION_NAME,'POLYLINE':FUNCTION_NAME,'DRAWNUMBER':FUNCTION_NAME,'DRAWICON':FUNCTION_NAME,'SUPERDRAWTEXT':FUNCTION_NAME,
|
|
112
|
+
"DRAWTEXTREL":FUNCTION_NAME,"DRAWTEXTABS":FUNCTION_NAME,"DRAWGBK":FUNCTION_NAME,"FILLRGN":FUNCTION_NAME,"FLOATRGN":FUNCTION_NAME,
|
|
113
|
+
"HORLINE":FUNCTION_NAME,
|
|
111
114
|
|
|
112
115
|
|
|
113
116
|
//个股行情数据
|
|
@@ -126,9 +129,10 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|
|
126
129
|
'LINETHICK6':LINE_WIDTH_NAME,'LINETHICK7':LINE_WIDTH_NAME,'LINETHICK8':LINE_WIDTH_NAME,'LINETHICK9':LINE_WIDTH_NAME,'LINETHICK10':LINE_WIDTH_NAME,
|
|
127
130
|
|
|
128
131
|
//字体大小
|
|
129
|
-
"FONTSIZE10":LINE_WIDTH_NAME,"FONTSIZE11":LINE_WIDTH_NAME,"FONTSIZE12":LINE_WIDTH_NAME,"
|
|
130
|
-
"FONTSIZE16":LINE_WIDTH_NAME,"FONTSIZE17":LINE_WIDTH_NAME,"FONTSIZE18":LINE_WIDTH_NAME,"
|
|
132
|
+
"FONTSIZE10":LINE_WIDTH_NAME,"FONTSIZE11":LINE_WIDTH_NAME,"FONTSIZE12":LINE_WIDTH_NAME,"FONTSIZE14":LINE_WIDTH_NAME,"FONTSIZE15":LINE_WIDTH_NAME,
|
|
133
|
+
"FONTSIZE16":LINE_WIDTH_NAME,"FONTSIZE17":LINE_WIDTH_NAME,"FONTSIZE18":LINE_WIDTH_NAME,"FONTSIZE19":LINE_WIDTH_NAME,"FONTSIZE20":LINE_WIDTH_NAME,
|
|
131
134
|
"FONTSIZE21":LINE_WIDTH_NAME,"FONTSIZE22":LINE_WIDTH_NAME,"FONTSIZE23":LINE_WIDTH_NAME,"FONTSIZE24":LINE_WIDTH_NAME,"FONTSIZE25":LINE_WIDTH_NAME,
|
|
135
|
+
"FONTSIZE26":LINE_WIDTH_NAME,"FONTSIZE27":LINE_WIDTH_NAME,"FONTSIZE28":LINE_WIDTH_NAME,"FONTSIZE29":LINE_WIDTH_NAME,"FONTSIZE20":LINE_WIDTH_NAME,
|
|
132
136
|
|
|
133
137
|
"VALIGN0":LINE_WIDTH_NAME,"VALIGN1":LINE_WIDTH_NAME,"VALIGN2":LINE_WIDTH_NAME,
|
|
134
138
|
"ALIGN0":LINE_WIDTH_NAME,"ALIGN1":LINE_WIDTH_NAME,"ALIGN2":LINE_WIDTH_NAME,
|
|
@@ -121,6 +121,7 @@ function JSIndexScript()
|
|
|
121
121
|
['EMPTY', this.EMPTY], //什么都不显示的指标
|
|
122
122
|
['神奇九转', this.NineTurns],
|
|
123
123
|
['EMA', this.EMA3], ['EMA4', this.EMA4], ['EMA5', this.EMA5],['EMA6', this.EMA6],
|
|
124
|
+
["ICHIMOKU",this.ICHIMOKU],["CDP-STD", this.CDP_STD],["TBP-STD",this.TBP_STD],
|
|
124
125
|
|
|
125
126
|
//通达信特色指标
|
|
126
127
|
["散户线", this.ShareholderCount],["NXTS", this.NXTS],["FKX", this.FKX],["两融资金", this.Margin4],
|
|
@@ -4061,6 +4062,69 @@ DRAWTEXT(D9,H*1.010,'9'),COLORGREEN;"
|
|
|
4061
4062
|
return data;
|
|
4062
4063
|
}
|
|
4063
4064
|
|
|
4065
|
+
JSIndexScript.prototype.ICHIMOKU=function()
|
|
4066
|
+
{
|
|
4067
|
+
let data =
|
|
4068
|
+
{
|
|
4069
|
+
Name: 'ICHIMOKU', Description: '一目均衡图', IsMainIndex: true,
|
|
4070
|
+
Args: [{ Name: 'SHORT', Value: 7 },{ Name: 'MID', Value: 22 },{ Name: 'LONG', Value: 44 }],
|
|
4071
|
+
Script: //脚本
|
|
4072
|
+
"转换线:(HHV(H,SHORT)+LLV(L,SHORT))/2,COLORRED,LINETHICK2;\n\
|
|
4073
|
+
基准线:(HHV(H,MID)+LLV(L,MID))/2,COLORFF8040,LINETHICK2;\n\
|
|
4074
|
+
迟行带:REFXV(C,MID),COLORGRAY,LINETHICK2;\n\
|
|
4075
|
+
A:=REF((转换线+基准线)/2,MID);\n\
|
|
4076
|
+
B:=REF((HHV(H,LONG)+LLV(L,LONG))/2,MID);\n\
|
|
4077
|
+
STICKLINE(A<B,A,B,2,1),COLOR339933;\n\
|
|
4078
|
+
STICKLINE(A>=B,A,B,2,1),COLOR0033CC;\n\
|
|
4079
|
+
先行带A:PLOYLINE(1,A),COLORBROWN;\n\
|
|
4080
|
+
先行带B:PLOYLINE(1,B),COLORLIGREEN;"
|
|
4081
|
+
};
|
|
4082
|
+
|
|
4083
|
+
return data;
|
|
4084
|
+
}
|
|
4085
|
+
|
|
4086
|
+
JSIndexScript.prototype.CDP_STD=function()
|
|
4087
|
+
{
|
|
4088
|
+
let data =
|
|
4089
|
+
{
|
|
4090
|
+
Name: 'CDP-STD', Description: '逆势操作', IsMainIndex: true,
|
|
4091
|
+
Script: //脚本
|
|
4092
|
+
"CH:=REF(H,1);\n\
|
|
4093
|
+
CL:=REF(L,1);\n\
|
|
4094
|
+
CC:=REF(C,1);\n\
|
|
4095
|
+
CDP:(CH+CL+CC)/3;\n\
|
|
4096
|
+
AH:2*CDP+CH-2*CL;\n\
|
|
4097
|
+
NH:CDP+CDP-CL;\n\
|
|
4098
|
+
NL:CDP+CDP-CH;\n\
|
|
4099
|
+
AL:2*CDP-2*CH+CL;"
|
|
4100
|
+
};
|
|
4101
|
+
|
|
4102
|
+
return data;
|
|
4103
|
+
}
|
|
4104
|
+
|
|
4105
|
+
JSIndexScript.prototype.TBP_STD=function()
|
|
4106
|
+
{
|
|
4107
|
+
let data =
|
|
4108
|
+
{
|
|
4109
|
+
Name: 'TBP-STD', Description: '趋势平衡点', IsMainIndex: true,
|
|
4110
|
+
Script: //脚本
|
|
4111
|
+
"APX:=(H+L+C)/3;\n\
|
|
4112
|
+
TR0:=MAX(H-L,MAX(ABS(H-REF(C,1)),ABS(L-REF(C,1))));\n\
|
|
4113
|
+
MF0:=C-REF(C,2);\n\
|
|
4114
|
+
MF1:=REF(MF0,1);\n\
|
|
4115
|
+
MF2:=REF(MF0,2);\n\
|
|
4116
|
+
DIRECT1:=BARSLAST(MF0>MF1 AND MF0>MF2);\n\
|
|
4117
|
+
DIRECT2:=BARSLAST(MF0<MF1 AND MF0<MF2);\n\
|
|
4118
|
+
DIRECT0:=IF(DIRECT1<DIRECT2,100,-100);\n\
|
|
4119
|
+
TBP:REF(REF(C,1)+IF(DIRECT0>50,MIN(MF0,MF1),MAX(MF0,MF1)),1);\n\
|
|
4120
|
+
多头获利:REF(IF(DIRECT0>50,APX*2-L,DRAWNULL),1),NODRAW;\n\
|
|
4121
|
+
多头停损:REF(IF(DIRECT0>50,APX-TR0,DRAWNULL),1),NODRAW;\n\
|
|
4122
|
+
空头回补:REF(IF(DIRECT0<-50,APX*2-H,DRAWNULL),1),NODRAW;\n\
|
|
4123
|
+
空头停损:REF(IF(DIRECT0<-50,APX+TR0,DRAWNULL),1),NODRAW;"
|
|
4124
|
+
};
|
|
4125
|
+
|
|
4126
|
+
return data;
|
|
4127
|
+
}
|
|
4064
4128
|
|
|
4065
4129
|
|
|
4066
4130
|
JSIndexScript.prototype.TEST = function ()
|
|
@@ -98075,6 +98139,50 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
98075
98139
|
return result;
|
|
98076
98140
|
}
|
|
98077
98141
|
|
|
98142
|
+
|
|
98143
|
+
|
|
98144
|
+
//STDDEV(X,N) 返回标准偏差
|
|
98145
|
+
//将标准差除以样本大小N的平方根即可得出标准误差。标准误差 = σ/sqrt(n)
|
|
98146
|
+
this.STDDEV=function(data,n)
|
|
98147
|
+
{
|
|
98148
|
+
var result=[];
|
|
98149
|
+
|
|
98150
|
+
if (!Array.isArray(data)) return result;
|
|
98151
|
+
var nStart=this.GetFirstVaildIndex(data);
|
|
98152
|
+
if (!IFrameSplitOperator.IsNumber(n)) return result;
|
|
98153
|
+
if(nStart+n>data.length || n<1) return result;
|
|
98154
|
+
|
|
98155
|
+
var i=nStart, j=0, bFirst=true, dTotal=0, dAvg=0;
|
|
98156
|
+
for(i+=n-1;i<data.length;++i)
|
|
98157
|
+
{
|
|
98158
|
+
dTotal = 0;
|
|
98159
|
+
if(bFirst)
|
|
98160
|
+
{
|
|
98161
|
+
bFirst = false;
|
|
98162
|
+
for(j=i-n+1;j<=i;++j)
|
|
98163
|
+
{
|
|
98164
|
+
dAvg += data[j];
|
|
98165
|
+
}
|
|
98166
|
+
|
|
98167
|
+
dAvg /= n;
|
|
98168
|
+
}
|
|
98169
|
+
else
|
|
98170
|
+
{
|
|
98171
|
+
dAvg += (data[i]-data[i-n])/n;
|
|
98172
|
+
}
|
|
98173
|
+
|
|
98174
|
+
for(j=i-n+1;j<=i;++j)
|
|
98175
|
+
{
|
|
98176
|
+
dTotal += (data[j]-dAvg)*(data[j]-dAvg);
|
|
98177
|
+
}
|
|
98178
|
+
|
|
98179
|
+
|
|
98180
|
+
result[i] = Math.sqrt(dTotal/(n-1))/Math.sqrt(n);
|
|
98181
|
+
}
|
|
98182
|
+
|
|
98183
|
+
return result;
|
|
98184
|
+
}
|
|
98185
|
+
|
|
98078
98186
|
//平均绝对方差
|
|
98079
98187
|
this.AVEDEV=function(data,n)
|
|
98080
98188
|
{
|
|
@@ -102886,6 +102994,8 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
102886
102994
|
return this.AVEDEV(args[0], args[1]);
|
|
102887
102995
|
case 'STD':
|
|
102888
102996
|
return this.STD(args[0], args[1]);
|
|
102997
|
+
case "STDDEV":
|
|
102998
|
+
return this.STDDEV(args[0], args[1]);
|
|
102889
102999
|
case 'IF':
|
|
102890
103000
|
case 'IFF':
|
|
102891
103001
|
case "IFELSE":
|
|
@@ -130199,7 +130309,7 @@ function ScrollBarBGChart()
|
|
|
130199
130309
|
|
|
130200
130310
|
|
|
130201
130311
|
|
|
130202
|
-
var HQCHART_VERSION="1.1.
|
|
130312
|
+
var HQCHART_VERSION="1.1.12668";
|
|
130203
130313
|
|
|
130204
130314
|
function PrintHQChartVersion()
|
|
130205
130315
|
{
|
|
@@ -165,6 +165,7 @@ function JSIndexScript()
|
|
|
165
165
|
['EMPTY', this.EMPTY], //什么都不显示的指标
|
|
166
166
|
['神奇九转', this.NineTurns],
|
|
167
167
|
['EMA', this.EMA3], ['EMA4', this.EMA4], ['EMA5', this.EMA5],['EMA6', this.EMA6],
|
|
168
|
+
["ICHIMOKU",this.ICHIMOKU],["CDP-STD", this.CDP_STD],["TBP-STD",this.TBP_STD],
|
|
168
169
|
|
|
169
170
|
//通达信特色指标
|
|
170
171
|
["散户线", this.ShareholderCount],["NXTS", this.NXTS],["FKX", this.FKX],["两融资金", this.Margin4],
|
|
@@ -4105,6 +4106,69 @@ DRAWTEXT(D9,H*1.010,'9'),COLORGREEN;"
|
|
|
4105
4106
|
return data;
|
|
4106
4107
|
}
|
|
4107
4108
|
|
|
4109
|
+
JSIndexScript.prototype.ICHIMOKU=function()
|
|
4110
|
+
{
|
|
4111
|
+
let data =
|
|
4112
|
+
{
|
|
4113
|
+
Name: 'ICHIMOKU', Description: '一目均衡图', IsMainIndex: true,
|
|
4114
|
+
Args: [{ Name: 'SHORT', Value: 7 },{ Name: 'MID', Value: 22 },{ Name: 'LONG', Value: 44 }],
|
|
4115
|
+
Script: //脚本
|
|
4116
|
+
"转换线:(HHV(H,SHORT)+LLV(L,SHORT))/2,COLORRED,LINETHICK2;\n\
|
|
4117
|
+
基准线:(HHV(H,MID)+LLV(L,MID))/2,COLORFF8040,LINETHICK2;\n\
|
|
4118
|
+
迟行带:REFXV(C,MID),COLORGRAY,LINETHICK2;\n\
|
|
4119
|
+
A:=REF((转换线+基准线)/2,MID);\n\
|
|
4120
|
+
B:=REF((HHV(H,LONG)+LLV(L,LONG))/2,MID);\n\
|
|
4121
|
+
STICKLINE(A<B,A,B,2,1),COLOR339933;\n\
|
|
4122
|
+
STICKLINE(A>=B,A,B,2,1),COLOR0033CC;\n\
|
|
4123
|
+
先行带A:PLOYLINE(1,A),COLORBROWN;\n\
|
|
4124
|
+
先行带B:PLOYLINE(1,B),COLORLIGREEN;"
|
|
4125
|
+
};
|
|
4126
|
+
|
|
4127
|
+
return data;
|
|
4128
|
+
}
|
|
4129
|
+
|
|
4130
|
+
JSIndexScript.prototype.CDP_STD=function()
|
|
4131
|
+
{
|
|
4132
|
+
let data =
|
|
4133
|
+
{
|
|
4134
|
+
Name: 'CDP-STD', Description: '逆势操作', IsMainIndex: true,
|
|
4135
|
+
Script: //脚本
|
|
4136
|
+
"CH:=REF(H,1);\n\
|
|
4137
|
+
CL:=REF(L,1);\n\
|
|
4138
|
+
CC:=REF(C,1);\n\
|
|
4139
|
+
CDP:(CH+CL+CC)/3;\n\
|
|
4140
|
+
AH:2*CDP+CH-2*CL;\n\
|
|
4141
|
+
NH:CDP+CDP-CL;\n\
|
|
4142
|
+
NL:CDP+CDP-CH;\n\
|
|
4143
|
+
AL:2*CDP-2*CH+CL;"
|
|
4144
|
+
};
|
|
4145
|
+
|
|
4146
|
+
return data;
|
|
4147
|
+
}
|
|
4148
|
+
|
|
4149
|
+
JSIndexScript.prototype.TBP_STD=function()
|
|
4150
|
+
{
|
|
4151
|
+
let data =
|
|
4152
|
+
{
|
|
4153
|
+
Name: 'TBP-STD', Description: '趋势平衡点', IsMainIndex: true,
|
|
4154
|
+
Script: //脚本
|
|
4155
|
+
"APX:=(H+L+C)/3;\n\
|
|
4156
|
+
TR0:=MAX(H-L,MAX(ABS(H-REF(C,1)),ABS(L-REF(C,1))));\n\
|
|
4157
|
+
MF0:=C-REF(C,2);\n\
|
|
4158
|
+
MF1:=REF(MF0,1);\n\
|
|
4159
|
+
MF2:=REF(MF0,2);\n\
|
|
4160
|
+
DIRECT1:=BARSLAST(MF0>MF1 AND MF0>MF2);\n\
|
|
4161
|
+
DIRECT2:=BARSLAST(MF0<MF1 AND MF0<MF2);\n\
|
|
4162
|
+
DIRECT0:=IF(DIRECT1<DIRECT2,100,-100);\n\
|
|
4163
|
+
TBP:REF(REF(C,1)+IF(DIRECT0>50,MIN(MF0,MF1),MAX(MF0,MF1)),1);\n\
|
|
4164
|
+
多头获利:REF(IF(DIRECT0>50,APX*2-L,DRAWNULL),1),NODRAW;\n\
|
|
4165
|
+
多头停损:REF(IF(DIRECT0>50,APX-TR0,DRAWNULL),1),NODRAW;\n\
|
|
4166
|
+
空头回补:REF(IF(DIRECT0<-50,APX*2-H,DRAWNULL),1),NODRAW;\n\
|
|
4167
|
+
空头停损:REF(IF(DIRECT0<-50,APX+TR0,DRAWNULL),1),NODRAW;"
|
|
4168
|
+
};
|
|
4169
|
+
|
|
4170
|
+
return data;
|
|
4171
|
+
}
|
|
4108
4172
|
|
|
4109
4173
|
|
|
4110
4174
|
JSIndexScript.prototype.TEST = function ()
|
|
@@ -98119,6 +98183,50 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
98119
98183
|
return result;
|
|
98120
98184
|
}
|
|
98121
98185
|
|
|
98186
|
+
|
|
98187
|
+
|
|
98188
|
+
//STDDEV(X,N) 返回标准偏差
|
|
98189
|
+
//将标准差除以样本大小N的平方根即可得出标准误差。标准误差 = σ/sqrt(n)
|
|
98190
|
+
this.STDDEV=function(data,n)
|
|
98191
|
+
{
|
|
98192
|
+
var result=[];
|
|
98193
|
+
|
|
98194
|
+
if (!Array.isArray(data)) return result;
|
|
98195
|
+
var nStart=this.GetFirstVaildIndex(data);
|
|
98196
|
+
if (!IFrameSplitOperator.IsNumber(n)) return result;
|
|
98197
|
+
if(nStart+n>data.length || n<1) return result;
|
|
98198
|
+
|
|
98199
|
+
var i=nStart, j=0, bFirst=true, dTotal=0, dAvg=0;
|
|
98200
|
+
for(i+=n-1;i<data.length;++i)
|
|
98201
|
+
{
|
|
98202
|
+
dTotal = 0;
|
|
98203
|
+
if(bFirst)
|
|
98204
|
+
{
|
|
98205
|
+
bFirst = false;
|
|
98206
|
+
for(j=i-n+1;j<=i;++j)
|
|
98207
|
+
{
|
|
98208
|
+
dAvg += data[j];
|
|
98209
|
+
}
|
|
98210
|
+
|
|
98211
|
+
dAvg /= n;
|
|
98212
|
+
}
|
|
98213
|
+
else
|
|
98214
|
+
{
|
|
98215
|
+
dAvg += (data[i]-data[i-n])/n;
|
|
98216
|
+
}
|
|
98217
|
+
|
|
98218
|
+
for(j=i-n+1;j<=i;++j)
|
|
98219
|
+
{
|
|
98220
|
+
dTotal += (data[j]-dAvg)*(data[j]-dAvg);
|
|
98221
|
+
}
|
|
98222
|
+
|
|
98223
|
+
|
|
98224
|
+
result[i] = Math.sqrt(dTotal/(n-1))/Math.sqrt(n);
|
|
98225
|
+
}
|
|
98226
|
+
|
|
98227
|
+
return result;
|
|
98228
|
+
}
|
|
98229
|
+
|
|
98122
98230
|
//平均绝对方差
|
|
98123
98231
|
this.AVEDEV=function(data,n)
|
|
98124
98232
|
{
|
|
@@ -102930,6 +103038,8 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
102930
103038
|
return this.AVEDEV(args[0], args[1]);
|
|
102931
103039
|
case 'STD':
|
|
102932
103040
|
return this.STD(args[0], args[1]);
|
|
103041
|
+
case "STDDEV":
|
|
103042
|
+
return this.STDDEV(args[0], args[1]);
|
|
102933
103043
|
case 'IF':
|
|
102934
103044
|
case 'IFF':
|
|
102935
103045
|
case "IFELSE":
|
|
@@ -130357,7 +130467,7 @@ function HQChartScriptWorker()
|
|
|
130357
130467
|
|
|
130358
130468
|
|
|
130359
130469
|
|
|
130360
|
-
var HQCHART_VERSION="1.1.
|
|
130470
|
+
var HQCHART_VERSION="1.1.12668";
|
|
130361
130471
|
|
|
130362
130472
|
function PrintHQChartVersion()
|
|
130363
130473
|
{
|
|
@@ -8543,6 +8543,7 @@ function ChartCorssCursor()
|
|
|
8543
8543
|
|
|
8544
8544
|
this.IsShow = true; //是否显示
|
|
8545
8545
|
this.ShowTextMode = { Left: 1, Right: 1, Bottom: 1 }; //0=不显示 1=显示在框架外 2=显示在框架内
|
|
8546
|
+
this.TextFormat= { Right:0 }; //0=默认 1=价格显示(分时图才有用)
|
|
8546
8547
|
this.IsShowCorss = true; //是否显示十字光标
|
|
8547
8548
|
this.IsShowClose = false; //Y轴始终显示收盘价
|
|
8548
8549
|
this.IsFixXLastTime=false; //是否修正X轴,超出当前时间的,X轴调整到当前最后的时间.
|
|
@@ -8726,6 +8727,15 @@ function ChartCorssCursor()
|
|
|
8726
8727
|
this.Canvas.fillText(text, left + 2, y, textWidth);
|
|
8727
8728
|
}
|
|
8728
8729
|
|
|
8730
|
+
if (this.StringFormatY.PercentageText)
|
|
8731
|
+
{
|
|
8732
|
+
if (this.TextFormat.Right==0)
|
|
8733
|
+
{
|
|
8734
|
+
text=this.StringFormatY.PercentageText+'%';
|
|
8735
|
+
var textWidth=this.Canvas.measureText(text).width+4; //前后各空2个像素
|
|
8736
|
+
}
|
|
8737
|
+
}
|
|
8738
|
+
|
|
8729
8739
|
if (this.StringFormatY.RText)
|
|
8730
8740
|
{
|
|
8731
8741
|
text = this.StringFormatY.RText;
|
|
@@ -3591,6 +3591,48 @@ function JSAlgorithm(errorHandler, symbolData)
|
|
|
3591
3591
|
return result;
|
|
3592
3592
|
}
|
|
3593
3593
|
|
|
3594
|
+
//STDDEV(X,N) 返回标准偏差
|
|
3595
|
+
//将标准差除以样本大小N的平方根即可得出标准误差。标准误差 = σ/sqrt(n)
|
|
3596
|
+
this.STDDEV=function(data,n)
|
|
3597
|
+
{
|
|
3598
|
+
var result=[];
|
|
3599
|
+
|
|
3600
|
+
if (!Array.isArray(data)) return result;
|
|
3601
|
+
var nStart=this.GetFirstVaildIndex(data);
|
|
3602
|
+
if (!IFrameSplitOperator.IsNumber(n)) return result;
|
|
3603
|
+
if(nStart+n>data.length || n<1) return result;
|
|
3604
|
+
|
|
3605
|
+
var i=nStart, j=0, bFirst=true, dTotal=0, dAvg=0;
|
|
3606
|
+
for(i+=n-1;i<data.length;++i)
|
|
3607
|
+
{
|
|
3608
|
+
dTotal = 0;
|
|
3609
|
+
if(bFirst)
|
|
3610
|
+
{
|
|
3611
|
+
bFirst = false;
|
|
3612
|
+
for(j=i-n+1;j<=i;++j)
|
|
3613
|
+
{
|
|
3614
|
+
dAvg += data[j];
|
|
3615
|
+
}
|
|
3616
|
+
|
|
3617
|
+
dAvg /= n;
|
|
3618
|
+
}
|
|
3619
|
+
else
|
|
3620
|
+
{
|
|
3621
|
+
dAvg += (data[i]-data[i-n])/n;
|
|
3622
|
+
}
|
|
3623
|
+
|
|
3624
|
+
for(j=i-n+1;j<=i;++j)
|
|
3625
|
+
{
|
|
3626
|
+
dTotal += (data[j]-dAvg)*(data[j]-dAvg);
|
|
3627
|
+
}
|
|
3628
|
+
|
|
3629
|
+
|
|
3630
|
+
result[i] = Math.sqrt(dTotal/(n-1))/Math.sqrt(n);
|
|
3631
|
+
}
|
|
3632
|
+
|
|
3633
|
+
return result;
|
|
3634
|
+
}
|
|
3635
|
+
|
|
3594
3636
|
//平均绝对方差
|
|
3595
3637
|
this.AVEDEV=function(data,n)
|
|
3596
3638
|
{
|
|
@@ -7709,6 +7751,8 @@ function JSAlgorithm(errorHandler, symbolData)
|
|
|
7709
7751
|
return this.AVEDEV(args[0], args[1]);
|
|
7710
7752
|
case 'STD':
|
|
7711
7753
|
return this.STD(args[0], args[1]);
|
|
7754
|
+
case "STDDEV":
|
|
7755
|
+
return this.STDDEV(args[0], args[1]);
|
|
7712
7756
|
case 'IF':
|
|
7713
7757
|
case 'IFF':
|
|
7714
7758
|
case "IFELSE":
|
|
@@ -2025,6 +2025,8 @@ function HQPriceStringFormat()
|
|
|
2025
2025
|
this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
2026
2026
|
else
|
|
2027
2027
|
this.Text = this.Value.toFixed(defaultfloatPrecision);
|
|
2028
|
+
|
|
2029
|
+
if (this.YClose>0) this.PercentageText=((this.Value-this.YClose)*100/this.YClose).toFixed(2); //走势图右边坐标显示百分比
|
|
2028
2030
|
}
|
|
2029
2031
|
else
|
|
2030
2032
|
{
|
|
@@ -628,6 +628,7 @@ function JSChart(element)
|
|
|
628
628
|
if (IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime)) chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;
|
|
629
629
|
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
630
630
|
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
631
|
+
if (IFrameSplitOperator.IsNumber(item.RightTextFormat)) chart.ChartCorssCursor.TextFormat.Right=item.RightTextFormat;
|
|
631
632
|
}
|
|
632
633
|
|
|
633
634
|
if (option.MinuteInfo) chart.CreateMinuteInfo(option.MinuteInfo);
|