websocketを使ってQuoinexのリアルタイムレート取得をしよう

quoinex メインページ

@kapipara180です。

はじめに

今日はにわかに注目を浴びている仮想通貨取引所のQuoinexのwebsocket APIについて書いていきます。
QuoinexのAPIにはv1とv2があり、websocketについてはv2のリファレンスにしか載っていません。このため、websocket APIがあることを知らない人も多いと思います。
QuoinexのAPIには、5分間に300回しかAPIを呼び出してはいけないというルールがあるため、一度接続すればサーバ側からpushしてきてくれるwebsocketは非常にありがたい存在です。

しかし、しかしですよ。なんとこのwebsocketを使用したAPI、一般口座は利用対象外なのです。。
早く使いたくて前のめりに調べたのに、無念。
一般口座は利用できないなんてホームページやリファレンスなど、どこにも記載がありませんがサポートに問い合わせたところ以下の回答がありました。

お問い合わせいただきましたpusher keyにつきましては、現在、一般口座の方への公開は行っておりませんため、
大変、恐縮ではございますが、pusher keyをお伝えできかねますことご容赦くださいませ。

仮想通貨取引所のサービスはどんどん変わっていくものなので、今後の一般開放を期待して、つなぎ方だけメモしておこうと思います。

 

Quoinexのwebsocketサービス

大体の取引所はwebsocketを自前で開発しているか、あるいはユーザから取引所が使用しているバックサービスを公開しないところがほとんどですが、Quoinexは公表しています。
何なら「利用方法についてはサービス見てね!」とまで書いてあります。笑

quoinexのAPI利用ルール②

https://developers.quoine.com/v2#websocket

では、Quoinexが利用しているwebsocket配信のサービスを見ていきましょう。
APIリファレンスのリンクへ進むと「Pusher」というサービスにつながります。これがQuoinexが利用しているwebsocket配信サービスです。

 

websocketのASP Pusherのサービス内容

Pusherはwebsocket配信を簡単に利用できるASPサービスです。
配信側も受信側もお手軽ににwebsocketを利用することができます。
ちなみに、ここまで読んで、そもそもwebsocketとは…と思った人はこちらをご覧ください。非常によくまとまっている良記事です。

pusher

https://pusher.com/channels

配信する側は内容をPusherのREST APIを使って配信する内容を送信するだけでよく、受ける側はPusherサーバに対して接続し、対象を一意なキーを使って指定すればよいという仕組みになっています。
REST APIで送信するだけなので、スマホでもPCでも簡単にできますし、受信側は色々なサービスがPusherから配信されれば、プログラムを流用できて嬉しいですよね。

 

Quoinexへの期待

前述したとおり、Pusherは対象のサービスを特定するためのキーが必要なのですが、このキー(PUSHER KEY)をQuoinexが教えてくれないため、今は接続することができない状態です。予想ですが、PusherはASPサービスなので、同時接続数が限られていて、増やそうとすると維持費が高くなるのではないかと考えています。Quoinexが今後PUSHER KEYを一般公開してくれることを切に願います。切に。

 

PUSHERから配信を受けるには

キーが一般公開される日を待ちつつ、pythonで配信を受けるにはどうやればいいかを備忘がてら書いていきたいと思います。

pusherについての日本語記事があまりないですし、受信方法についての記事はほとんどないため、とっつきにくく感じますが、よくよく見てると意外と簡単です。
Pusherは各言語に対応したlibraryがオフィシャル、コミュニティ合わせるとほとんどの言語に対応しています。下記ページ参照。

この中に、ちゃんとpython向けのlibraryがあるので、実装は簡単です。
サンプルソースが載っているので、「appkey」の部分をQuoinexのPUSHER KEYにすれば簡単に受信できますね。キーが一般公開されたら疎通確認して、コードを載せたいと思います。

 

サンプルソース

キーの公開待ち

 

以上となります。ちなみに、この記事で紹介したQuoinexで使える自動売買BOTをnoteで公開していますので、よかったら見ていってください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です