環境
- MacOS Sierra 10.12.6
- Python 3.5.3 :: Anaconda 4.4.0 (x86_64)
- Jupyter 4.3.0
背景
- Zaif取引所は、ビットコインだけでなく、NEM、Monacoinなど、ここでしか日本円とペアで売買できない仮想通貨のある貴重な仮想通貨取引所である。
- Zaif取引所は、ビットコイン関連の(主にネガティブな)ニュースが報じられた際などに取引量が急増すると、Webサイトが非常に重くなり、取引どころかログインすることすらできなくなることがある。
問題
- サーバへの過負荷やDDoS攻撃などが原因でZaif取引所のWebサイトにログインできない状態になると、Webサイトから仮想通貨の売買を行うことができなくなる。
解決
- Zaif取引所は、売買価格情報の取得や取引を行うことができるAPIを公開しており、Webサイトが重くなっていてもAPIは生き残っていることが多い。そのため、APIを使うことで、Webサイトにログインできなくても仮想通貨を売買することができる。
- 売買はその時の値動きを確認しながら行う必要がある。Webサイトにログインすることなく値動きを確認する方法についてはこちらの手順を参照:Zaif取引所のAPIで仮想通貨の売買価格を取得しチャートを作成する(この手順により生成したチャートはこちら)
事前準備
- APIによる仮想通貨の売買を行うためには、事前に取引用のAPI key及びAPI secretを取得しておく必要がある。これは、Zaif取引所にログインし、[アカウント] > [開発者向けAPI] > [API keys]設定画面から取得することができる。なお、API keyには必要最低限の権限のみ与えることが安全面から推奨される(今回は、「info」と「trade」が必要)。また、取得したAPI key及びAPI secretは、絶対に他人に公開してはいけない。
手順
ZaifAPIを利用し、シンプルに手動で仮想通貨の売買を行う。
- zaifapiモジュールをインポート
from zaifapi import ZaifPublicApi, ZaifTradeApi
- 指値で買う(リミット売りを設定)
key = "****************************" #API keyを入力
secret = "****************************" #API secretを入力
zaif = ZaifTradeApi(key, secret)
price = 23 #売買を行う価格を設定(ここでは23円で買う)
amount = 1000 #売買を行う量を設定(ここでは1000XEM買う)
limit = 28 #リミット売りする価格を設定(ここでは28円で売る)
currency_pair = "xem_jpy" #売買を行う通貨ペアを設定(ここではNEMを日本円で買う)
action = "bid" #買いか売りかを設定(ここでは買いを設定)
#売買を実行
zaif.trade(currency_pair=currency_pair, action=action, price=price, amount=amount, limit=limit)
- 指値で売る(リミット買いを設定)
key = "****************************" #API keyを入力
secret = "****************************" #API secretを入力
zaif = ZaifTradeApi(key, secret)
price = 28 #売買を行う価格を設定(ここでは28円で売る)
amount = 1000 #売買を行う量を設定(ここでは1000XEM売る)
limit = 23 #リミット売りする価格を設定(ここでは23円で買う)
currency_pair = "xem_jpy" #売買を行う通貨ペアを設定(ここではNEMを日本円で買う)
action = "ask" #買いか売りかを設定(ここでは売りを設定)
#売買を実行
zaif.trade(currency_pair=currency_pair, action=action, price=price, amount=amount, limit=limit)
まとめ
- APIを利用して仮想通貨の売買を行えると、取引所のWebサイトにログインできない状況でもAPIさえ動いている状況であれば売買を行うことができるため、買い時、売り時を逃さず取引することができる。特に、Webサイトが過負荷になるような状況は相場の動きが激しい場合に発生することが多いため、APIで売買できるよう準備しておくことは重要である。