【D18】尝试料理:取得所有股票清单

前言

有了这些功能後,想要知道能不能跑所有的股票,然後做这些事情,无论是行情订阅,还是历史资料。因此本篇是进行取行情的部分。

本日程序码使用: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取得市场内所有商品的资讯,并不妥当,看来还是希望我们取得清楚股票代码吧!


<<:  Day17 浅谈Code-Splitting

>>:  Day 17. UX/UI 设计流程之五:GUI Design (上)

[DAY-26] 做有意义的事,不要便宜行事 / 说实话,或至少不要说谎

做有意义的事,不要便宜行事 Pursue what is meaningful (not what...

# Day 25 Heterogeneous Memory Management (HMM) (Summary)

文件 原文文件:Heterogeneous Memory Management (HMM) 摘要 这...

【Day 5】BERT家族的成员们

当本系列文章提到BERT时,最初是指Google所开发的BERT,但後续基本就是指所有运用Trans...

[Day30] Speech Synthesis

[Day30] Speech Synthesis 需要用到的技巧与练习目标 speechsynthe...

唤醒与生俱来的数学力 (3) 抽象化 & 模型化

在数学课本中,最早引导学生思考「抽象概念」的练习是「正数和负数」。接在负数後,会开始运用文字式的代数...