本篇是閱讀劉承彥老師寫的 "Python股票演算法交易實務 147 個關鍵技巧詳解" (第二版, 博碩 2021) 第二章技巧 35 的實測紀錄.
證交所的三大法人買賣超資訊查詢網址如下 :
在上方選擇資料年月, 輸入股票代號按 "查詢" 就會顯示該日的買賣超資訊 :
利用瀏覽器的開發者工具分析, 此網頁是透過下列網址從後端伺服器取得資料的 :
# https://www.twse.com.tw/fund/TWT38?response=json&date=20250829 (外資)
# https://www.twse.com.tw/fund/TWT43?response=json&date=20250829 (自營商)
# https://www.twse.com.tw/fund/TWT44?response=json&date=20250829 (投信)
以下測試直接拿之前的程式模組修改.
1. 外資 (含陸資) 買賣超 :
# twse_foreign_investors_net.py
import requests
import json
from fake_useragent import UserAgent
def get_foreign_investors_net(date):
url=f'https://www.twse.com.tw/fund/TWT38U?response=json&date={date}'
ua=UserAgent()
headers={'User-Agent': ua.random}
res=requests.get(url, headers=headers)
if res.status_code == requests.codes.ok:
data=json.loads(res.text)
return data
else:
print(f'Error: {res.status_code}, Response: {res.text}')
return False
if __name__ == '__main__':
date=input('請輸入日期 (格式 YYYYMMDD) :')
result=get_foreign_investors_net(date)
if result:
print(result['title'])
print(result['fields'])
print(result['data'])
else:
print('爬取網頁失敗')
執行結果如下 :
>>> %Run twse_foreign_investors_net.py
請輸入日期 (格式 YYYYMMDD) :20250829
114年08月29日 外資及陸資買賣超彙總表
['', '證券代號', '證券名稱', '買進股數', '賣出股數', '買賣超股數', '買進股數', '賣出股數', '買賣超股數', '買進股數', '賣出股數', '買賣超股數']
[[' ', '2498 ', '宏達電 ', '39,427,844', '23,639,820', '15,788,024', '0', '0', '0', '39,427,844', '23,639,820', '15,788,024'], [' ', '00637L', '元大滬深300正2 ', '12,332,000', '650,000', '11,682,000', '0', '0', '0', '12,332,000', '650,000', '11,682,000'], ['*', '3711 ', '日月光投控 ', '15,110,172', '6,926,772', '8,183,400', '0', '0', '0', '15,110,172', '6,926,772', '8,183,400'], [' ', '00715L', '期街口布蘭特正2 ', '7,567,000', '6,000', '7,561,000', '0', '0', '0', '7,567,000', '6,000', '7,561,000'], [' ', '2313 ',
... (略) ...
'4439 ', '冠星-KY ', '2,000', '2,000', '0', '0', '0', '0', '2,000', '2,000', '0'], [' ', '4440 ', '宜新實業 ', '6,000', '6,000', '0', '0', '0', '0', '6,000', '6,000', '0'], [' ', '4552 ', '力達-KY ', '3,000', '3,000', '0', '0', '0', '0', '3,000', '3,000', '0'], [' ', '5519 ', '隆大 ', '38,000', '38,000', '0', '0', '0', '0', '38,000', '38,000', '0'], [' ', '6201 ', '亞弘電 ', '4,000', '4,000', '0', '0', '0', '0', '4,000', '4,000', '0'], [' ', '6431 ', '光麗-KY ', '7,000', '7,000', '0', '0', '0', '0', '7,000', '7,000', '0'], [' ', '6796 ', '晉弘 ', '2,000', '2,000', '0', '0', '0', '0', '2,000', '2,000', '0'], [' ', '8162 ', '微矽電子-創 ', '1,000', '1,000', '0', '0', '0', '0', '1,000', '1,000', '0'], [' ', '8481 ', '政伸 ', '3,000', '3,000', '0', '0', '0', '0', '3,000', '3,000', '0']]
2. 自營商買賣超 :
# twse_securities_firms_net.py
import requests
import json
from fake_useragent import UserAgent
def get_securities_firms_net(date):
url=f'https://www.twse.com.tw/fund/TWT43U?response=json&date={date}'
ua=UserAgent()
headers={'User-Agent': ua.random}
res=requests.get(url, headers=headers)
if res.status_code == requests.codes.ok:
data=json.loads(res.text)
return data
else:
print(f'Error: {res.status_code}, Response: {res.text}')
return False
if __name__ == '__main__':
date=input('請輸入日期 (格式 YYYYMMDD) :')
result=get_securities_firms_net(date)
if result:
print(result['title'])
print(result['fields'])
print(result['data'])
else:
print('爬取網頁失敗')
執行結果如下 :
>>> %Run twse_securities_firms_net.py
請輸入日期 (格式 YYYYMMDD) :20250829
114年08月29日 自營商買賣超彙總表
['證券代號', '證券名稱', '買進股數', '賣出股數', '買賣超股數', '買進股數', '賣出股數', '買賣超股數', '買進股數', '賣出股數', '買賣超股數']
[['00715L', '期街口布蘭特正2 ', '0', '0', '0', '38,820,696', '2,386,000', '36,434,696', '38,820,696', '2,386,000', '36,434,696'], ['00929 ', '復華台灣科技優息', '0', '0', '0', '24,872,879', '3,288,079', '21,584,800', '24,872,879', '3,288,079', '21,584,800'], ['00637L', '元大滬深300正2 ', '689,000', '111,000', '578,000', '32,045,075', '19,554,850', '12,490,225', '32,734,075', '19,665,850', '13,068,225'], ['00940 ', '元大台灣價值高息', '0', '0', '0', '15,534,064', '2,826,000', '12,708,064', '15,534,064', '2,826,000', '12,708,064'], ['00946 ', '群益科技高息成長', '0', '0', '0', '10,821,420', '2,483,000', '8,338,420', '10,821,420', '2,483,000', '8,338,420'], ['00934 ', '中信成長高股息 ', '0', '0', '0', '8,554,790', '451,000', '8,103,790', '8,554,790', '451,000', '8,103,790'], ['009800', '中信NASDAQ ', '0', '0', '0', '6,017,317', '1,236,303', '4,781,014', '6,017,317', '1,236,303', '4,781,014'], ['071741', '穎崴統一52購01 ', '0', '0', '0', '5,318,000', '1,085,000', '4,233,000', '5,318,000', '1,085,000', '4,233,000'], ['00882 ', '中信中國高股息 ', '0', '0', '0', '6,273,583', '2,281,750', '3,991,833', '6,273,583', '2,281,750', '3,991,833'], ['00830 ', '國泰費城半導體 ', '0', '0', '0', '4,085,451', '234,000', '3,851,451', '4,085,451', '234,000', '3,851,451'], ['00665L', '富邦恒生國企正2 ', '0', '0', '0', '11,302,953', '7,649,228', '3,653,725', '11,302,953', '7,649,228', '3,653,725'], ['00885 ', '富邦越南 ', '0', '0', '0', '4,838,103', '1,382,030', '3,456,073', '4,838,103', '1,382,030', '3,456,073'], ['2498 ', '宏達電 ', '2,642,049', '1,131,503', '1,510,546', '2,510,363', '569,259', '1,941,104', '5,152,412', '1,700,762', '3,451,650'],
... (略) ...
['089535', '世芯永豐53購06 ', '0', '0', '0', '68,000', '68,000', '0', '68,000', '68,000', '0'], ['089601', '台積電凱基51購29', '0', '0', '0', '2,000', '2,000', '0', '2,000', '2,000', '0'], ['089605', '京元電凱基53購02', '0', '0', '0', '1,000', '1,000', '0', '1,000', '1,000', '0'], ['089748', '鴻海群益53購09 ', '0', '0', '0', '20,000', '20,000', '0', '20,000', '20,000', '0'], ['089828', 'AES元大51購09 ', '0', '0', '0', '196,000', '196,000', '0', '196,000', '196,000', '0'], ['089853', 'T50正2中信54購04', '0', '0', '0', '8,000', '8,000', '0', '8,000', '8,000', '0'], ['089938', '新日興永豐53購03', '0', '0', '0', '6,000', '6,000', '0', '6,000', '6,000', '0'], ['1525 ', '江申 ', '0', '0', '0', '3,000', '3,000', '0', '3,000', '3,000', '0'], ['2305 ', '全友 ', '1,000', '1,000', '0', '0', '0', '0', '1,000', '1,000', '0'], ['2722 ', '夏都 ', '1,000', '1,000', '0', '0', '0', '0', '1,000', '1,000', '0'], ['6671 ', '三能-KY ', '0', '0', '0', '5,000', '5,000', '0', '5,000', '5,000', '0'], ['7631 ', '聚賢研發-創 ', '0', '0', '0', '9,000', '9,000', '0', '9,000', '9,000', '0']]
3. 投信買賣超 :
# twse_investment_trusts_net.py
import requests
import json
from fake_useragent import UserAgent
def get_investment_trusts_net(date):
url=f'https://www.twse.com.tw/fund/TWT44U?response=json&date={date}'
ua=UserAgent()
headers={'User-Agent': ua.random}
res=requests.get(url, headers=headers)
if res.status_code == requests.codes.ok:
data=json.loads(res.text)
return data
else:
print(f'Error: {res.status_code}, Response: {res.text}')
return False
if __name__ == '__main__':
date=input('請輸入日期 (格式 YYYYMMDD) :')
result=get_investment_trusts_net(date)
if result:
print(result['title'])
print(result['fields'])
print(result['data'])
else:
print('爬取網頁失敗')
執行結果如下 :
>>> %Run twse_investment_trusts_net.py
請輸入日期 (格式 YYYYMMDD) :20250829
114年08月29日 投信買賣超彙總表
['', '證券代號', '證券名稱', '買進股數', '賣出股數', '買賣超股數']
[[' ', '2892 ', '第一金 ', '9,903,000', '872,000', '9,031,000'], [' ', '3045 ', '台灣大 ', '3,464,000', '25,000', '3,439,000'], [' ', '00981A', '主動統一台股增長', '3,400,000', '0', '3,400,000'], [' ', '4904 ', '遠傳 ', '2,998,000', '26,000', '2,972,000'], [' ', '4958 ', '臻鼎-KY ', '2,324,000', '12,000', '2,312,000'], [' ', '3706 ', '神達 ', '2,517,000', '219,000', '2,298,000'], [' ', '9904 ', '寶成 ', '2,158,000', '334,000', '1,824,000'], [' ', '2301 ', '光寶科 ', '2,043,000', '392,000', '1,651,000'], [' ', '2618 ', '長榮航 ', '1,398,000', '243,000', '1,155,000'], [' ', '2360 ', '致茂 ', '1,156,000', '6,000', '1,150,000'], [' ', '2912 ', '統一超 ', '1,118,000', '8,000', '1,110,000'], [' ', '2324 ', '仁寶 ', '1,895,000', '981,000', '914,000'], [' ', '3665 ', '貿聯-KY ', '856,000', '2,000', '854,000'], [' ', '8028 ', '昇陽半導體 ', '757,000', '2,000', '755,000'], [' ', '2887 ', '台新金 ', '2,775,000', '2,041,000', '734,000'], [' ', '2368 ', '金像電 ', '772,000', '83,000', '689,000'], [' ', '00713 ', '元大台灣高息低波', '450,000', '0', '450,000'], [' ', '2915 ', '潤泰全 ', '447,000', '10,000', '437,000'], [' ', '2883 ', '凱基金 ', '1,664,000', '1,228,000', '436,000'], [' ', '2455 ', '全新 ', '407,000', '3,000', '404,000'], [' ', '5234 ', '達興材料 ', '400,000', '1,000', '399,000'], [' ', '1101 ', '台泥 ', '383,000', '61,000', '322,000'], [' ', '8046 ', '南電 ', '322,000', '14,000', '308,000'], [' ', '1536 ', '和大 ', '269,000', '3,000', '266,000'], [' ', '3376 ', '新日興 ', '253,000', '3,000', '250,000'], [' ', '6515 ', '穎崴 ', '218,000', '5,000', '213,000'], [' ', '2376 ', '技嘉 ', '209,000', '4,000', '205,000'], [' ', '2607 ', '榮運 ', '197,000', '9,000', '188,000'], [' ', '1210 ', '大成 ', '199,000', '43,000', '156,000'], [' ', '00708L', '期元大S&P黃金正2', '150,000', '0', '150,000'], [' ', '4164 ', '承業醫 ', '150,000', '0', '150,000'], [' ', '2504 ', '國產 ', '228,000', '95,757', '132,243'], [' ', '2357 ', '華碩 ', '281,000', '149,211', '131,789'], [' ', '2610 ', '華航 ', '175,000', '47,000', '128,000'], [' ', '2006 ', '東和鋼鐵 ', '135,000', '13,000', '122,000'], [' ', '3034 ', '聯詠 ', '249,000', '128,489', '120,511'], [' ', '1326 ', '台化 ', '136,000', '19,000', '117,000'], [' ', '6176 ', '瑞儀 ', '162,000', '45,879', '116,121'], [' ', '2890 ',
... (略) ...
[' ', '4583 ', '台灣精銳 ', '0', '1,000', '-1,000'], [' ', '5222 ', '全訊 ', '0', '1,000', '-1,000'], [' ', '5243 ', '乙盛-KY ', '0', '1,000', '-1,000'], [' ', '5284 ', 'jpp-KY ', '0', '1,000', '-1,000'], [' ', '5469 ', '瀚宇博 ', '0', '1,000', '-1,000'], [' ', '6449 ', '鈺邦 ', '0', '1,000', '-1,000'], [' ', '6806 ', '森崴能源 ', '0', '1,000', '-1,000'], [' ', '7722 ', 'LINEPAY ', '0', '1,000', '-1,000'], [' ', '8021 ', '尖點 ', '0', '1,000', '-1,000'], [' ', '8114 ', '振樺電 ', '0', '1,000', '-1,000'], [' ', '9802 ', '鈺齊-KY ', '0', '1,000', '-1,000'], [' ', '9907 ', '統一實 ', '0', '1,000', '-1,000'], [' ', '9945 ', '潤泰新 ', '0', '1,000', '-1,000'], [' ', '9924 ', '福興 ', '0', '557', '-557'], [' ', '4720 ', '德淵 ', '0', '512', '-512'], [' ', '3038 ', '全台 ', '0', '489', '-489'], [' ', '2527 ', '宏璟 ', '0', '330', '-330'], [' ', '1558 ', '伸興 ', '0', '196', '-196'], [' ', '6754 ', '匯僑設計 ', '0', '71', '-71'], [' ', '1717 ', '長興 ', '6,000', '6,000', '0'], [' ', '2344 ', '華邦電 ', '35,000', '35,000', '0']]
以上有三個程式要分別執行, 也可以整合成一個程式去抓, 但需要用到迴圈.



沒有留言 :
張貼留言