仮想通貨はじめにここ最近、ビットコインを筆頭とした仮想通貨が世間を騒がせているようです。私は完全に乗り遅れてしまいました。仮想通貨の取引所はAPI等も多く公開しているようなので、遅れながらも何もやらないよりはと思い、公開APIを読んでビットコイン取引のローソク足チャートを作成してみました。将来的には何らかのアルゴリズムで取引を自動で行うプログラムを書きたいですが、まずは簡単なところから行ってみます。数ある取引所の中で、以前から口座だけは持っていたのと、APIの使用感が他に比べると良いという評判なので、bitFlyerのAPIを使用することにしました。APIという扱いのもので、口座を持っていなくても使用できます。2.1.1約定履歴を取得する約定情報のJSON形式bitFlyerではgetexecutionsという約定履歴を取得するためのAPIが無料で公開されているので、これを使用して全約定履歴を取得します。約定情報はJSONオブジェクトのリストの形で取得できます。この約定情報を扱うためのクラスを用意しておきます。line約定情報には取引の順番に沿ってIDが一意に割り当てられています。他にも、約定した価格、通貨の量、時刻、およびこの注文は売り手買い手のどちらが先に出したものかの情報を取り出すことにしました。あとでファイルに書き出すことも見据え、カンマ区切りで文字列にするto_csv_lineメソッドも用意しました。実際にエンドポイントを呼んでみる実際にエンドポイントに対してHTTPリクエストを投げるための、PublicApiというクラスを定義します。get_executions()というメソッドで、パラメータを渡して結果を取得することができます。一度に取得する約定情報の個数を指定するcountというパラメータは、500が上限のようなのでデフォルト値を500に設定してあります。beforeやafterに約定情報のIDを指定すると、そのIDより前や後(exclusive)の約定情報を取得することができます。executions例えば、下記のような形でget_executions()を呼んであげると、IDが2より前(つまりbitFlyerでの一番最初の取引!)が1件取得できます。before=2)[0].to_csv_line()'1,SELL,30195.0,0.01,2015-06-24T05:58:48.773\n'500件より多い約定情報を取得する一度に取得できる約定情報は500件までですが、beforeやafterを指定してあげると繰り返しAPIを呼び出して500件より多い数の約定情報を取得することが可能です。直近N件の約定情報が欲しい場合は、まずは直近500件を取得し、一番小さい約定IDを記憶しておきます。次にその約定IDより前の500件を取得し...といった形で約定情報をN件取得できるまで繰り返せばOKです。結果をCSVに吐き出しながら繰り返しAPIを呼ぶ関数は、例えば次のような形になります。break途中sleepを入れているのは、APIの呼び出し制限に引っかからないための処置です。bitFlyerでは1分あたり約500回が上限と定められているので、適切な間隔を置いてAPIを呼び出してください。この関数を下のように呼び出すと、executions.csvに1000件の約定履歴が保存されることになります。count=1000)CSVを読み込んでみるpandasを使ってCSVを読み込んで、約定価格をプロットしてみます。'price']].set_index('timestamp').plot(figsize=(18,9))これでも価格の上下が見れて良いのですが、せっかくなのでローソク足チャート描いてみましょう。ローソク足チャートを描いてみる昔の記事で、日経平均株価のデータを使ってローソク足チャートを描いてみたことがありました。今回も同様の方法で、取得したデータから分足のチャートを描いてみます。www.madopro.netデータの調整まずはデータを調整します。今回は1分足のチャートを描きたいので、タイムスタンプの秒とマイクロ秒の部分を0にしてしまいます。microsecond=0))ここの処理を変えることで、自由に集計の幅を変えることができます。second=x.second//5*5などとすると、タイムスタンプが5秒ごとの値になり、5秒足のチャートを描くことができます。1分毎に計算していきます。pandasのデータフレームのgroupbyを使用します。right_index=True)これでsummaryというデータフレームに、毎分の高値・安値等が格納された状態になりました。描いてみるコードの解説は以前の記事にあるので、今回はいきなりコードと結果をお見せします。4])ax2.set_ylabel("Volume")これで直近のデータをもとに分足のチャートを描くことができました。過去のチャートは自由に描くことができるようになったので、適当なテクニカル指標を実装して、バックテストして、うまくいきそうなら自動で取引させてみる、なんていうことができたら面白そうですね。Notebookは下記にアップロードしてあります。アーカイブおすすめの本はてなブログをはじめよう!kanohkさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。