STOCHRSI 指标理解
时间: 2018-11-06来源:OSCHINA
前景提要
「深度学习福利」大神带你进阶工程师,立即查看>>>
STOCHRSI 指标理解
这几天帮一个朋友解决一个关于指标的问题 ,这个指标就是 STOCHRSI 。在网上查了很多资料,中文的真是甚少。而且仅有的也不是讲的很清楚。对于我这样的 交易小白,简直是天书。 不过只要研究多少会有点收获的,下面分享下经验,需要用这个的朋友可以借鉴。
在网上找到了一些 关于这个指标的计算公式。 /* LC := REF(CLOSE,1); //REF(C,1) 上一周期的收盘价 RSI:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1) *100; %K: MA(RSI-LLV(RSI,M),P1)/MA(HHV(RSI,M)-LLV(RSI,M),P1)*100; LLV(l,60)表示:检索60天内的最低价,可适应于检索任何股票 %D:MA(%K,P2); LC := REF(CLOSE,1); RSI:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1) *100; STOCHRSI:MA(RSI-LLV(RSI,M),P1)/MA(HHV(RSI,M)-LLV(RSI,M),P1)*100; */

天哪! 我竟然耐心看完了。(当时看见这个的时候,就感觉碰到钉子了。) 这个描述是通用 公式。但是有点编程经验的我也只能 猜!猜!猜! 在网上找到的资料说,这个指标有大概3个不同形态。上面的公式是其中2个。 但是资料也没说,这3个不同形态的其他详细信息。 在各个平台的图表行情中看、对比。发现,关于这个指标的描述各不相同。平台上的 talib指标库 中的指标函数 STOCHRSI 的参数描述也没有完全明白。 用talib指标库 传入参数 14,14,3,3 这组参数,得出的数据和其他平台的对比,发现差异较大。看了看参数描述发现不一样。于是放弃现成的。 有点想动手撸这个指标…(有点怕怕,弄不好就被代码虐了)。

经过了一番痛苦挣扎…
总结: 这个指标不管哪种形态,RSI 指标是这个指标的基础数据。对比了其他平台描述和上述公式。确定STOCHRSI指标的参数必然有一个是RSI的参数。 又发现 这个指标的不同描述,有的描述是指标输出的是 %K , %D两条线。 有的描述是 输出的为 STOCHRSI , MA(3) (这个描述的参数是14,14,3,3) 分析了一下, 其实 虽然是2种不同形态, %K === STOCHRSI , %D === MA(3) 输出的2条线(数据)计算公式是一样的。 确定 MA(3)中的3是一个参数。 剩下2个参数,动手往上面的公式里面带入,就是M 和 P1了 。14、3 都试试。最终发现撸出来的指标数据 ,终于对的上其他平台上的数据了。
绿色是快线 %K ,橙色是 %D
自己写的指标,可以对比下 OKCoin的 。 如有问题欢迎留言 ^^ function LLV(array,period){ if(!array || array.length - period < 0){ throw "error:" + array; } var min = array[array.length - period]; for(var i = array.length - period; i < array.length; i++){ if( array[i] < min ){ min = array[i]; } } return min; } function HHV(array,period){ if(!array || array.length - period < 0){ throw "error:" + array; } var max = array[array.length - period]; for(var i = array.length - period; i < array.length; i++){ if( array[i] > max){ max = array[i]; } } return max; } function DeleteNullEle(initArr){ var dealArr = []; var initArrLen = initArr.length; for(var i = 0,j = 0 ; i < initArrLen ; i++,j++){ if(initArr[i] === null || isNaN(initArr[i]) ){ j--; continue; } dealArr[j] = initArr[i]; } return dealArr; } /* LC := REF(CLOSE,1); //REF(C,1) 上一周期的收盘价 RSI:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1) *100; %K: MA(RSI-LLV(RSI,M),P1)/MA(HHV(RSI,M)-LLV(RSI,M),P1)*100; LLV(l,60)表示:检索60天内的最低价,可适应于检索任何股票 %D:MA(%K,P2); LC := REF(CLOSE,1); RSI:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1) *100; STOCHRSI:MA(RSI-LLV(RSI,M),P1)/MA(HHV(RSI,M)-LLV(RSI,M),P1)*100; */ function FstochRSI(records,n,m,p1,p2){ var len = records.length; //var LC = records[len-2];//上一周期收盘价 //var rsi = TA.RSI(records,n);// RSI 数组 ,talib var rsi = talib.RSI(records,n); rsi = DeleteNullEle(rsi);//ceshi var arr1 = []; var arr2 = []; var arr3 = []; var arr4 = []; var rsi_a = []; var rsi_b = []; var k = []; var d = null; /*不包含当前柱 for(var a = 0 ;a < rsi.length ; a++ ){//改造 不用 LLV for(var aa = 0 ; aa <= a; aa++ ){ rsi_a.push(rsi[aa]); } arr1.push(rsi[a] - TA.Lowest(rsi_a,m)); } for(var b = 0 ;b < rsi.length ; b++ ){//改造 不用 HHV for(var bb = 0 ; bb <= b; bb++ ){ rsi_b.push(rsi[bb]); } arr2.push(TA.Highest(rsi_b,m) - TA.Lowest(rsi_b,m)); } */ for(var a = 0 ;a < rsi.length ; a++ ){//改造 不用 LLV if(a < m){ continue; } for(var aa = 0 ; aa <= a; aa++ ){ rsi_a.push(rsi[aa]); } arr1.push(rsi[a] - LLV(rsi_a,m)); } for(var b = 0 ;b < rsi.length ; b++ ){//改造 不用 HHV if(b < m){ continue; } for(var bb = 0 ; bb <= b; bb++ ){ rsi_b.push(rsi[bb]); } arr2.push(HHV(rsi_b,m) - LLV(rsi_b,m)); } arr1 = DeleteNullEle(arr1); arr2 = DeleteNullEle(arr2); //Log("arr1:",arr1.length,"-",arr1);//ceshi //Log("arr2:",arr2.length,"-",arr2);//ceshi arr3 = talib.MA(arr1,p1); arr4 = talib.MA(arr2,p1); arr3 = DeleteNullEle(arr3); arr4 = DeleteNullEle(arr4); //Log("ceshi");//ceshi var c = 0; var diff = 0; if(arr3.length !== arr4.length){//实测 长度不相等 throw "error: !=" + arr3.length + "----" + arr4.length; diff = arr4.length - arr3.length; //example diff = 10 - 6 }else{ //throw "error:" + arr3.length + "----" + arr4.length; } for( ;c < arr3.length ; c++ ){ k.push(arr3[c] / arr4[c + diff] * 100); } d = talib.MA(k,p2); return [k,d,rsi]; }

原文地址:https://quant.la/Article/View/43/

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行