システムトレードにおいて自分が建てた戦略が、相場に対して本当に有効かどうかをバックテストをする際には過去の値動きであるヒストリカルデータが必要となります。
1分足以下の OHLCで、長期間(数年分)のものは探すのが難しいです。なので今回は1日分の短期間のOHLCデータを取得する方法を取り上げていきます。
OHLC ヒストリカルデータとは
OHLC とは、通貨の Open、High、Low、Close の頭文字を取ったもので「始値・高値・安値・終値」の事です。
その時系列データをヒストリカル・データと呼ぶ。出来高 (Volume) を入れて「OHLCV」とすることもある。
1分足は使い勝手が良く加工がしやすいためシステムトレードのバックテストにはたいてい1分足が使われます。
というのも1分足のOHLCデータがあれば、そこから10分足、1時間足、日足、と何でも生成できるため、より詳細な検証も可能にしてくれるので1分足は応用が効くのでチャート分析やトレード戦略の検証などなどプログラミングを使って投資(トレード)をする上において欠かせないものなのです。。
1分足で長期間は入手が困難
現在ビットコインを始めとする仮想通貨の価格データで「1分足」で「長期間」というのは殆ど出回っていないのが現状です。
まあ本気で取得しようと思えば取れないこともないのですが、今回は独学や趣味で軽くデータ分析をする人向けに簡単なOHLCデータの取得方法を書いていきます。
使う取引所はビットフライヤーです。ビットフライヤーは国内の仮想通貨取引所の中でも大手で、仮想通貨を始めるのであれば、とりあえずはここにしとけって感じの取引所です。
まあ取引所にも取り扱っている通貨とかで一長一短があるので、色んな取引所を開設した方がオススメです。(他にもリップルが買えるBitbankとかが個人的にオススメ。)
ビットフライヤーからビットコインのOHLCデータの取得する
とりあえず軽くテストする用の1000分(約16時間)のデータは以下の感じで取得しました。
import requests
import json
import pandas as pd
from pandas import Series
import time
import csvticker=requests.get(‘https://api.bitflyer.jp/v1/getticker/?product_code=FX_BTC_JPY’)
sirtmp=json.loads(ticker.text)
data2=Series(json.loads(ticker.text))
df=pd.DataFrame(columns=data2.index)
df=df.append(data2,ignore_index=True)i=0
for i in range(1000):
tick=requests.get(‘https://api.bitflyer.jp/v1/getticker/?product_code=FX_BTC_JPY’)
sirtmp=json.loads(tick.text)
data2=Series(json.loads(tick.text))
df=df.append(data2,ignore_index=True)
df.to_csv(‘BTC.csv’)
time.sleep(60)
これで以下のような感じのデータが取れます。
取得したデータの分析して移動平均線を計算したり、見やすいように操作したりするのはpandasというライブラリを使ってやります。
pandasはデータ操作の他にも日経平均やアメリカ企業の株価データが取得できたりするのでPythonで金融データ分析をしたという人は是非使いこなしておきたいライブラリですね。
コメント