中頻度取引botの作成②
板情報を取得する
bitFlyerFXの板情報を1秒おきに取得し、CSV・DBに保存し、Pandasデータフレームとして出力するPython3スクリプトを参照して板情報を取得する(googledriveへ保存する様にし、1回分の板情報を保存するように変更)
取得した板情報をグラフ化しやすいように編集する
上記の記事を参考に編集していく
行列の操作方法はこちらを参照
プロットしたグラフの保存方法
https://qiita.com/koichifukushima/items/e63e642431db92178188
オーダーブック描画の関数化.
import pandas as pd import numpy as np import matplotlib.pyplot as plt import itertools def get_order_plot(): #csvファイルの読み込み df = pd.read_csv('./gdrive/My Drive/Bot_materials/materials/bitflyerfx_hourly_board_day_21_init_7_59_end_7_59.csv') #中央値の抽出 mid_price = df['mid_price'] #askのx軸を準備 ask_x = df.iloc[:,3:103] ask_x = ask_x.values.tolist() ask_x = list(itertools.chain.from_iterable(ask_x)) #askのy軸を準備 ask_y = df.iloc[:,103:203] ask_y = ask_y.values.tolist() ask_y = list(itertools.chain.from_iterable(ask_y)) #bidのx軸を準備 bid_x = df.iloc[:,203:303] bid_x = bid_x.values.tolist() bid_x = list(itertools.chain.from_iterable(bid_x)) #bidのy軸を準備 bid_y = df.iloc[:,303:403] bid_y = bid_y.values.tolist() bid_y = list(itertools.chain.from_iterable(bid_y)) plt.fill_between(ask_x,ask_y, color="green") plt.fill_between(bid_x,bid_y, color="red") plt.savefig('./gdrive/My Drive/Bot_materials/materials/bitflyerfx_hourly_board_day_21_init_7_59_end_7_59.png') get_order_plot()
板情報の履歴から、板情報をグラフ化した画像を量産する
def get_order_plot(i): #csvファイルの読み込み df = pd.read_csv('./gdrive/My Drive/Bot_materials/materials/bitflyerfx_hourly_board_day_25_init_10_20_end_10_21.csv') df = df.drop(["Unnamed: 0"],axis=1) #列Unnamed: 0を削除 #中央値の抽出x mid_price = df['mid_price'] df = df[i:i+1] #askのx軸を準備 ask_x = df.iloc[:,2:102] ask_x = ask_x.values.tolist() ask_x = list(itertools.chain.from_iterable(ask_x)) #askのy軸を準備 ask_y = df.iloc[:,102:202] ask_y = ask_y.values.tolist() ask_y = list(itertools.chain.from_iterable(ask_y)) #bidのx軸を準備 bid_x = df.iloc[:,202:302] bid_x = bid_x.values.tolist() bid_x = list(itertools.chain.from_iterable(bid_x)) #bidのy軸を準備 bid_y = df.iloc[:,302:402] bid_y = bid_y.values.tolist() bid_y = list(itertools.chain.from_iterable(bid_y)) plt.fill_between(ask_x,ask_y, color="green") plt.fill_between(bid_x,bid_y, color="red") # plt.set_title("a") plt.savefig('./gdrive/My Drive/Bot_materials/materials/pictures/{}.png'.format(i)) plt.figure() # plt.axvline(x=mid_price, ymin=0, ymax=1) if __name__ == '__main__': if not os.path.exists('./gdrive/My Drive/Bot_materials/materials/pictures'): os.mkdir('./gdrive/My Drive/Bot_materials/materials/pictures') # dataディレクトリが無ければ作成する #r = len(df) #i = 0 for i in range(60): get_order_plot(i) df.head()