※当サイト一部記事にはP Rが含まれます

ビットコインの過去価格CSVデータ(分足4本値)をゲットする方法+ダウンロード。

TIPS
この記事は約9分で読めます。

仮想通貨(ビットコイン)がトレード商品として画期的なのは、API経由で簡単に自動売買できるところ。

 

仮想通貨の魅力とはなんでしょう?バカみたいな値上がり?ブロックチェーンの将来性?

まあ、それもあるでしょうけど、投機・トレードやマネーゲームの商品としてみたときに、一番画期的だと思うのは取引所が標準でAPIを公開している点だと私は思います。

だいたいの取引所は公開してますよね。例えばZaifだと、↓こんなやつ。

引用元:Zaif https://zaif.jp/

 

これは革命的!。従来の株式・先物・FXなどの投資商品では証券会社とかがAPIを公開しているケースは非常にレアでした。なので、自動売買するには色々と工夫が必要だったわけです。

一方、仮想通貨業界はAPIが標準装備。bitFlyerなんてwrapper(pybitflyerというライブラリ)も用意されてるので、Pythonならpip installだけですぐに簡単に自動売買システムの開発が始められちゃう。

トレード判断、発注・決済、ロスカット、資金管理、リスク管理、失敗したときのオートリバランスから、アービトラージ、スクレイピングで取得したチャート以外の要素による投資判断、AIの組み込みですら、Python一本で完全自動化できるということです

 

「画面操縦での自動発注じゃ限界があるよ…」とか「Meta Trader 4 + EAで自動売買始めたけど、クソEA掴まされた!」とか「FXのAPIって結局OANDAしか選択肢ないの?」とか「APIあると思ったら法人口座だけじゃねえか!」みたいなものに悩まされる時代は終わったんです。

つまり、これからは、難しいこと抜きに、Pythonとかでプログラム書ける人なら「誰でも」「無料で」「簡単に」「自分だけのロジックで」自動売買が始められる時代になったわけです

 

だがしかし。。。問題点がないわけではありません。。。

ビットコイン(BTCJPY)の5分足や15分足の過去価格CSVデータ(4本値)が入手できないんですよ!バックテストができないよ~!!w

ネットを探し回ったんだけど、落ちてないんだよね・・・。

 

 

「仮想通貨の過去のヒストリカルデータ(分足)入手できなくね?」。仕方ないから素の取引売買データからPythonで分足四本値をセルフ集計してみた。

一応、こちらの良サイトでCSVがゲットできるのですが、日足は充分な期間が取れるんですが、5分足とかだと非常に短い期間のデータしか取れなかったり。

仮想通貨(暗号通貨)4本値CSVゲッター from Cryptowatch(サイトが消えました・・・

 

一方、こちらは過去分もたんまりデータがあるんですけど、素の取引売買データで使いにくかったり(しかも時間はUNIXTIMEですw)。

bitcoincharts.com(サイトが消えました・・・)

 

どっかにあるのかもしれないが探し回るのも時間の無駄なので、苦肉の策で、上述の素の取引データから分足4本値をPythonでセルフ集計してみました。5分毎に区切ってけば、四本値っぽい何かになるだろう…

 

やってることは簡単です。bitcoincharts.comでダウンロードしてきた素の取引データ(CSV)を読み込んで、UNIXTIMEを時間に変換して、区切り時間毎に4本値を作りこんでいます。

5分足なら「minutes=5」をtimedeltaに設定。

import sys
import csv
import datetime

##設定値
#元データのCSVファイル名 ※元データのCSVファイルは「https://api.bitcoincharts.com/v1/csv/」で取得できます
input_file_name = "data.csv"
#作成する4本値のCSVファイル名
output_file_name = "data_out.csv"
#集計を開始する日付+時刻
kijyun_date = datetime.datetime.strptime('20170704 17:15:00', '%Y%m%d %H:%M:%S')
#分足の単位。例えば5分足なら「minutes=5」
kizami_date = datetime.timedelta(minutes=5)


#CSV読み込み
csv_file = open(input_file_name, "r", encoding="ms932", errors="", newline="" )
f = csv.reader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)

#4本値を計算
datalist = []
priceH = 0
priceT = 0
priceY = 0
priceO = 0
for row in f:
    if (datetime.datetime.fromtimestamp(int(row[0])) < kijyun_date + kizami_date):
        if priceH == 0:
            priceH = int(row[1].replace('.000000000000',''))
            priceT = int(row[1].replace('.000000000000',''))
            priceY = int(row[1].replace('.000000000000',''))
            priceO = int(row[1].replace('.000000000000',''))
        else:
            if priceT < int(row[1].replace('.000000000000','')):
                priceT = int(row[1].replace('.000000000000',''))
            if priceY > int(row[1].replace('.000000000000','')):
                priceY = int(row[1].replace('.000000000000',''))
    else:
        if priceH > 0:
            priceO = int(row[1].replace('.000000000000',''))
        datalist_new = '{0:%Y%m%d %H:%M:%S}'.format(kijyun_date + kizami_date), priceH, priceT, priceY, priceO
        datalist.append(datalist_new)
        kijyun_date = kijyun_date + kizami_date
        priceH = 0
        priceT = 0
        priceY = 0
        priceO = 0

#CSVファイルに出力する
csv_file = open(output_file_name, 'w', encoding='UTF-8')
csv_writer = csv.writer(csv_file, lineterminator='\n')
for j in range(len(datalist)):
    csv_writer.writerow(datalist[j])
csv_file.close()

 

bitcoincharts.comのデータなら、どの取引所のどの通貨でも、だいたい同じ方法で4本値を生成できるはず^^。

「.000000000000」置換のところは手抜きコーディングなんで、他のデータでは通用しないと思うので、ビットコイン以外の場合は修正してから使ってねw。

あと、流してから気が付いたが、データがない時間帯に「0,0,0,0」が入っちゃう不具合がありました…( ノД`)。気になる人は自分で直してください。

 

【2022/04/30追記】

bitcoincharts.comのサイトが消えましたね・・・。というわけで、今後はデータは自炊していくしかないかと(海外取引所含めて、過去データが昔まで全部取れる取引所APIやサービスってないからね)。。

【2023/12/26追記】

「仮想通貨(暗号通貨)4本値CSVゲッター from Cryptowatch」も別のサイトになっちゃった模様です。

というか、どこかのサービスに依存すると結局こうなるわけで、自炊データが一番確実だよね。皆さん、自炊!データは自炊するぞ~!!!笑

 

 

bitFlyer・coincheckのBTC/JPYの5分足・15分足(4本値)の過去CSVデータのダウンロードはコチラ!

同じ悩みを抱えている人がいるかもなので、一応CSVファイルを公開しておきます(coincheckはもっと昔のもあるけど、容量が大きくなるので、とりあえず8か月分)。

分足四本値ダウンロード

 

ただ、まあ、間違ってるかもなので参考程度で(このデータで検証したロジックで投資に失敗しても知らないよ?w自己責任で!w)。

なぜか全体的に実際よりも少し価格が低いみたいですね・・・。集計が何かおかしいのか、時差とかのせいなのか、海外のデータだからドル/円の関係なのか原因は不明。まあ、仮置きのバックテストくらいには使えるのではないかと。

急がない人は、ちゃんとしたデータはCryptowatchのAPIとかでMySQLとかにコツコツと貯めていくのが良いと思います。私はデータ収集も完全自動化してます~。

 

あと、自動売買する人は複数の仮想通貨取引所・複数通貨FXを併用するのをオススメします。以下で書きましたけど、仮想通貨FX向きの取引所も結構ありますし

仮想通貨取引所比較一覧2022年版。アクセス数で8社の人気度・評判を調査。ビットコインどこで買う?
国内 暗号資産取引所どれがいい?どこで買う?実際にアクセス数が多い「本当の評判人気取引所」を調べてみた。 記事内容は著者の主観・感想であり金融取引を推奨するものではありません。暗号資産・仮想通貨取引にはリスクがありますので自己責任で投資くだ...

 

仮想通貨自動売買の最大の弱点は取引所リスクです。証拠金は取引所に置かないといけないので、GOXするとぶっ飛びますからね。複数の取引所・複数の通貨で分散自動実行+こまめに出金しておかないと、危ないかもですよ…。

こんなのも

こんな記事もあるよ。pythonゴリゴリ書いてます。

ケリー基準(オプティマルf)による複利運用を自動売買botに導入(Pythonコード付き)。
自動売買ロット調整どうすれば?複利効果を最大化してビットコインFXで最速億り人を目指す方法を解説。 ビットコインFXなどで自動売買botを動かすことがブームになってますけど、botが安定稼働してくると「システムトレードする売買ロットをどうや...
ビットコイン自動売買bot「ドテン君」の特徴と評判。1.5倍稼げる改造版「ドテンたん」公開w
話題のBTCFX自動売買トレードbot「ドテンくん」買ってみた。本当に稼げるのか?本音レビューしちゃいます。 巷で評判になっているビットコイン自動売買bot「ドテン君」を5万円出して買ってみました! 「え?自適猫さん、頭でも打ったのかい?」...
ConoHa VPS Windows Serverの評判と最新クーポン。MT4も自動売買botも。
FXのMT4もビットコイン(BTCFX)のbotも自宅PCより快適なConoHa VPSのWindowsサーバで自動売買! MetaTrader4(MT4)でFX自動売買している人や、pythonで作った自動売買プログラムでビットコイン自動...
2024年4月最新👍Ledger 友達紹介クーポンコード10ドル! Ledger Nano S Plus、X、Stax全て使える!
暗号資産ハードウェアウォレット「LEDGER(レジャー)」を友達紹介特典ボーナス付きで入会購入!あなたをご招待! 暗号資産ウォレット・暗号資産ハードウェアウォレット「LEDGER(レジャー)」の招待コードを公開しています。 「Ledger ...