見出し画像

BTC N秒足チャートを生成するプログラム

はいどうも皆さん,3ヶ月ぶりですね。ちょっとメンタルやられて寝込んでました。その割にはまあ意味わからないんですけど,なぜかフォロワーの方が増えていて3桁いってました。記事見てくれた方々だとは思いますがありがとうございます。本日からBTCの初心者,プログラミング・機械学習の初学者の方々に役立つ情報の発信を再開していきたいと思います。気ままにお待ちくだい。

あとこれは余談になるんですが,メンタルが死んで心療内科に行ったんですよ。その時中度の鬱症状と診断されたわけで抗うつ薬を処方されたんですよね。それでまた来週来てくださいって話だったんですけど,心療内科に通うのがしんど過ぎるんで,通院するのに抗うつ薬がぶ飲みしてから通ってるんです。なんとも皮肉な話ですよね。ちなみにがぶ飲みは盛りました。適量しか飲んでません。このご時世ですし,割とメンタル来てる人多いんじゃないですかね,早めの受診をお勧めします。てことで余談はこの辺にしときます。

しょうもない話が長くなってしまいましたが,今回のnoteではBTCの価格をN秒間隔で表示するチャートを紹介します。

その前にこのnoteでは最強botterといっていいHohetoさんのgithubを参考にさせていただきました。
こちらがHohetoさんのgithubのURLになります->URL

実行環境
・python3
・jupyter notebook

説明
まず,このプログラムは2つの手順があります。最初は先程紹介したHohetoさんのプログラムを使ってbybitの公開約定履歴からN秒足のohlcv(open,high,low,close,volumeの略)のデータを作成します。そして次にその作成したデータをもとにN秒足のチャートを作成していきます。また,チャート内に任意の期間のMA(移動平均)を表示することも可能であり,チャートを画像ファイルとして保存することもできます。

値段設定
値段についてですが,先程紹介したHohetoさんのプログラムを使ってbybitの公開約定履歴からN秒足のohlcvのデータを作成するところまでは当然無料で公開します。そしてN秒足のチャートを表示する後半部分については有料にさせていただきます。下部ににみんな大好きTradingviewとこのnoteの対比を書いておきますので,それを見て自分にとって有益だと判断された方はどうぞ購入されてください。もちろん自分でチャートを表示するプログラムをかけるという方は購入する必要はありません。

Tradingviewとこのnoteの対比
Tradingview
・リアルタイムでチャートが変化する
・さまざまなオシレータが使える
・分足,時間足までなら無料だが秒足を見るとなると年間数万円が必要
note
・リアルタイムの値動きは見れない
・オシレータはないがMA(任意の移動平均)などが見れる
・このプログラムだけで秒足から時間足までを見る事ができる
・容易に期間を遡れる(Tradingviewだと期間がなかったりする)

つまりこのnoteの目的としては,取引時のチャートとして見るのではなく,普段は見ることのない秒足での価格の変化や出来高の変化を分析するためものだと思って構いません。

まずはbybitの公開約定履歴からN秒足のohlcvのデータを作成するプログラムです。このプログラムで出力されたファイルを用いると機械学習の特徴量分析もできますね。

import pandas as pd

#収集したいデータの期間を指定
from_date = "2021-01-01"
to_date = "2021-01-02"

#収集したいデータの間隔を指定
interval = "5s"  # ex.1s, 5s, 10s, 1min, 1h

ohlcv = []
for d in pd.date_range(from_date, to_date):
   filename = f"https://public.bybit.com/trading/BTCUSD/BTCUSD{str(d)[0:10]}.csv.gz"
   # timestamp,symbol,side,size,price,tickDirection,trdMatchID,grossValue,homeNotional,foreignNotional
   # 1609545599.766732,BTCUSD,Sell,23099,29394.5,ZeroMinusTick,20bfb289-3707-5414-94ea-e996c85c62bf,78582728.0,23099,0.78582728
   # 1609545599.766732,BTCUSD,Sell,19379,29394.5,ZeroMinusTick,6bb10e16-dd85-5624-ae44-96088fab6b06,65927298.99999999,19379,0.65927299
   df = pd.read_csv(filename)[["timestamp", "price", "size"]]
   df = df.sort_values("timestamp")
   df = df[(df["timestamp"] >= d.timestamp()) & (df["timestamp"] < d.timestamp() + 60 * 60 * 24)]
   df.index = pd.to_datetime(df["timestamp"], unit="s", utc=True)
   df = pd.concat([
       df["price"].resample(interval).first(),
       df["price"].resample(interval).max(),
       df["price"].resample(interval).min(),
       df["price"].resample(interval).last(),
       df["size"].resample(interval).sum(),
   ], axis=1)
   df.columns = ["open", "high", "low", "close", "volume"]
   ohlcv.append(df)
   print(f"downloaded {filename}")
ohlcv = pd.concat(ohlcv)

print(ohlcv)

#ohlcvのデータをcsvファイルとしてダウンロード
ohlcv.to_csv(f"bybit_ohlcv_{interval}_{from_date.replace('-', '')}_{to_date.replace('-', '')}.csv")

このプログラムの出力結果がこちらになります。

画像1

ではここからがこのデータを用いてN秒足を作成するプログラムになります。まず,どのような出力結果になるか画像を載っけときます。

画像2

ちなみにこのチャートは0時0分からの5秒足と出来高になります。何秒足にするかは変数で変更が可能なので自分が分析してみたい足などにして使ってみてはどうでしょうか。

ちなみにこのようにMAをつけることも可能です。

画像3

ではここからがN秒足のチャートを生成するプログラムのコードになります。

ここから先は

2,029字

¥ 500

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