APIでリアルタイムデータを受信」2018年4月27日bitFlyerの公式ツイッターアカウントが以下の新機能を発表しました。自社開発いたしました。本サイトの過去の記事で「APIを使って注文を出すと、受け付けられるまでに時間がかかるときがある」のを説明したのを覚えているでしょうか。Lightnigngの画面から注文をしたほうがいいと説明しました。API」という名前の、低遅延のAPIをbitFlyerが自社開発してリリースしてくれました。低遅延というだけあって、もしかしてAPIでサクサク注文できるようになった?マニュアルを見に行きましょう。Lightningのメニューボタンをクリックします。「API」をクリックします。「APIドキュメント」をクリックします。APIの説明が表示されます。APIは、リアルタイムデータ配信の受信のみができ、注文はできないようです。APIを使って配信データを受信してみます。2.0」、「PubNub(廃止検討中)」の3つから選べます。Playground」をクリックすると、Playgroundが開いて、ブラウザ上でリアルタイムデータ配信を試せます。2.0はWebSocketという通信手段の種類の1つです。前回記事まではHTTPとう通信手段を用いていました。WebSocketとHTTPの違いについて簡単に説明しておきます。HTTPはクライアントの識別情報をメッセージに付与して送信し、受信したサーバーはクライアントの識別情報をもとにコネクションを確立したあとクライアントにデータを返信します。クライアントから要求がある度に毎回コネクションを確立するのに時間がもったいないと思った人、ナイス直感です。WebSocketは一度コネクションを確立すると、それを使ってクライアントとサーバーが双方向でやりとりします。毎回コネクションを確立する必要がないので、サーバーと何度もやりとりするときはHTTPよりも返信がスムーズになります。サーバーの処理負荷も軽くなるも嬉しい感じです。ちなみに、ソケットという単語は「電球の受け口」や「コンセント」という意味です。WebSocketはサーバーに挿して固定するようなイメージです。Lightningからリアルタイムデータを受信してみましょう。テスト環境は前回記事のをそのまま継続して使うので、実際に試してみる人は前回までの記事を読んでテスト環境を構築しておいて下さい。前回のソースコードをとっておきたい人はコピーしてoldフォルダに入れておきましょう。プロンプト」をクリックしてコマンドプロンプトを起動します。C:\apiを入力してEnterキーを押します。これでapiフォルダに移動しました。socket.ioを入力してEnterキーを押します。これでソケットを使うためのsocket.ioモジュールをインストールしました。server.jsを以下のコードに変更します。function(){console.log('サーバー起動');});client.ejsを以下のコードに変更します。server.jsを入力してEnterキーを押します。「サーバー起動」と表示されれば起動OKです。́▽`)ノブラウザを開いてアドレスバーにhttp://127.0.0.1:1234/を入力してEnterキーを押します。ブラウザに「受信開始」ボタンが表示されるので押します。ボタンの下に「中央価格:◯◯円」が表示され、価格が変化し続ければ成功です。ソースコードの内容を説明します。このソースコードは2つのソケット接続を利用しています。1つ目はclient.ejsとserver.jsとのソケット接続。2つめはserver.jsとbitFlyerとのソケット接続です。ソケット接続したあとはserver.jsからbitFlyerに板情報のリアルタイムデータ配信を1回だけ要求し、その後はbitFlyerから板情報が定周期で送信されてきます。server.jsは板情報を受信したら、client.ejsに受信したデータをそのまま送信しています。clinet.ejsは受信したデータから中央価格を取り出して画面に表示しています。APIを使うと、板情報の要求を何度も送信しなくていいのもbitFlyerのサーバーの負荷が軽くなって良さそうです。APIの使い方を説明しました。Lightningで取引するトレーダー全員に好影響を及ぼすことが期待できます。APIで注文送信ができるようになると、APIトレーダーのデイトレードが力を発揮するので、今のうちにAPIに慣れてアイディアを練っておくのもありです。取引の軽量化については何ら影響ありません。公開取引のAPIを細かく大量に叩く人がいるからです。AM情報ありがとうございます!確かに通常は受注用と配信用でサーバーを分けるので、配信用のみソケットにしても影響は小さそうですね。電文の飛び交う量が減ることで、少しでも好影響を期待したいところですが、遅延改善といえるのはまだ先になりそうです。PMnode.js初心者です。わかりやすくて、すぐに最後まで来れました!ありがとうございます。apiから取り出せるbitflyerの4本値を使って、逆指値を設定したりしてみたいのですが、記事にして頂けませんでしょうか?例)1本前の1時間足の安値をSTOPに設定して、IFDOCO買い注文など出来ればうれしいです。PMどういたしましてご要望ありがとうございます。記事なるとは限りませんが、課題一覧に追記しておきました。自分で作ってみてうまくいったときはソースを提供してもらえると助かります。AMこのシリーズで今後何を調べるべきかなどのとっかかりがつかめました。本当にありがとうございます。GOODな記事でした。PMどういたしまして参考になれて良かったです。コメントをキャンセル会員登録(無料)すると、承認無しでコメントでき、コメントに画像を付けたり、コメントに付いている画像を見れるようになります。