Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

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

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

  と書いています!!!

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

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

準備

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

1.環境構築

まず、使用する言語を決めます。
zaifのサイトを見ると、

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

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

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

■入れるもの:

  • python2.7 AWS Lambdaに載せたいので3ではなく2を選択
  • pycharm pythonの開発環境はこれがいいと聞いたので

 以上。少ない・・・

※pythonインストール時の注意点
 ・「Customize python」でpathを通すを選択する(デフォルトではオフになっている)[参考]
 python_ins.png

2.APIインストール

zaifのサイトのpythonコーナーをみると、
zaif APIを簡単に使えるようなライブラリ(非公式)を提供してくれている神がいらっしゃいました!!∑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

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

情報取得(公開情報API)

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

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には下記メソッドも用意されているみたいです。[詳細]

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

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

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'))

■実行結果

---last_price : 終値--
{u'last_price': 118400.0}
---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}
---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'},...<略>
---depth : 板情報--
取得件数[買い]:150
取得件数[売り]:150
{u'asks': [[118455.0, 0.0209],...<略>
 u'bids': [[118450.0, 1.7704],...<略>
---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'}]
---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さんご指摘ありがとうございます。)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした