8
Follow
1370
Followers
Verständnis der STOCHRSI-Indikatoren
Created 2016-08-24 19:25:22 Updated 2017-10-11 11:07:31
14
12712
Verständnis der STOCHRSI-Indikatoren
- In den letzten Tagen habe ich einem Freund geholfen, eine Frage zu einem Indikator zu lösen, und dieser Indikator ist STOCHRSI.
Es ist einfach ein Buch, aber wenn man nur etwas studiert, kann man etwas davon gewinnen.
Ich habe einige Berechnungsformeln für diesen Indikator im Internet gefunden.
/*
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;
*/
Oh Gott! Ich hatte die Geduld, es zu sehen.
Das ist eine allgemeine Formel. Aber auch ich, mit etwas Programmiererfahrung, kann nur raten!
-
- Die Informationen, die man im Internet findet, besagen, dass der Indikator etwa drei verschiedene Formen hat. Die obigen Formeln sind zwei davon. Aber die Informationen geben keine weiteren Details zu den drei verschiedenen Formen.
-
- Überprüfen Sie die Diagramme der verschiedenen Plattformen und vergleichen Sie sie. Es wurde festgestellt, dass die Beschreibungen für diesen Indikator unterschiedlich sind. Die Parameterbeschreibung der Indikatorfunktion STOCHRSI in der talib-Indikatorbibliothek der Plattform ist auch nicht vollständig verstanden.
-
- Einzug in die Tabelle mit den Parametern 14,14,3,3 in der Tabelle mit den Parametern 14,14,3,3 in der Tabelle mit den Parametern 14,14,3,3,3 in der Tabelle mit den Parametern 14,14,3,3,3 in der Tabelle mit den Parametern 14,14,3 in der Tabelle mit den Parametern 14,14,3 in der Tabelle mit den Parametern 14,14,3 in der Tabelle mit den Parametern 14,14,3 in der Tabelle mit den Parametern 14,14,3 in der Tabelle mit den Parametern 14,14,3 in der Tabelle mit den Parametern 14,14,3 in der Tabelle mit den Parametern 14,14,3 in der Tabelle mit den Parametern 14,14,4 in der Tabelle mit den Parametern 14,14,5 in der Tabelle mit den Parametern 14,14,6 in der Tabelle mit den Parametern 14,14,7 in der Tabelle mit den Parametern 14,14,8 in der Tabelle mit den Parametern 14,9 in der Tabelle mit den Parametern 14,9 in der Tab
-
- Ein bisschen Angst vor dem Indikator... ((ein bisschen Angst, wenn es nicht klappt, wird der Code gemobbt))
Es ist eine schmerzhafte Zeit, die ich durchlebt habe.
Zusammenfassung:
-
- Egal in welcher Form dieser Indikator erscheint, der RSI ist die Basisdaten für diesen Indikator. Die anderen Plattformbeschreibungen werden mit der obigen Formel verglichen.
-
- Es gibt verschiedene Beschreibungen für den Indikator, einige beschreiben den Indikator als %K, %D, zwei Zeilen. Andere beschreiben den Indikator als STOCHRSI, MA(3) (die Parameter für diese Beschreibung sind 14,14,3,3)
Es gibt zwei verschiedene Formen, aber die Formel ist die gleiche für die 2 Datenlinien der Ausgabe:
Die übrigen 2 Parameter, die wir in die Formel einfügen, sind M und P1. 14, 3 werden alle ausprobiert. Schließlich werden die Kennzahlen gefunden, die auf den anderen Plattformen gefunden wurden.
- Es gibt verschiedene Beschreibungen für den Indikator, einige beschreiben den Indikator als %K, %D, zwei Zeilen. Andere beschreiben den Indikator als STOCHRSI, MA(3) (die Parameter für diese Beschreibung sind 14,14,3,3)
- Wenn Sie Fragen haben, schreiben Sie uns gerne einen Kommentar ^^
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];
}
Related Recommendations
Comment
All comments (11)
2 years ago
- 1


