今回はcoincheckのAPIを使ってビットコインを購入するスクリプト(python)を作ってみます。
cronと組み合わせれば定期購入もできそうです。実行環境はLinux(CentOS 7)です。
取引用のAPIキーを作成
APIを利用して取引を操作するにはAPIキーを作成する必要があるため先にやっておきます。coincheckにログイン後、設定からAPIキーを選択して下方の「新たにAPIキーを追加する」を選択しAPIキーを作成します。
許可する操作を選択できますので、必要なものにチェックを入れましょう。
ソースコード
取引用のAPIキーが用意できたので、下記のドキュメントを参考にスクリプトを作成していきます。
10000円分のビットコインを成り行きで購入するスクリプトです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# -*- coding: utf-8 -*- import sys import json import requests import time import hmac import hashlib class ccapi: def __init__(self, key, key_secret, endpoint): self.key = key self.key_secret = key_secret self.endpoint = endpoint def get(self, path): nonce = str(int(time.time())) text = nonce + self.endpoint + path signature = hmac.new( bytes(self.key_secret.encode('ascii')), bytes(text.encode('ascii')), hashlib.sha256).hexdigest() return requests.get( self.endpoint + path , headers = self.__get_header(self.key, nonce, signature)) def post(self, path, payload): payload = json.dumps(payload) nonce = str(int(time.time())) text = nonce + self.endpoint + path + payload signature = hmac.new( bytes(self.key_secret.encode('ascii')), bytes(text.encode('ascii')), hashlib.sha256).hexdigest() return requests.post( self.endpoint+path, data = payload, headers = self.__get_header(self.key, nonce, signature)) def delete(self,path): nonce = str(int(time.time())) text = nonce + self.endpoint + path signature = hmac.new( bytes(self.key_secret.encode('ascii')), bytes(text.encode('ascii')), hashlib.sha256).hexdigest() return requests.delete( self.endpoint+path, headers = self.__get_header(self.key, nonce, signature)) def __get_header(self, key, nonce, signature): headers = { 'ACCESS-KEY': key, 'ACCESS-NONCE': nonce, 'ACCESS-SIGNATURE': signature, 'Content-Type': 'application/json' } return headers if __name__ == '__main__': argv = sys.argv argc = len(argv) if (argc != 3): print('usage: python %s <key> <secret key>' % argv[0]) quit() key = argv[1] key_secret = argv[2] endpoint = 'https://coincheck.com' cc = ccapi(key,key_secret,endpoint) # 販売レートの確認(特に意味は無い) salerate = '/api/rate/btc_jpy' rate = cc.get(salerate).json() print('BTC-JPY : \%s' % rate['rate']) # \10000分の成り行き買い注文 order = '/api/exchange/orders' payload = { "pair": "btc_jpy", "order_type": "market_buy", "market_buy_amount": 10000, } result = cc.post(order, payload).json() print(result) # 注文キャンセル #order = '/api/exchange/orders/[id]' #result = cc.delete(order) #print(result) |
1 |
実行結果
恐る恐る実行してみるとリクエストは成功した模様。早速、coincheckにログインして結果を確認します。
1 2 3 4 |
$ python3 ccauto.py 'アクセスキー' 'シークレットアクセスキー' BTC-JPY : \414875.0 {'stop_loss_rate': None, 'id': xxxxxxxx, 'rate': None, 'amount': None, 'pair': 'btc_jpy', 'order_type': 'market_buy', 'market_buy_amount': '10000.0', 'success': True, 'created_at': '2017-09-22T05:53:30.127Z'} |
スマホアプリで取引履歴と残高を確認。
キッチリ10000円分の購入が出来ていました。(一安心)
cronと組み合わせて定期購入
ビットコインが欲しいけど価格変動のリスクは抑えたい…
そんな時に頼りになるのがドル・コスト平均での定期購入(積立)ですね。
cronと組み合わせれば簡単に実現できます。
まぁ自分で作らずとも他社の取引所には仮想通貨の積立サービスはあったりしますが趣味の世界なのでDon’t care。
まとめ
実際にやってみると、驚くほど簡単にビットコインの購入が出来ることが分かります。(もちろん売却も)
入力する桁を間違えたりすると大変なことになってしまうのでチェック機能はキチンと作りたいですね。