使用Python下载A股行情的几种方法

作者:你我皆行者
链接:https://www.zhihu.com/question/27980657/answer/1539210486
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这几种方法如下:

1. tushare

Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。 Tushare运行三年多,已经更新到了Pro版。数据内容将扩大到包含股票、基金、期货、债券、外汇、行业大数据,同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台,为各类金融投资和研究人员提供适用的数据和工具。

  • 首先使用pip安装tushare:
pip install tushare
  • 然后在tushare.pro注册用户,注意获取你自己的token。使用daily函数获取日线数据。
# 导入tushare库
import tushare as ts
# 设置token
ts.set_token('your token here')
# 初始化pro接口
pro = ts.pro_api()
# 获取日线数据
df = pro.daily(ts_code='000001.SZ', start_date='20180701', end_date='20180718'

2. baostock

证券宝是一个免费、开源的证券数据平台(无需注册)。提供大量准确、完整的证券历史行情数据、上市公司财务数据等。通过python API获取证券数据信息,满足量化交易投资者、数量金融爱好者、计量经济从业者数据需求。

  • 首先使用pip安装baostock:
pip install baostock
  • 然后使用query_history_k_data_plus函数获取日线数据
import baostock as bs
import pandas as pd

#### 登陆系统 ####
lg = bs.login()
#### 获取沪深A股历史K线数据 ####
rs_result = bs.query_history_k_data_plus("sh.600000", start_date='2017-07-01', end_date='2017-12-31', frequency="d", adjustflag="3")
df_result = rs_result.get_data()
#### 登出系统 ####
bs.logout()

3. akshare

AkShare是基于 Python 的财经数据接口库, 目的是实现对股票、期货、期权、基金、外汇、债券、指数、数字货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具, 主要用于学术研究目的。

  • 首先使用pip安装akshare:
pip install akshare
  • 然后使用stock_zh_a_spot获取日线数据
import akshare as ak
stock_zh_a_spot_df = ak.stock_zh_a_spot()
print(stock_zh_a_spot_df)

4. dtshare

DTShare主要实现了股票、期货、指数、新闻资讯和一些另类数据的开发与接口服务。在这里,要感谢各类网站提供的优质的数据,经过我们的整理,希望对有需要的用户有所帮助。

  • 首先使用pip安装dtshare:
pip install dtshare
  • 然后使用stock_zh_a_spot获取日线数据
import dtshare as dt
stock_df = dt.stock_zh_a_spot()
print(stock_df)

5. 聚宽JQData

JQData是聚宽数据团队专门为金融机构、学术团体和量化研究者们提供的本地量化金融数据服务。使用JQData,可快速查看和计算金融数据,无障碍解决本地、Web、金融终端调用数据的需求。历经3年沉淀,15万宽客及数百家机构投研交易验证。 为了满足用户的需求,聚宽数据团队在JQData中不仅提供了全面的基础金融数据,包括沪深A股行情数据,上市公司财务数据,场内基金数据,场外基金数据,指数数据,期货数据,期权数据、债券数据以及宏观经济数据;除此之外,JQData还针对因子数据和特色数据,引进了聚宽因子库,舆情数据,Alpha特色因子,技术分析指标因子,tick数据,助您更好的完成量化研究和投资决策。

  • 首先使用pip安装jqdatasdk:
pip install jqdatasdk
  • 然后需要在聚宽官网上注册,并提交申请。使用get_price获取日线数据
from jqdatasdk import *
#鉴权,账号是申请时所填写的手机号;密码为聚宽官网登录密码
auth('账号','密码') 
 # 获取获得000001.XSHG在2015年01月31日前2个交易日的数据
df = get_price('000001.XSHE',end_date='2015-01-31', frequency='daily')

6. 蜂鸟数据Trochil

蜂鸟数据是轻量级金融终端,提供主流金融市场的实时报价和历史数据。我们提供高度统一和强大的REST API和Websocket API,让您轻松获取金融数据。 登录蜂鸟数据,注册成为会员,即可免费使用API服务,每天可免费调用250次REST API,并试用7天Websocket,适用于所有接口和市场。

  • 蜂鸟数据Trochil通过API获取数据
## 撰写自定义函数,通过API获取数据
def fetch_trochil(url: str,
                  params: Dict[str, str],
                  attempt: int = 3,
                  timeout: int = 3) -> Dict[str, Any]:
    """装饰requests.get函数"""
    for i in range(attempt):
        try:
            resp = requests.get(url, params, timeout=timeout)
            resp.raise_for_status()
            data = resp.json()["data"]
            if not data:
                raise Exception("empty dataset")
            return data
        except (ConnectionError, Timeout) as e:
            print(e)
            i += 1
            time.sleep(i * 0.5)


def fetch_cnstocks(apikey: str) -> pd.DataFrame:
    """从蜂鸟数据获取A股产品列表"""
    url = "https://api.trochil.cn/v1/cnstock/markets"
    params = {"apikey": apikey}
    res = fetch_trochil(url, params)
    return pd.DataFrame.from_records(res)


def fetch_daily_ohlc(symbol: str,
                     date_from: dt.datetime,
                     date_to: dt.datetime,
                     apikey: str) -> pd.DataFrame:
    """从蜂鸟数据获取A股日图历史K线"""
    url = "https://api.trochil.cn/v1/cnstock/history"
    params = {
        "symbol": symbol,
        "start_date": date_from.strftime("%Y-%m-%d"),
        "end_date": date_to.strftime("%Y-%m-%d"),
        "freq": "daily",
        "apikey": apikey
    }
    res = fetch_trochil(url, params)
    return pd.DataFrame.from_records(res)


def fetch_index_ohlc(symbol: str,
                     date_from: dt.datetime,
                     date_to: dt.datetime,
                     apikey: str) -> pd.DataFrame:
    """获取股指的日图历史数据"""
    url = "https://api.trochil.cn/v1/index/daily"
    params = {
        "symbol": symbol,
        "start_date": date_from.strftime("%Y-%m-%d"),
        "end_date": date_to.strftime("%Y-%m-%d"),
        "apikey": apikey
    }
    res = fetch_trochil(url, params)
    return pd.DataFrame.from_records(res)

以上是使用Python下载A股行情的几种方法。

现在我们将上述方法,进行简要分析比较下:

原文地址:https://www.cnblogs.com/gzhbk/p/14993179.html