PythonでFXのデータを取得する方法【ALPHA VANTAGE】
2024-07-18 by 内田裕之
- プログラミングでFXの分析ができる?
- データはどこから持ってくるの?
- コードはどうしたらいいの?
このような悩みを解決できる記事になっています。
こんにちは。
Pythonで投資のチャート分析をしているうっちゃんです。
結論からいえば、FXのデータは無料で取得できます。
この記事ではALPHA VANTAGEからデータを取得する方法を紹介します。
投資とプログラミング学習に役立つと嬉しいです。
この記事は内容に広告・プロモーションを含みます。
機械学習のためにFXのデータを取得したい
プログラミング言語Pythonを使って投資でひと儲けしたいと考え、読み始めたこちらの本。
そしてYouTubeで機械学習による株価の予想を学びました。
機械学習をFXに活用すれば稼げるのではないかと考えたのが始まりです。
でも、yahoo financeからは日足データしか取得できません。
1日単位でトレードして効率よく稼ぎたいなあ
そんな願いを叶えるためにALPHA VANTAGEからデータを取得することを思いつきました。
ALPHA VANTAGEとは?
AlphaVantageは、多くの研究者、エンジニア、ビジネス専門家が使用する無料のストックAPIです。
(参考:ALPHA VANTAGE)
データは株価、為替(FX)、仮想通貨の他にテクニカル指標、経済指標もあります。
メールアドレスを登録すればAPIが取得でき、無料でデータを取得できます。
APIキーの取得方法
まずホーム画面にてGET YOUR FREE API KEY TODAYを開きます。
必要事項を入力して送信するだけです。
そしたらAPIキーがもらえます。
ALPHA VANTAGEの使い方
APIキーを取得したらDOCUMENTATIONを開きます。
今回はFXの過去レートが欲しいのでForex(FX)のintradayを開きます。
ここにALPHA VANTAGEの使い方が解説されています。
じっくり読むのは面倒なので、Examples (click for JSON output)から参考URLをコピーしてブラウザのURL欄に貼り付けます。
過去データの一覧が表れました。
このURLのパラメーターを変えることでさまざまなデータが取得できます。
例えばサンプルURLは次のようになっています。
https://www.alphavantage.co/query?function=FX_INTRADAY&from_symbol=EUR&to_symbol=USD&interval=5min&apikey=demo
function=FX_INTRADAY
1日内でのデータを見る。
from_symbol=EUR
ユーロから
to_symbol=USD
米ドルへの為替レート
interval=5min
5分足
apikey=demo
APIキーはデモになっています。
これを自分のAPIキーに変更して使用します。
他の項目はDOCUMENTATIONの説明に従って変更します。
pythonのpandasにデータを渡す方法
APIでデータが取得できたので、Pythonで分析できる形に作り変えます。
json形式のデータをpandasのデータフレームに入れていきます。
#ライブラリのインポート
import csv
import requests
import json
import pandas as pd
# replace the "demo" apikey below with your own key from https://www.alphavantage.co/support/#api-key
#EURUSDの15分足
url = 'https://www.alphavantage.co/query?function=FX_INTRADAY&from_symbol=EUR&to_symbol=USD&interval=15min&apikey=YOURAPIKEY'
r = requests.get(url)
data = json.loads(r.text)
#過去データのみにする(概要説明を除く)
data = data['Time Series FX (15min)']
#データを入れるリスト
fx_data = []
#FXデータをfx_dataに入れていく
for i,df in enumerate(data):
column = []
fx = data
column.append(df) #日時
column.append(fx[df]['1. open']) #始値
column.append(fx[df]['2. high']) #高値
column.append(fx[df]['3. low']) #安値
column.append(fx[df]['4. close']) #終値
fx_data.append(column)
#リストをpandas形式に作り変える
fx_df = pd.DataFrame(fx_data)
#列名の変更
fx_df = fx_df.set_axis(['Datetime', 'open', 'high', 'low', 'close'], axis=1)
これで機械学習の前準備ができました。
次回は機械学習で為替を予測できるか、検証します。
おすすめ記事
ロバートキヨサキが「2023年に金(ゴールド)は2倍に値上がりする」と予想した理由とは?