[bigdata-104] 多交易所的多币种的行情
发布时间:2020-12-14 03:27:20 所属栏目:大数据 来源:网络整理
导读:每十秒更新一次,从若干websoket读取数据然后显示各种计算。 js文件不列出。仅仅作为参考文档。 !DOCTYPE htmlheadmeta charset="utf-8" /meta http-equiv="refresh" content="50" titleWebSocket Test/titlescript type="text/javascript" src="MD5.js"/scr
|
每十秒更新一次,从若干websoket读取数据然后显示各种计算。 js文件不列出。仅仅作为参考文档。 <!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta http-equiv="refresh" content="50">
<title>WebSocket Test</title>
<script type="text/javascript" src="MD5.js"></script>
<script src="pako.js"></script>
<script src="jquery.min.js"></script>
<script type="text/javascript">
//交易费用 火币和bfx的
var huobi_bfx_btc_jiaoyi = 0.6;
var huobi_bfx_ltc_jiaoyi = 0.7;
var huobi_bfx_eth_jiaoyi = 0.8;
//交易费用 ok币和bfx的
var ok_bfx_btc_jiaoyi = 0.6;
var ok_bfx_ltc_jiaoyi = 0.7;
var ok_bfx_eth_jiaoyi = 0.8;
//各价格
var ok_btc_cny,ok_ltc_cny,ok_eth_cny;
var huobi_btc_cny,huobi_ltc_cny,huobi_eth_cny;
var bfx_btc_usd,bfx_btc_cny;
var bfx_ltc_usd,bfx_ltc_cny;
var bfx_eth_usd,bfx_eth_cny;
//美元汇率
var cny_1_usd = -1;
var okCoinWebSocket = {};
function changeTwoDecimal(x){
var f_x = parseFloat(x);
if (isNaN(f_x)){
return false;
}
var f_x = Math.round(x*100)/100;
return f_x;
}
function curDateTime(){
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth()+1;
var date = d.getDate();
var day = d.getDay();
var hours = d.getHours();
var minutes = d.getMinutes();
var seconds = d.getSeconds();
var ms = d.getMilliseconds();
var curDateTime= year;
if(month>9)
curDateTime = curDateTime +"-"+month;
else
curDateTime = curDateTime +"-0"+month;
if(date>9)
curDateTime = curDateTime +"-"+date;
else
curDateTime = curDateTime +"-0"+date;
if(hours>9)
curDateTime = curDateTime +" "+hours;
else
curDateTime = curDateTime +" 0"+hours;
if(minutes>9)
curDateTime = curDateTime +":"+minutes;
else
curDateTime = curDateTime +":0"+minutes;
if(seconds>9)
curDateTime = curDateTime +":"+seconds;
else
curDateTime = curDateTime +":0"+seconds;
return curDateTime;
}
//okcoin 实时读取 btc价格 ltc价格
okCoinWebSocket.init = function() {
this.wsUri = "wss://real.okcoin.cn:10440/websocket/okcoinapi";
this.apiKey = '';
this.secretKey = '';
this.lastHeartBeat = new Date().getTime();
this.overtime = 8000;
okCoinWebSocket.websocket_btc = new WebSocket(okCoinWebSocket.wsUri);
okCoinWebSocket.websocket_btc.onopen = function(evt) {
onOpen_btc(evt)
};
okCoinWebSocket.websocket_btc.onmessage = function(evt) {
onMessage_btc(evt)
};
}
function onOpen_btc(evt) {
doSend_btc("{'event':'addChannel','channel':'ok_sub_spotcny_btc_ticker'}");
doSend_btc("{'event':'addChannel','channel':'ok_sub_spotcny_ltc_ticker'}");
doSend_btc("{'event':'addChannel','channel':'ok_sub_spotcny_eth_ticker'}");
}
function onMessage_btc(e) {
var array = JSON.parse(e.data);
if (array[0]['channel'] == "ok_sub_spotcny_btc_ticker"){
//console.log('---------------------------');
//console.log(array);
//console.log(array[0]['data']);
ok_btc_cny = parseFloat(array[0]['data']['last']);
update_gap_profit();
//document.getElementById("ok_btc").innerHTML = array[0]['data']['last'];
//document.getElementById("btc_gap").innerHTML = changeTwoDecimal(ok_btc-huobi_btc);
}else if (array[0]['channel'] == "ok_sub_spotcny_ltc_ticker"){
//console.log('---------------------------');
//console.log(array);
//console.log(array[0]['data']);
ok_ltc_cny = parseFloat(array[0]['data']['last']);
update_gap_profit();
//document.getElementById("ok_ltc").innerHTML = array[0]['data']['last'];
//document.getElementById("ltc_gap").innerHTML = changeTwoDecimal(ok_ltc-huobi_ltc);
}else if (array[0]['channel'] == "ok_sub_spotcny_eth_ticker"){
//console.log('---------------------------');
//console.log(array);
//console.log(array[0]['data']);
ok_eth_cny = parseFloat(array[0]['data']['last']);
update_gap_profit();
//document.getElementById("ok_eth").innerHTML = array[0]['data']['last'];
//document.getElementById("eth_gap").innerHTML = changeTwoDecimal(ok_eth-huobi_eth);
}
}
function doSend_btc(message) {
okCoinWebSocket.websocket_btc.send(message);
}
//火币
function huobi(){
//huobi enth 实时读取
var huobiWebSocket = new WebSocket("wss://be.huobi.com/ws");
huobiWebSocket.binaryType = "arraybuffer";
huobiWebSocket.onopen = function(event){
huobiWebSocket.send(JSON.stringify({'sub': 'market.ethcny.kline.1min','id': 'depth ' + new Date()}));
//huobiWebSocket.send(JSON.stringify({'sub': 'market.btccny.kline.1min','id': 'depth2 ' + new Date()}));
}
huobiWebSocket.onmessage = function(event){
//console.log('---------------------------');
//console.log(event);
var ua = new Uint8Array(event.data);
var json = pako.inflate(ua,{to:"string"});
var data = JSON.parse(json);
//console.log(data.ch)
if(data.ch == "market.ethcny.kline.1min"){
huobi_eth_cny = parseFloat(data.tick.close);
update_gap_profit();
//$("#huobi_eth").html(data.tick.close);
//document.getElementById("eth_gap").innerHTML = changeTwoDecimal(ok_eth-huobi_eth);
}
}
//huobi btc ltc实时行情
var huobiWebSocket2 = new WebSocket("wss://api.huobi.com/ws");
huobiWebSocket2.binaryType = "arraybuffer";
huobiWebSocket2.onopen = function(event){
huobiWebSocket2.send(JSON.stringify({'sub': 'market.btccny.kline.1min','id': 'depth ' + new Date()}));
huobiWebSocket2.send(JSON.stringify({'sub': 'market.ltccny.kline.1min','id': 'depth ' + new Date()}));
}
huobiWebSocket2.onmessage = function(event){
//console.log('---------------------------');
//console.log(event);
var ua = new Uint8Array(event.data);
var json = pako.inflate(ua,{to:"string"});
var data = JSON.parse(json);
//console.log(data.ch)
if(data.ch == "market.btccny.kline.1min"){
huobi_btc_cny = parseFloat(data.tick.close);
update_gap_profit();
//$("#huobi_btc").html(data.tick.close);
//document.getElementById("btc_gap").innerHTML = changeTwoDecimal(ok_btc-huobi_btc);
}else if(data.ch == "market.ltccny.kline.1min"){
huobi_ltc_cny = parseFloat(data.tick.close);
update_gap_profit();
//$("#huobi_ltc").html(data.tick.close);
//document.getElementById("ltc_gap").innerHTML = changeTwoDecimal(ok_ltc-huobi_ltc);
}
}
}
function bitfinex(){
//bitfinex 实时行情btcusd
var bitfinexWebSocket = new WebSocket("wss://api.bitfinex.com/ws");
bitfinex_chan_id = new Object();
//记录通道的id
//https://bitfinex.readme.io/v1/reference#ws-public-order-books
//btcusd,ltcusd,ethusd,ltcbtc,ethbtc
bitfinex_chan_id.btcusd = -1;
bitfinex_chan_id.ltcusd = -1;
bitfinex_chan_id.ethusd = -1;
bitfinexWebSocket.onopen = function(){
bitfinexWebSocket.send(JSON.stringify({'event': 'subscribe','channel': 'ticker','pair':'BTCUSD'}));
bitfinexWebSocket.send(JSON.stringify({'event': 'subscribe','pair':'LTCUSD'}));
bitfinexWebSocket.send(JSON.stringify({'event': 'subscribe','pair':'ETHUSD'}));
}
bitfinexWebSocket.onmessage = function(event){
//console.log('---------------------------');
//console.log(event);
data = JSON.parse(event.data);
if (data["event"]=="subscribed"){
if (data["pair"]=="BTCUSD"){
bitfinex_chan_id.btcusd = data["chanId"];
}else if (data["pair"]=="LTCUSD"){
bitfinex_chan_id.ltcusd = data["chanId"];
}else if (data["pair"]=="ETHUSD"){
bitfinex_chan_id.ethusd = data["chanId"];
}
}
if (data.length == 11){
//alert(curDateTime());
$("#cur_time").html(curDateTime());
$("#usd_rat").html(cny_1_usd);
if (data[0] == bitfinex_chan_id.btcusd){
bfx_btc_usd = data[7];
bfx_btc_cny = data[7]*cny_1_usd;
update_gap_profit();
//$("#bitnefix_btc").html(changeTwoDecimal(bitf_btcusd));
}else if (data[0] == bitfinex_chan_id.ltcusd){
bfx_ltc_usd = data[7];
bfx_ltc_cny = data[7]*cny_1_usd;
update_gap_profit();
//$("#bitnefix_ltc").html(changeTwoDecimal(bitf_ltcusd));
}else if (data[0] == bitfinex_chan_id.ethusd){
bfx_eth_usd = parseFloat(data[7]);
bfx_eth_cny = parseFloat(data[7])*cny_1_usd;
update_gap_profit();
//$("#bitnefix_eth").html(changeTwoDecimal(bitf_ethusd));
}
}
}
}
function update_gap_profit(){
$(".bfx_btc_usd").html(changeTwoDecimal(bfx_btc_usd));
$(".bfx_btc_cny").html(changeTwoDecimal(bfx_btc_cny));
$(".bfx_ltc_usd").html(changeTwoDecimal(bfx_ltc_usd));
$(".bfx_ltc_cny").html(changeTwoDecimal(bfx_ltc_cny));
$(".bfx_eth_usd").html(changeTwoDecimal(bfx_eth_usd));
$(".bfx_eth_cny").html(changeTwoDecimal(bfx_eth_cny));
$(".huobi_btc_cny").html(changeTwoDecimal(huobi_btc_cny));
$(".huobi_ltc_cny").html(changeTwoDecimal(huobi_ltc_cny));
$(".huobi_eth_cny").html(changeTwoDecimal(huobi_eth_cny));
$(".ok_btc_cny").html(changeTwoDecimal(ok_btc_cny));
$(".ok_ltc_cny").html(changeTwoDecimal(ok_ltc_cny));
$(".ok_eth_cny").html(changeTwoDecimal(ok_eth_cny));
//火币除以bfx的价格-1
var huobi_bfx_btc_per = 100.0*huobi_btc_cny/bfx_btc_cny-100.0
$(".bfx_huobi_btc_gap").html(changeTwoDecimal(huobi_bfx_btc_per)+"%");
var huobi_bfx_ltc_per = 100.0*huobi_ltc_cny/bfx_ltc_cny-100.0
$(".bfx_huobi_ltc_gap").html(changeTwoDecimal(huobi_bfx_ltc_per)+"%");
var huobi_bfx_eth_per = 100.0*huobi_eth_cny/bfx_eth_cny-100.0
$(".bfx_huobi_eth_gap").html(changeTwoDecimal(huobi_bfx_eth_per)+"%");
var min_1 = Math.min(huobi_bfx_btc_per,huobi_bfx_ltc_per,huobi_bfx_eth_per);
$(".bfx_huobi_btc_profit").html(changeTwoDecimal(huobi_bfx_btc_per-min_1-huobi_bfx_btc_jiaoyi)+"%");
$(".bfx_huobi_ltc_profit").html(changeTwoDecimal(huobi_bfx_ltc_per-min_1-huobi_bfx_ltc_jiaoyi)+"%");
$(".bfx_huobi_eth_profit").html(changeTwoDecimal(huobi_bfx_eth_per-min_1-huobi_bfx_eth_jiaoyi)+"%");
//OK币除以bfx的价格-1
var ok_bfx_btc_per = 100.0*ok_btc_cny/bfx_btc_cny-100.0
$(".bfx_ok_btc_gap").html(changeTwoDecimal(ok_bfx_btc_per)+"%");
var ok_bfx_ltc_per = 100.0*ok_ltc_cny/bfx_ltc_cny-100.0
$(".bfx_ok_ltc_gap").html(changeTwoDecimal(ok_bfx_ltc_per)+"%");
var ok_bfx_eth_per = 100.0*ok_eth_cny/bfx_eth_cny-100.0
$(".bfx_ok_eth_gap").html(changeTwoDecimal(ok_bfx_eth_per)+"%");
var min_2 = Math.min(ok_bfx_btc_per,ok_bfx_ltc_per,ok_bfx_eth_per);
$(".bfx_ok_btc_profit").html(changeTwoDecimal(ok_bfx_btc_per-min_2-ok_bfx_btc_jiaoyi)+"%");
$(".bfx_ok_ltc_profit").html(changeTwoDecimal(ok_bfx_ltc_per-min_2-ok_bfx_ltc_jiaoyi)+"%");
$(".bfx_ok_eth_profit").html(changeTwoDecimal(ok_bfx_eth_per-min_2-ok_bfx_eth_jiaoyi)+"%");
}
function run_loop(){
$.get("http://api.fixer.io/latest?base=USD",function(data){
cny_1_usd = data["rates"]["CNY"];
});
okCoinWebSocket.init();
huobi();
bitfinex();
}
window.onload = run_loop();
</script>
</head>
<body>
<p align="center" id="cur_time"></p>
<p id="usd_rat"></p>
<br/>
<br/>
<table border="1">
<tr>
<th width='100'></th>
<th width='100'>BFXUSD</th>
<th width='100'>BFXCNY</th>
<th width='100'>HUOBI</th>
<th width='100'>GAP</th>
<th width='100'>PROFIT</th>
</tr>
<tr>
<td>btc</td>
<td class="bfx_btc_usd"></td>
<td class="bfx_btc_cny"></td>
<td class="huobi_btc_cny"></td>
<td class="bfx_huobi_btc_gap"></td>
<td class="bfx_huobi_btc_profit"></td>
</tr>
<tr>
<td>ltc</td>
<td class="bfx_ltc_usd"></td>
<td class="bfx_ltc_cny"></td>
<td class="huobi_ltc_cny"></td>
<td class="bfx_huobi_ltc_gap"></td>
<td class="bfx_huobi_ltc_profit"></td>
</tr>
<tr>
<td>eth</td>
<td class="bfx_eth_usd"></td>
<td class="bfx_eth_cny"></td>
<td class="huobi_eth_cny"></td>
<td class="bfx_huobi_eth_gap"></td>
<td class="bfx_huobi_eth_profit"></td>
</tr>
</table>
<br/>
<br/>
<table border="1">
<tr>
<th width='100'></th>
<th width='100'>BFXUSD</th>
<th width='100'>BFXCNY</th>
<th width='100'>OKCOIN</th>
<th width='100'>GAP</th>
<th width='100'>PROFIT</th>
</tr>
<tr>
<td>btc</td>
<td class="bfx_btc_usd"></td>
<td class="bfx_btc_cny"></td>
<td class="ok_btc_cny"></td>
<td class="bfx_ok_btc_gap"></td>
<td class="bfx_ok_btc_profit"></td>
</tr>
<tr>
<td>ltc</td>
<td class="bfx_ltc_usd"></td>
<td class="bfx_ltc_cny"></td>
<td class="ok_ltc_cny"></td>
<td class="bfx_ok_ltc_gap"></td>
<td class="bfx_ok_ltc_profit"></td>
</tr>
<tr>
<td>eth</td>
<td class="bfx_eth_usd"></td>
<td class="bfx_eth_cny"></td>
<td class="ok_eth_cny"></td>
<td class="bfx_ok_eth_gap"></td>
<td class="bfx_ok_eth_profit"></td>
</tr>
</table>
</body>
</html>
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
