初心者が一攫千金を目指してBitcoin自動取引botを作るよ! その1の続きになります。
今回は認証情報が必要なAPIを動かして、実際に取引したいと思います✧+(0゚・∀・) + wktk✧
早速動きを検証していきます。
検証
認証情報が必要なAPI:ZaifPrivateApiを動かしてみます。
今回は情報取得(get_info())と取引(trade())を検証しました。
0.準備
このAPIはkeyとsecretという2つのキーが必要なので、**zaif**にて作成します。
0. zaifへ新規ユーザ登録を行い、ログインする
1. 右上のアカウントを選択
4. 登録したメールアドレスに6桁のコードが送られてくるので、それを入力する
5.Keyの名前を入力し、キーに紐付ける権限を選択する(info,tradeを紐付けます)
6. createを押し、キーを生成する
7. KeysのKey,secretをそれぞれコピーし、控えておく
1.情報取得
0.準備で作成したKey,secretを使用して取引の情報を取得します。
# -*- coding: utf-8 -*-
from zaifapi import ZaifPrivateApi # Zaifが公開している認証情報が必要なAPIを実行するクラス
from pprint import pprint # 表示用(jsonをきれいに表示してくれる)
if __name__ == '__main__':
key = '【準備で作成したKey】'
secret = '【準備で作成したsecret】'
zaif = ZaifPrivateApi(key, secret)
pprint(zaif.get_info())
■実行結果
{u'deposit': {u'btc': 0.0, u'jpy': 0.0, u'mona': 0.0, u'xem': 0.0},
u'funds': {u'btc': 0.0, u'jpy': 0.0, u'mona': 0.0, u'xem': 0.0},
u'open_orders': 0,
u'rights': {u'info': 1, u'personal_info': 0, u'trade': 0, u'withdraw': 0},
u'server_time': 1491068366,
u'trade_count': 0}
保証金(deposit)、資金(funds)、注文数(open_orders)、権限情報(rights)、トレード回数(trade_count)が取得できました。
トレード回数を取得しない軽量版のget_info2()も用意されているようです。
2.取引(trade)
さて、ウォーミングアップが終わったところで、本日のメインディッシュ「取引」です。
取引テスト用に¥1,000ほど入れてみます。
「日本円入出金」メニューにはクレジットカード決済がなかったので、
クレジットカードでビットコインを購入から直接Bitcoinを購入します。
必要情報を入力して購入。
無事買えました!ヾ(o´∀`o)ノ
・・・ん?
手数料で7.6%ほど取られたもよう…(´・ω・`)
最低金額での購入だから、きっと相対的に手数料が高いんだよね・・・
気を取り直して取引(trade)の検証へ(`・ω・´)
2-1.取引(trade:Bitcoinの売却)
ドキュメントさん曰く、currency_pair、action、price、amountを渡してやればいいっぽい。
きちんと順番をあわせ、各値をセットする。
保有しているBitcoin(0.0076btc)をすべて売りに。
売却金額は現在のBitcoin金額の¥121,800を指定します。
・・・何やら怒られている。引数がおかしいと。
TypeError: trade() takes exactly 1 argument (5 given)
コンソールのエラーを確認すると、1つしか入らないのに、5個渡していると言われています。
(ドキュメントに4つのパラメータは必須って書いてあるやん。渡してるの4つだし。。。)
ぐぐると先人の方が解決してくださってました。(ありがとうございます。とても助かりました。)
どうやらパラメータの指定の仕方が悪かったみたいです。
# -*- coding: utf-8 -*-
from zaifapi import ZaifPrivateApi # Zaifが公開している認証情報が必要なAPIを実行するクラス
from pprint import pprint # 表示用(jsonをきれいに表示してくれる)
if __name__ == '__main__':
key = '【準備で作成したKey】'
secret = '【準備で作成したsecret】'
zaif = ZaifPrivateApi(key, secret)
# Bitcoinを売る
pprint(zaif.trade(currency_pair="btc_jpy", action="ask", price=121800, amount=0.0076))
■実行結果
{u'funds': {u'btc': 0.0, u'jpy': 925.946, u'mona': 0.0, u'xem': 0.0},
u'order_id': 0,
u'received': 925.946,
u'remains': 0.0}
動いた~ヾ(゚ω゚*)ノ
btcが0になって、jpyが増えているので、成功です。
2-2.取引(trade:Bitcoinの買付)
Bitcoinの売却ができたので、同じようにBitcoinの買付もやってみます。
保有している日本円(¥925.946)で買えるだけBitcoinを買います。
買い付け量は所持金(¥925)÷ 現在の1bitcoinの価格(¥122,210)で求めます。
# -*- coding: utf-8 -*-
from zaifapi import ZaifPrivateApi # Zaifが公開している認証情報が必要なAPIを実行するクラス
from pprint import pprint # 表示用(jsonをきれいに表示してくれる)
if __name__ == '__main__':
key = '【準備で作成したKey】'
secret = '【準備で作成したsecret】'
zaif = ZaifPrivateApi(key, secret)
# 現在の1Bitcoinの価格
price = 122210
# APIが小数点以下4桁までの対応なのでround()
# 小数点第5位が繰り上げの場合、資産不足になるため(- 0.0001)
amount = round(925.0/price, 4) - 0.0001
# Bitcoinを買う
pprint(zaif.trade(currency_pair="btc_jpy", action="bid", price=price, amount=amount))
■実行結果
{u'funds': {u'btc': 0.0075, u'jpy': 9.4085, u'mona': 0.0, u'xem': 0.0},
u'order_id': 0,
u'received': 0.0075,
u'remains': 0.0}
Bitcoinを0.0075買い付けましたヾ(゚ω゚*)ノ
日本円が¥9.4085残ってしまいましたが、最小単位の0.0001Bitcoin分(¥12.221)以下は仕様上仕方がないみたいです。
2-3.ZaifPrivateApiのその他メソッドについて
今回、検証したget_info(),get_info2(),trade()以外にも以下のメソッドが用意されています。[詳細]
- get_personal_info : チャットに使用されるニックネームや画像URLを取得する
- get_id_info : ユーザーIDやメールアドレスといった個人情報を取得する
- trade_history : 取引履歴を取得する
- active_orders : 現在有効な注文一覧を取得する
- cancel_order : 注文を取り消す
- withdraw : 暗号通貨の出金リクエストを行う
- deposit_history : 入金履歴を取得する
- withdraw_history : 出金履歴を取得する
おわりに
今回は取引情報の取得と取引を行うことができました!ヽ(´∀`)八(´∀`)ノ
途中つまづきましたが、無事動いて良かったです。
情報の取得と取引の検証が完了したので、
次回は今回検証した内容を組み合わせて「情報の取得▶売る/買う▶最初に戻る」を繰り返して、
勝手に取引してくれるものを作成したいと思います。
**ついにBotと呼べるものが出来上がるのでは・・・!!**と期待しています。
お疲れ様でした!!