This is a Laravel package for simplified fetching of finance data from Alpha Vantage API. It's an abstraction layer over Guzzle that aims to remove complexity in connecting it to Alpha Vantage API.
Getting historical data
// Daily historical data for Bitcoin to USD
$res = \AlphaVantage\Api::digitalCurrency()->daily('BTC', 'USD');
/* Returns
[
"Meta Data": [
"1. Information": "Daily Prices and Volumes for Digital Currency", ...
],
"Time Series (Digital Currency Daily)": [
"2018-01-03": [
"1a. open (USD)": "14782.09572045", ...
],
"2018-01-02": [
"1a. open (USD)": "13514.39967186", ...
], ...
],
]
*/
- Run composer
composer require d1am0nd/alpha-vantage
- Add your Alpha Vantage API key to .env as
AV_KEY={your key}
API calls are grouped into 5 different groups:
Api::stock()
- Stock Time SeriesApi::currency()
- Foreign ExchangeApi::digitalCurrency()
- Digital & Crypto CurrenciesApi::sector()
- Sector PerformancesApi::general()
- Technical Indicators & Other
Each function described below is called from their respective group as shown in examples.
Functions described below also take an additional parameter array $params = []
, which can be used to pass any optional parameters if needed.
Documented - https://www.alphavantage.co/documentation/#currency-exchange
use AlphaVantage\Api;
// ...
public function monthlyData()
{
return Api::stock()->monthly('MSFT');
}
intraday($symbol)
- https://www.alphavantage.co/documentation/#intradaydaily($symbol)
- https://www.alphavantage.co/documentation/#dailydailyAdjusted($symbol)
- https://www.alphavantage.co/documentation/#dailyadjweekly($symbol)
- https://www.alphavantage.co/documentation/#weeklyweeklyAdjusted($symbol)
- https://www.alphavantage.co/documentation/#weeklyadjmonthly($symbol)
- https://www.alphavantage.co/documentation/#monthlymonthlyAdjusted($symbol)
- https://www.alphavantage.co/documentation/#monthlyadjbatchStockQuotes(array $symbols)
- https://www.alphavantage.co/documentation/#batchquotes
Documented - https://www.alphavantage.co/documentation/#currency-exchange
use AlphaVantage\Api;
// ...
public function currencyExchangeRate()
{
return Api::currency()->currencyExchangeRate('EUR', 'USD');
}
currencyExchangeRate($from, $to)
- https://www.alphavantage.co/documentation/#currency-exchange
Documented - https://www.alphavantage.co/documentation/#digital-currency
use AlphaVantage\Api;
// ...
public function monthlyData()
{
return Api::digitalCurrency()->monthly('BTC', 'USD');
}
intraday($symbol, $market)
- https://www.alphavantage.co/documentation/#currency-intradaydaily($symbol, $market)
- https://www.alphavantage.co/documentation/#currency-dailyweekly($symbol, $market)
- https://www.alphavantage.co/documentation/#currency-weeklymonthly($symbol, $market)
- https://www.alphavantage.co/documentation/#currency-monthly
Documented - https://www.alphavantage.co/documentation/#sector-information
use AlphaVantage\Api;
// ...
public function sectorPerformances()
{
return Api::sector()->sectors();
}
Documented - https://www.alphavantage.co/documentation/#technical-indicators
Technical methods are not implemented as separate functions. There is a Api::general()->query($funcName, array $params)
method which allows for custom queries.
This will query function 'MACDEXT' with additional parameters symbol
, interval
and series_type
as described in the documentation https://www.alphavantage.co/documentation/#macdext
use AlphaVantage\Api;
// ...
public function technicalIndicators()
{
return Api::general()->query('MACDEXT', [
'symbol' => 'MSFT',
'interval' => '15min',
'series_type' => 'high',
]);
}
query($functionName, array $parameters)
This project is licensed under the MIT License - see the LICENSE.md file for details