coincheckのPythonライブラリを改良してみたよ
脱GAE
Twiiter botをやるにあたって、このブログでも書いてきましたがGAE(Google App Engine)をサーバー代わりに利用しています。GAEは無料で使え、管理しているのがGoogleなのでお手軽でいいのですが、反面いろいろ制限があり、これまで我慢してきました。一番大きいのはPythonのサードパーティーが自由に使えない事(Pandas無理だからね)で、それ以外にもPythonが未だに2.7な事(有料版は3系いけるらしい。知らんけど。)、ログを残したりデータ保存したくても書き込み不可だったり(たぶん)と不自由してました。
Pythonの師匠であり、『PythonユーザのためのJupyter[実践]入門』(リンクはアフィ。私の。)の著者の一人でもある@drillerさん他何人かでPython勉強会やりつつレンタルサーバーを一つ使用してまして、それを個人利用してもいいよと言われて幾日か。今日(書いてるうちに日を跨いでしまったので昨日)、ようやく重い腰を上げ利用してみました。
drillerさんの教え通りにやればサクッとつぶやけました。
Hello, New Server!
— 栗bot (@yyy1980_bot) 2017年10月21日
定期的に呟くためにcron設定もサクッと...残念ながら少々手間取りました。Twitter APIが同じことを短時間で呟こうとすると制限するんですよね、忘れてました。
Error: 403
— 栗(Lv.38) (@yyy1980) 2017年10月21日
時間入れてやれば動いてくれました。(ただ呟くだけで1秒以上遅れるんですね...)
test cron 2017-10-21 22:50:01.719900
— 栗bot (@yyy1980_bot) 2017年10月21日
詳細は省きますが使用環境
・とあるサーバー
・Notepad++
・Git Bash
というわけで、GAEに頼らず独自サーバーを利用できるようになったので、botで出来る事の幅が広がりました。これからの拡張を生暖かく見守ってください。
最後にもう一度宣伝
暗号通貨取引所のAPIライブラリ(Python)あれこれ
ブログ、ご無沙汰してました。
ツイッターbotの機能拡充をさぼり、何をしていたかと言うと、機械学習プログラミングの本を読んだり、暗号通貨で遊んだり、飲んだり、飲んだり、飲んだりしていたわけですが...。
ツイッターbotに関しては技術的発展が出来そうなので、数か月以内には機能拡充してブログ書きたいと思っていますがどうでしょう。機械学習プログラミングに関しても記事まとめたいなと思っていますが、これもどうでしょう。予定は未定。
というわけで、今回は最近遊んでいる暗号通貨について、プログラミング発注が(自動売買とまでは言えないレベルで)出来たんで、実際に使用した取引所のAPIライブラリのご紹介をしたいと思います。
私の見ている国内取引所3社(Zaif、bitFlyer、Coincheck)、海外取引所2社(Poloniex、Bittrex)はマーケット情報やアカウント情報取得、および発注等のためのAPIを提供してくれています。(ところで、coincheckなんですか?Coincheckなんですか?)
APIって何ぞやって人は例えばこのリンク
https://api.bitflyer.jp/v1/board
を踏んでもらうと、bitFlyerのBitcoin/円のbid-askいわゆる板の情報が(見にくいですが)見れると思います。たぶん。読み込みにちょっと時間かかるかもね。
こんな感じで取引所が自社のマーケット情報を提供し外部から容易に取得できるようにしてくれており、例えばPythonを使って情報を取得し用途に応じて加工出来たりします。
でも、加工前の情報って大体みんな同じように取得してきてるわけで。そこで親切な人がみんなの無駄なコーディング時間を省くため、かどうかは知りませんが、ライブラリ化して公開してくれてたりします。未熟なプログラマーである私なんかは有難くそれを使わせてもらってます。というわけで、私が利用している各取引所のPythonライブラリとついでにAPIドキュメントをご紹介。(複数人が別々にライブラリ化してる場合もありますが、ここでは私が実際に使用したものを。)
GitHub - techbureau/zaifapi: zaifのAPIを簡単にコール出来るようにしました。
ZaifAPI ドキュメント — Zaif api document v1.1.1 ドキュメント
まだ、API自体が現物にしか対応してないんですよね。信用取引、先物、AirFXには対応してません。素人考えでは簡単に対応出来そうなんですが違うんですかね。せめてポジションを把握する部分とかね...。中の人頑張って!
-
bitFlyer
GitHub - yagays/pybitflyer: Python wrapper for bitFlyer's REST API.
Python2.7ではエラー出ました。たぶんurllibの所で。(間違ってたらごめんなさい。指摘はコメントまで。)その点を除けば各種揃ったAPI及びライブラリなんじゃないかと。
-
Coincheck
GitHub - kmn/coincheck: Coincheck API Library for Python
取引所APIドキュメント | Coincheck(コインチェック)
これを作った人がどうやら現物にしか興味がないらしく、ライブラリも現物部分のみ。(間違ってたらごめんなさい。指摘はコメントまで。)APIはレバレッジ取引にも対応しているので、見様見真似で追加したらうまく動いて感動しました!私のはGitHubとか恐れ多いので、誰かAPIをフル活用したライブラリを作ってくれませんかね(チラッ
bitFlyerの件がありPython3系でしか試してません。
以下は海外取引所のものですが、私自身まだとりあえず実行できた事を確認したばかりです。使いこなしてから記事書こうかとも思いましたが、その頃には書く気力がなくなっていることを懸念して、今の時点で執筆することにしました。使えねえなこいつってなった場合には追記で対応しようと思います。あしからず。
-
Poloniex
GitHub - s4w3d0ff/python-poloniex: Poloniex API wrapper for Python 2.7 & 3
Poloniex - Bitcoin/Digital Asset Exchange - API
これから試していくぞっと。
-
Bittrex
GitHub - ericsomdahl/python-bittrex: Python bindings for bittrex
Bittrex.com - Developer's Guide - Api
普通に使おうとするとエラー出ませんかね?bittrexフォルダ内の__init__.pyを削除してbittrex.pyを__init__.pyに改名したら動くようになった気が。(間違ってたらごめんなさい。指摘はコメントまで。)
これに関してはGitHubの世界を体感したというか。たぶんndriって人が最初ライブラリ作ったけど https://github.com/ndri/python-bittrex Python3系に対応してくれないから、別の人が追加修正したって事ですよね。素晴らしい。(Coincheckの方も...)
これらを使って各取引所のbid-ask情報を取得したり、口座の残高一覧を吐き出させたり、さらには想定以上の価格差が開いていたら市場間裁定を行う発注プログラムを作ってみました。市場間裁定プログラムは現状は手動実行ですが、サーバーで実行出来たら濡れ手に粟だなとか妄想してますが、注文が一部約定とか空振ったりした時の対応が面倒だったり適切な価格差とはみたいな所で保留中です。
そんじゃーね! それじゃまた。
最後にCoincheckのアフィリエイト置いときますね!ね!
【読書メモ】Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-
Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-
- 作者: 加藤耕太
- 出版社/メーカー: 技術評論社
- 発売日: 2016/12/16
- メディア: 大型本
- この商品を含むブログ (1件) を見る
グーグル先生(とどり先生)のお力を借り、素人に毛の生えた程度にはスクレイピングが出来るようになり、取得した情報をbotでツイートすることができるようになったわけだが、ここでもう一段大人の階段を昇りたくこの本を購入した。(ちなみにKindle版。)
1章からいきなりWindowsユーザーは仮想マシンでUbuntuを利用してね(ニコッ)ってきて私にはレベル髙すぎたかと思ったが、そこは何とか回避してもある程度OKな気がしている。(まだやってみてないのでわからないが。)
「Pythonの基礎知識」なる項目も存在するがたぶんこれだけじゃわからないだろう。Pythonに関しての基礎知識は別途必要になるのでそれを習得しているのが前提。
最初に素人に毛の生えた程度と言ったが、そんな私が「そうだよね。うん、やったやった。」と頷いていたのが3章まで。4章「実用のためのメソッド」からは本格的な学びの時間。クローラー(クローリングとスクレイピングは違うんですよ!)作成にあたっての注意、エラー処理など直近気になっていたことが目白押し!5章は様々な実例。「これはやったことあるな」「そんな事も出来るのか。また使う機会あるかもな。」とか思いながら読み進める。
頭がついていかず、また使う時にきっちり読もうと流し読みになったのが6章から。Scrapyについて熱くその利便性を語られているんだが、今はまだそんな高度なことしようと思っていない私は「・・・」。
7章はサーバーで運用する話。これは検索結果 Google App Engine (GAE)を使って多少やっているんだけど、この本ではAmazon Web Services(AWS)を使っての説明。また調べて試してみようかねって気にはさせられたが今の段階ではピンと来ず。並列処理の箇所だけは「これ使いこなしたい」ってなった。
というわけで、まだ理解できていない部分が多く残ってはいるが、Pythonによるクローリング・スクレイピングについて基礎的なところから高度なところまで網羅的に学べるのではないかと、素人に毛の生えた私が言ってみる。
ただ、実例コードがいくつも乗っているがそこから自分のしたいことに応用が出来るのか、そう簡単じゃない気がしてるがそこは適宜グーグル先生の力を借りながら右往左往するしかないのかなと。
とりあえず本見ながらやってみますわ。実践第一。プログラミングするために新しいPCも購入したので仮想マシンUbuntuもやってみますよ、えぇ。
mouse ノートパソコン MB-BN25I782S-ZN Windows 10/Corei7/15.6インチ/SSD240GB/8GBメモリ
- 出版社/メーカー: マウスコンピューター
- 発売日: 2016/12/01
- メディア: Personal Computers
- この商品を含むブログを見る