2020-08-17

【仮想通貨BOT】BitMEXのRealtime APIに自作コードで接続

BitMEXのサンプルプログラムに依存せず自作のコードで接続してみよう。

Article Image

BitMEXのRealtime API

日本からトレード出来ない今だからこそBitMEXのRealtime APIに接続してみる。

公式がNode.jsのサンプルプログラムを用意しており実行するだけでデータが取得できるが

こちらのコードが上級すぎてそこからBOTを製作しようとすると結局コード読みの時間が必要になる。

それならば勉強も兼ねて最初から自分でコーディングしてみるのも良いのでは、というのが今回の記事のアイデア。

ws

Node.jsWebsocketクライアント。

こちらはBitMEXのサンプルプログラムで利用されているので同様のものを使用することにした。

ws - npm

インストール方法

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)だがサンプルプログラムにある記述なのでそのまま残してある。

サンプルコードから読み取ると

  • open
  • close
  • message
  • error
  • unexpected-response

の種類のイベントが有る模様。

この.onのようなコードを使い、イベントが発生するたびに中のコードが実行されるプログラムを「イベント駆動型プログラミング」と呼ぶ。

イベント駆動型プログラミング - Wikipedia

以上

本日はこれだけ。

できるだけ簡単にまとめて連続して記事にしたい。



この記事のタグ

この記事をシェア


謎の技術研究部 (謎技研)