Slide 1

Slide 1 text

Pythonで簡単に仮想通貨の 取引ができるようにしてみた

Slide 2

Slide 2 text

自己紹介 名前:谷口 英 @horobi_genger

Slide 3

Slide 3 text

所属:テックビューロ Zaif   仮想通貨取引所 Zaica 仮想通貨・トークン発行支援サービス mijin  プライベートブロックチェーンプラットホーム Fintech

Slide 4

Slide 4 text

所属:テックビューロ Fintech

Slide 5

Slide 5 text

仮想通貨とは? 特定の国家による価値の保証 を持たない通貨のこと。 @wikipedia

Slide 6

Slide 6 text

メリット 国に依存しない 管理コストが安い

Slide 7

Slide 7 text

Zaif(仮想通貨取引所)

Slide 8

Slide 8 text

APIが公開されている

Slide 9

Slide 9 text

本題 Pythonで簡単に仮想通貨の 取引をする方法

Slide 10

Slide 10 text

1.Zaifアカウント作成 2.キー生成 3.環境構築 4.実行

Slide 11

Slide 11 text

1.Zaifアカウント作成

Slide 12

Slide 12 text

2.キー生成

Slide 13

Slide 13 text

3.環境構築 pyvenv(virtualenv) zaif source zaif/bin/activate pip install zaifapi

Slide 14

Slide 14 text

4.実行 >>from zaifapi.impl import ZaifPublicApi, ZaifPrivateApi >>#ビットコインと日本円の終値を取得 >>zaif = ZaifPublicApi() >>print(zaif.last_price('btc_jpy')) {'last_price': 58370.0} >>#残高などのアカウント情報を取得 >>zaif = ZaifPrivateApi(key, secret) >>print(zaif.get_info()) {'funds': {'jpy': 1.321, 'btc': 0.1635, 'mona': 0.0, 'xem': 0.0}, 'server_time': 1472393161, 'open_orders': 0, 'rights': {'trade': 1, 'withdraw': 1, 'info': 1}, 'deposit': {'jpy': 1.321, 'btc': 0.1635, 'mona': 0.0, 'xem': 0.0}, 'trade_count': 0}

Slide 15

Slide 15 text

requestsって便利 import requests #getの場合 response = requests.get(self.__API_URL.format(func_name, currency_pair)) if response.status_code != 200: raise Exception('return status code is {}'.format(response.status_code)) res = json.loads(response.text) return res #postの場合 response = requests.post(self.__API_URL, data=params, headers=header) if response.status_code != 200: raise Exception('return status code is {}'.format(response.status_code)) res = json.loads(response.text) return res

Slide 16

Slide 16 text

cerberusって便利 import cerberus param = { 'from_num': 10, 'currency_pair': 'btc_jpy' } SCHEMA = { 'from_num': { 'type': 'integer' }, 'currency_pair': { 'type': 'string', 'allowed': ['btc_jpy', 'xem_jpy', 'mona_jpy', 'mona_btc'] } } v = cerberus.Validator(SCHEMA) if v.validate(param) is False raise Exception()

Slide 17

Slide 17 text

http://qiita.com/Akira-Taniguchi/items/e52930c881adc6ecfe07

Slide 18

Slide 18 text

https://github.com/Akira-Taniguchi/zaifapi