見出し画像

CryptwatchからOHLCを取得してCSVで保存

画像1

botterのリアル」を読んで、サンプルmlbot用にOHLCをCryptwatchで取得したくて作ってみました。動けばよかろうもん精神で作っているので、生暖かい目で見ていただければ幸いです。

動作環境はGoogle Coraboratoryです。まずは、Google Driveをマウントします。

#Drive Mount
from google.colab import drive
drive.mount('/content/drive')

あとは、下記のコードをコピペでOK!(マイドライブにCSVで保存されているはず(;^_^A )


# coding: utf-8


import numpy as np
import time
import requests
import pandas as pd
import json
import csv
import datetime as dt

drive_root_dir= '/content/drive/My Drive/'


### ローソク足を取得して返す関数 ###
def bitflyer_ohlc():
   
   periods1 = "3600"### [60,300,3600,86400] [1分足,5分足,1時間足,日足]
   url_bitflyer = "https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?periods="### 500本取得
   url_bitflyer2 = "https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?after=1&periods="### 6000本取得
   

   res = pd.DataFrame(json.loads(requests.get(url_bitflyer2+periods1).text)['result'])### url_bitflyer2を変えることで取得本数を変えられる
   res_h = res['3600']### 1時間足
   
   leg_number_data = len(res_h) - 100### 取得したOHLCから100本引いたOHLCを取得
   res_all = []

   for column in res_h:### 1時間足直近leg_number分のohlc作成
       if column[4] == 0:
           continue
       else:
           min1_d = column[0]
           res_date = dt.datetime.fromtimestamp(column[0])
           res_data = [res_date,column[1],column[2],column[3],column[4],column[5]]
           res_all.append(res_data)
   
   ### 辞書にカラム設定 ###
   df_all = pd.DataFrame(res_all, columns = ['DATE','op','hi','lo','cl','volume'])
   res_all = []
   
   return df_all,min1_d

b_coin,min1_d = bitflyer_ohlc()


print('Get OHLC END')
time.sleep(3)

min_csv = b_coin.to_csv(drive_root_dir + str(min1_d) + '-bitflyer_1h.csv', index=False)
print('OHLC Writing completed')

これでBitFlyerのOHLCの取得ができました。次にrichmanbtcさんのチュートリアルmlbotに保存したCSVファイルを読み込みます(Google Driveはマウントしておいてください)。

#Bitcoinデータを読み込む
import sys

Save_DATA = '/content/drive/My Drive/'
sys.path.append(Save_DATA)### Pathを通す


### Bitcoin DATA Path
Bit_DATA = Save_DATA + '保存したCSVファイル名.csv'### 1hour

import pandas as pd
df = pd.read_csv(Bit_DATA, index_col='DATE', parse_dates=True)### データ読み込み
display(df)### 読み込み確認
df.to_pickle('df_ohlcv.pkl')

手数料の計算はいったん置いておくので、手数料はすべて0に。

df = pd.read_pickle('df_ohlcv.pkl')

### 手数料は全て0.0に
df['fee'] = 0.0

df.to_pickle('df_ohlcv_with_fee.pkl')

maker手数料カラムを追加のコードをコメントアウトして、チュートリアルmlbotを動かすことができました。


ようやくスタートラインに立てました。ここから色々できそうなので楽しみです。貴重な財産を公開してくださったrichmanbtcさんに感謝しつつ終わります。

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