stock — 股票歷史資訊
stock 包含三個重要的元素: DATATUPLE 負責建立歷史股票資料之 namedtuple、 BaseFetcher 作為 TWSEFetcher 以及 TPEXFetcher 之基底 class、 Stock 封裝整個歷史股票資訊供使用者使用,同時 Stock 會針對上市或上櫃的股票代號 自動給予正確的 fetcher。
DATATUPLE
- class
stock.DATATUPLE(date, capacity, turnover, open, high, low, close, change, transaction) 歷史資料之 nametuple。
Attributes:
datedatetime.datetime 格式之時間,例如 datetime.datetime(2017, 6, 12, 0, 0)。
capacity總成交股數 (單位: 股)。
turnover總成交金額 (單位: 新台幣/元)。
open開盤價。
high盤中最高價
low盤中最低價。
close收盤價。
change漲跌價差。
transaction成交筆數。
- class
stock.DATATUPLE(date, capacity, turnover, open, high, low, close, change, transaction) 歷史資料之 nametuple。
Attributes:
datedatetime.datetime格式之時間,例如datetime.datetime(2017, 6, 12, 0, 0)。
capacity總成交股數 (單位: 股)。
turnover總成交金額 (單位: 新台幣/元)。
open開盤價。
high盤中最高價
low盤中最低價。
close收盤價。
change漲跌價差。
transaction成交筆數。
Stock
- class
stock.Stock(sid: str, initial_fetch: bool=True) 有關股票歷史資訊 (開/收盤價,交易量,日期…etc) 以及簡易股票分析。 建立 Stock 實例時,若 initial_fetch 為 True (預設), 會自動呼叫 fetch_31() 抓取近 31 日之歷史股票資料。
Class attributes are:
sid股票代號。
fetcher抓取方式之 instance,程式會自動判斷上櫃或上市,使用相對應之 fetcher。
raw_data經由 TWSEFetcher 或是 TPEXFetcher 抓取之原始資料。
Fetcher method:
fetch(self, year: int, month: int)擷取該年、月份之歷史股票資料。
fetch_from(self, year: int, month: int)擷取自該年、月至今日之歷史股票資料。
fetch_31(self)擷取近 31 日開盤之歷史股票資料。
分析 method:
continuous(self, data)data 之持續上升天數。
moving_average(self, data: list, days: int)data 之 days 日均數值。
ma_bias_ratio(self, day1, day2)計算 day1 日以及 day2 之乖離值。
ma_bias_ratio_pivot(self, data, sample_size=5, position=False)判斷正負乖離。
- class
stock.Stock(sid: str, initial_fetch: bool=True) 有關股票歷史資訊 (開/收盤價,交易量,日期…etc) 以及簡易股票分析。 建立
Stock實例時,若initial_fetch為True(預設), 會自動呼叫fetch_31()抓取近 31 日之歷史股票資料。Class attributes are:
sid股票代號。
fetcher抓取方式之 instance,程式會自動判斷上櫃或上市,使用相對應之 fetcher。
raw_data經由
TWSEFetcher或是TPEXFetcher抓取之原始資料。
Fetcher method:
fetch(self, year: int, month: int)擷取該年、月份之歷史股票資料。
fetch_from(self, year: int, month: int)擷取自該年、月至今日之歷史股票資料。
fetch_31(self)擷取近 31 日開盤之歷史股票資料。
分析 method:
continuous(self, data)data之持續上升天數。
moving_average(self, data: list, days: int)data之days日均數值。
ma_bias_ratio(self, day1, day2)計算
day1日以及day2之乖離值。
ma_bias_ratio_pivot(self, data, sample_size=5, position=False)判斷正負乖離。
Fetcher
- class
stock.BaseFetcher fetch(self, year, month, sid, retry)抓取相對應年月份之股票資料。
_convert_date(self, date)回傳西元記年,將民國記年轉換為西元記年。舉例而言:
_make_datatuple(self, data)將相對應之單日資料轉換為 DATATUPLE。會將對應之資料轉換為對應型態。
purify(self, original_data: list)將 original_data 內之所有資料轉換為 DATATUPLE 型態。
- class
stock.TWSEFetcher(BaseFetcher) 台灣上市股票抓取
- class
stock.TPEXFetcher(BaseFetcher)¶ 台灣上櫃股票抓取
AI協力股票爬蟲
- class
stock.BaseFetcher fetch(self, year, month, sid, retry)抓取相對應年月份之股票資料。
_convert_date(self, date)回傳西元記年,將民國記年轉換為西元記年。舉例而言:
_make_datatuple(self, data)將相對應之單日資料轉換為
DATATUPLE。會將對應之資料轉換為對應型態。
purify(self, original_data: list)將
original_data內之所有資料轉換為DATATUPLE型態。
- class
stock.TWSEFetcher(BaseFetcher) 台灣上市股票抓取
- class
stock.TPEXFetcher(BaseFetcher)¶ 台灣上櫃股票抓取
資料參考 {"msgArray":[{"@":"2330.tw","tv":"8198","ps":"8185","pid":"9.tse.tw|15192","pz":"1000.0000","bp":"0","fv":"97","oa":"1010.0000","ob":"1005.0000","m%":"000000","^":"20250304","key":"tse_2330.tw_20250304","a":"1005.0000_1010.0000_1015.0000_1020.0000_1025.0000_","b":"1000.0000_999.0000_998.0000_997.0000_996.0000_","c":"2330","#":"13.tse.tw|3012","d":"20250304","%":"14:30:00","ch":"2330.tw","tlong":"1741069800000","ot":"14:30:00","f":"915_2344_2240_1949_723_","g":"7496_1304_1706_921_1698_","ip":"0","mt":"000000","ov":"189262","h":"1010.0000","i":"24","it":"12","oz":"1010.0000","l":"996.0000","n":"台積電","o":"996.0000","p":"0","ex":"tse","s":"8198","t":"13:30:00","u":"1120.0000","v":"64283","w":"918.0000","nf":"台灣積體電路製造股份有限公司","y":"1020.0000","z":"1000.0000","ts":"0"}],"referer":"","userDelay":5000,"rtcode":"0000","queryTime":{"sysDate":"20250304","stockInfoItem":3877,"stockInfo":510,"sessionStr":"UserSession","sysTime":"16:41:36","showChart":false,"sessionFromTime":-1,"sessionLatestTime":-1},"rtmessage":"OK","exKey":"if_tse_2330.tw_zh-tw.null","cachedAlive":2265}
解析後參考 object►cachedAlive object {8} msgArray [1] 0 {44} @ : 2330.tw tv : 8198 ps : 8185 pid : 9.tse.tw|15192 pz : 1000.0000 bp : 0 fv : 97 oa : 1010.0000 ob : 1005.0000 m% : 000000 ^ : 20250304 key : tse_2330.tw_20250304 a : 1005.0000_1010.0000_1015.0000_1020.0000_1025.0000_ b : 1000.0000_999.0000_998.0000_997.0000_996.0000_ c : 2330 # : 13.tse.tw|3012 d : 20250304 % : 14:30:00 ch : 2330.tw tlong : 1741069800000 ot : 14:30:00 f : 915_2344_2240_1949_723_ g : 7496_1304_1706_921_1698_ ip : 0 mt : 000000 ov : 189262 h : 1010.0000 i : 24 it : 12 oz : 1010.0000 l : 996.0000 n : 台積電 o : 996.0000 p : 0 ex : tse s : 8198 t : 13:30:00 u : 1120.0000 v : 64283 w : 918.0000 nf : 台灣積體電路製造股份有限公司 y : 1020.0000 z : 1000.0000 ts : 0 referer : userDelay : 5000 rtcode : 0000 queryTime {8} sysDate : 20250304 stockInfoItem : 3877 stockInfo : 510 sessionStr : UserSession sysTime : 16:41:36 showChart : false sessionFromTime : -1 sessionLatestTime : -1 rtmessage : OK exKey : if_tse_2330.tw_zh-tw.null cachedAlive : 2265
股票資料來源
證交所即時資訊API