Chingteng Lee投本比程式教學: 

本篇為簡易投本比程式教學,
2018年2月我也有在葉芳的贏家世界社團中分享投本比程式教學
現在將這些寫得更簡單清楚
抓取資料也可依照自己所需條件不同而作搭配
例如:
投本比搭配外本比買賣超、
投、外本比搭配買賣超的券商
產業分類、漲跌幅排行、籌碼集中度等等

步驟1. 投本比= 投信當日買賣超張數 / 該股票的股本,再換算成百分比 
步驟2. 所需資料: 投信當日買賣超張數,股票的股本 
步驟3. 資料來源: 上市投信當日買賣超張數,上櫃投信當日買賣超張數 
上市: TWSE 臺灣證券交易所 -> 交昜資訊 -> 三大法人 -> 投信買賣超彙總表 -> 列印/HTML (在右上角) 
上櫃: 證券櫃檯買賣中心 -> 三大法人 -> 投信買賣超彙總表 -> 列印/匯出HTML (在右上角) 
步驟4. 建議使用程式工具 R 或python (程式碼簡單,而且有許多套件,不需要自已撰寫)
步驟5. 安裝R軟體(https://www.r-project.org or google: R的安裝 )
步驟6. 安裝完之後,下載程式碼,解壓縮,有兩個檔案,直接滑鼠點.Rdata 兩下, 會出現R的視窗,如下圖

步驟7. 在視窗下,直接打: source("stica.R") 

 

步驟8. 執行完成後,會出現「20180528_投本比.csv」,即為輸出結果。

程式碼如下:
#
# 投本比程式,資料取自証交所
#
gc(verbose=T)
closeAllConnections()
rm(list=ls())
# 載入套件
check <- library(XML,logical.return=TRUE)
if(check==FALSE) {install.packages("XML",repos='http://cran.us.r-project.org');library(XML)}
check <- library(httr,logical.return=TRUE)
if(check==FALSE) {install.packages("httr",repos='http://cran.us.r-project.org');library(httr)}
#
#-----------------------get today date
www <- paste0("http://www.twse.com.tw/exchangeReport/MI_INDEX4?response=html")
table <- readHTMLTable(www,header=F)
table <- as.data.frame(table["NULL"])
today <- tail(table,n=1)[1]
today <- as.character(today[[1]])
year <- substr(today,1,3)
year2 <- as.numeric(year)+1911
month <- substr(today,5,6)
day <- substr(today,8,9)
#
# 上市投信當日買賣張數
www1 <- paste0("http://www.twse.com.tw/fund/TWT44U?response=html&date=",year2,month,day)
# 上櫃投信當日買賣張數 (b=buy, s=sell)
www2b <- paste0("http://www.tpex.org.tw/web/stock/3insti/sitc_trading/sitctr_print.php?l=zh-tw&t=D&type=buy&d=",today)
www2s <- paste0("http://www.tpex.org.tw/web/stock/3insti/sitc_trading/sitctr_print.php?l=zh-tw&t=D&type=sell&d=",today)
# 利用套件,讀取html的表格
table1 <- readHTMLTable(www1,header=F)
table2b <- readHTMLTable(www2b,header=F)
table2s <- readHTMLTable(www2s,header=F)
#-------------------------------------------------------------
# 轉換list to dataframe
data1 <- as.data.frame(table1["NULL"])
colnames(data1) <- c("Number","ID","IDCHT","buy","sell","diff")
# 去除「,」,並將股數轉換成張數
data1$diff <- as.numeric(gsub(",","",data1$diff))/1000.0
#
data2b <- as.data.frame(table2b["NULL"])
data2s <- as.data.frame(table2s["NULL"])
# 結合買超與賣超個股(上櫃)
data2 <- rbind(data2b,data2s)
colnames(data2) <- c("Number","ID","IDCHT","buy","sell","diff")
# 下載股本資料
download.file(paste0("https://www.dropbox.com/s/tvqddpl3rdq2a5e/basevv.csv?raw=1"),"basevv.csv",method="auto",mode='wb')
# read csv
datavv <- read.csv("basevv.csv",header=T,colClasses = "character")
# 重新定義header
names(datavv) <- c("ID","IDCHT","basevv")
# 結合投信買超個股與股本資料
data1 <- merge(data1,datavv,by="ID",all.x=T)
data2 <- merge(data2,datavv,by="ID",all.x=T)
# 只選股ID,IDCHT,買賣超張數,股本
data <- rbind(data1[,c(1,3,6,8)],data2[,c(1,3,6,8)])
# 計算投本比(投信當日買賣超張數 / 該股票的股本)
data$out <- round(as.numeric(data$diff)/as.numeric(data$basevv)/100.0,digit=2)
# 買超排序(由大至小)
index <- order(data$out,decreasing=TRUE)
out <- data[index,c(1,2,3,5)]
# 輸出結果到excel
names(out) <- c("代號","名稱","買超張數","投本比")
outname <- paste0(year2,month,day,"_投本比.csv")
write.table(file=outname,out,quote=FALSE,se=",",col.names=T,row.names=F
#

以上的資料自2016年開始持續於

臉書社團葉芳的贏家世界無私分享

期間深獲對程式教學有興趣的投資人青睞

本篇先就初學者分享簡易投本比程式教學

若有興趣進階,再持續追蹤發文交流學習。

歡迎加入葉芳的贏家世界 https://www.facebook.com/groups/1598061367178067/

版權聲明 本內容所有資料的著作權、所有權與智慧財產權,包括內容、文字、圖片都屬於Chingteng Lee(臉書社團:葉芳贏家世界社團版主)所有,未經作者同意禁止轉載或宣稱經Chingteng Lee同意而轉載收費,此文章僅獨家刊登於葉芳的贏家世界臉書社團及moenybar葉芳台股專區專欄,其他網站若有露出,恐涉及侵權請自重,moneybar法務偕同律師共同提告侵權求償!Copyright © 2018 moneybar All Rights Reserved. 金融市場詭譎多變,分享僅供教學參考,不作為任何買賣邀約,過去績效不保證未來獲利,操作審慎評估自身能承受的風險。