ZaifのAPIを使ってPythonでチッカーを作る方法

皆さんこんにちは。

前回はbitFlyerのAPIを使いビットコイン価格のチッカーを作りました。

参考記事 : bitFlyerのAPIを使ってPythonでチッカーを作る方法

今回はZaif取引所のAPIを使ってチッカーを作ります。

前回と同じく使用するプログラミング言語はPythonです。

Pythonのインストールについてはこちらの記事をご覧ください。

参考記事 : http://104ch.webcrow.jp/2017/07/18/post-353/

下準備

まずAPIを利用するにはZaifに登録する必要があります。

登録ですが本人確認書類を提出してから本人限定郵便が送られてきます。

その本人限定郵便が届くまでにはだいたい3日~5日くらいかかります。

私の場合は3日くらいで届きました。

なので本人確認書類を提出してからしばらく待っていてください。

本人限定郵便を受け取り、識別コードを入力するとAPIが利用可能になります。

ただ一部のAPIに関しては本人確認なしでも利用可能かもしれません。

本人確認ができれば全てのAPIの使用が可能になります。

チッカーの作成

では早速チッカーを作成していきます。

チッカーを作成するにはビットコインの価格が分からなくてはいけません。

それを知るには現物公開APIというものを使用します。

Zaifのトップ画面を一番下までスクロールしてください。

一番下にAPIという項目があるのでそれをクリックし、APIページを開きます。

すると次のようなZaifAPIドキュメントというページが開きます。

そこに『現物公開API』というリンクがあるのでクリックして開きます。

開いたらまず『共通情報』の項目を開いてみてください。

そこにはリクエストを送るための基本情報が書かれています。

公式ドキュメントでは

エンドポイント:https://api.zaif.jp/api/1
メソッド:GET
戻り値 : JSON形式

となっています。

エンドポイントとはAPIにアクセスするための起点になるURLのことです。

そしてメソッドはどのようにデータを送受信するかの方法(プロトコル)を表します。

では次にチッカーに必要なAPIがどれなのか探しに行きます。

現物公開APIのページに『個別情報』という項目があると思います。

その中の『ticker』がチッカーを作るために必要なAPIです。

その中を見ると次のように書かれています。

リクエスト
/ticker/{currency_pair}

currency_pairに指定できる値は currency_pairs を参照してください。

先ほどのエンドポイントに[/ticker/通貨ペア]を追加してリクエストURLを作ります。

通貨ペアはビットコインと日本円のペアならBTC_JPYのように表現します。

そして通貨の名前はビットコインならBTCなど略称で表現します。

仮想通貨の略称については次のページが参考になるかもしれません。

参考URL : 各仮想通貨の略称まとめ

では一通りチッカーの作り方が分かったので実際にチッカーを作ってみます。

まず送信するURLやメソッドを次のように定義します。

method = "GET"
path = "/ticker/btc_jpy"
url = "https://api.zaif.jp/api/1" + path

そしてリクエストを送るにはurllibというライブラリを利用します。

urllibのRequestオブジェクトを生成するのですが書式はこうです。

urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

今回はurlとmethodのみに引数を取らせます。

そして次が実際のチッカーのコードです。

import urllib

method = "GET"
path = "/ticker/btc_jpy"
url = "https://api.zaif.jp/api/1" + path

while True:
    request = urllib.request.Request(url, method=method)
    with urllib.request.urlopen(request) as response:
        print(response.read().decode("utf-8"))

while文でリクエストを受信するごとにチッカーを更新しています。

出力結果ですが、コンソールには次のようなデータが表示される思います。

{
    "last": 646910.0,
    "high": 662080.0, 
    "low": 638700.0, 
    "vwap": 649912.7836,
    "volume": 10116.574, 
    "bid": 646915.0, 
    "ask": 646985.0
}

lastが終値でvolumeが過去24時間の出来高です。

ただ、これでもチッカーとしては機能していますが少し見ずらいです。

そこでこのチッカーを少し改良します。



チッカーの改良

チッカーはJSON形式のデータを返してきます。

このJSON形式のデータを解析して整形して表示してみましょう。

そこで先ほどのコードの最後を次のように書き換えました。

while True:
    request = urllib.request.Request(url, method=method)
    with urllib.request.urlopen(request) as response:
        jsonDict = json.loads(response.read().decode("utf-8"))
        print("時刻 :", datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
        print("価格 : %s円" % format(jsonDict['last']))
        print("\n")

jsonを解析してlast(終値)だけ取り出すようにしました。

これで次のように少しは見やすくなったと思います。

ただ単に現在時刻と終値を表示し続けるだけのチッカーです。

まとめ

今回はZaifのAPIの使用例としてビットコイン価格のチッカーを作ってみました。

もちろんAPIを使えば自動取引システムを作ることも可能です。

しかしそれには機械学習の知識が必要になってきます。

自分が何をしたいかに応じて情報を取捨選択していってください。

もしこの記事で分からないことがあれば分かる範囲で答えます。

では、また。

取引所比較エリアの出力関数
国内の仮想通貨取引所の比較
Zaifスプレッド(取引手数料)が低いのが特徴です。また他の取引所では買えないペペキャッシュやXCPなどのトークンも多く扱っているのでトークン購入ならここがおススメです。

取扱い主要通貨 : ビットコイン, イーサリアム, ネム, モナコイン, 各種トークン

この記事をシェアする

フォローする