iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0
永豐金融APIs

永豐證API X Python系列 第 18

【D18】嘗試料理:取得所有股票清單

  • 分享至 

  • xImage
  •  

前言

有了這些功能後,想要知道能不能跑所有的股票,然後做這些事情,無論是行情訂閱,還是歷史資料。因此本篇是進行取行情的部分。

本日程式碼使用:d18_stock_list.ipynb

找出規律

  1. 使用Stocks取得股票資訊

首先簡單的使用api.Contracts.Stocks看看結果:

(OES, OTC, TSE)

看起來只有交易所的資料,那就先取得TSE的資料吧!

# 取得股票資料
stock_list = api.Contracts.Stocks["TSE"]
stock_list

結果出現的是:

TSE(TSE031785, TSE033803, TSE031523...(以下略過)

看來很難用這樣的方式。找出股票的詳細資料

  1. 從Stocks清單,找出股票

既然沒有辦法,那就從資料中找出規則。推測category00為權證,那就把它過濾掉吧!

stocks = [] # record the code
rights = [] # record the code
for data in stock_list:
    # print(f"{data.code}-{data.symbol}-{data.name}")
    if data.category == "00":
        rights.append(data.code)
    else:
        stocks.append(data.code)

過濾成兩個列表,一個是股票一個是權證。檢查股票是否都是正確的。使用print(len(stocks))觀看股票的數量,結果發現資料不太穩和,因此檢查裡面的資料,好像有一些為「特」的商品,像是「國泰金乙特」看來這樣也不能單純地使用。

  1. 觀察商品

在這邊使用api.Contracts.Stocks["2882B"],結果呈現為:

Stock(exchange=<Exchange.TSE: 'TSE'>, code='2882B', symbol='TSE2882B', name='國泰金乙特', category='17', unit=1000, limit_up=68.4, limit_down=56.0, reference=62.2, update_date='2021/10/01')

接個看看category == "17"是否能過濾掉飛公司的資料:

spacial_stock = []
for data in stock_list:
    if data.category == "17":
        print(data)

結果還是不行,仍有不少金融公司股票在裡面:

exchange=<Exchange.TSE: 'TSE'> code='2851' symbol='TSE2851' name='中再保' category='17' unit=1000 limit_up=30.15 limit_down=24.75 reference=27.45 update_date='2021/10/01' margin_trading_balance=63057 day_trade=<DayTrade.Yes: 'Yes'>
exchange=<Exchange.TSE: 'TSE'> code='2897' symbol='TSE2897' name='王道銀行' category='17' unit=1000 limit_up=8.37 limit_down=6.85 reference=7.61 update_date='2021/10/01' day_trade=<DayTrade.Yes: 'Yes'>

看來category也不能使用

結論

從現有的資料中,找不到可以用簡單的方法找出來股票清單,Shioaji所列出來的都是他們自己編好的股票資料,無法清楚地取得所有清單資訊,或是過濾非一般股票的資訊。看來這個部分是無解。


後記

對於API本來很有期待的,但是使用後,有點綁手綁腳,雖然為Python,說明文件也還算有涵蓋所有功能資料,但是很多細節卻沒有寫出,造成困擾。

用Stocks取得市場內所有商品的資訊,並不妥當,看來還是希望我們取得清楚股票代碼吧!


上一篇
【D17】雜談:版本與Github找不到資料
下一篇
【D19】嘗試料理#2:取得所有指數清單
系列文
永豐證API X Python31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言