Alpha Vantage API から株価データ/暗号通貨を取得するための Python モジュール
Alpha Vantage は、リアルタイムの財務データと最もよく使用される財務指標をシンプルな JSON または Pandas 形式で提供する無料の API を提供します。このモジュールは、Alpha Vantage が提供する無料 API への Python インターフェイスを実装します。これには無料の API キーが必要です。これは http://www.alphavantage.co/support/#api-key からリクエストできます。 API ドキュメントで利用可能なすべての API 呼び出しを確認できます。
金融市場データにコードレスでアクセスするには、Wisesheets、公式の Google Sheet アドオン、または Alpha Vantage の Microsoft Excel アドオンを検討することもできます。金融市場データの操作に関する一般的なヒントについては、このガイドをご覧ください。
パッケージをインストールするには、次を使用します。
pip install alpha_vantage
または、パンダのサポートを使用してインストールするか、単純にパンダもインストールします。
pip install alpha_vantage pandas
ソースからインストールする場合は、次を使用します。
git clone https://github.com/RomelTorres/alpha_vantage.git
pip install -e alpha_vantage
API からデータを取得するには、ライブラリをインポートし、API キーを使用してオブジェクトを呼び出すだけです。次に、素晴らしい無料のリアルタイム財務データを準備します。 API キーは環境変数ALPHAVANTAGE_API_KEY
に保存される場合もあります。
from alpha_vantage . timeseries import TimeSeries
ts = TimeSeries ( key = 'YOUR_API_KEY' )
# Get json object with the intraday data and another with the call's metadata
data , meta_data = ts . get_intraday ( 'GOOGL' )
履歴の特定の月のデータをクエリするには、さまざまな機能に「month」パラメータを使用できます。
from alpha_vantage . timeseries import TimeSeries
from alpha_vantage . techindicators import TechIndicators
ts = TimeSeries ( key = 'YOUR_API_KEY' )
ti = TechIndicators ( key = 'YOUR_API_KEY' )
# Get json object with the 30-min interval intraday data and another with the call's metadata for January, 2014.
data , meta_data = ts . get_intraday ( 'GOOGL' , month = '2014-01' , interval = '30min' )
#Get json object with the 30-min interval simple moving average (SMA) values and another with the call's metadata for January, 2014.
data , meta_data = ti . get_sma ( 'GOOGL' , month = '2014-01' , interval = '30min' )
RapidAPI からキーを取得することもできます。キー変数に RapidAPI キーを使用し、 rapidapi=True
を設定します。
ts = TimeSeries ( key = 'YOUR_API_KEY' , rapidapi = True )
内部的には、接続エラー (API が時間内に応答できない場合) を最小限に抑えるために使用できる再試行カウンターがあり、デフォルトは 5 に設定されていますが、必要に応じていつでも増減できます。
ts = TimeSeries ( key = 'YOUR_API_KEY' , retries = 'YOUR_RETRIES' )
このライブラリは、結果を json 辞書 (デフォルト)、pandas データフレーム (インストールされている場合)、または csv として提供することをサポートしています。単にパラメーター out_format='pandas' を渡すだけで、指定されたクラスのすべての API 呼び出しの出力形式を変更できます。 API エンドポイントも呼び出しの形式をサポートしていないため、一部の API 呼び出し ( ForeignExchange and TechIndicators
) は CSV 形式をサポートしていないことに注意してください。
ts = TimeSeries ( key = 'YOUR_API_KEY' , output_format = 'pandas' )
呼び出しによって与えられる pandas データ フレームには、日付文字列インデックスまたは整数インデックス (デフォルトではインデックスは「日付」) を含めることができ、ニーズに応じて両方を使用できます。
# For the default date string index behavior
ts = TimeSeries ( key = 'YOUR_API_KEY' , output_format = 'pandas' , indexing_type = 'date' )
# For the default integer index behavior
ts = TimeSeries ( key = 'YOUR_API_KEY' , output_format = 'pandas' , indexing_type = 'integer' )
データ フレーム構造は、alpha Vantage Rest API の呼び出しによって与えられます。データ フレームの列名は、そのデータ構造によって与えられるものです。たとえば、次の呼び出し:
from alpha_vantage . timeseries import TimeSeries
from pprint import pprint
ts = TimeSeries ( key = 'YOUR_API_KEY' , output_format = 'pandas' )
data , meta_data = ts . get_intraday ( symbol = 'MSFT' , interval = '1min' , outputsize = 'full' )
pprint ( data . head ( 2 ))
結果は次のとおりです:
データのヘッダーは、Alpha Vantage から指定されます (以前のバージョンでは、ヘッダーの数字は削除されていましたが、長期的には、Alpha Vantage が生成したとおりのデータを保持する方が良いでしょう)。
pandas サポートを使用すると、「MSFT」株の分内値を非常に簡単にプロットできます。
from alpha_vantage . timeseries import TimeSeries
import matplotlib . pyplot as plt
ts = TimeSeries ( key = 'YOUR_API_KEY' , output_format = 'pandas' )
data , meta_data = ts . get_intraday ( symbol = 'MSFT' , interval = '1min' , outputsize = 'full' )
data [ '4. close' ]. plot ()
plt . title ( 'Intraday Times Series for the MSFT stock (1 min)' )
plt . show ()
出力として次のように与えられます。
パンダにボリンジャーバンド® のようなテクニカル指標をプロットさせるのと同じ方法です。
from alpha_vantage . techindicators import TechIndicators
import matplotlib . pyplot as plt
ti = TechIndicators ( key = 'YOUR_API_KEY' , output_format = 'pandas' )
data , meta_data = ti . get_bbands ( symbol = 'MSFT' , interval = '60min' , time_period = 60 )
data . plot ()
plt . title ( 'BBbands indicator for MSFT stock (60 min)' )
plt . show ()
出力として次のように与えられます。
BTC などの暗号通貨の価格をプロットすることもできます。
from alpha_vantage . cryptocurrencies import CryptoCurrencies
import matplotlib . pyplot as plt
cc = CryptoCurrencies ( key = 'YOUR_API_KEY' , output_format = 'pandas' )
data , meta_data = cc . get_digital_currency_daily ( symbol = 'BTC' , market = 'CNY' )
data [ '4b. close (USD)' ]. plot ()
plt . tight_layout ()
plt . title ( 'Daily close value for bitcoin (BTC)' )
plt . grid ()
plt . show ()
出力として次のように与えられます。
外国為替エンドポイントにはメタデータがないため、json 形式とパンダとしてのみ利用できます (「csv」形式を使用するとエラーが発生します)
from alpha_vantage . foreignexchange import ForeignExchange
from pprint import pprint
cc = ForeignExchange ( key = 'YOUR_API_KEY' )
# There is no metadata in this call
data , _ = cc . get_currency_exchange_rate ( from_currency = 'BTC' , to_currency = 'USD' )
pprint ( data )
出力として次のように与えられます。
{
'1. From_Currency Code': 'BTC',
'2. From_Currency Name': 'Bitcoin',
'3. To_Currency Code': 'USD',
'4. To_Currency Name': 'United States Dollar',
'5. Exchange Rate': '5566.80500105',
'6. Last Refreshed': '2017-10-15 15:13:08',
'7. Time Zone': 'UTC'
}
バージョン 2.2.0 以降、asyncio のサポートが利用可能になります。これは Python バージョン 3.5 以降のみに適用されます。 3.5 以降をお持ちでない場合、コードが壊れます。
構文は単純で、メソッドにasync
キーワードをマークし、 await
キーワードを使用するだけです。
以下は、複数のシンボルを非同期的に取得するための for ループの例です。これにより、複数の API 呼び出しを使用するプログラムのパフォーマンスが大幅に向上します。
import asyncio
from alpha_vantage . async_support . timeseries import TimeSeries
symbols = [ 'AAPL' , 'GOOG' , 'TSLA' , 'MSFT' ]
async def get_data ( symbol ):
ts = TimeSeries ( key = 'YOUR_KEY_HERE' )
data , _ = await ts . get_quote_endpoint ( symbol )
await ts . close ()
return data
loop = asyncio . get_event_loop ()
tasks = [ get_data ( symbol ) for symbol in symbols ]
group1 = asyncio . gather ( * tasks )
results = loop . run_until_complete ( group1 )
loop . close ()
print ( results )
asyncio を使用したことはないが、asyncio、同時実行性、およびマルチスレッドについて学びたい人向けに、asyncio を説明するさらに詳細な記事を書きました。ここで確認してください: 非同期プログラミングとマルチスレッドのどちらを使用する必要がありますか?
ライブラリの使用法をよりよく確認するために、Python ノートブックに例を含むリポジトリを追加しました: https://github.com/RomelTorres/av_example
テストを実行するには、まず API キーをエクスポートして、それを使用してテストを実行できるようにする必要があります。また、テストにはパンダ、モック、およびノーズが必要です。
export API_KEY=YOUR_API_KEY
cd alpha_vantage
nosetests
コードのドキュメントは https://alpha-vantage.readthedocs.io/en/latest/ にあります。
貢献はいつでも大歓迎です。貢献したり、問題を追加したり、PR したりできる最善の方法についてお問い合わせください。
次のいずれかのプラットフォームで Alpha Vantage チームに連絡したりフォローしたりできます。
このプロジェクトが気に入ったり使用したりする場合は、スターを付けることでサポートを示すことを検討してください。
??-??