Chơi JavaScript với người già - tạo ra một đối tác bán hàng và mua sắm (1) cuộc sống nhàm chán của người nông dân ở đầu cuối

Tác giả:Giấc mơ nhỏ, Tạo: 2017-03-06 09:57:41, Cập nhật: 2017-10-11 10:36:41

Bạn có thể chơi với một người đàn ông và một người đàn bà JavaScript để tạo ra một đối tác bán hàng.

Cuộc sống nhàm chán của nông dân ở phía trước

Có thể có một nguồn nước trong thế giới mã hóa nhàm chán? cuộc sống đơn điệu có thể có một hơi thở trong lành? thanh thiếu niên không phân biệt lại một lần nữa? Đây chắc chắn là những cảm giác chung của các lập trình viên. Là một lập trình viên lớn tuổi, bạn không thể được gọi là bé trắng ở trình độ cuộn dây của JavaScript nữa, hãy sử dụng cái tên cũ. Mặc dù là trình độ cuộn dây, bận rộn với mã hóa hàng ngày, nhưng cũng không ngăn cản việc chơi một số thứ vui vẻ với JS, và có thể tìm thấy niềm vui trong cuộc sống và công việc của mình.

  • Phát hiện

    Lão Bạch là một người nông dân nhập học muộn, trước đây không có vấn đề gì về mông, chơi hợp đồng tương lai. Có một chút khái niệm giao dịch chứng khoán, bạn có thể nghĩ rằng tôi đã bùng nổ trên thị trường tương lai, trước khi trở thành lập trình viên. Cũng tốt hơn là học ngôn ngữ lập trình C, C ++ khi ở đại học, không bỏ lỡ lớp học, những công việc này rất hữu ích cho những người trẻ tuổi của tôi, nhanh chóng nắm vững JavaScript. Không có vấn đề gì khi uống rượu với bạn bè (bạn bè là một tay chơi giao dịch khoá giải trí tư nhân), cũng trò chuyện về thị trường tương lai.

    Sau khi tìm kiếm một lần, thấy rằng JS, Python, C / C ++, JAVA, v.v. có thể thực hiện giao dịch lập trình (JS chỉ sử dụng nhiều điểm, Python đang tự học), có rất nhiều thứ để học.

    Một chương trình robot được nghiên cứu gần đây là một phần mềm giao dịch logic nổi tiếng ở nước ngoài, cũng là thị trường tương lai hàng hóa, đưa ý tưởng này vào thị trường hàng hóa trong nước (một công ty có tên Simnow cung cấp dịch vụ tài khoản giả).

    img

    img

    Khi mới bắt đầu viết bằng JavaScript cảm thấy hoàn toàn không thể bỏ qua, cảm giác này và viết mã JS đầu tiên là hoàn toàn khác nhau, một thời gian não không thích nghi, trước đây nhìn vào những dòng hoa xanh lá cây, cột trên phần mềm chứng khoán mà không bao giờ xem xét cách tính toán.

    Có một vài tài liệu có giá trị tham khảo. Ví dụ, chỉ số STOCH RSI, có rất ít thông tin trên mạng, chỉ cần tự mình kiểm tra.

    Người ta thường dùng chữ LOW để so sánh chữ cũ với chữ trắ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];
}

Một số người cho rằng, "Điều này không phải là vấn đề của chúng ta".

img

Hãy viết ở đây hôm nay, chúng ta sẽ gặp lại lần sau.https://www.fmz.com/bbs-topic/723

Các lập trình viên LittleDream


Thêm nữa

nhỏ315Con bò!