栗’s diary

Python勉強中。トレードに役立つようなTwitter bot開発中。暗号通貨の自動売買もやってみたい。

現在のbot機能

最終更新:2016年11月16日

我がbot

twitter.com

現在の機能は、

  • 1時間に一回、ドル円日経平均先物を呟く。日経平均先物は残念ながら10分遅れ。時間帯によってSGXとCMEを使い分け。リアルタイムで日経平均先物の情報を取得できる無料サイトがあれば教えてね。)
  • 7:00に米国株価指標を呟く。ツイッターの文字数制限がなければもっと増やしたいんだけど。
  • 前場後場が終わって25分後、国内株価指標を呟く。
  • 6:50にCMEのFF金利先物から利上げ確率を計算して呟く。答え合わせはCountdown to FOMC - CME Groupで。数値合わないことがよくあるが求め方が一通りじゃなかったりするせいかなと諦めてる。
  • TDnetの開示情報を場中に5分間隔で確認し、その時開示があった場合には若干のフィルターをかけて呟く。GAEだと1分更新まで出来るがほとんどが5分単位で開示されているので。あんまりサイトに負担かけても悪いんで。
  • 日銀ETFの買入結果の更新状況を5分間隔で確認し、当日分の更新があれば呟く。そのうち、zipファイル内のExcelから数字を読み取って、それを呟けるようにしたい。
  • 企業サイトの新着情報を1分間隔で確認し、更新があれば呟く。監視企業数をどんどん増やしていく予定だが、ちょっとエラー処理が面倒なので保留してる。

暗号通貨取引所の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.

ビットコイン取引所【bitFlyer Lightning】

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のアフィリエイト置いときますね!ね!

日本で一番簡単にビットコインが買える取引所 coincheck bitcoin

【読書メモ】Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-

 

 グーグル先生(とどり先生)のお力を借り、素人に毛の生えた程度にはスクレイピングが出来るようになり、取得した情報をbotでツイートすることができるようになったわけだが、ここでもう一段大人の階段を昇りたくこの本を購入した。(ちなみにKindle版。)

 

1章からいきなりWindowsユーザーは仮想マシンUbuntuを利用してね(ニコッ)ってきて私にはレベル髙すぎたかと思ったが、そこは何とか回避してもある程度OKな気がしている。(まだやってみてないのでわからないが。)

Pythonの基礎知識」なる項目も存在するがたぶんこれだけじゃわからないだろう。Pythonに関しての基礎知識は別途必要になるのでそれを習得しているのが前提。

最初に素人に毛の生えた程度と言ったが、そんな私が「そうだよね。うん、やったやった。」と頷いていたのが3章まで。4章「実用のためのメソッド」からは本格的な学びの時間。クローラー(クローリングとスクレイピングは違うんですよ!)作成にあたっての注意、エラー処理など直近気になっていたことが目白押し!5章は様々な実例。「これはやったことあるな」「そんな事も出来るのか。また使う機会あるかもな。」とか思いながら読み進める。

頭がついていかず、また使う時にきっちり読もうと流し読みになったのが6章から。Scrapyについて熱くその利便性を語られているんだが、今はまだそんな高度なことしようと思っていない私は「・・・」。

7章はサーバーで運用する話。これは検索結果 Google App Engine (GAE)を使って多少やっているんだけど、この本ではAmazon Web ServicesAWS)を使っての説明。また調べて試してみようかねって気にはさせられたが今の段階ではピンと来ず。並列処理の箇所だけは「これ使いこなしたい」ってなった。

 

というわけで、まだ理解できていない部分が多く残ってはいるが、Pythonによるクローリング・スクレイピングについて基礎的なところから高度なところまで網羅的に学べるのではないかと、素人に毛の生えた私が言ってみる。

ただ、実例コードがいくつも乗っているがそこから自分のしたいことに応用が出来るのか、そう簡単じゃない気がしてるがそこは適宜グーグル先生の力を借りながら右往左往するしかないのかなと。

とりあえず本見ながらやってみますわ。実践第一。プログラミングするために新しいPCも購入したので仮想マシンUbuntuもやってみますよ、えぇ。

 

ツイッターbot作成方法まとめ(バージョン1)

GoogleSpreadSheetをデータベースとして使えるようになった今、当初目指していたツイートbotバージョン1が完成した。すなわち、定期的に情報をツイートする、サイト情報が更新されたらツイートするという二つの機能を実装できるようになった。
今回はバージョン1完成を記念し、これまでの日記風ブログをまとめる形で、ツイートbot作成方法の流れをおさらいしてみようと思う。

1.Pythonを使える環境を整える

私がPythonを導入して1年近く経っていたので、当ブログではその詳細には触れなかったが、「anaconda」をインストールしPython環境を 整え、「jupyter」で編集している。足りないmoduleがあれば「pip install」もしくは「conda install」と唱えれば大体うまくいく(はず)。使用環境を整えたい人がいれば、その辺のキーワードでググってみるといいのではないだろうか。参考までに最近見かけたPython導入記事を置いておく。改めて見ると長いな...。

データサイエンティストを目指す人のpython環境構築 2016 - Qiita

2.Twitter APIの取得

まずは、手動クリックで呟いてみる事から。

ツイッターbot作成の道(その1) - 栗’s diary

3.Google App Engine(GAE)を導入する

(定期的に)自動でツイートするにはサーバーを利用する必要がある。そこで私が利用したのが、グーグルのGoogle App Engine。下記記事にその時の体験を書いているが、いま読み返すと見にくいなぁ...まあ日記ですから。ローカルで上手くいくものがサーバー上だとエラーになる現象には本当手を焼いた。

ツイッターbot作成の道(その1) - 栗’s diary

ツイッターbot作成の道(その2) - 栗’s diary

Google App Engineによるアプリ(ツイッターbot)制作まとめ - 栗’s diary

私の場合、無料でも使える有償アカウントが結局必要になった。

ツイッターbot作成の道(その7):GAE有償アカウント、そして完成へ - 栗’s diary

4.ログを残す方法をマスターする

サイトが更新されたら呟く。それって結局頻繁にそのサイトを訪れて前回から変更があれば呟くという定期botの応用形なんですよね。その際に前回情報を残しておく必要があるわけで。GAEの中のファイルは外から更新できない仕様のようなのでどこか外部に。Googleはサンプルとしてデータストアの使用を挙げていますし、今後どこかでそれは使う予定ですが、とりあえずGoogleSpreadSheetを使ってみましたよと。

ツイッターbot作成の道(その6): GoogleSpreadSheet - 栗’s diary

 

あっさり書くとこんな感じでしょうかね。

今後はWebスクレイピングの技術を高め、pdfの解析、zipファイルの中のエクセルファイルの解析(日銀め...)など出来るようになりたいと思います。

また監視サイトを増やしていった場合に起こるであろう遅延との闘いにも備えないといけません。

慣れて来たらGoogleSpreadSheetからデータストアへの移行もするでしょう。たぶんそっちの方が処理が早いはずだから。

その先は、テキストマイニングとか機械学習とかディープラーニングとかよくわかってませんが、読み込んだデータから市場に与える影響度なんか出せたら格好いいなと思ってます。

短い間、ご愛読ありがとうございました。栗先生の次回作にご期待ください。