avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Hiểu được chỉ số STOCHRSI

Được tạo ra trong: 2016-08-24 19:25:22, cập nhật trên: 2017-10-11 11:07:31
comments   14
hits   12429

Hiểu được chỉ số STOCHRSI

  • Trong vài ngày qua, tôi đã giúp một người bạn giải quyết một vấn đề về chỉ số, chỉ số này là STOCHRSI. Giao dịch là một công việc rất đơn giản, nhưng chỉ cần nghiên cứu một chút, bạn sẽ thu được một chút, hãy chia sẻ kinh nghiệm dưới đây, bạn có thể học hỏi từ bạn bè của bạn.

Một số công thức tính toán về chỉ số này đã được tìm thấy trên mạng.

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

Ôi trời ơi! Tôi đã kiên nhẫn xem hết rồi. Đây là một công thức phổ biến. Nhưng với một chút kinh nghiệm lập trình, tôi cũng chỉ có thể đoán!

  • 1. Các tài liệu tìm thấy trên mạng cho rằng chỉ số này có khoảng 3 dạng khác nhau. Công thức trên là 2 trong số đó.
  • 2. Xem và so sánh các biểu đồ trên các nền tảng khác nhau. Tìm thấy rằng các mô tả về chỉ số này khác nhau. Mô tả tham số của hàm chỉ số STOCHRSI trong thư viện chỉ số talib trên nền tảng cũng không được hiểu đầy đủ.
  • 3. Sử dụng cơ sở dữ liệu Talib để nhập các tham số 14,14,3,3 Bộ tham số này, kết quả so sánh dữ liệu với các nền tảng khác, phát hiện ra sự khác biệt lớn. Xem mô tả tham số và thấy không giống nhau. Vì vậy, bỏ đi các tham số sẵn có.
  • 4. Có chút cảm giác muốn làm điều gì đó với chỉ số này… ((có chút sợ hãi, nếu làm không tốt thì sẽ bị code bắt nạt))

Tôi đã trải qua một cuộc đấu tranh đau đớn… Tóm lại:

  • 1, bất kể hình thức nào của chỉ số này, chỉ số RSI là dữ liệu cơ bản của chỉ số này. So sánh các mô tả của các nền tảng khác với công thức trên. Xác định tham số của chỉ số STOCHRSI nhất thiết phải có tham số của RSI.
  • 2 , và tìm thấy mô tả khác nhau của chỉ số này, một số mô tả là chỉ số đầu ra là % K , % D hai dòng. Một số mô tả là đầu ra là STOCHRSI , MA ((3) (biến số của mô tả là 14,14,3,3) Phân tích một chút, trên thực tế mặc dù là 2 hình thức khác nhau, %K === STOCHRSI , %D === MA(3) 2 đường xuất ra ((dữ liệu) công thức tính toán là như nhau. 2 tham số còn lại, đưa vào công thức trên, là M và P1. 14, 3 đều thử. Cuối cùng, dữ liệu chỉ số được tìm ra, cuối cùng là dữ liệu trên các nền tảng khác.

Màu xanh lá cây là %K, màu cam là %D Hiểu được chỉ số STOCHRSI

  • Chỉ số tự viết, so sánh với OKCoin. Nếu bạn có câu hỏi xin vui lòng để ý ^^

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