中頻度取引botの作成③

量産した板情報のプロットを価格の騰落別に分けて保存する

練習用として、1秒後に価格が上昇した板情報のプロットを‘up’, 下降したプロットを‘down’, それ以外を‘unknown’フォルダに保存される様にした。

板情報の取得は下記を参照

xpppp.hatenablog.com

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