中頻度取引botの作成②

板情報を取得する

bitFlyerFXの板情報を1秒おきに取得し、CSV・DBに保存し、Pandasデータフレームとして出力するPython3スクリプトを参照して板情報を取得する(googledriveへ保存する様にし、1回分の板情報を保存するように変更)

取得した板情報をグラフ化しやすいように編集する

qiita.com

上記の記事を参考に編集していく

行列の操作方法はこちらを参照

プロットしたグラフの保存方法

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()