中頻度取引botの作成③
量産した板情報のプロットを価格の騰落別に分けて保存する
練習用として、1秒後に価格が上昇した板情報のプロットを‘up’, 下降したプロットを‘down’, それ以外を‘unknown’フォルダに保存される様にした。
板情報の取得は下記を参照
import pandas as pd import numpy as np import matplotlib.pyplot as plt import itertools import os from google.colab import drive drive.mount('./gdrive') #板情報のファイルパス read_path = './gdrive/My Drive/Bot_materials/materials/bitflyerfx_hourly_board_day_27_init_4_48_end_6_48.csv' write_path = './gdrive/My Drive/Bot_materials/materials' #板情報の読み込み def make_order_book(): global df #現在の価格をを抜き出すための前準備 current_df = df[i:i+1] #1つ後の価格を抜き出すための前準備 future_df = df[i+1:i+2] #現在の板情報の抜き出し df_single_row = df[i:i+1] #価格の抽出 mid_price = df_single_row['mid_price'] future_mid_price = future_df.iloc[:,1] current_mid_price = current_df.iloc[:,1] #df_single_row = df[i:i+1] # #価格の抽出 # mid_price = df['mid_price'] # future_mid_price = future_df.iloc[:,1] # current_mid_price = current_df.iloc[:,1] future_mid_price = future_mid_price[i+1] current_mid_price = current_mid_price[i] plt.figure() #askのx軸を準備 ask_x = df_single_row.iloc[:,2:102] ask_x = ask_x.values.tolist() ask_x = list(itertools.chain.from_iterable(ask_x)) #askのy軸を準備 ask_y = df_single_row.iloc[:,102:202] ask_y = ask_y.values.tolist() ask_y = list(itertools.chain.from_iterable(ask_y)) #bidのx軸を準備 bid_x = df_single_row.iloc[:,202:302] bid_x = bid_x.values.tolist() bid_x = list(itertools.chain.from_iterable(bid_x)) #bidのy軸を準備 bid_y = df_single_row.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") if not os.path.exists('{}/pictures'.format(write_path)): os.mkdir('{}/pictures'.format(write_path)) # picturesディレクトリが無ければ作成する os.mkdir('{}/pictures/up'.format(write_path)) # upディレクトリが無ければ作成する os.mkdir('{}/pictures/down'.format(write_path)) # downディレクトリが無ければ作成する os.mkdir('{}/pictures/unknown'.format(write_path)) # unknownディレクトリが無ければ作成する #1つ後の価格が上昇した際のグラフを保存 if future_mid_price > current_mid_price: plt.savefig('{}/pictures/up/{}.png'.format(write_path,i)) #1つ後の価格が下降した際のグラフを保存 elif future_mid_price < current_mid_price: plt.savefig('{}/pictures/down/{}.png'.format(write_path,i)) #不明のグラフを保存 else: plt.savefig('{}/pictures/unknown/{}.png'.format(write_path,i)) if __name__ == '__main__': #csvファイルの読み込み df = pd.read_csv('{}'.format(read_path)) df = df.drop(["Unnamed: 0"],axis=1) #列Unnamed: 0を削除 #データ数をを調べる len_df = len(df) -1 for i in range(len_df): make_order_book() print(i) # print(df)
https://github.com/PP-lib/Bot_materials/blob/master/make_OrderBook_plot.ipynb