Sumber dimuat naik... memuat...

Pengertian STOCHRSI

Penulis:Pencipta Kuantiti - Impian Kecil, Dicipta: 2016-08-24 19:25:22, Dikemas kini: 2017-10-11 11:07:31

Pengertian STOCHRSI

  • Beberapa hari yang lalu, saya membantu seorang rakan menyelesaikan masalah mengenai satu indikator, iaitu STOCHRSI. Saya telah mencari banyak maklumat dalam talian, tetapi bahasa Cina sangat sedikit. Perdagangan kecil dan putih, ia adalah buku langit. Tetapi selagi banyak kajian akan mendapat sedikit hasil, berkongsi pengalaman di bawah, rakan yang perlu menggunakan ini boleh mengambil pelajaran.

Saya telah mencari beberapa formula pengiraan untuk indikator ini di internet.

/*
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 Tuhan! Saya sudah selesai menontonnya dengan sabar. (Apabila saya melihat ini, saya berasa seperti memukul paku.) Perkataan ini adalah rumus umum. Tetapi saya yang mempunyai sedikit pengalaman dalam pengaturcaraan hanya boleh meneka! meneka! meneka!

  • 1. Maklumat yang terdapat dalam talian mengatakan bahawa ini adalah kira-kira tiga bentuk yang berbeza. Rumus di atas adalah dua daripadanya.
  • 2. Lihat, bandingkan, dan bandingkan dalam pelbagai platform. Perhatikan bahawa perihalan mengenai indikator ini berbeza. Perihalan parameter fungsi indikator STOCHRSI dalam perpustakaan indikator talib di platform juga tidak sepenuhnya jelas.
  • 3. Menggunakan perpustakaan penunjuk talib Mengirim parameter 14,14,3,3 Kumpulan parameter ini, perbandingan data yang dihasilkan dengan platform lain, mendapati perbezaan yang lebih besar.
  • 4.有点想动手撸这个指标…(有点怕怕,弄不好就被代码虐了)。

Selepas perjuangan yang amat menyakitkan... Kesimpulannya:

  • 1. Walau apa pun bentuk penunjuk ini, penunjuk RSI adalah data asas untuk penunjuk ini. Perbandingan antara platform lain yang diterangkan dan formula di atas. Parameter untuk menentukan penunjuk STOCHRSI mesti mempunyai satu parameter untuk RSI.
  • 2, juga mendapati deskripsi yang berbeza untuk indikator ini, beberapa deskripsi adalah output indikator adalah %K, %D dua baris. Beberapa deskripsi adalah output sebagai STOCHRSI, MA ((3) (parameter deskripsi ini adalah 14, 14, 3, 3) Walaupun terdapat dua bentuk yang berbeza, %K === STOCHRSI, %D === MA(3) menghasilkan dua baris ((data) formula pengiraan yang sama. Dua parameter yang tersisa, mulakan dengan memasukkan dalam formula di atas, iaitu M dan P1. 14.

Hijau adalah garis cepat %K, oren adalah %D.img

  • Jika anda mempunyai sebarang soalan, sila tinggalkan komen ^^

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];
}

Lebih lanjut

lijingxfdjfungsi utama ♪ exchange.SetContractType (("swap") // ditetapkan sebagai kontrak kekal var records = exchange.GetRecords ((PERIOD_M15)) let [k, d, rsi] = FstochRSI ((rekod, 14, 14, 3, 3); Log (("K", k[k.length-2]) Log (("D", d[d.length-2]) {C:$0000FF} -- Saya memanggil fungsi ini, dan data yang dicetak adalah sama dengan nilai sebenar StochRsi di Binance.

JApabila diuji semula, ia mendapati bahawa fungsi ini sangat perlahan dan perlu ditingkatkan.

JAdakah anda masih tidak faham bagaimana anda boleh menggunakan data talib.STOCHRSI untuk membetulkan data atas Bitcoinwisdom?

Pencipta Kuantiti - Impian KecilMungkin masalah perbandingan, menentukan data perbandingan adalah jenis, kitaran, parameter, dan kedudukan BAR yang sama.

Pencipta Kuantiti - Impian Keciltalib adalah sebuah perpustakaan penunjuk sumber terbuka. Dalam BotVS, ia digunakan sebagai contoh untuk mencari garis rata talib.MA ((records, 10); // records untuk mencari garis rata data K pada kitaran Dihitung sebagai rekod K garis 10 bar garis purata.

Pencipta Kuantiti - Impian KecilFstochRSI ((records, n, m, p1, p2) yang sesuai dengan parameter OKCoin adalah sama, kecuali bahawa rekod pertama adalah data K-line, iaitu sumber data untuk mengira penunjuk, dan saya telah membandingkan data yang dikira dalam grafik OK dengan data yang sama, iaitu algoritma ini mengulang sedikit perlahan.

Pencipta Kuantiti - Impian KecilMungkin algoritma atau kod perlu dioptimumkan.

JSaya rasa saya akan cuba untuk menghidupkan semula semua yang telah saya buat.

Pencipta Kuantiti - Impian KecilKodnya sudah ditulis di dalam catatan, anda boleh lihat perbandingan di bawah.

JJika anda menggunakan fungsi STOCH, ia hampir sama.

Pencipta Kuantiti - Impian KecilTalib tidak sama, pengiraan dalaman, agak berbeza. Saya menulis STOCHRSI sendiri, dan akan diletakkan kemudian.