取引所から、過去のローソク足データを取得するにあたり、下記のコードを実行しました。
しかし、
2017/09/07以前のデータについて、2017/08/17-2017/09-07が永遠とループされます。
(<画像1>参照。X軸15000以前が不自然にループされる。)
原因は何だと考えられるでしょうか。
また、デフォルトの取引所(binance)以外の別の取引所、例えばbitbankやbitflyerからBTC/JPYペアのデータを取得するため、
下記コードを
exchange = ccxt.bitflyer()
symbol = "BTC/JPY"
として実行してみたところ、今度は、<画像2>のような結果となりました。
よろしければ、考えられる原因を教えていただけないでしょうか。
import ccxt import pandas as pd import matplotlib.pyplot as plt import datetime from time import sleep # 一度にとれるろうそく足は500本までなので、分けて取得する def get_past_data_from_server(exchange,data_n,data_m,bar,barsymbol,symbol): pastdata = pd.DataFrame([]) # 一度のAPIコールでとれるろうそく足は500本までなので、分けて取得する # 過去データの取得 for i in range(0, data_m): sleep(0.001) data = get_past_data(exchange,data_n * (data_m - i),bar,barsymbol,symbol) data.index = list(range(len(pastdata), len(pastdata) + len(data))) pastdata = pd.concat([pastdata, data]) return pastdata def get_past_data(exchange,period,bar,barsymbol,symbol): while(True): try: timest = exchange.fetch_ticker(symbol)['timestamp'] period += 1 timest = timest - period*bar*60*1000 candles = exchange.fetch_ohlcv(symbol, timeframe=barsymbol, since=timest) pd_candles = pd.DataFrame(candles) break except Exception as e: print(e) print("データの取得に失敗しました") sleep(5) continue return pd_candles # 取引所binanceを指定 exchange = ccxt.binance () # 通貨ペアの設定 symbol = "BTC/USDT" # 何分足? bar = 60 barsymbol = '1h' # data_n*data_m本のろうそく足を取得 # data_nはbinanceでは500に固定 data_n = 500 data_m=80 data = get_past_data_from_server(exchange,data_n,data_m,bar,barsymbol,symbol) # unixtime(ミリ秒)を日時に変換 for i in range(0,len(data)): data[0][i]= datetime.datetime.fromtimestamp(data[0][i]/1000) plt.plot(data[4]) plt.show() data.to_csv("binance_btc_usdt_1h.csv", header=False, index=False) #https://note.com/mocchi999/n/n44da0e74a68a で紹介されているコードを使用させて頂きました
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/16 09:19