初心者が一攫千金を目指してBitcoin自動取引botを作るよ！ その１【情報取得】

働き初めて、はや二年・・・
**「思ったより増えないお金！！」**
**「募る老後への不安！！！」**
そんな中見つけました！！
**[zaif](https://zaif.jp)**というBitcoin取引ができるサイトを。

読んでみると、なんと・・・

 - **取引手数料がマイナス**
 - **API公開**(zaif API)

 　　と書いています！！！

これは、、、
Bitcoinとかよくわからないけど、
手数料マイナスだし、
**Botを作ってひたすら細かく利益を出すトレードをすれば何もしなくても儲かるのでは…！？**

…という浅はかな考えのもと、Bot作りを開始したいと思います☆―(ノﾟДﾟ)八(ﾟДﾟ )ノｲｴ―ｲ

# 準備
環境構築とAPIのインストールを行います。
OSはWindows 7 Home premiumを使ってます。

##１．環境構築
まず、使用する言語を決めます。
[zaifのサイト](https://corp.zaif.jp/api-docs/api_links/)を見ると、

- Java
- JavaScript(node.js)
- Ruby
- PHP
- Golang
- Python

　が言語として使えるらしい。

今回は触ったことのあるpythonで作っていきます。

■入れるもの：

 - [python2.7](https://www.python.org/downloads/)　AWS Lambdaに載せたいので3ではなく2を選択
 - [pycharm](https://www.jetbrains.com/pycharm/)　pythonの開発環境はこれがいいと聞いたので

　以上。少ない・・・

 ※pythonインストール時の注意点
　・「Customize python」でpathを通すを選択する（デフォルトではオフになっている）[[参考]](http://www.pythonweb.jp/install/setup/index1.html)
　![python_ins.png](https://qiita-image-store.s3.amazonaws.com/0/172701/b47dc206-89c3-8f5c-2eb7-e0c3f5f8d89d.png)


##２．APIインストール
[zaifのサイト](https://corp.zaif.jp/api-docs/api_links/)のpythonコーナーをみると、
[zaif APIを簡単に使えるようなライブラリ(非公式)](https://github.com/Akira-Taniguchi/zaifapi)を提供してくれている神がいらっしゃいました!!∑d(ﾟ∀ﾟd)!!
ありがたく使用させて頂きます。

READMEに従い、インストールします。
作業フォルダにインストールしたいので、以下の手順で。
　1. 作業フォルダを作成（私はzaifという名前で作成しました）
　2. コマンドプロンプトを開く
　3. cdコマンドで1.で作成したフォルダへ移動
　4. コマンド`pip install zaifapi -t .`を実行

# 検証
zaif APIを使って動きを確認します。
　1. pycharmを開く
　2. 「open」から先程作成した作業フォルダを開く
　3. 左に表示されているフォルダ一覧から作業フォルダを右クリックし、pythonファイルを作成(私はmainという名前で作成しました)
![Picture1.png](https://qiita-image-store.s3.amazonaws.com/0/172701/2aac5949-5faa-6125-24a3-339620278cca.png)

　4.作成したファイル（main.py）にコードを書いていきます。

## 情報取得（公開情報API）
まず、シンプルに動かしてみます。
何事も最初の１歩が大切ですよね。
現在のBitcoinの値段（日本円換算）を取得してみます。
（下記をコピペして実行する(shift+F10)だけでok）

```python:main.py
# -*- coding: utf-8 -*-

from zaifapi import ZaifPublicApi  # Zaifが公開している認証情報が要らないAPIを実行するクラス
from pprint import pprint  # 表示用(jsonをきれいに表示してくれる)

if __name__ == '__main__':
    zaif = ZaifPublicApi()
    pprint(zaif.last_price('btc_jpy'))
```

う、動いた・・・！ヾ(ﾟωﾟ*)ﾉやったぜ

■実行結果

```
{u'last_price': 118365.0}

Process finished with exit code 0
```
現在の価格は1bitcoin=￥118,365みたいですね。

ちなみに、今回使用したZaifPublicApiには下記メソッドも用意されているみたいです。[[詳細]](https://corp.zaif.jp/api-docs/)

- last_price : 終値
- ticker : ティッカー（集計情報取得）
- trades : 全ての取引履歴
- depth : 板情報
- currency_pairs : trade_history等で利用可能な通貨ペア情報
- currencies : deposit_history等で利用可能な通貨情報

とりあえず、全部動かしてみます。

```python:main.py
# -*- coding: utf-8 -*-

from zaifapi import ZaifPublicApi  # Zaifが公開している認証情報が要らないAPIを実行するクラス
from pprint import pprint  # 表示用(jsonをきれいに表示してくれる)

if __name__ == '__main__':
    zaif = ZaifPublicApi()

    print('---last_price : 終値--')
    pprint(zaif.last_price('btc_jpy'))

    print('---ticker : ティッカー（集計情報取得）--')
    pprint(zaif.ticker('btc_jpy'))

    print('---trades : 全ての取引履歴--')
    print('取得件数：' + str(len(zaif.trades('btc_jpy'))))
    pprint(zaif.trades('btc_jpy'))

    print('---depth : 板情報--')
    print('取得件数[買い]：' + str(len(zaif.depth('btc_jpy')['asks'])))
    print('取得件数[売り]：' + str(len(zaif.depth('btc_jpy')['bids'])))
    pprint(zaif.depth('btc_jpy'))

    print('---currency_pairs : trade_history等で利用可能な通貨ペア情報--')
    pprint(zaif.currency_pairs('btc_jpy'))

    print('---currencies : deposit_history等で利用可能な通貨情報--')
    pprint(zaif.currencies('all'))
```

■実行結果

```console:
---last_price : 終値--
{u'last_price': 118400.0}
```

```console:
---ticker : ティッカー（集計情報取得）--
{u'ask': 118455.0,
 u'bid': 118435.0,
 u'high': 118995.0,
 u'last': 118455.0,
 u'low': 114895.0,
 u'volume': 11032.3017,
 u'vwap': 116852.519}
```

```console:
---trades : 全ての取引履歴--
取得件数：150
[{u'amount': 0.001,
  u'currency_pair': u'btc_jpy',
  u'date': 1490952581,
  u'price': 118455.0,
  u'tid': 41153900,
  u'trade_type': u'ask'},...<略>
```

```console:
---depth : 板情報--
取得件数[買い]：150
取得件数[売り]：150
{u'asks': [[118455.0, 0.0209],...<略>
 u'bids': [[118450.0, 1.7704],...<略>
```

```console:
---currency_pairs : trade_history等で利用可能な通貨ペア情報--
[{u'aux_unit_min': 5.0,
  u'aux_unit_step': 5.0,
  u'currency_pair': u'btc_jpy',
  u'description': u'\u30d3\u30c3\u30c8\u30b3\u30a4\u30f3\u30fb\u65e5\u672c\u5186\u306e\u53d6\u5f15\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059',
  u'event_number': 0,
  u'is_token': False,
  u'item_unit_min': 0.0001,
  u'item_unit_step': 0.0001,
  u'name': u'BTC/JPY',
  u'title': u'BTC/JPY'}]
```

```console:
---currencies : deposit_history等で利用可能な通貨情報--
取得件数：126
[{u'is_token': True, u'name': u'MAGATAMARDFR'},...<略>
```

# おわりに
なるほど、いろいろ取れるんですね。
簡単に作れると思ってたけど、Botづくりって意外と難しいのでは、、、
今回はここまでにして、次回は**認証情報が必要なAPI**を動かしてみます。
ちらっと見た感じ、「注文」とか書いてたのでBotっぽい動きができるのではないかとワクワクしてます。
+　　　+
　　∧＿∧ 　+
　（0ﾟ・∀・）
　（0ﾟ∪ ∪ +
　　と＿_）__）　+

お疲れ様でした！！！

# 更新情報
・2017/4/4：※pythonインストール時の注意点 追記
・2017/4/27：MarkDown記法間違い修正（[alt](http://qiita.com/alt)さんご指摘ありがとうございます。）