有了这些功能後,想要知道能不能跑所有的股票,然後做这些事情,无论是行情订阅,还是历史资料。因此本篇是进行取行情的部分。
本日程序码使用:d18_stock_list.ipynb
首先简单的使用api.Contracts.Stocks
看看结果:
(OES, OTC, TSE)
看起来只有交易所的资料,那就先取得TSE的资料吧!
# 取得股票资料
stock_list = api.Contracts.Stocks["TSE"]
stock_list
结果出现的是:
TSE(TSE031785, TSE033803, TSE031523...(以下略过)
看来很难用这样的方式。找出股票的详细资料
既然没有办法,那就从资料中找出规则。推测category
为00
为权证,那就把它过滤掉吧!
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))
观看股票的数量,结果发现资料不太稳和,因此检查里面的资料,好像有一些为「特」的商品,像是「国泰金乙特」看来这样也不能单纯地使用。
在这边使用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取得市场内所有商品的资讯,并不妥当,看来还是希望我们取得清楚股票代码吧!
>>: Day 17. UX/UI 设计流程之五:GUI Design (上)
做有意义的事,不要便宜行事 Pursue what is meaningful (not what...
文件 原文文件:Heterogeneous Memory Management (HMM) 摘要 这...
当本系列文章提到BERT时,最初是指Google所开发的BERT,但後续基本就是指所有运用Trans...
[Day30] Speech Synthesis 需要用到的技巧与练习目标 speechsynthe...
在数学课本中,最早引导学生思考「抽象概念」的练习是「正数和负数」。接在负数後,会开始运用文字式的代数...