Bạn có thể dễ dàng xem trạng thái giao diện của các sàn giao dịch lớn.
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)
}
}
Thêm 2 tham số
Các biến | Mô tả | Loại biến | Định giá mặc định |
---|---|---|---|
isUseSetProxy | Có sử dụng Proxy | Chế độ đúng/sai | sai |
IP_AddAndPass@isUseSetProxy==1 | Trợ lý | Dòng chữ (string) | socks5://username:password@127.0.0.1:8889 |
Cần cấu hình và thiết lập dịch vụ SS5 trên máy chủ đại diện (tên người dùng, mật khẩu, v.v.)
Khi thực sự chạy, các thông số của tôi được cấu hình như sau: 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)
}
}