Skip to main content

Testing version

Project description


OwlData 數據貓頭鷹 API

數據貓頭鷹官方網站: https://owl.cmoney.com.tw/Owl/


Outline

Dependencies

  • pandas
  • requests

Install

安裝資源可以詳見 Github at https://github.com/owldb168/owldata

By PyPI

pip install owldata

Install source from GitHub

git clone https://github.com/owldb168/owldata.git
cd owldata
python setup.py install

HTTP Authentication

    介接端須先透過取得的應用程式編號與應用程式密鑰取得一次性的有效交易驗證碼,於每次API呼叫時帶入 HTTP HEADER 提供驗證才能使用相關API。此驗證碼於特定時間後會 timeout過期,此時必須重新取得交易驗證碼得以再次操作相關API。

Flow Control

情境流程示意

Code Example

使用 OwlData 模組輸入 AppID 與應用程式密鑰進行登入,並呼叫欲查詢資料表

import owldata

# 輸入數據貓頭鷹會員 AppID & 應用程式密鑰
appid = '請輸入 AppID'
appsecret = '請輸入 應用程式密鑰'

# 引用函數取得資料
owlapp = owldata.OwlData(appid, appsecret)

Quick Start

快速拿取個股歷史資料

import owldata

# 輸入數據貓頭鷹會員 AppID & 應用程式密鑰
appid = '請輸入 AppID'
appsecret = '請輸入 應用程式密鑰'

# 引用函數取得資料
owlapp = owldata.OwlData(appid, appsecret)

# 擷取台積電股價 from 2019/08/12 to 2019/08/13
stock_price = owlapp.ssp("2330", "20190812", "20190813")
stock_price.head()

Data Function

OwlData 使用方法,使用 OwlData 不同方法擷取所需要的資料,並可以利用參數 colist 進行欄位篩選

  1. 個股日收盤行情 (Single Stock Price, SSP)


    依指定日期區間,撈取指定股票代號的股價資訊

    OwlData.ssp(sid:str, bpd:str, epd:str, colist:list) -> DataFrame
    
    Parameters - sid : string
        股票代號
    - bpd : string
        設定查詢起始日期 8 碼數字,格式: yyyymmdd
    - epd : string
        設定查詢結束日期 8 碼數字,格式: yyyymmdd
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    日期 股票名稱 開盤價 最高價 最低價 收盤價 漲跌
    漲幅(%) 成交量 成交筆數 成交金額(千) 均張 均價 成交量(股)
    • 範例
    # 擷取台積電股價 from 2019/08/12 to 2019/08/13
    >>> colist = ['日期', '股票名稱', '開盤價', '最高價', '最低價' , '收盤價', '漲跌', '漲幅(%)', '成交量']
    >>> owlapp.ssp("2330", "20190812", "20190813", colist)
    [out]
    
           日期   股票名稱	開盤價	最高價	最低價	收盤價	 漲跌	漲幅(%)	 成交量
    0    20190813  台積電	249.00	249.50	246.50	246.50	-4.50	-1.79	23121.00
    1    20190812  台積電	254.50	254.50	251.00	251.00	-2.50	-0.99	24732.00
    
  1. 多股每日收盤行情 (Multi-Stock Price, MSP)


    依指定日期,撈取全上市櫃台股的股價資訊

    OwlData.msp(dt:str, colist:list) -> DataFrame
    
    Parameters - dt : string
        查詢某一日期
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    股票代號 股票名稱 日期 開盤價 最高價 最低價 收盤價 漲跌
    漲幅(%) 成交量 成交筆數 成交金額(千) 均張 均價 成交量(股)
    • 範例
    # 擷取台股上市上櫃  2019/08/01 所有盤後資訊
    >>> owlapp.msp("20190801")
    
    [out]
        股票代號 股票名稱    日期    開盤價  最高價  最低價  收盤價   漲跌   漲幅(%) 成交量    成交筆數   成交金額()  均張   均價   成交量()
    0     1101    台泥   20190801   44.50  44.55   44.00   44.05  -0.65  -1.45  33643.00  10943.00  1485589.00   3.10  44.16  33643219.00
    1     1102    亞泥   20190801   41.45  41.70   41.20   41.40  -0.40  -0.96   8384.00   4275.00   347479.00   2.00  41.44  8384463.00
    
  1. 個股財務簡表 (Financial Statements Single, FIS)


    依據 di 決定查詢資料頻率,並依股票代號,撈取指定區間的財務報表資訊
    y(年)、 q(季) 是撈取財務報表資訊;m(月) 是撈取營收相關資訊

    OwlData.fis(di:str, sid:str, bpd:str, epd:str, colist:list) -> DataFrame
    
    Parameters - di : string
        設定資料時間頻率
    • Y : 年度, 格式 : yyyy
    • Q : 季度, 格式 : yyyyqq
    • M : 月, 格式 : yyyymm
    - sid : string
        股票代號
    - bpd : string
        設定查詢起始日期
    - epd : string
        設定查詢結束日期
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 季度日期格式 yyyqq, 其中 qq 請輸入 01 - 04, 分別表示為第一季至第四季
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
         - 參數 di 大小寫無異
    • 欄位
    欄位
    年與季財報欄位
    年度 年季 流動資產 非流動資產 資產總計 流動負債 非流動負債 負債總計 權益總計 公告每股淨值
    營業收入(千) 營業成本(千) 營業毛利(千) 營業費用(千) 營業利益(千) 營業外收入及支出(千) 稅前純益(千) 所得稅(千)
    稅後純益歸屬(千) 每股盈餘(元) 營業活動現金流量(千) 投資活動現金流量(千) 籌資活動現金流量(千) 本期現金及約當現金增減數(千) 期末現金及約當現金餘額(千) 自由現金流量(千)
    月營收欄位
    年月 單月合併營收(千) 去年同期(千) 單月合併營收年成長(%) 單月合併營收月變動(%) 累計合併營收(千) 去年同期(千)1 累計合併營收成長(%)
    • 範例
    # 擷取台積電財務簡表 from 2016 to 2017
    >>> colist = ['年度', '流動資產', '非流動資產', '資產總計', '流動負債', '非流動負債', '負債總計', '權益總計', '公告每股淨值']
    >>> owlapp.fis('y', "2330", "2016", "2017", colist)
    
    [out]
            年度	 流動資產	非流動資產	    資產總計	  流動負債	 非流動負債 	  負債總計	   權益總計       公告每股淨值
    0	2017	857203110	1134658533	1991861643.00	358706680.00	110395320.00	469102000.00	1522759643.00	    58.70
    1	2016	817729126	1068726176	1886455302.00	318239273.00	178164903.00	496404176.00	1390051126.00	    53.58
    
  1. 多股財務簡表 (Financial Statements Multi, FIM)


    依據 di 決定查詢資料頻率,並依指定區間,撈取全上市櫃台股的財務報表資訊
    y(年)、 q(季) 是撈取財務報表資訊;m(月) 是撈取營收相關資訊

    OwlData.fim(di:str, dt:str, colist:list) -> DataFrame
    
    Parameters - di : string
        設定資料時間頻率
    • Y : 年度, 格式 : yyyy
    • Q : 季度, 格式 : yyyyqq
    • M : 月, 格式 : yyyymm
    - dt : string
        查詢某一日期
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 季度日期格式 yyyqq, 其中 qq 請輸入 01 - 04, 分別表示為第一季至第四季
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
         - 參數 di 大小寫無異
    • 欄位
    欄位
    年與季財報欄位
    股票代號 股票名稱 年度 年季 流動資產 非流動資產 資產總計 流動負債 非流動負債 負債總計
    權益總計 公告每股淨值 營業收入(千) 營業成本(千) 營業毛利(千) 營業費用(千) 營業利益(千) 營業外收入及支出(千) 稅前純益(千) 所得稅(千)
    稅後純益歸屬(千) 每股盈餘(元) 營業活動現金流量(千) 投資活動現金流量(千) 籌資活動現金流量(千) 本期現金及約當現金增減數(千) 期末現金及約當現金餘額(千) 自由現金流量(千)
    月營收欄位
    股票代號 股票名稱 年月 單月合併營收(千) 去年同期(千) 單月合併營收年成長(%) 單月合併營收月變動(%) 累計合併營收(千) 去年同期(千)1 累計合併營收成長(%)
    • 範例

      # 台股上市上櫃財務簡表 from 2018
      >>> colist = ['股票代號', '股票名稱', '年度', '流動資產', '非流動資產', '資產總計', '流動負債', '非流動負債', '負債總計', '權益總計', '自由現金流量(千)']
      >>> owlapp.fim('Y',"2018")
      
      [out]
      1   股票代號   股票名稱 年度       流動資產      非流動資產      資產總計        流動負債       非流動負債     負債總計      權益總計   自由現金流量()
      0   1101       台泥    2018   110380695.00   233704423.00   344085118.00   64503844.00    82201818.00  146705662.00  197379456.00   11351781.00
      1   1102       亞泥    2018   80358506.00    198829492.00   279187998.00   62804294.00    57335358.00  120139652.00  159048346.00   89315.00
      
  1. 法人籌碼個股資料 (Corporate Chip Single, CHS)


    依指定日期區間,撈取指定股票的三大法人買賣狀況和該股票的融資券狀況

    OwlData.chs(sid:str, bpd:str, epd:str, colist:list) -> DataFrame
    
    Parameters - sid : string
        股票代號
    - bpd : string
        設定查詢起始日期 8 碼數字,格式: yyyymmdd
    - epd : string
        設定查詢結束日期 8 碼數字,格式: yyyymmdd
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    日期 法人買賣超 法人買賣超金額(千) 外資買賣超 外資買賣超金額(千) 投信買賣超 投信買賣超金額(千) 自營買賣超 自營買賣超金額(千)
    融資增減 融資餘額 融資使用率 融券增減 融券餘額 融券使用率 券資比 當沖比率
    • 範例
    # 擷取台積電法人籌碼資料 from 2019/08/01 to 2019/08/02
    >>> owlapp.chs("2330", "20190801", "20190802")
    
    [out]
        	    日期	法人買賣超	法人買賣超金額()   外資買賣超	    外資買賣超金額()	投信買賣超  投信買賣超金額()	自營買賣超	自營買賣超金額()	融資增減	    融資餘額	融資使用率   融券增減	融券餘額	 融券使用率	券資比	當沖比率
        0	20190802	-8712.00	-2191606.00	    -9356.00	    -2353623.00 	-235.00	    -59122.00	        879.00	        221139.00	        -1264.00    8948.00	0.14	    -162.00	1603.00	    0.02	17.91	0.01
        1	20190801	-9058.00	-2323101.00	    -10675.00	    -2737829.00	        196.00	    50270.00	        1421.00	        364458.00	        806.00	    10212.00	0.16	    -226.00	1765.00	    0.03	17.28	0.00
    
  1. 法人籌碼多股資料 (Corporate Chip Multi, CHM)


    查詢指定日期,全上市櫃台股的三大法人買賣狀況和融資券狀況

    OwlData.chm(dt:str,colist:list) -> DataFrame
    
    Parameters - dt : string
        查詢某一日期 8碼,格式: yyyymmdd
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    日期 法人買賣超 法人買賣超金額(千) 外資買賣超 外資買賣超金額(千) 投信買賣超
    投信買賣超金額(千) 自營買賣超 自營買賣超金額(千) 融資增減 融資餘額 融資使用率
    融券增減 融券餘額 融券使用率 券資比 當沖比率
    • 範例
    # 擷取台股上市上櫃  from 2019/08/01 所有法人籌碼資訊
    >>> colist = ['日期', '法人買賣超', '法人買賣超金額(千)', '外資買賣超', '外資買賣超金額(千)', '投信買賣超', '投信買賣超金額(千)']
    >>> owlapp.chm("20190801", colist)
    
    [out]
        股票代號    股票名稱	法人買賣超  法人買賣超金額()	外資買賣超    外資買賣超金額()	投信買賣超  投信買賣超金額()	
    0     1101	台泥	-8374.00    -369823.00	        -8670.00	-382894.00	-63.00	          -2782.00
    1     1102	亞泥	 1697.00      70341.00           1636.00	  67813.00	  0.00	            0.00
    
  1. 技術指標 個股 (Technical Indicators Single, TIS)


    依指定日期區間,撈取指定股票的技術指標數值

    OwlData.tis(sid:str, bpd:str, epd:str, colist:list) -> DataFrame
    
    Parameters - sid : string
        股票代號
    - bpd : string
        查詢起始日期 8 碼數字,格式: yyyymmdd
    - epd : string
        查詢結束日期 8 碼數字,格式: yyyymmdd
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    日期 K(9) D(9) RSI(5) RSI(10) DIF MACD
    DIF-MACD W%R(5) W%R(10) +DI(14) -DI(14) ADX(14)
    • 範例
    # 擷取台積電技術指標 from 2019/08/01 to 2019/08/02
    >>> colist = ['日期', 'K(9)', 'D(9)', 'RSI(5)', 'RSI(10)']
    >>> owlapp.tis("2330", "20190801", "20190802", colist)
    
    [out]
             日期       K(9)     D(9)     RSI(5)      RSI(10)
    0      20190802    28.62    49.84     17.88       40.98
    1      20190801    39.80    60.45     30.51       51.65
    
  1. 技術指標 多股 (Technical Indicators Multi, TIM)


    查詢指定日期,全上市櫃台股的技術指標數值

    OwlData.tim(dt:str, colist:list) -> DataFrame
    
    Parameters - dt : string
        查詢某一日期 8碼,格式: yyyymmdd
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    股票代號 股票名稱 日期 K(9) D(9) RSI(5) RSI(10) DIF
    MACD DIF-MACD W%R(5) W%R(10) +DI(14) -DI(14) ADX(14)
    - 範例
    # 擷取台股上市上櫃  from 2019/08/01 所有技術指標資訊
    >>> colist = ['股票代號', '股票名稱', '日期', 'K(9)', 'D(9)', 'RSI(5)',
            'RSI(10)']
    >>> owlapp.tim("20190801", colist)
    
    [out]
          股票代號 股票名稱	日期	K(9)	 D(9)	RSI(5)	RSI(10)
    0	1101	台泥  20190801	40.17	49.83	25.77	 35.40
    1	1102	亞泥  20190801	9.02	13.11	15.33	 27.81
    
  1. 公司基本資料 多股 (Company Information Multi, CIM)


    撈取上市櫃台股的公司基本資料

    OwlData.cim(colist:list) -> DataFrame
    
    Parameters - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    股票代號 股票名稱 中文簡稱 英文簡稱 公司名稱 英文名稱 地址 電話
    傳真機號碼 實收資本額(百萬) 成立日期 上市日期 上櫃日期 興櫃日期 公發日期 董事長
    總經理 發言人 上市上櫃 產業名稱 統一編號 交易所公告股本(千)
    • 範例
    # 擷取台股上市上櫃 所有公司基本資訊
    >>> colist = ['股票代號', '股票名稱', '中文簡稱', '董事長', '總經理']
    >>> owlapp.cim(colist)
    
    [out]
          股票代號	股票名稱   中文簡稱    董事長	總經理
    0	1101	  台泥      台泥	      張安平	李鐘培
    1	1102	  亞泥      亞泥	      徐旭東	李坤炎
    2	1103	  嘉泥	    嘉泥       張剛綸	祁士鉅
    
  1. 股利政策 個股 (Dividend Policy Single, DPS)


    依據指定年度區間,撈取指定股票的配發股利狀況表

    OwlData.dps(sid:str, bpd:str, epd:str, colist:list) -> DataFrame
    
    Parameters - sid : string
        股票代號
    - bpd : string
        查詢起始年度 4 碼數字,格式: yyyy
    - epd : string
        查詢結束年度 4 碼數字,格式: yyyy
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    年度 現金股利合計 股票股利合計 股利合計 現金股利殖利率(%)
    盈餘配息 公積配息 盈餘配股 公積配股
    • 範例
    # 擷取台積電股利政策資料 from 2017 to 2018
    >>> colist = ['年度', '現金股利合計', '股票股利合計', '股利合計']
    >>> owlapp.dps("2330", "2017", "2018", colist)
    [out]
        年度    現金股利合計	股票股利合計    股利合計
    0   2018	8	    0.00	8.00
    1   2017	8	    0.00	8.00
    
  1. 股利政策 多股 (Dividend Policy Multi, DPM)


    依指定年度,撈取全上市櫃台股的配發股利狀況表

    OwlData.dpm(dt:str, colist:list) -> DataFrame
    
    Parameters - dt : string
        查詢某一年度 4碼,格式: yyyy
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    股票代號 股票名稱 年度 現金股利合計 股票股利合計 股利合計
    現金股利殖利率(%) 盈餘配息 公積配息 盈餘配股 公積配股
    - 範例
    # 擷取台股上市上櫃  from 2018 所有股利政策資訊
    >>> colist = ['股票代號', '股票名稱', '年度', '現金股利合計', '股票股利合計', '股利合計']
    >>> owlapp.dpm("2018", colist)
    [out]
          股票代號  股票名稱	年度    現金股利合計      股票股利合計       股利合計
    0	1101	 台泥	2018	    3.31	    0.70	    4.01
    1	1102	 亞泥	2018	    2.80	    0.00	    2.80
    2	1103	 嘉泥	2018	    1.00	    0.00	    1.00
    
  1. 除權除息 個股 (Exemption Dividend Policy Single, EDPS)


    依據指定年度區間,撈取指定股票的股東會日期及停止過戶的相關日期

    OwlData.edps(sid:str, bpd:str, epd:str, colist:list) -> DataFrame
    
    Parameters - sid : string
        股票代號
    - bpd : string
        查詢起始年度 4 碼數字,格式: yyyy
    - epd : string
        查詢結束年度 4 碼數字,格式: yyyy
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    年度 股東會日期 停止融券起始日 融券回補日 停止融券終迄日
    停止融資起始日 停止融資終迄日 停止過戶起 停止過戶迄 最後過戶日
    • 範例
    # 擷取台積電除權除息資料 from 2017 to 2018
    >>> colist = ['年度', '股東會日期', '停止融券起始日', '融券回補日']
    >>> owlapp.edps("2330", "2017", "2018", colist)
    
    [out]
    
            年度	股東會日期	停止融券起始日	融券回補日
    0	2018	20180605	20180328.00	20180328.00
    1	2017	20170608	20170329.00	20170329.00
    
  1. 除權除息 多股 (Exemption Dividend Policy Multi, EDPM)


    依指定日期,撈取全上市櫃台股的股東會日期及停止過戶的相關日期

    OwlData.edpm(dt:str, colist:str) -> DataFrame
    
    Parameters - dt : string
        查詢某一年度 4 碼,格式: yyyy
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    股票代號 股票名稱 年度 股東會日期 停止融券起始日 融券回補日
    停止融券終迄日 停止融資起始日 停止融資終迄日 停止過戶起 停止過戶迄 最後過戶日
    • 範例
    # 擷取台股上市上櫃  2018 所有除權除息資訊
    >>> colist = ['股票代號', '股票名稱', '年度', '股東會日期', '停止融券起始日']
    >>> owlapp.edpm("2018", colist)
    
    [out]
          股票代號 股票名稱	年度    股東會日期    停止融券起始日
    0	1101	台泥	2018	20180622	20180416
    1	1102	亞泥	2018	20180626	20180420
    2	1103	嘉泥	2018	20180621	20180413
    3	1104	環泥	2018	20180614	20180403
    4	1108	幸福	2018	20180615	20180409
    
  1. 即時報價 (Timely Stock Price, TSP)


    撈取指定股票即時股價資訊

    OwlData.tsp(sid:str, colist:str) -> DataFrame
    
    Parameters - sid : string
        股票代號
    - colist : list, default None
        指定顯示欄位 (若不輸入則顯示所有欄位)
    ReturnsDataFrame or Series
    Note
         - 發生錯誤時,會直接顯示錯誤訊息,回傳變數為空
    • 欄位
    欄位
    股票代號 股票名稱 時間 成交價 漲跌 漲跌幅
    總量 開盤價 最高價 最低價 成交量
    - 範例
    # 擷取台積電即時報價
    >>> colist = ['股票代號', '股票名稱', '時間', '開盤價', '最高價', '最低價', '成交量']
    >>> owlapp.tsp("2330", colist)
    
    [out]
        股票代號    股票名稱	      時間	開盤價	最高價	最低價	成交量
    0     2330	台積電	20190814143000	252.50	254.00	249.50	 11.00
    

Contribute

owldata was created by OwlData co. owldb@cmoney.com.tw

Contributing were welcome, please use GitHub issue and Pull Request to contribute!

歡迎協作,請使用 GitHub issue 以及 Pull Request 功能來協作。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

owldata-0.0.12.tar.gz (28.7 kB view hashes)

Uploaded Source

Built Distribution

owldata-0.0.12-py3-none-any.whl (19.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page