日本からトレード出来ない今だからこそBitMEXのRealtime APIに接続してみる。
公式がNode.jsのサンプルプログラムを用意しており実行するだけでデータが取得できるが
こちらのコードが上級すぎてそこからBOTを製作しようとすると結局コード読みの時間が必要になる。
それならば勉強も兼ねて最初から自分でコーディングしてみるのも良いのでは、というのが今回の記事のアイデア。
Node.jsのWebsocketクライアント。
こちらはBitMEXのサンプルプログラムで利用されているので同様のものを使用することにした。
npm install wsES6に準拠するので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のようなコードを使い、イベントが発生するたびに中のコードが実行されるプログラムを「イベント駆動型プログラミング」と呼ぶ。
本日はこれだけ。
できるだけ簡単にまとめて連続して記事にしたい。
