Phương thức tổng hợp 4 giờ K-line (đầu tiên là đặt dấu ngoặc, sau đó sẽ đưa ra mã tổng hợp bất kỳ chu kỳ nào)

Tác giả:Ilidan, Tạo: 2017-01-20 19:17:27, Cập nhật:

Phương thức tổng hợp 4 giờ K-line (đầu tiên là đặt dấu ngoặc, sau đó sẽ đưa ra mã tổng hợp bất kỳ chu kỳ nào)


  • Mã là:

    main là mã thử nghiệm, khi sử dụng nó, bạn có thể xóa main.
// K线周期合成
var cloneObj = function(obj){  // 深拷贝 对象函数
    var str, newobj = obj.constructor === Array ? [] : {};
    if(typeof obj !== 'object'){
        return;
    } else if(JSON){
        str = JSON.stringify(obj), //系列化对象
        newobj = JSON.parse(str); //还原
    } else {
        for(var i in obj){
            newobj[i] = typeof obj[i] === 'object' ? 
            cloneObj(obj[i]) : obj[i]; 
        }
    }
    return newobj;
};

function AssembleRecords(records){
    var AssRecords = records.slice(0); // 深拷贝
    var AfterAssRecords = [];
    // 整点时间 0 ,4 ,8 , 12 ,16, 20, 24(0)
    // 判断时间戳
    var objTime = new Date();
    for(var i = 0 ; i < AssRecords.length; i++){
        //Log(objTime.setTime(AssRecords[i].Time)); // ceshi
        objTime.setTime(AssRecords[i].Time);
        var hour = objTime.getHours();
        if(hour === 0 || hour === 4 || hour === 8 || hour === 12 || hour === 16 || hour === 20){
            for(j = 0; j < i ; j++){
                AssRecords.shift(); // 排除
            }
            break;
        }
    }
    var BarObj = {
        Time : 0,
        Open : 0,
        High : 0,
        Low : 0,
        Close : 0,
        Volume : 0,
    };
    for(var n = 0; n < AssRecords.length - 4 ; n+=4){
        /*
        {
        Time    :一个时间戳, 精确到毫秒,与Javascript的 new Date().getTime() 得到的结果格式一样
        Open    :开盘价
        High    :最高价
        Low :最低价
        Close   :收盘价
        Volume  :交易量
        }
        */
        BarObj.Time = AssRecords[n].Time;
        BarObj.Open = AssRecords[n].Open;
        //Log(records.length, n, AssRecords); // ceshi
        BarObj.High = Math.max(AssRecords[n].High, AssRecords[n + 1].High, AssRecords[n + 2].High, AssRecords[n + 3].High);
        BarObj.Low = Math.min(AssRecords[n].Low, AssRecords[n + 1].Low, AssRecords[n + 2].Low, AssRecords[n + 3].Low);
        BarObj.Close = AssRecords[n + 3].Close;
        BarObj.Volume = AssRecords[n + 3].Volume;
        AfterAssRecords.push(cloneObj(BarObj));
    }
    return AfterAssRecords;
}

function main(){
    var records = exchange.GetRecords();
    while(!records || records.length < 24){
        records = exchange.GetRecords();
    }
    records = AssembleRecords(records);
    $.PlotRecords(records, 'BTC');
}
  • Các bài kiểm tra cho thấy:

    img

    Một số nghiên cứu khác cũng cho thấy rằng các con số này có thể tương đương với các con số khác nhau.


Thêm nữa

LouisCảm ơn, Tân!

SnakeayuRất hữu ích, cảm ơn.