質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
CCXT

CCXT(CryptoCurrency eXchange Trading)は、ビットコインやアルトコインといった仮想通貨の売買を自動化するためのJavaScript/Python/PHP向けライブラリ。CCXTが取引所間のAPI差分を吸収することで、異なる取引所に共通した実装が可能です。

bitFlyer API

bitFlyer APIは、仮想通貨取引所bitFlyerが公開しているAIPツール。bitFlyer Lightning/API playground/chainFlyer/Echoの4種類あり、bitFlyerソフトをカスタマイズすることが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Bitcoin

Bitcoinは、インターネット上で流通している電子マネーです。P2Pネットワークを通じた安価な決済コストが実現できる一方、取引時の危険性や闇市場・資金洗浄など不正取引の温床といった法的問題も抱えています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

4736閲覧

取引所のチャートデータをAPIで取得

koyamashinji

総合スコア45

CCXT

CCXT(CryptoCurrency eXchange Trading)は、ビットコインやアルトコインといった仮想通貨の売買を自動化するためのJavaScript/Python/PHP向けライブラリ。CCXTが取引所間のAPI差分を吸収することで、異なる取引所に共通した実装が可能です。

bitFlyer API

bitFlyer APIは、仮想通貨取引所bitFlyerが公開しているAIPツール。bitFlyer Lightning/API playground/chainFlyer/Echoの4種類あり、bitFlyerソフトをカスタマイズすることが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Bitcoin

Bitcoinは、インターネット上で流通している電子マネーです。P2Pネットワークを通じた安価な決済コストが実現できる一方、取引時の危険性や闇市場・資金洗浄など不正取引の温床といった法的問題も抱えています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/09/14 13:28

取引所から、過去のローソク足データを取得するにあたり、下記のコードを実行しました。
しかし、
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>
イメージ説明

<画像2>
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

前半部分が繰り返されていることから、ある指定された古い期日を指定しても、データが存在する日時以降のデータしか取得できないことが考えられます。そのため同じデータが繰り返し取得されているのではないでしょうか?

解決方法としてはplt.plot(data[4])の前に次の一文を入れて重複を除去することです。

python

1data.drop_duplicates(ignore_index=True, inplace=True)

投稿2020/09/15 17:50

編集2020/09/15 18:14
yymmt

総合スコア1615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koyamashinji

2020/09/16 09:19

やはり、取引所にデータが存在しないのですね。 大変参考になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問