使用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股行情的幾種方法。

現在我們將上述方法,進行簡要分析比較下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM