python bitmex ローソク足データを月毎のファイルに自動保存する方法 ( 旧:指定した年月のローソク足データをファイル出力して保存する方法)

ローソク足データ ( ohlcv :  open, high, low, close, volume ) データを取得する方法はいくつかあり、いろいろなサイトで説明されているのですが、一長一短だったり、思った通りの期間・足の長さで取得する方法が載っていなかったため、記載します。

bitmex の XBTUSD のローソク足データを取得する方法は
   cryptowatch から取得
   bitmex api の fetch_ohlcv を利用 ( ccxt の 関数 )
   bitmex udf/history を利用
の3種類あります。

しかし、
cryptowatch から取得
 → 価格がそもそも bitmex のものと一致していない。取得可能期間も短い
bitmex api の fetch_ohlcv を利用 ( ccxt の 関数 )
 → 取得できる期間が短い ( 3分足150本程度が限界 )
bitmex udf/history を利用
 → fetch_ohlcv より期間が長い ( 10080本足 )
となっていますので、 udf/history を期間を調整しつつ使うのがよさそうです。

有名なアカガミ氏も udf を利用されているようです。

そこで、指定した月で、指定した足の長さでデータを取得して csv に落とすpython スクリプトを作成しました。
なお、udf を使用しても 10080 本しか取得できないため、上限を超えないようリクエストを分割・繰り返し処理して、マージした結果をファイルに保存します。(ここが欲しい機能なのに、この機能を実装している参考サイトが少ない気がします。。。)
これでCSVファイルを作成すれば、バックテストに役立つデータが手軽に作れます。
開発を続けるのであれば今後も常にデータは必要になるので、あって損はないはずです。

※ 2018-05-20 追記 ※

月を指定してわざわざ取得するのではなく、
 初回起動時→2018-01-01から1分足データを月毎に生成
 次回以降 →最新のCSVの末尾以降のデータを自動で追記
するように変更してみました。

上記を利用して、 cloud 9 環境で1日一回自動で起動して、ローソク足データを常に更新し続けることが可能です。
(自動起動させなくても、たまに起動するだけで前回起動時以降のデータが追記されます)
(WindowsPCの方も、たまーに起動してあげれば前回起動時以降のデータが追記されるので、便利かなと思います)

また、ローソクの長さも指定できるようにしています。(1分足~1時間まで)

自動保存するための python コードと、 cloud9 で自動実行する方法を載せます。

以下コードです。

ここから先は

8,591字 / 2画像

¥ 700

この記事が気に入ったらサポートをしてみませんか?