Type/to search
8
Follow
1370
Followers
Compréhension de l'indicateur STOCHRSI
FAQ
Created 2016-08-24 19:25:22  Updated 2017-10-11 11:07:31
 14
 12712

Compréhension de l'indicateur STOCHRSI

  • Ces derniers jours, j'ai aidé un ami à résoudre une question sur l'indicateur, l'indicateur est STOCHRSI.
    Le trading est un jeu d'enfant, c'est un jeu d'enfant, mais il y a des bénéfices à en tirer si l'on étudie un peu, partagez l'expérience ci-dessous et utilisez-la pour aider vos amis.

J'ai trouvé sur le net des formules pour calculer cet indicateur.

/* 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; */

Mon Dieu, j'ai fini de regarder avec patience. Quand j'ai vu ça, j'ai senti que j'avais touché le clou.
Cette description est une formule générale. Mais moi aussi, avec un peu d'expérience en programmation, je ne peux que deviner !

    1. Selon les informations disponibles en ligne, l'indicateur a environ 3 formes différentes. La formule ci-dessus en est une des deux. Mais les informations ne donnent pas d'autres détails sur ces 3 formes différentes.
    1. En regardant et en comparant les graphiques de chaque plate-forme, nous avons découvert que les descriptions de cet indicateur diffèrent. La description des paramètres de la fonction indicateur STOCHRSI dans la base de données des indicateurs talib de la plate-forme n'est pas entièrement comprise.
    1. Utilisez la base de données d'indicateurs de talib pour entrer les paramètres 14,14,3,3. Ce groupe de paramètres, les données obtenues et la comparaison avec d'autres plates-formes ont révélé des différences importantes.
    1. J'ai un peu envie de faire bouger les doigts de l'indicateur... ((j'ai un peu peur, si je ne fais pas bien, je suis maltraité par le code))

Il y a eu des luttes et des souffrances...
Résumé:

    1. Quel que soit le format de l'indicateur, l'indicateur RSI est la base de données de l'indicateur. Comparé à d'autres plates-formes décrites et à la formule ci-dessus. Pour déterminer le paramètre de l'indicateur STOCHRSI, il est nécessaire qu'il y ait un paramètre de RSI.
  • On trouve aussi une description différente de cet indicateur, une description qui indique que l'indicateur sort deux lignes %K, %D. Une autre description qui indique que la sortie est STOCHRSI, MA(3) (les paramètres de cette description sont 14,14,3,3)
    En fait, bien qu'il s'agisse de deux formes différentes, le calcul de la formule est le même pour les deux lignes de données de sortie. Déterminer que 3 de MA est un paramètre.
    Les 2 paramètres restants, qui sont introduits dans la formule ci-dessus, sont M et P1. Les 14 et 3 ont été essayés. Les données de l'indicateur finalement découvertes ont finalement été comparées aux données des autres plates-formes.

Le vert représente la ligne rapide %K, l'orange représente %D.
img

  • Si vous avez des questions, n'hésitez pas à nous le dire ^^
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)

    function main()
    {
    exchange.SetContractType("swap") // 设置为永续合约
    var records = exchange.GetRecords(PERIOD_M15)
    let [k, d, rsi] = FstochRSI(records, 14, 14, 3, 3);
    Log("K",k[k.length-2])
    Log("D",d[d.length-2])
    }

    梦总,我调用了这个函数,并且打印出来的数据跟币安上的StochRsi的实际值是对不上的

    2 years ago

    可能是对比的问题,确定对比的数据是同样品种、周期、参数、BAR位置。这个之前测试过,应该是一样的。

    2 years ago
    J

    回测时发现这个函数的速度非常慢,有待提高

    10 years ago

    可能算法或者代码需要优化

    10 years ago
    J

    还是没看明白,这最后到底要怎么用 talib.STOCHRSI() 才能对的上bitcoinwisdom的数据?

    10 years ago

    talib的 对不上,内部计算,有些不一样。我自己写了下 STOCHRSI ,稍后贴出来。

    10 years ago

    先用STOCH函数了,感觉效果差不多

    10 years ago

    代码已经写在帖子上了, 可以对比下看看。

    10 years ago

    太好了,现在正常了。谢谢!

    10 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)