日本からトレード出来ない今だからこそBitMEXのRealtime APIに接続してみる。
公式がNode.js
のサンプルプログラムを用意しており実行するだけでデータが取得できるが
こちらのコードが上級すぎてそこからBOTを製作しようとすると結局コード読みの時間が必要になる。
それならば勉強も兼ねて最初から自分でコーディングしてみるのも良いのでは、というのが今回の記事のアイデア。
Node.js
のWebsocket
クライアント。
こちらはBitMEXのサンプルプログラムで利用されているので同様のものを使用することにした。
npm install ws
ES6に準拠するのでimport
文を使う。
ファイル名をindex.mjs
(拡張子mjs
でないとダメ)にして実行
次を貼り付けて実行してみる
import ws from 'ws'
const socket = new ws('wss://www.bitmex.com/realtime')
socket.on('open', () => {
console.log("Connected.")
})
socket.on('message', (data, flags) => {
console.log(`message: ${data}, ${flags}`)
});
socket.on('close', (code) => {
console.log(code)
})
socket.on('error', (e) => {
console.log(e)
})
socket.on('unexpected-response', (request, response) => {
console.log(`unexpected-response: ${request}, ${response}`)
})
Connected.
message: {"info":"Welcome to the BitMEX Realtime API.","version":"2020-08-11T22:14:14.000Z","timestamp":"2020-08-14T06:32:14.120Z","docs":"https://www.bitmex.com/app/wsAPI","limit":{"remaining":37}}, undefined
このようなのが表示されたら成功
コードが短いので簡単に解説
import ws from 'ws'
const socket = new ws('wss://www.bitmex.com/realtime')
ws
に関してはたったこれだけで良い。
1行目でインポート。2行目で接続。
クライアントとして接続する場合は2行目のコードのURL
を変えればいろいろなサーバーに接続できる。
socket.on('message', (data, flags) => {
console.log(`message: ${data}, ${flags}`)
});
この.on
で送られてくるメッセージを受け取る。
このコードではmessage
というメッセージを受け取った時に次のconsole.log
が実行される。
またその時に付随するデータがdata
, flags
に入ってくる。
これはサーバーに寄ってい違うので仕様を読んで入れる。
今回はどこに仕様があるかわからなかったのでサンプルプログラムから拝借した。
※flag
には基本何も入ってこない(undefined
)だがサンプルプログラムにある記述なのでそのまま残してある。
サンプルコードから読み取ると
の種類のイベントが有る模様。
この.on
のようなコードを使い、イベントが発生するたびに中のコードが実行されるプログラムを「イベント駆動型プログラミング」と呼ぶ。
本日はこれだけ。
できるだけ簡単にまとめて連続して記事にしたい。