D30 - 用 Swift 和公开资讯,打造投资理财的 Apps { 台股申购功能扩充,算出价差 }

这是第三十天!!!

到目前为止的范例程序码就在这个 repo

https://github.com/MoonAndEye/ITIronMan_2021/tree/main/D29/ITIronMan

到目前,这一份程序已经具备下面几项功能

  • 台股 上市/上柜/兴柜 股票代号 vs. 名称,以及基本资料,如股本、负责人、成立日期等等
  • 台股申购资料
  • 加权指数 K线/成交量/均线
  • 三大法人成交比重

如果要拿去上架,将 UI 改成美美的,就可以了。

接下来,我们对台股申购,进行功能的扩充,D7~D11

这次铁人赛,我们在 D7~D11 的文章,做出了台股申购的功能。

我们回顾一下依照当时拿到的公开资料,可以拿到的是 [抽签日期]、[证券名称]、[申购开始日]、[申购结束日]、[承销价(元)]、[实际承销价(元)]、[拨券日期(上市、上柜日期)]、[申购股数]、[中签率]。

如果想知道抽中,「大概」可以赚到多少,上面这些资讯是无法知道的,因为这些资讯少了 [收盘价]。如果能获得收盘价,那 ( [收盘价(拨券日)] - [承销价] ) * 张数 就可以预估这次申购,如果抽到,会不会赔钱。

证交所有个股的开、高、低、收,下载的页面如下。

https://www.twse.com.tw/zh/page/trading/exchange/STOCK_DAY.html

https://ithelp.ithome.com.tw/upload/images/20211010/20140622fRWa7uLopv.png

而每一档下载的位置,可以在「CSV 下载」的按钮中,看到。

https://www.twse.com.tw/en/exchangeReport/STOCK_DAY?response=csv&date=20210928&stockNo=2330

要更换的参数,就是 date=20210928 再输入 stockNo=2330,就可以得到 2330 这一档的当月的开高低收。

依照之前设计的 UI,我们可以这样设计发动 API (但不建议,原因後述)。

在 UITabelViewDelegate 中的 tableView(_:willDisplay:forRowAt:),发动 API。

UITableViewDelegate 的文件

https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614883-tableview

https://ithelp.ithome.com.tw/upload/images/20211010/20140622m6lEqGKbpj.png

所以逻辑如下

1- 在 willDisplay 中,用 row 的 indexPath 去问 Model,这一个的 data model 是什麽,拿出股票代号。

2.a - 如果这个股票代号的资料,有存在记忆体或是 UserDefaults 中,那就直接显示在 cell 上,也把价差,价差百分比算出,显示在 cell 上。

2.b - 如果这个股票袋号没有之前的资料,那就用上面的网址,发动 URLRequest,去拿当月的 CSV 档

3- 将上述的 CSV 档离今天最近日期的 row 拿出

4- 将 row 的资料转成 data model,存入记忆体或 UserDefaults 中。

5- 将 data model 传回 ViewController,并将资料显示在 Cell 上。

但…下一篇会说明,为什麽不要这样做。


<<:  Android Studio初学笔记-Day25-ExpandableListVIew(1)

>>:  Day25 来人上菜! 给我来点Cookie and Session

【设计+切版30天实作】|Day14 - 简约CTA的用处及设计的注意事项

设计大纲 设计CTA的用意一方面是让结尾不会来得太突然,另一方面是想在网页的最後再来一个「Call ...

【C language part 4】阵列与字串&函式

阵列 阵列是一群具有相同名称或资料型态的变数集合。 由於整个阵列中的变数均具有相同的名称,因此若要存...

如何将手机照片传到笔电--简单四招包搞定

无论你是安卓系统还是苹果系统,将照片传到笔电只需跟着下面这四招。保证有一招可以帮你解决问题,简单又方...

Day 3 : Git 回推版本

reset 回推 使用Git的一大好处就是,当我的程序在改动的过程中发生了难以修复的错误,我们可以透...

[Day10] Google Cloud Platform 简介

前面几天我们介绍了如何用 .NET 从零开始实作一个简单的 API 专案,不过截至目前为止,我们的 ...