Twelvedataの無料APIで最大期間のデータを取得する方法

前回、TwelvedataのAPIを使って為替データの取得方法を紹介しましたが、無料プランでは取得件数に制限があります。そのため、今回は複数回のリクエストを行ってデータを取得し、それらを結合する方法をご紹介します。

環境

  • Python 3.10.12

事前準備

  1. TwelvedataでAPIキーを取得しておいてください。
  2. TwelvedataのPythonライブラリをインストールします。
pip install twelvedata

これで事前準備は完了です。

データの取得方法

以下は、データを取得して結合するプログラムのコードです。基本的な手順は前回の記事と同じなので、詳しい解説は省略します。

from twelvedata import TDClient
import pandas as pd

td = TDClient(apikey="YOUR_API_KEY") # ここにAPI_KEYを入れてください
symbol = "USD/JPY"
interval = "1day"
outputsize = 500    # 一度のリクエストで取得するデータの最大件数

# 最初のデータセットを取得
ts = td.time_series(
    symbol=symbol,
    interval=interval,
    outputsize=outputsize
).as_pandas()

all_data = ts

# 繰り返しデータを取得して結合する
while True:
    try:
        # 最も古いデータの日付を取得
        last_date = all_data.index.min()

        # 次のデータセットを取得
        ts = td.time_series(
            symbol=symbol,
            interval=interval,
            outputsize=outputsize,
            end_date=last_date  # 取得するデータの終了日を指定
        ).as_pandas()

        # 新しいデータがない場合、ループを終了
        if ts.empty:
            break

        # データを結合
        all_data = pd.concat([ts, all_data])
    # APIの制限やエラーで問題が発生した場合、ループを終了
    except:
        break

# データをCSVファイルとして保存
all_data.to_csv("usd_jpy_full.csv")

上記のコードを実行すると、usd_jpy_full.csvというファイルにデータが保存されます。

コメント

タイトルとURLをコピーしました