리소스 로딩... 로딩...

각 거래소에서 검출 GetAccount, GetTicker 인터페이스 정책 코드

저자:발명가들의 수량화 - 작은 꿈, 2018-03-09 20:00:48, 업데이트: 2018-03-11 15:09:33

각 거래소에서 검출 GetAccount, GetTicker 인터페이스 정책 코드

이 사이트는 모든 주요 거래소의 인터페이스 상태를 쉽게 확인할 수 있습니다.

img

  • 자바스크립트 소스 코드 (정책 파라미터 없이 직접 실행)
function E(obj) {
    if (!obj) {
        return obj
    }

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

    if (obj && typeof(obj) == "object" && typeof(obj.Info) !== "undefined") {
        var newObj = cloneObj(obj)
        delete newObj.Info
        return newObj
    } else if (typeof(obj.length) == "number") {
        ///*
        var newArray = []
        for (var n = 0; n < obj.length; n++) {
            newArray.push(E(obj[n]))
        }
        return newArray
        //*/
        /*
        var newObj = cloneObj(obj)
        delete newObj.Info
        return newObj
        */
    } else {
        // Log(obj, "is not object or not have attribute 'Info'")
        return obj
    }
}

function main() {
    LogReset(1)
    var count = 0
    while(true){
        Log("第", count , "轮监测!", "#FF0000")
        count++
        var es = []
        for(var i = 0; i < exchanges.length; i++){
            if(exchanges[i].GetName().split("_")[0] == "Futures"){
                // BitMEX
                if(exchanges[i].GetName().split("_")[1] == "BitMEX"){
                    exchanges[i].SetContractType("XBTUSD")
                }
                // OKCoin
                if(exchanges[i].GetName().split("_")[1] == "OKCoin"){
                    exchanges[i].SetContractType("this_week")
                }
            }
            
            var beginTime = new Date().getTime()
            var ticker = exchanges[i].GetTicker()
            var endTickerTime = new Date().getTime()
            
            var account = exchanges[i].GetAccount()
            var endAccountTime = new Date().getTime()
            
            var e = {
                ticker : ticker ? "true #007FFF" : "false #FF0000" ,
                account : account ? "true #007FFF" : "false #FF0000" ,
                name : exchanges[i].GetName() ,
                tickerDelay : endTickerTime - beginTime ,
                accountDelay : endAccountTime - beginTime ,
            }
            Log(e.name, "延迟:", e.tickerDelay, "ticker:", E(ticker), e.ticker)
            Log(e.name, "延迟:", e.accountDelay, "account:", E(account), e.account)
            es.push(e)
        }
        
        var tab = {
            type : "table",
            title : "test",
            cols : ["name", "account", "Delay(ms)", "ticker", "Delay(ms)"],
            rows : [],
        }
        
        for(var j = 0; j < es.length; j++){
            tab.rows.push([es[j].name, es[j].account, es[j].accountDelay, es[j].ticker, es[j].tickerDelay])
        }
        
        LogStatus("更新于:", _D(), '\n`' + JSON.stringify(tab) + '`')
        Sleep(1000 * 30)
    }
}
  • 최신 버전, 에이전시 기능 지원

    2개의 변수를 더합니다.

    변수 설명 변수 유형 기본값
    isUseSetProxy 대리인을 사용하는지 불형 (true/false) 거짓
    IP_AddAndPass@isUseSetProxy==1 대리인 설정 문자열 (string) socks5://username:password@127.0.0.1:8889

    프록시 서버에서 SS5 서비스를 구성하고 설정해야 합니다. (이용자 이름, 암호 등)

    실제로 달리는 동안, 내 매개 변수는 다음과 같이 구성됩니다. socks5://botvs:botvs123456@174.XXX.XXX.XX:1080

    # - 代理服务器SS5服务 设置的 用户名: botvs
    # -                        密码: botvs123456
    # -                 代理服务器IP: 174.XXX.XXX.XX
    # -                        端口: 1080
    
function E(obj) {
    if (!obj) {
        return obj
    }

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

    if (obj && typeof(obj) == "object" && typeof(obj.Info) !== "undefined") {
        var newObj = cloneObj(obj)
        delete newObj.Info
        return newObj
    } else if (typeof(obj.length) == "number") {
        ///*
        var newArray = []
        for (var n = 0; n < obj.length; n++) {
            newArray.push(E(obj[n]))
        }
        return newArray
        //*/
        /*
        var newObj = cloneObj(obj)
        delete newObj.Info
        return newObj
        */
    } else {
        // Log(obj, "is not object or not have attribute 'Info'")
        return obj
    }
}

function main() {
    LogReset(1)
    var count = 0
    
    if(isUseSetProxy){
        var ret
        for(var n = 0; n < exchanges.length; n++){
        ret = exchanges[n].SetProxy(IP_AddAndPass)
        }
        Log("设置代理为:", IP_AddAndPass, ret, "#FF0000")
    }
    
    while(true){
        Log("第", count , "轮监测!", "#FF0000")
        count++
        var es = []
        for(var i = 0; i < exchanges.length; i++){
            if(exchanges[i].GetName().split("_")[0] == "Futures"){
                // BitMEX
                if(exchanges[i].GetName().split("_")[1] == "BitMEX"){
                    exchanges[i].SetContractType("XBTUSD")
                }
                // OKCoin
                if(exchanges[i].GetName().split("_")[1] == "OKCoin"){
                    exchanges[i].SetContractType("this_week")
                }
            }
            
            var beginTime = new Date().getTime()
            var ticker = exchanges[i].GetTicker()
            var endTickerTime = new Date().getTime()
            
            var account = exchanges[i].GetAccount()
            var endAccountTime = new Date().getTime()
            
            var e = {
                ticker : ticker ? "true #007FFF" : "false #FF0000" ,
                account : account ? "true #007FFF" : "false #FF0000" ,
                name : exchanges[i].GetName() ,
                tickerDelay : endTickerTime - beginTime ,
                accountDelay : endAccountTime - beginTime ,
            }
            Log(e.name, "延迟:", e.tickerDelay, "ticker:", E(ticker), e.ticker)
            Log(e.name, "延迟:", e.accountDelay, "account:", E(account), e.account)
            es.push(e)
        }
        
        var tab = {
            type : "table",
            title : "test",
            cols : ["name", "account", "Delay(ms)", "ticker", "Delay(ms)"],
            rows : [],
        }
        
        for(var j = 0; j < es.length; j++){
            tab.rows.push([es[j].name, es[j].account, es[j].accountDelay, es[j].ticker, es[j].tickerDelay])
        }
        
        LogStatus("更新于:", _D(), '\n`' + JSON.stringify(tab) + '`')
        Sleep(1000 * 30)
    }
}

더 많은