【后雅虎Finance API时代】如何用REST API获取A股历史数据

我是一位从事量化交易多年的“金融程序员”。昨晚,一位相识多年的好友突然问我:“现在散户那么多,能不能为他们提供一些量化交易的入门知识,特别是好的回测数据源?”

可我实在无话可说。自从谷歌和雅虎相继关闭了他们的API后,给芸芸众生的高质量股票数据源就基本上销声匿迹了。离别的痛使我艰于呼吸试听,哪里还能有什么言语?长歌当哭,是必须在痛定之后的。但我又想:真的猛士,敢于直面惨淡的人生。抬头仰望星空,我突然想起这篇文章里列举的依稀几个API,它们仍然兢兢业业地为金融IT从业者提供着免费的金融数据。我也想到了米筐,雪球网,以及海外的Quantopian等量化交易社区,在免费数据逐渐凋零的今天仍然时不时地创造出“跑赢大盘”的投资策略。

想到这些,我正有写一点东西的必要了。

在这篇博客里,我会向大家介绍Alpha Vantage Finance API。这家公司创立于2017,由硅谷的Y Combinator投资,一路和Yahoo Finance API以及Google Finance API并肩走来,走着走着却发现只剩下他们自己还在坚持。

他们提供免费的逾20年的A股历史数据,比如以下这个API链接:

其中601766.SHH代表了上证交易所的A股“中国中车”。上述API得到的数据是JSON格式:

{
    "Meta Data": {
        "1. Information": "Daily Time Series with Splits and Dividend Events",
        "2. Symbol": "601766.SHH",
        "3. Last Refreshed": "2020-10-23",
        "4. Output Size": "Full size",
        "5. Time Zone": "US/Eastern"
    },
    "Time Series (Daily)": {
        "2020-10-23": {
            "1. open": "5.5400",
            "2. high": "5.5900",
            "3. low": "5.5400",
            "4. close": "5.5600",
            "5. adjusted close": "5.5600",
            "6. volume": "26069270",
            "7. dividend amount": "0.0000",
            "8. split coefficient": "1.0"
        },
        "2020-10-22": {
            "1. open": "5.5900",
            "2. high": "5.6000",
            "3. low": "5.5300",
            "4. close": "5.5500",
            "5. adjusted close": "5.5500",
            "6. volume": "28905130",
            "7. dividend amount": "0.0000",
            "8. split coefficient": "1.0"
        },
        "2020-10-21": {
            "1. open": "5.5500",
            "2. high": "5.6300",
            "3. low": "5.5100",
            "4. close": "5.6100",
            "5. adjusted close": "5.6100",
            "6. volume": "42256590",
            "7. dividend amount": "0.0000",
            "8. split coefficient": "1.0"
        },
        "2020-10-20": {
            "1. open": "5.5500",
            "2. high": "5.5600",
            "3. low": "5.5200",
            "4. close": "5.5400",
            "5. adjusted close": "5.5400",
            "6. volume": "24148150",
            "7. dividend amount": "0.0000",
            "8. split coefficient": "1.0"
        },
        "2020-10-19": {
            "1. open": "5.5900",
            "2. high": "5.6500",
            "3. low": "5.5600",
            "4. close": "5.5600",
            "5. adjusted close": "5.5600",
            "6. volume": "27490230",
            "7. dividend amount": "0.0000",
            "8. split coefficient": "1.0"
        },
        "2020-10-16": {
            "1. open": "5.5500",
            "2. high": "5.6000",
            "3. low": "5.5400",
            "4. close": "5.5800",
            "5. adjusted close": "5.5800",
            "6. volume": "23485680",
            "7. dividend amount": "0.0000",
            "8. split coefficient": "1.0"
        },

深圳交易所的股票则可以用.SHZ后缀获取,例如000001.SHZ(平安银行)。

这个API也这是几十种技术指标,例如MACD:

获取的JSON数据为:

{
    "Meta Data": {
        "1: Symbol": "000001.SHZ",
        "2: Indicator": "Moving Average Convergence/Divergence (MACD)",
        "3: Last Refreshed": "2020-10-23",
        "4: Interval": "daily",
        "5.1: Fast Period": 12,
        "5.2: Slow Period": 26,
        "5.3: Signal Period": 9,
        "6: Series Type": "close",
        "7: Time Zone": "US/Eastern"
    },
    "Technical Analysis: MACD": {
        "2020-10-23": {
            "MACD": "0.7074",
            "MACD_Hist": "0.2317",
            "MACD_Signal": "0.4756"
        },
        "2020-10-22": {
            "MACD": "0.6445",
            "MACD_Hist": "0.2268",
            "MACD_Signal": "0.4177"
        },
        "2020-10-21": {
            "MACD": "0.6130",
            "MACD_Hist": "0.2520",
            "MACD_Signal": "0.3610"
        },
        "2020-10-20": {
            "MACD": "0.5281",
            "MACD_Hist": "0.2301",
            "MACD_Signal": "0.2980"
        },
        "2020-10-19": {
            "MACD": "0.4498",
            "MACD_Hist": "0.2094",
            "MACD_Signal": "0.2404"
        },
        "2020-10-16": {
            "MACD": "0.3495",
            "MACD_Hist": "0.1614",
            "MACD_Signal": "0.1881"
        },
        "2020-10-15": {
            "MACD": "0.2550",
            "MACD_Hist": "0.1073",
            "MACD_Signal": "0.1477"
        },

在开源社区里面也有很多基于他们API的辅助工具,比如这个GitHub

安装之后,你就可以用Python获取A股数据:

from alpha_vantage.timeseries import TimeSeries
ts = TimeSeries(key='YOUR_API_KEY')
data, meta_data = ts.get_daily('000001.SHZ')

根据我亲测,他们的A股历史数据质量是相当高的,同时也提供了复权,股息,以及分红的历史数据。此外,所有的注册用户每天都可以免费获取500条数据,实用性也是比较有保障的。

希望这篇博文能对园里园外的量化交易发烧友们带来一些帮助!

posted @ 2020-10-25 08:47  data_study  阅读(1617)  评论(0)    收藏  举报