BIZ

BitfinexとBitmexの板と約定履歴をwebsocketで取得する

node.jsを使ってます。

Bitfinex

const ws = require('ws')
const w = new ws('wss://api.bitfinex.com/ws/2')
w.on('message', msg => console.log(msg))
let msg = JSON.stringify({
event: 'subscribe',
channel: 'trades',
symbol: 'tBTCUSD'
})
w.on('open', () => w.send(msg))

Bitmex

const ws = require('ws')
const w = new ws('wss://www.bitmex.com/realtime?subscribe=trade:XBTUSD')
w.on('message', msg => console.log(msg))

大体こんな感じでとれた。とりあえずBitmexの板情報をとってるんだけど、価格がJSONに入ってなくて、なんでだろうなーと思ってたら、下記に価格の計算方法が書いてあった。ビットフライヤーと全然仕組みが違う。

https://www.bitmex.com/app/restAPIwww.bitmex.com

ちなみに、約定履歴が、tradeで、板は、orderBookL2のようです。trade:XBTUSDとかやると、ビットコインの約定履歴とれる。約定履歴と板をwebsocketで取りたい場合は、node.jsだと下記みたいにすると取れる。

const ws = require('ws');
const w = new ws('wss://www.bitmex.com/realtime');
w.on('message', msg => onMessage(msg));
const msg = JSON.stringify({
op: 'subscribe',
args: ['trade:XBTUSD', 'orderBookL2:XBTUSD']
});
w.on('open', () => w.send(msg))
const onMessage = msg => {
const data = JSON.parse(msg);
switch(data.table) {
case 'trade': {
_executions(data);
break;
}
case 'orderBookL2': {
_board(data);
break;
}
}
}