常見的市場熱絡程度,也有用成交金額判斷,當大家踴躍交易的時候,容易價格抬升。試想如果,大家預期未來會一直狂跌,有人會想要現在買嗎?沒有人會想要買股票在高價,因此在跌勢中,市場的成交無論是數量或是金額都會大大的降低,所以判斷市場熱度是很重要的。
本日程式碼使用:d10_saveDailyMarketInfoToDb.py
在前言有說,當看空整個市場時,不會有人用「現在的高價」買股票,一定會等未來低價的時候買,這時交易量就會下降;同樣的,未來預期會漲,大家願意拿錢去購買「現在便宜」的股票,等未來高價的時候賣掉,這時候市場就很熱絡。
就好像這篇新聞〈台股漲33點收17,304點 成交量萎縮至2,439億元〉有提到「雖然今日有拉尾盤、上漲家數大於下跌家數,不過成交量縮至3,000億元以下,預期後續指數仍偏向大箱型區間震盪走勢」,因此這類的資訊也是觀察點。
這樣的概念可以衍生出觀察整個市場的交易數量和金額,因此本日的資料就是要收集這個相關的:盤後資訊 > 每日市場成交資訊,裡面有整個市場的成交股數
、成交金額
、成交筆數
,就是我們要的重點。
由於成交金額最近比較低,從新聞可知道有2439億,用int
無法負荷,這邊要使用bigint
。接著再觀察資料:
日期,成交股數,成交金額,成交筆數,發行量加權股價指數,漲跌點數
"1100901","7417302954","365348125049","2348742","17473.99","-16.30"
有的還要處理小數點和正負號,所以我們就在確定是正數的地方,像是成交股數
、成交金額
、成交筆數
使用unsigned
,然後有小數點的,留一些空間等未來指數漲更大(?)。因此Table會變成:
CREATE TABLE `StockTransactionInfo` (
`TradeDate` date NOT NULL,
`TranscationQty` bigint(11) unsigned NOT NULL DEFAULT '0',
`TranscationAmount` bigint(11) unsigned NOT NULL DEFAULT '0',
`TranscationCount` bigint(11) unsigned NOT NULL DEFAULT '0',
`Taiex` float(9,2) NOT NULL DEFAULT '0.00',
`ChangePoint` float(9,2) NOT NULL DEFAULT '0.00',
`CreateTime` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`TradeDate`)
) ;
這邊就先不討論要如何取資料,可以看前面的篇章,不過要注意的是,這邊Day9一樣,日期要修改一下,從民國年改成西元年。
# 建立connection物件
my_connt_obj = db_connect.mysql_connect()
conn = my_connt_obj.connect()
with conn.cursor() as cursor:
# 新增SQL語法
for _, row in self.df.iterrows():
trade_date = str(row[0])
trade_date = f"{str(int(row[0]/10000)+1911)}-{str(row[0])[3:5]}-{str(row[0])[5:8]}"
cmd = f"""INSERT INTO StockTransactionInfo
(TradeDate,
TranscationQty, TranscationAmount, TranscationCount,
Taiex, ChangePoint)
values('{trade_date}',
'{row[1]}', {row[2]}, {row[3]}, {row[4]}, {row[5]});"""
cursor.execute(cmd)
conn.commit()
這樣就沒啥要注意的了,就可以直接匯入。
這樣我們就有一些製作訊號燈的素材,有大盤交易資訊、加權指數點數、三大法人對於最近幾天的看法(留倉),這樣可以製作出自己的市場溫度計。
接下來會用這些素材,思考彼此的關係進而 做出一些訊號燈,告訴自己現在市場的熱絡程度。