hqchart 1.1.12651 → 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 +45 -13
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +61 -7
- package/src/jscommon/umychart.index.data.js +64 -0
- package/src/jscommon/umychart.resource/js/codemirror/javascript.js +8 -3
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +126 -8
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +126 -8
- 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);};}//是否有是有效的数字
|
|
@@ -11307,17 +11339,17 @@ else if(value.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(value.indexOf
|
|
|
11307
11339
|
}}else if(itemExpression.Type==Syntax.Literal)//常量
|
|
11308
11340
|
{var aryValue=itemExpression.Value;_varName7=itemExpression.Value.toString();isNoneName=true;this.VarTable.set(_varName7,aryValue);//把常量放到变量表里
|
|
11309
11341
|
}else if(itemExpression.Type==Syntax.CallExpression){if(_j15==0){if(this.IsDrawFunction(itemExpression.Callee.Name)){draw=itemExpression.Out;_drawName=itemExpression.Callee.Name;}else{var _varValue4=itemExpression.Out;_varName7='__temp_sc_'+itemExpression.Callee.Name+'_'+_i146+'__';isNoneName=true;this.VarTable.set(_varName7,_varValue4);}}}else if(itemExpression.Type==Syntax.BinaryExpression){_varName7="__temp_sb_"+_i146+"__";var _aryValue2=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName7,_aryValue2);}}var outValue;if(draw)outValue='\u8F93\u51FA: '+draw;else if(isNoneName)outValue='\u8F93\u51FA: '+this.VarTable.get(_varName7);else outValue='\u8F93\u51FA'+_varName7+': '+this.VarTable.get(_varName7);if(color)outValue+=',\u989C\u8272'+this.GetColorExplain(color);if(lineWidth)outValue+=',\u7EBF\u6BB5\u7C97\u7EC6'+this.GetLineWidthExplain(lineWidth);if(isShow==false)outValue+=",不显示";if(isDotLine==true)outValue+=",画虚线";if(isDrawAbove==true)outValue+=',显示在位置之上';if(pointDot&&_varName7)//圆点
|
|
11310
|
-
{outValue+=",画小圆点线";var _value15={Name:_varName7,
|
|
11311
|
-
{outValue+=",画小圆圈线";var _value16={Name:_varName7,
|
|
11312
|
-
{outValue+=",画出柱状线和指标线";var _value17={Name:_varName7,
|
|
11313
|
-
{outValue+=",画柱状线";var _value18={Name:_varName7,
|
|
11314
|
-
{outValue+=",画成交量柱状线";var _value19={Name:_varName7,
|
|
11315
|
-
{var outVar={Name:_drawName,
|
|
11316
|
-
{outValue+=",画彩色柱状线";var _value21={Name:_varName7,
|
|
11342
|
+
{outValue+=",画小圆点线";var _value15={Name:_varName7,Draw:outValue,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};this.OutVarTable.push(_value15);}else if(circleDot&&_varName7)//圆点
|
|
11343
|
+
{outValue+=",画小圆圈线";var _value16={Name:_varName7,Draw:outValue,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};this.OutVarTable.push(_value16);}else if(lineStick&&_varName7)//LINESTICK 同时画出柱状线和指标线
|
|
11344
|
+
{outValue+=",画出柱状线和指标线";var _value17={Name:_varName7,Draw:outValue,Type:4};this.OutVarTable.push(_value17);}else if(stick&&_varName7)//STICK 画柱状线
|
|
11345
|
+
{outValue+=",画柱状线";var _value18={Name:_varName7,Draw:outValue,Type:5};this.OutVarTable.push(_value18);}else if(volStick&&_varName7)//VOLSTICK 画彩色柱状线
|
|
11346
|
+
{outValue+=",画成交量柱状线";var _value19={Name:_varName7,Draw:outValue,Type:6};this.OutVarTable.push(_value19);}else if(_varName7&&color){var _value20={Name:_varName7,Data:outValue,Color:color,Type:0};this.OutVarTable.push(_value20);}else if(draw)//画图函数
|
|
11347
|
+
{var outVar={Name:_drawName,Draw:outValue,Type:1};this.OutVarTable.push(outVar);}else if(colorStick&&_varName7)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
11348
|
+
{outValue+=",画彩色柱状线";var _value21={Name:_varName7,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value21);}else if(_varName7){var _value22={Name:_varName7,Data:outValue,Type:0};this.OutVarTable.push(_value22);}}}}JSConsole.Complier.Log('[JSExplainer::Run]',this.VarTable);return this.OutVarTable;};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;}};this.VisitSequenceExpression=function(node){for(var _i147 in node.Expression){var _item28=node.Expression[_i147];this.VisitNode(_item28);}};//函数调用
|
|
11317
11349
|
this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i148 in node.Arguments){var _item29=node.Arguments[_i148];var value=void 0;if(_item29.Type==Syntax.BinaryExpression||_item29.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(_item29);else if(_item29.Type==Syntax.CallExpression)value=this.VisitCallExpression(_item29);else value=this.GetNodeValue(_item29);args.push(value);}JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}node.Out=this.CallFunctionExplain(funcName,args,node);return node.Out;};this.FUNCTION_INFO_LIST=new _map2.default([["REF",{Name:"REF",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684'+args[0];}}],["REFX",{Name:"REFX",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684'+args[0];}}],["REFV",{Name:"REFV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFXV",{Name:"REFXV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFDATE",{Name:"REFDATE",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5'+args[0];}}],["COUNT",{Name:"COUNT",Param:{Count:2},ToString:function ToString(args){return'\u7EDF\u8BA1'+args[1]+'\u65E5\u4E2D\u6EE1\u8DB3'+args[0]+'\u7684\u5929\u6570';}}],["BARSLASTCOUNT",{Name:"BARSLASTCOUNT",Param:{Count:1},ToString:function ToString(args){return'\u6761\u4EF6'+args[0]+'\u8FDE\u7EED\u6210\u7ACB\u6B21\u6570';}}],["BARSCOUNT",{Name:"BARSCOUNT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u6709\u6548\u6570\u636E\u5468\u671F\u6570';}}],["BARSLAST",{Name:"BARSLAST",Param:{Count:1},ToString:function ToString(args){return'\u4E0A\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSNEXT",{Name:"BARSNEXT",Param:{Count:1},ToString:function ToString(args){return'\u4E0B\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCEN",{Name:"BARSSINCEN",Param:{Count:2},ToString:function ToString(args){return'\u5728'+args[1]+'\u5468\u671F\u5185\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCE",{Name:"BARSSINCE",Param:{Count:1},ToString:function ToString(args){return'\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["HHV",{Name:"HHV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u9AD8\u503C';}}],["LLV",{Name:"LLV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u4F4E\u503C';}}],["ZTPRICE",{Name:"ZTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算涨停价';}}],["DTPRICE",{Name:"DTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算跌停价';}}],["BACKSET",{Name:"BACKSET",Param:{Count:2},ToString:function ToString(args){return'\u82E5'+args[0]+'\u5219\u5C06\u6700\u8FD1'+args[1]+'\u5468\u671F\u7F6E\u4E3A1';}}],["HOD",{Name:"HOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u9AD8\u503C\u540D\u6B21';}}],["LOD",{Name:"LOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u4F4E\u503C\u540D\u6B21';}}],["REVERSE",{Name:"REVERSE",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u76F8\u53CD\u6570';}}],["FILTER",{Name:"FILTER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u8FC7\u6EE4';}}],["FILTERX",{Name:"FILTERX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u53CD\u5411\u8FC7\u6EE4';}}],["TFILTER",{Name:"TFILTER",Param:{Count:3},ToString:function ToString(args){return'\u4FE1\u53F7\u8FC7\u6EE4(\u591A\u5934)';}}],["SUMBARS",{Name:"SUMBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7D2F\u52A0\u81F3'+args[1]+'\u7684\u5929\u6570';}}],["MA",{Name:"MA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7B80\u5355\u79FB\u52A8\u5E73\u5747';}}],["SMA",{Name:"SMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["MEMA",{Name:"MEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["EMA",{Name:"EMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMA",{Name:"EXPMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMEMA",{Name:"EXPMEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["WMA",{Name:"WMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u52A0\u6743\u79FB\u52A8\u5E73\u5747';}}],["DMA",{Name:"DMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u52A8\u6001\u79FB\u52A8\u5E73\u5747';}}],["XMA",{Name:"XMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u504F\u79FB\u79FB\u52A8\u5E73\u5747';}}],["RANGE",{Name:"RANGE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["CONST",{Name:"CONST",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6700\u540E\u4E00\u65E5\u503C';}}],["TOPRANGE",{Name:"TOPRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5927\u503C';}}],["LOWRANGE",{Name:"LOWRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5C0F\u503C';}}],["FINDHIGH",{Name:"FINDHIGH",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7';}}],["FINDHIGHBARS",{Name:"FINDHIGHBARS",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["FINDLOW",{Name:"FINDLOW",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7';}}],["FINDLOWBARS",{Name:"FINDLOWBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["SUM",{Name:"SUM",Param:{Count:2},ToString:function ToString(args){return''+args[0]+args[1]+'\u65E5\u7D2F\u52A0';}}],["MULAR",{Name:"MULAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u65E5\u7D2F\u4E58';}}],["AMA",{Name:"AMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u81EA\u9002\u5E94\u5747\u7EBF';}}],["TMA",{Name:"TMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["CROSS",{Name:"CROSS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u4E0A\u7A7F'+args[1];}}],["LONGCROSS",{Name:"LONGCROSS",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u5C0F\u4E8E'+args[1]+'\u4FDD\u6301'+args[2]+'\u4E2A\u4EA4\u6613\u65E5\u540E\u4EA4\u53C9\u4E0A\u7A7F';}}],["UPNDAY",{Name:"UPNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u6DA8';}}],["DOWNNDAY",{Name:"DOWNNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u8DCC';}}],["NDAY",{Name:"NDAY",Param:{Count:3},ToString:function ToString(args){return'\u6700\u8FD1'+args[2]+'\u65E5'+args[0]+'\u4E00\u76F4\u5927\u4E8E'+args[1];}}],["EXIST",{Name:"EXIST",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u5B58\u5728'+args[0];}}],["EXISTR",{Name:"EXISTR",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u5B58\u5728'+args[0];}}],["EVERY",{Name:"EVERY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u4E00\u76F4\u5B58\u5728'+args[0];}}],["LAST",{Name:"LAST",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u6301\u7EED'+args[0];}}],["NOT",{Name:"NOT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u53D6\u53CD';}}],["IF",{Name:"IF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFF",{Name:"IFF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFN",{Name:"IFN",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFC",{Name:"IFC",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["TESTSKIP",{Name:"TESTSKIP",Param:{Count:1},ToString:function ToString(args){return'\u5982\u679C\u6EE1\u8DB3\u6761\u4EF6'+args[0]+',\u516C\u5F0F\u8FD4\u56DE';}}],["VALUEWHEN",{Name:"VALUEWHEN",Param:{Count:2},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE\u4E0A\u4E2A\u8F93\u51FA\u503C ';}}],["MAX",{Name:"MAX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5927\u503C';}}],["MIN",{Name:"MIN",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5C0F\u503C';}}],["ACOS",{Name:"ACOS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u4F59\u5F26';}}],["ASIN",{Name:"ASIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5F26';}}],["ATAN",{Name:"ATAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5207';}}],["COS",{Name:"COS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u4F59\u5F26';}}],["SIN",{Name:"SIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5F26';}}],["TAN",{Name:"TAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5207';}}],["EXP",{Name:"EXP",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6307\u6570';}}],["LN",{Name:"LN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u81EA\u7136\u5BF9\u6570';}}],["LOG",{Name:"LOG",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5BF9\u6570';}}],["SQRT",{Name:"SQRT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5F00\u65B9';}}],["ABS",{Name:"ABS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7EDD\u5BF9\u503C';}}],["POW",{Name:"POW",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u4E58\u5E42';}}],["CEILING",{Name:"CEILING",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["FLOOR",{Name:"FLOOR",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["INTPART",{Name:"INTPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6574\u6570\u90E8\u5206';}}],["BETWEEN",{Name:"BETWEEN",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["FRACPART",{Name:"FRACPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5C0F\u6570\u90E8\u5206';}}],["ROUND",{Name:"ROUND",Param:{Count:1},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["ROUND2",{Name:"ROUND2",Param:{Count:2},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["SIGN",{Name:"SIGN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7B26\u53F7';}}],["MOD",{Name:"MOD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5173\u4E8E'+args[1]+'\u7684\u6A21';}}],["RAND",{Name:"RAND",Param:{Count:1},ToString:function ToString(args){return'\u968F\u673A\u6B63\u6574\u6570';}}],["AVEDEV",{Name:"AVEDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u5747\u7EDD\u5BF9\u504F\u5DEE';}}],["DEVSQ",{Name:"DEVSQ",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6570\u636E\u504F\u5DEE\u5E73\u65B9\u548C';}}],["FORCAST",{Name:"FORCAST",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u9884\u6D4B\u503C';}}],["TSMA",{Name:"TSMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u4E2A\u5468\u671F\u5185\u7684\u65F6\u95F4\u5E8F\u5217\u4E09\u89D2\u79FB\u52A8\u5E73\u5747';}}],["SLOPE",{Name:"SLOPE",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u659C\u7387';}}],["STD",{Name:"STD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6807\u51C6\u5DEE';}}],["STDP",{Name:"STDP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6807\u51C6\u5DEE';}}],["STDDEV",{Name:"STDDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6807\u51C6\u504F\u5DEE';}}],["VAR",{Name:"VAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6837\u672C\u65B9\u5DEE';}}],["VARP",{Name:"VARP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6837\u672C\u65B9\u5DEE';}}],["COVAR",{Name:"COVAR",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u534F\u65B9\u5DEE';}}],["RELATE",{Name:"RELATE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[0]+'\u5468\u671F\u7684\u76F8\u5173\u7CFB\u6570';}}],["BETA",{Name:"BETA",Param:{Count:1},ToString:function ToString(args){return'\u03B2(Beta)\u7CFB\u6570';}}],["BETAEX",{Name:"BETAEX",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u76F8\u5173\u653E\u5927\u7CFB\u6570';}}],["COST",{Name:"COST",Param:{Count:1},ToString:function ToString(args){return'\u83B7\u5229\u76D8\u4E3A'+args[0]+'%\u7684\u6210\u672C\u5206\u5E03';}}],["WINNER",{Name:"WINNER",Param:{Count:1},ToString:function ToString(args){return'\u4EE5'+args[0]+'\u8BA1\u7B97\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["LWINNER",{Name:"LWINNER",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[0]+'\u65E5\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["PWINNER",{Name:"PWINNER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["COSTEX",{Name:"COSTEX",Param:{Count:2},ToString:function ToString(args){return'\u4F4D\u4E8E\u4EF7\u683C'+args[0]+'\u548C'+args[1]+'\u95F4\u7684\u6210\u672C';}}],["PPART",{Name:"PPART",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u5360\u603B\u6210\u672C\u7684\u6BD4\u4F8B';}}],["SAR",{Name:"SAR",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411';}}],["SARTURN",{Name:"SARTURN",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411\u70B9';}}],//字符串函数
|
|
11318
11350
|
["CON2STR",{Name:"CON2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["VAR2STR",{Name:"VAR2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["STR2CON",{Name:"STR2CON",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u6570\u5B57';}}],["STRLEN",{Name:"STRLEN",Param:{Count:1},ToString:function ToString(args){return'\u5F97\u5230'+args[0]+'\u5B57\u7B26\u4E32\u957F\u5EA6';}}],["STRCAT",{Name:"STRCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["VARCAT",{Name:"VARCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["STRSPACE",{Name:"STRSPACE",Param:{Count:1},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u52A0\u4E00\u7A7A\u683C';}}],["SUBSTR",{Name:"SUBSTR",Param:{Count:3},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u53D6\u4E00\u90E8\u5206';}}],["STRCMP",{Name:"STRCMP",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u548C\u5B57\u7B26\u4E32'+args[1]+'\u6BD4\u8F83';}}],["FINDSTR",{Name:"FINDSTR",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u67E5\u627E\u5B57\u7B26\u4E32'+args[1];}}],["NAMEINCLUD",{Name:"NAMEINCLUD",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["CODELIKE",{Name:"CODELIKE",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["INBLOCK",{Name:"AVEDEV",Param:{Count:1},ToString:function ToString(args){return'\u5C5E\u4E8E'+args[0]+'\u677F\u5757';}}],["STKINDI",{Name:"STKINDI",Param:{Dynamic:true},ToString:function ToString(args){return"指标引用";}}],["STRFORMAT",{Name:"STRFORMAT",Param:{Dynamic:true},ToString:function ToString(args){return'\u683C\u5F0F\u5316'+args[0]+'\u5B57\u7B26\u4E32';}}],["HHVBARS",{Name:"HHVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';}}],["LLVBARS",{Name:"LLVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';}}]]);this.CallFunctionExplain=function(funcName,args,node){if(this.FUNCTION_INFO_LIST.has(funcName)){var item=this.FUNCTION_INFO_LIST.get(funcName);if(item.Param.Dynamic===true)//动态参数
|
|
11319
11351
|
{}else{if(item.Param.Count!=args.length)this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u53C2\u6570\u4E2A\u6570\u4E0D\u6B63\u786E. \u9700\u8981'+item.Param.Count+'\u4E2A\u53C2\u6570');}return item.ToString(args);}switch(funcName){case"CALCSTOCKINDEX":return'\u5F15\u7528'+args[0]+'\u7684'+args[1]+'\u6307\u6807\u7B2C'+args[2]+'\u4E2A\u8F93\u51FA\u503C';case"PEAK":case"PEAKBARS":case"ZIG":case"ZIGA":case"TROUGH":case"TROUGHBARS":return this.GetZIGExplain(funcName,args);case"FINANCE":return this.GetFinanceExplain(args);case"DYNAINFO":return this.GetDynainfoExplain(args);case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':return this.GetOtherSymbolExplain({FunctionName:funcName,Args:args},node);//绘图函数
|
|
11320
|
-
case"PLOYLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6\u4EE5'+args[1]+'\u4F4D\u7F6E\u4E3A\u9876\u70B9\u753B\u6298\u7EBF\u8FDE\u63A5';case"DRAWLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u8D77\u70B9\uFF0C\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[2]+'\u65F6,\u5728'+args[3]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u7EC8\u70B9,'+args[4]+'\u8868\u793A\u662F\u5426\u5EF6\u957F';case"DRAWSL":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u659C\u7EBF\u7EBF\u6027\u56DE\u5F52,'+args[2]+'\u659C\u7387,'+args[3]+'\u957F\u5EA6,'+args[4]+'\u65B9\u5411';case"DRAWKLINE":case"DRAWKLINE1":return'K线';case"DRAWICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"DRAWTEXT":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWTEXT_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWNUMBER":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"DRAWNUMBER_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"RGB":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+']';case"DRAWBAND":return'画带状线';case"DRAWRECTREL":return"相对位置上画矩形.";case"DRAWGBK":return"填充背景";case"TIPICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"STICKLINE":var barType="";if(args[4]==-1)barType="虚线空心柱";else if(args[4]==0)barType="实心柱";else barType="实线空心柱";return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6, \u5728'+args[1]+'\u548C'+args[2]+'\u4F4D\u7F6E\u4E4B\u95F4\u753B\u67F1\u72B6\u7EBF,\u5BBD\u5EA6\u4E3A'+args[3]+','+barType;case"SELL":return"卖出平仓";case"BUY":return"买入开仓";case"SELLSHORT":return"卖出开仓";case"BUYSHORT":return"买入平仓";case"YMOVE":return;default:this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u4E0D\u5B58\u5728');}};this.GetDynainfoExplain=function(args){var DATA_NAME_MAP=new _map2.default([[3,"前收盘价"],[4,"开盘价"],[5,"最高价"],[6,"最低价"],[7,"现价"],[8,'总量'],[9,"现量"],[10,"总金额"],[11,"均价"],[12,"日涨跌"],[13,"振幅"],[14,"涨幅"],[15,"开盘时的成交金额"],[16,"前5日每分钟均量"],[17,"量比"],[18,"上涨家数"],[19,"下跌家数"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u5373\u65F6\u884C\u60C5['+id+']';};this.GetFinanceExplain=function(args){var DATA_NAME_MAP=new _map2.default([[1,"总股本"],[2,"市场类型"],[3,"沪深品种类型"],[4,"沪深行业代码"],[5,"B股"],[6,"H股"],[7,"流通股本[股]"],[8,"股东人数[户]"],[9,"资产负债率%"],[10,"总资产"],[11,"流动资产"],[12,"固定资产"],[13,"无形资产"],[15,"流动负债"],[16,"少数股东权益"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u8D22\u52A1\u6570\u636E['+id+']';};this.GetZIGExplain=function(funcName,args){var value=args[0];if(value==0)value="开盘价";else if(value==1)value="最高价";else if(value==2)value="最低价";else if(value==3)value="收盘价";switch(funcName){case"PEAK":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u503C';case"PEAKBARS":return value+'\u7684'+args[1]+'5%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u4F4D\u7F6E';case"ZIG":return value+'\u7684'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"ZIGA":return value+'\u53D8\u5316'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"TROUGH":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u503C';case"TROUGHBARS":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u4F4D\u7F6E';}};this.GetColorExplain=function(colorName){var COLOR_MAP=new _map2.default([['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);if(COLOR_MAP.has(colorName))return COLOR_MAP.get(colorName);//COLOR 自定义色
|
|
11352
|
+
case"PLOYLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6\u4EE5'+args[1]+'\u4F4D\u7F6E\u4E3A\u9876\u70B9\u753B\u6298\u7EBF\u8FDE\u63A5';case"DRAWLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u8D77\u70B9\uFF0C\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[2]+'\u65F6,\u5728'+args[3]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u7EC8\u70B9,'+args[4]+'\u8868\u793A\u662F\u5426\u5EF6\u957F';case"DRAWSL":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u659C\u7EBF\u7EBF\u6027\u56DE\u5F52,'+args[2]+'\u659C\u7387,'+args[3]+'\u957F\u5EA6,'+args[4]+'\u65B9\u5411';case"DRAWKLINE":case"DRAWKLINE1":return'K线';case"DRAWICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"DRAWTEXT":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWTEXT_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWNUMBER":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"DRAWNUMBER_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"RGB":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+']';case"RGBA":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+','+args[3]+']';case"DRAWBAND":return'画带状线';case"DRAWRECTREL":return"相对位置上画矩形.";case"DRAWGBK":return"填充背景";case"TIPICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"STICKLINE":var barType="";if(args[4]==-1)barType="虚线空心柱";else if(args[4]==0)barType="实心柱";else barType="实线空心柱";return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6, \u5728'+args[1]+'\u548C'+args[2]+'\u4F4D\u7F6E\u4E4B\u95F4\u753B\u67F1\u72B6\u7EBF,\u5BBD\u5EA6\u4E3A'+args[3]+','+barType;case"SELL":return"卖出平仓";case"BUY":return"买入开仓";case"SELLSHORT":return"卖出开仓";case"BUYSHORT":return"买入平仓";case"YMOVE":return;case"BACKGROUND":return"绘制背景";case"UPCOLOR":return'\u4E0A\u6DA8\u989C\u8272'+args[0];case"DOWNCOLOR":return'\u4E0B\u8DCC\u989C\u8272'+args[0];default:this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u4E0D\u5B58\u5728');}};this.GetDynainfoExplain=function(args){var DATA_NAME_MAP=new _map2.default([[3,"前收盘价"],[4,"开盘价"],[5,"最高价"],[6,"最低价"],[7,"现价"],[8,'总量'],[9,"现量"],[10,"总金额"],[11,"均价"],[12,"日涨跌"],[13,"振幅"],[14,"涨幅"],[15,"开盘时的成交金额"],[16,"前5日每分钟均量"],[17,"量比"],[18,"上涨家数"],[19,"下跌家数"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u5373\u65F6\u884C\u60C5['+id+']';};this.GetFinanceExplain=function(args){var DATA_NAME_MAP=new _map2.default([[1,"总股本"],[2,"市场类型"],[3,"沪深品种类型"],[4,"沪深行业代码"],[5,"B股"],[6,"H股"],[7,"流通股本[股]"],[8,"股东人数[户]"],[9,"资产负债率%"],[10,"总资产"],[11,"流动资产"],[12,"固定资产"],[13,"无形资产"],[15,"流动负债"],[16,"少数股东权益"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u8D22\u52A1\u6570\u636E['+id+']';};this.GetZIGExplain=function(funcName,args){var value=args[0];if(value==0)value="开盘价";else if(value==1)value="最高价";else if(value==2)value="最低价";else if(value==3)value="收盘价";switch(funcName){case"PEAK":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u503C';case"PEAKBARS":return value+'\u7684'+args[1]+'5%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u4F4D\u7F6E';case"ZIG":return value+'\u7684'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"ZIGA":return value+'\u53D8\u5316'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"TROUGH":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u503C';case"TROUGHBARS":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u4F4D\u7F6E';}};this.GetColorExplain=function(colorName){var COLOR_MAP=new _map2.default([['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);if(COLOR_MAP.has(colorName))return COLOR_MAP.get(colorName);//COLOR 自定义色
|
|
11321
11353
|
//格式为COLOR+“RRGGBB”:RR、GG、BB表示红色、绿色和蓝色的分量,每种颜色的取值范围是00-FF,采用了16进制。
|
|
11322
11354
|
//例如:MA5:MA(CLOSE,5),COLOR00FFFF 表示纯红色与纯绿色的混合色:COLOR808000表示淡蓝色和淡绿色的混合色。
|
|
11323
11355
|
if(colorName.indexOf('COLOR')==0)return'#'+colorName.substr(5);return'rgb(30,144,255)';};this.GetLineWidthExplain=function(lineWidth){var width=parseInt(lineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))return width;return 1;};this.SymbolPeriodExplain=function(valueName,period){var mapStockDataName=new _map2.default([['CLOSE',"收盘价"],["C","收盘价"],['VOL',"成交量"],['V',"成交量"],['OPEN',"开盘价"],['O',"开盘价"],['HIGH',"最高价"],['H',"最高价"],['LOW',"最低价"],['L',"最低价"],['AMOUNT',"成交金额"],['AMO',"成交金额"],['VOLINSTK',"持仓量"]]);//MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH,SEASON,YEAR
|
|
@@ -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":
|
|
@@ -18275,31 +18321,31 @@ function JSExplainer(ast,option)
|
|
|
18275
18321
|
if (pointDot && varName) //圆点
|
|
18276
18322
|
{
|
|
18277
18323
|
outValue+=",画小圆点线";
|
|
18278
|
-
let value={Name:varName,
|
|
18324
|
+
let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.POINTDOT.Radius, Type:3};
|
|
18279
18325
|
this.OutVarTable.push(value);
|
|
18280
18326
|
}
|
|
18281
18327
|
else if (circleDot && varName) //圆点
|
|
18282
18328
|
{
|
|
18283
18329
|
outValue+=",画小圆圈线";
|
|
18284
|
-
let value={Name:varName,
|
|
18330
|
+
let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.CIRCLEDOT.Radius, Type:3};
|
|
18285
18331
|
this.OutVarTable.push(value);
|
|
18286
18332
|
}
|
|
18287
18333
|
else if (lineStick && varName) //LINESTICK 同时画出柱状线和指标线
|
|
18288
18334
|
{
|
|
18289
18335
|
outValue+=",画出柱状线和指标线";
|
|
18290
|
-
let value={Name:varName,
|
|
18336
|
+
let value={Name:varName, Draw:outValue, Type:4};
|
|
18291
18337
|
this.OutVarTable.push(value);
|
|
18292
18338
|
}
|
|
18293
18339
|
else if (stick && varName) //STICK 画柱状线
|
|
18294
18340
|
{
|
|
18295
18341
|
outValue+=",画柱状线";
|
|
18296
|
-
let value={Name:varName,
|
|
18342
|
+
let value={Name:varName, Draw:outValue, Type:5};
|
|
18297
18343
|
this.OutVarTable.push(value);
|
|
18298
18344
|
}
|
|
18299
18345
|
else if (volStick && varName) //VOLSTICK 画彩色柱状线
|
|
18300
18346
|
{
|
|
18301
18347
|
outValue+=",画成交量柱状线";
|
|
18302
|
-
let value={Name:varName,
|
|
18348
|
+
let value={Name:varName, Draw:outValue, Type:6};
|
|
18303
18349
|
this.OutVarTable.push(value);
|
|
18304
18350
|
}
|
|
18305
18351
|
else if (varName && color)
|
|
@@ -18309,13 +18355,13 @@ function JSExplainer(ast,option)
|
|
|
18309
18355
|
}
|
|
18310
18356
|
else if (draw) //画图函数
|
|
18311
18357
|
{
|
|
18312
|
-
var outVar={ Name:drawName,
|
|
18358
|
+
var outVar={ Name:drawName, Draw:outValue, Type:1 };
|
|
18313
18359
|
this.OutVarTable.push(outVar);
|
|
18314
18360
|
}
|
|
18315
18361
|
else if (colorStick && varName) //CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
18316
18362
|
{
|
|
18317
18363
|
outValue+=",画彩色柱状线";
|
|
18318
|
-
let value={Name:varName,
|
|
18364
|
+
let value={Name:varName, Draw:outValue, Color:color, Type:2};
|
|
18319
18365
|
this.OutVarTable.push(value);
|
|
18320
18366
|
}
|
|
18321
18367
|
else if (varName)
|
|
@@ -18641,6 +18687,8 @@ function JSExplainer(ast,option)
|
|
|
18641
18687
|
return `当满足条件${args[0]}时,在横轴${args[1]}纵轴${args[2]}位置书写数字`;
|
|
18642
18688
|
case "RGB":
|
|
18643
18689
|
return `自定色[${args[0]},${args[1]},${args[2]}]`;
|
|
18690
|
+
case "RGBA":
|
|
18691
|
+
return `自定色[${args[0]},${args[1]},${args[2]},${args[3]}]`;
|
|
18644
18692
|
case "DRAWBAND":
|
|
18645
18693
|
return '画带状线';
|
|
18646
18694
|
case "DRAWRECTREL":
|
|
@@ -18667,6 +18715,12 @@ function JSExplainer(ast,option)
|
|
|
18667
18715
|
|
|
18668
18716
|
case "YMOVE":
|
|
18669
18717
|
return;
|
|
18718
|
+
case "BACKGROUND":
|
|
18719
|
+
return "绘制背景";
|
|
18720
|
+
case "UPCOLOR":
|
|
18721
|
+
return `上涨颜色${args[0]}`;
|
|
18722
|
+
case "DOWNCOLOR":
|
|
18723
|
+
return `下跌颜色${args[0]}`;
|
|
18670
18724
|
|
|
18671
18725
|
default:
|
|
18672
18726
|
this.ThrowUnexpectedNode(node,`函数${funcName}不存在`);
|
|
@@ -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,13 +129,15 @@ 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,
|
|
138
|
+
"ALIGN0":LINE_WIDTH_NAME,"ALIGN1":LINE_WIDTH_NAME,"ALIGN2":LINE_WIDTH_NAME,
|
|
134
139
|
|
|
135
|
-
'COLORSTICK':DRAW_NAME,'CIRCLEDOT':DRAW_NAME,'POINTDOT':DRAW_NAME,'LINESTICK':DRAW_NAME,'STICK':DRAW_NAME,'NODRAW':DRAW_NAME,
|
|
140
|
+
'COLORSTICK':DRAW_NAME,'CIRCLEDOT':DRAW_NAME,'POINTDOT':DRAW_NAME,'LINESTICK':DRAW_NAME,'STICK':DRAW_NAME,'NODRAW':DRAW_NAME,"NOTEXT":DRAW_NAME,"NOTITLE":DRAW_NAME,
|
|
136
141
|
"LINEAREA":DRAW_NAME,
|
|
137
142
|
|
|
138
143
|
"BUY":DRAW_NAME,"SELL":DRAW_NAME,"SELLSHORT":DRAW_NAME,"BUYSHORT":DRAW_NAME,"TIPICON":DRAW_NAME,"AUTOFILTER":FUNCTION_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":
|
|
@@ -112347,31 +112457,31 @@ function JSExplainer(ast,option)
|
|
|
112347
112457
|
if (pointDot && varName) //圆点
|
|
112348
112458
|
{
|
|
112349
112459
|
outValue+=",画小圆点线";
|
|
112350
|
-
let value={Name:varName,
|
|
112460
|
+
let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.POINTDOT.Radius, Type:3};
|
|
112351
112461
|
this.OutVarTable.push(value);
|
|
112352
112462
|
}
|
|
112353
112463
|
else if (circleDot && varName) //圆点
|
|
112354
112464
|
{
|
|
112355
112465
|
outValue+=",画小圆圈线";
|
|
112356
|
-
let value={Name:varName,
|
|
112466
|
+
let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.CIRCLEDOT.Radius, Type:3};
|
|
112357
112467
|
this.OutVarTable.push(value);
|
|
112358
112468
|
}
|
|
112359
112469
|
else if (lineStick && varName) //LINESTICK 同时画出柱状线和指标线
|
|
112360
112470
|
{
|
|
112361
112471
|
outValue+=",画出柱状线和指标线";
|
|
112362
|
-
let value={Name:varName,
|
|
112472
|
+
let value={Name:varName, Draw:outValue, Type:4};
|
|
112363
112473
|
this.OutVarTable.push(value);
|
|
112364
112474
|
}
|
|
112365
112475
|
else if (stick && varName) //STICK 画柱状线
|
|
112366
112476
|
{
|
|
112367
112477
|
outValue+=",画柱状线";
|
|
112368
|
-
let value={Name:varName,
|
|
112478
|
+
let value={Name:varName, Draw:outValue, Type:5};
|
|
112369
112479
|
this.OutVarTable.push(value);
|
|
112370
112480
|
}
|
|
112371
112481
|
else if (volStick && varName) //VOLSTICK 画彩色柱状线
|
|
112372
112482
|
{
|
|
112373
112483
|
outValue+=",画成交量柱状线";
|
|
112374
|
-
let value={Name:varName,
|
|
112484
|
+
let value={Name:varName, Draw:outValue, Type:6};
|
|
112375
112485
|
this.OutVarTable.push(value);
|
|
112376
112486
|
}
|
|
112377
112487
|
else if (varName && color)
|
|
@@ -112381,13 +112491,13 @@ function JSExplainer(ast,option)
|
|
|
112381
112491
|
}
|
|
112382
112492
|
else if (draw) //画图函数
|
|
112383
112493
|
{
|
|
112384
|
-
var outVar={ Name:drawName,
|
|
112494
|
+
var outVar={ Name:drawName, Draw:outValue, Type:1 };
|
|
112385
112495
|
this.OutVarTable.push(outVar);
|
|
112386
112496
|
}
|
|
112387
112497
|
else if (colorStick && varName) //CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
112388
112498
|
{
|
|
112389
112499
|
outValue+=",画彩色柱状线";
|
|
112390
|
-
let value={Name:varName,
|
|
112500
|
+
let value={Name:varName, Draw:outValue, Color:color, Type:2};
|
|
112391
112501
|
this.OutVarTable.push(value);
|
|
112392
112502
|
}
|
|
112393
112503
|
else if (varName)
|
|
@@ -112713,6 +112823,8 @@ function JSExplainer(ast,option)
|
|
|
112713
112823
|
return `当满足条件${args[0]}时,在横轴${args[1]}纵轴${args[2]}位置书写数字`;
|
|
112714
112824
|
case "RGB":
|
|
112715
112825
|
return `自定色[${args[0]},${args[1]},${args[2]}]`;
|
|
112826
|
+
case "RGBA":
|
|
112827
|
+
return `自定色[${args[0]},${args[1]},${args[2]},${args[3]}]`;
|
|
112716
112828
|
case "DRAWBAND":
|
|
112717
112829
|
return '画带状线';
|
|
112718
112830
|
case "DRAWRECTREL":
|
|
@@ -112739,6 +112851,12 @@ function JSExplainer(ast,option)
|
|
|
112739
112851
|
|
|
112740
112852
|
case "YMOVE":
|
|
112741
112853
|
return;
|
|
112854
|
+
case "BACKGROUND":
|
|
112855
|
+
return "绘制背景";
|
|
112856
|
+
case "UPCOLOR":
|
|
112857
|
+
return `上涨颜色${args[0]}`;
|
|
112858
|
+
case "DOWNCOLOR":
|
|
112859
|
+
return `下跌颜色${args[0]}`;
|
|
112742
112860
|
|
|
112743
112861
|
default:
|
|
112744
112862
|
this.ThrowUnexpectedNode(node,`函数${funcName}不存在`);
|
|
@@ -130191,7 +130309,7 @@ function ScrollBarBGChart()
|
|
|
130191
130309
|
|
|
130192
130310
|
|
|
130193
130311
|
|
|
130194
|
-
var HQCHART_VERSION="1.1.
|
|
130312
|
+
var HQCHART_VERSION="1.1.12668";
|
|
130195
130313
|
|
|
130196
130314
|
function PrintHQChartVersion()
|
|
130197
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":
|
|
@@ -112391,31 +112501,31 @@ function JSExplainer(ast,option)
|
|
|
112391
112501
|
if (pointDot && varName) //圆点
|
|
112392
112502
|
{
|
|
112393
112503
|
outValue+=",画小圆点线";
|
|
112394
|
-
let value={Name:varName,
|
|
112504
|
+
let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.POINTDOT.Radius, Type:3};
|
|
112395
112505
|
this.OutVarTable.push(value);
|
|
112396
112506
|
}
|
|
112397
112507
|
else if (circleDot && varName) //圆点
|
|
112398
112508
|
{
|
|
112399
112509
|
outValue+=",画小圆圈线";
|
|
112400
|
-
let value={Name:varName,
|
|
112510
|
+
let value={Name:varName, Draw:outValue, Radius:g_JSChartResource.CIRCLEDOT.Radius, Type:3};
|
|
112401
112511
|
this.OutVarTable.push(value);
|
|
112402
112512
|
}
|
|
112403
112513
|
else if (lineStick && varName) //LINESTICK 同时画出柱状线和指标线
|
|
112404
112514
|
{
|
|
112405
112515
|
outValue+=",画出柱状线和指标线";
|
|
112406
|
-
let value={Name:varName,
|
|
112516
|
+
let value={Name:varName, Draw:outValue, Type:4};
|
|
112407
112517
|
this.OutVarTable.push(value);
|
|
112408
112518
|
}
|
|
112409
112519
|
else if (stick && varName) //STICK 画柱状线
|
|
112410
112520
|
{
|
|
112411
112521
|
outValue+=",画柱状线";
|
|
112412
|
-
let value={Name:varName,
|
|
112522
|
+
let value={Name:varName, Draw:outValue, Type:5};
|
|
112413
112523
|
this.OutVarTable.push(value);
|
|
112414
112524
|
}
|
|
112415
112525
|
else if (volStick && varName) //VOLSTICK 画彩色柱状线
|
|
112416
112526
|
{
|
|
112417
112527
|
outValue+=",画成交量柱状线";
|
|
112418
|
-
let value={Name:varName,
|
|
112528
|
+
let value={Name:varName, Draw:outValue, Type:6};
|
|
112419
112529
|
this.OutVarTable.push(value);
|
|
112420
112530
|
}
|
|
112421
112531
|
else if (varName && color)
|
|
@@ -112425,13 +112535,13 @@ function JSExplainer(ast,option)
|
|
|
112425
112535
|
}
|
|
112426
112536
|
else if (draw) //画图函数
|
|
112427
112537
|
{
|
|
112428
|
-
var outVar={ Name:drawName,
|
|
112538
|
+
var outVar={ Name:drawName, Draw:outValue, Type:1 };
|
|
112429
112539
|
this.OutVarTable.push(outVar);
|
|
112430
112540
|
}
|
|
112431
112541
|
else if (colorStick && varName) //CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
112432
112542
|
{
|
|
112433
112543
|
outValue+=",画彩色柱状线";
|
|
112434
|
-
let value={Name:varName,
|
|
112544
|
+
let value={Name:varName, Draw:outValue, Color:color, Type:2};
|
|
112435
112545
|
this.OutVarTable.push(value);
|
|
112436
112546
|
}
|
|
112437
112547
|
else if (varName)
|
|
@@ -112757,6 +112867,8 @@ function JSExplainer(ast,option)
|
|
|
112757
112867
|
return `当满足条件${args[0]}时,在横轴${args[1]}纵轴${args[2]}位置书写数字`;
|
|
112758
112868
|
case "RGB":
|
|
112759
112869
|
return `自定色[${args[0]},${args[1]},${args[2]}]`;
|
|
112870
|
+
case "RGBA":
|
|
112871
|
+
return `自定色[${args[0]},${args[1]},${args[2]},${args[3]}]`;
|
|
112760
112872
|
case "DRAWBAND":
|
|
112761
112873
|
return '画带状线';
|
|
112762
112874
|
case "DRAWRECTREL":
|
|
@@ -112783,6 +112895,12 @@ function JSExplainer(ast,option)
|
|
|
112783
112895
|
|
|
112784
112896
|
case "YMOVE":
|
|
112785
112897
|
return;
|
|
112898
|
+
case "BACKGROUND":
|
|
112899
|
+
return "绘制背景";
|
|
112900
|
+
case "UPCOLOR":
|
|
112901
|
+
return `上涨颜色${args[0]}`;
|
|
112902
|
+
case "DOWNCOLOR":
|
|
112903
|
+
return `下跌颜色${args[0]}`;
|
|
112786
112904
|
|
|
112787
112905
|
default:
|
|
112788
112906
|
this.ThrowUnexpectedNode(node,`函数${funcName}不存在`);
|
|
@@ -130349,7 +130467,7 @@ function HQChartScriptWorker()
|
|
|
130349
130467
|
|
|
130350
130468
|
|
|
130351
130469
|
|
|
130352
|
-
var HQCHART_VERSION="1.1.
|
|
130470
|
+
var HQCHART_VERSION="1.1.12668";
|
|
130353
130471
|
|
|
130354
130472
|
function PrintHQChartVersion()
|
|
130355
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);
|