【D13】取得:加权指数历史资料,并观察量与指数的关系

前言

昨天取得九月的加权指数资料,但是时间太短,看不出来量与价格的关系,所以就要取得更远的资料罗。取得後才能观察量与指数的关系。

本日程序码使用:


取得资料

首先我们要取得资料,但是在open data平台上只有当月的,这时候只能去证交所一个月一个月的抓(大家都骂翻了XD)。

前往每日市场成交资讯

首页 > 交易资讯 > 盘後资讯 > 每日市场成交资讯

那边就有搜寻表单可以填写,选择年份和月份,一次可以抓一个月。现在范例是抓今年的份,也就是1~9月,因此会有至少八份CSV,因为九月的这几天已经有收到。

这边是先纯手动抓,如果以後有时间,再写如何用爬虫的方式取得资料。

汇入资料库

接着要汇入资料库,这边可以参考Day9,不过不太一样的是,资料格式不相同,需要调整「日期」和「数字」。

在日期方面,从API取得的会是1100901,这种纯数字没有标点符号的版本,但是如果是从网页下载下来,会是110/09/01这样的格式,方便阅读,但是进入资料库时候需要调整,因为无法直接汇入。

首先在日期的部分,要改成略过标点符号:

f"{str(int(row[0][:3])+1911)}-{str(row[0])[4:6]}-{str(row[0])[7:]}"

接着数字的话用replace的方式,因为资料格式为str直接用replace,不用转换,因此汇入的for回圈会变成这样:

for row, _ in self.df.iterrows():
    if len(row[0]) != 9:
        continue
    # data: yyy/mm/dd to yyyy-mm-dd,
    # e.g. 110/08/02 to 2021-08-02
    trade_date = f"{str(int(row[0][:3])+1911)}-{str(row[0])[4:6]}-{str(row[0])[7:]}"
    cmd = f"""INSERT IGNORE INTO StockTransactionInfo
    (TradeDate,
    TranscationQty, TranscationAmount, TranscationCount,
    Taiex, ChangePoint)
    VALUES('{trade_date}',
    {row[1].replace(',', '')}, {row[2].replace(',', '')},
    {row[3].replace(',', '')}, {row[4].replace(',', '')},
    {row[5].replace(',', '')});"""
    cursor.execute(cmd)
conn.commit()

制作图表

当汇入後,就制作成我们要的图表吧!时间就是从2021年1月1日开始。

在这次做图时,练习设定X轴与Y轴的刻度,这时使用.gca()取得当下的轴(Axes)(可参考文章)。接着设定xaxis使用来设定X轴的资讯,并且用matplotlib.ticker.MaxNLocator来设定要有几个区块,这边设定为五个;同样的道理,Y轴则是使用yasis的方式。因此程序码会修改成这样:

# 画图
plt.plot(df["TradeDate"], df["Taiex"],"r")  # (x轴资料, y轴资料, 线的颜色)
plt.title("Taiex", {"fontsize":15})     # 设定图的标题及文字大小
# 设定X轴刻度
ax = plt.gca()
ax.xaxis.set_major_locator(matplotlib.ticker.MaxNLocator(5))
# 设定y轴刻度
ax.yaxis.set_major_locator(matplotlib.ticker.MaxNLocator(10))

图片中就可以看到X轴和Y轴的跟昨天看起来不一样,
https://ithelp.ithome.com.tw/upload/images/20210913/20103826RGdzYglwLI.png

同样的,把这样的概念,放在叠图中也能达成目标,因此会从:
https://ithelp.ithome.com.tw/upload/images/20210913/20103826zXoDg31Rrf.png

变成:
https://ithelp.ithome.com.tw/upload/images/20210913/20103826V8KRxkIVGU.png


观察量与点数的关系

仔细在有大行情的时候,如果量有大量出现,就好像图中间的那几根长条,之後有几天会继续下跌,这个现象非常明显。而跌一段时间之後,量会变少,这时开始指数往上跑,虽然上涨不明显,但也是个讯号。

所以我们的讯号可以说最近的加权指数的状况,当有大跌的时候提醒自己,这时如果量也大量出来,就制作一个告警的讯号,说现在价格跌且大量,这几天不适合进场,买股票可能会被大盘拖累。

这样我们就有初步的加权指数与量的讯号灯构想。


<<:  第八天:安装 IntelliJ IDEA

>>:  Python 练习

D26 - 彭彭的课程# Python 实体物件的建立与使用 - 上篇 - 实体属性 Instance Attributes

感觉台湾正在被台风暴风圈垄罩QQ 希望风雨不要影响大家太多 可以好好下雨下到水库上面以後不要缺水XD...

POCO_设定所有Table继承同一个class

因为专案刚好需要用到 所以纪录一下参数在哪边 纪录一下 使用Visual Studio Entity...

Day_04 连上网路

一般市售的路由器、无线分享机通常会配有一个广域网路(WAN, Wide Area Network)或...

D1 安装Django以及尝试玩玩看

Hi All, 这里是我记录Django学习历程的纪录,我是以一个略懂python基础的人为出发点,...

Day9 Methods and v-on

今天来介绍这个指令v-on用来绑定HTML DOM,来触发要执行的事件 Method 这时并没有执行...