認為整體環境看多,優秀的個股不會太差;大環境不好,優秀的股票也會被拖累。有這個概念後我們取得三大法人的留倉作為判斷依據,但這個判斷依據是不是可以跟市場趨勢做結合,這時候就是需要可以代替整體市場的發行量加權股價指數,作為比較的依據,來驗正這個想法。
本日程式碼使用:d9_saveTaiexToDb.py
「發行量加權股價指數」是交易所自行編撰的指數,又稱為加權指數、上市指數、TAIEX,是跟美國S&P 500的公式相同,可以作為判斷臺北股市的狀況。
此指數是從1966開始,並且以1966年為基期,基期指數設為100,其計算公式為:發行量加權股價指數 =(當期總發行市值 / 基值)× 基期指數
。現在大概為17304(2021/9/9)。
這次取得的資料是從「發行量加權股價指數歷史資料」取得,此為一個CSV檔,裡面的欄位為:
因此紀錄加權指數的Table會長成這樣:
CREATE TABLE `Taiex` (
`TradeDate` date NOT NULL,
`Open` float NOT NULL DEFAULT '0',
`High` float NOT NULL DEFAULT '0',
`Low` float NOT NULL DEFAULT '0',
`Close` float NOT NULL DEFAULT '0',
PRIMARY KEY (`TradeDate`)
)
接著仿效Day6的做法,先從網路取得CSV,然後再用pandas
讀取CSV,進而轉乘Dataframe
:
try:
csv = requests.get(self.url)
df = pandas.read_csv(StringIO(csv.text)) # 有header
print(df) # debug
self.df = df
except Exception as exc:
print(exc)
return False
接著把資料資料匯入之前,稍微檢查一下資料,發現日期為1100901
,為民國年,需要轉成西元年,因此要特別轉換,這邊使用:
str(int(row[0]/10000)+1911)}-{str(row[0])[3:5]}-{str(row[0])[5:8]
由於資料本身就是數值,所以就直接除以10000,然後用int()
只取前面的年,接著再加上1911
,然後再重新組合成日期格式,這邊就把數值用str()
方式轉換成文字,接著用方式轉換成文字,接著用切割的方式切成所需的片段,也就是月份和日的部分,最後就組成:2021-09-01
。然後就可以存進去囉!
所以這一塊的程式碼為:
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 = f"{str(int(row[0]/10000)+1911)}-{str(row[0])[3:5]}-{str(row[0])[5:8]}"
cmd = f"""INSERT INTO Taiex
(TradeDate, Open, High, Low, Close)
values('{trade_date}',
'{row[1]}', {row[2]}, {row[3]}, {row[4]});"""
cursor.execute(cmd)
counter += 1
conn.commit()