Tài nguyên đang được tải lên... tải...

STOCHRSI chỉ số hiểu

Tác giả:Những nhà phát minh định lượng - những giấc mơ nhỏ, Tạo: 2016-08-24 19:25:22, Cập nhật: 2017-10-11 11:07:31

STOCHRSI chỉ số hiểu

  • Những ngày gần đây 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. Tôi đã tìm kiếm rất nhiều thông tin trên mạng, rất ít tiếng Trung Quốc. Nhưng chỉ cần nghiên cứu nhiều thì bạn sẽ thu được một chút, hãy chia sẻ kinh nghiệm dưới đây, bạn cần sử dụng nó để học hỏi.

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 xong rồi. Đây là mô tả chung của công thức. Nhưng với một chút kinh nghiệm lập trình, tôi chỉ có thể đoán!

  • 1. Các tài liệu được tìm thấy trên mạng nói rằng chỉ số này có khoảng ba dạng khác nhau. Công thức trên là hai trong số đó. Nhưng tài liệu cũng không nói thêm chi tiết về ba dạng khác nhau.
  • 2. Xem, so sánh và so sánh các biểu đồ trên các nền tảng khác nhau. Nhận thấy rằng 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 hoàn toàn rõ ràng.
  • 3. Sử dụng bộ chỉ số Talib nhập các tham số 14,14,3,3 Nhóm các tham số này, kết quả so sánh dữ liệu với các nền tảng khác, tìm thấy sự khác biệt lớn hơn.
  • 4.有点想动手撸这个指标…(有点怕怕,弄不好就被代码虐了)。

Sau một cuộc đấu tranh đau đớn nhất... Tóm lại:

  • 1, dù chỉ số này có hình thức nào, chỉ số RSI là dữ liệu cơ bản của chỉ số này. So sánh các nền tảng khác mô tả và công thức trên. Các tham số xác định chỉ số STOCHRSI phải có một tham số là RSI.
  • 2, cũng tìm thấy các 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) (các tham số của mô tả này là 14, 14, 3, 3) Phân tích một chút, thực tế, mặc dù có hai hình thức khác nhau, %K === STOCHRSI, %D === MA ((3) xuất ra 2 dòng ((dữ liệu)) công thức tính toán giống nhau. Sau đó, bạn sẽ tìm thấy các thông số trên các nền tảng khác. Sau đó, bạn sẽ tìm thấy các thông số trên các nền tảng khác.

Màu xanh lá cây là đường nhanh %K, màu cam là %Dimg

  • Những chỉ số mà mình đã viết, có thể so sánh với OKCoin dưới đây.

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

Thêm nữa

Đánh giáfunction main (()) {C:$0000FF} exchange.SetContractType (("swap") // được thiết lập là hợp đồng vĩnh viễn 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]) --- Tôi đã gọi hàm này, và dữ liệu được in ra không phù hợp với giá trị thực tế của StochRsi trên Binance.

JKhi kiểm tra lại, chúng tôi thấy hàm này rất chậm và cần cải thiện.

JCó phải bạn không hiểu rằng talib.STOCHRSI))) sẽ làm gì với dữ liệu trên Bitcoinwisdom?

Những nhà phát minh định lượng - những giấc mơ nhỏCó thể là vấn đề so sánh, xác định dữ liệu so sánh là cùng một giống, chu kỳ, tham số, vị trí BAR.

Những nhà phát minh định lượng - những giấc mơ nhỏtalib là một thư viện chỉ số nguồn mở. Nó được sử dụng như vậy trong BotVS, ví dụ như tìm kiếm đường trung tuyến talib.MA ((records, 10); // records tìm kiếm đường trung tuyến chu kỳ dữ liệu đường K. Được tính là records K đường 10 bar đường trung bình. Bạn có thể đến BotVS QQ nhóm: 608262365

Những nhà phát minh định lượng - những giấc mơ nhỏFstochRSI ((records,n,m,p1,p2) tương ứng với OKCoin tham số là giống nhau, ngoại trừ các records đầu tiên này là dữ liệu K-line, đó là nguồn dữ liệu của các chỉ số tính toán, tôi đã so sánh OK biểu đồ tính toán dữ liệu là giống nhau, đó là thuật toán lặp lại một chút chậm.

Những nhà phát minh định lượng - những giấc mơ nhỏCó thể các thuật toán hoặc mã cần được tối ưu hóa

JRất tốt, giờ đã bình thường rồi.

Những nhà phát minh định lượng - những giấc mơ nhỏCó thể so sánh sau đây.

JChúng ta chỉ cần sử dụng hàm STOCH.

Những nhà phát minh định lượng - những giấc mơ nhỏTôi đã viết STOCHRSI và đăng nó sau đó.