3分鐘教會你-製作三大法人個股買賣超排行榜

[VBA] 3分鐘教會你 – 製作 三大法人個股買賣超排行榜

何謂 三大法人個股買賣超排行榜 ?

[ 三大法人個股買賣超排行榜 ] : 依照字面解釋 — 三大法人在當日或某段時間內,針對 個股 買超賣超的交易股數多寡,進行的名次排序動作。
※ 個股 : 意指單一檔股票。

三大法人個股買賣超 公布時間與資訊

[公布時間 ] :
台灣證交所會在 下午四點 公布當天 三大法人買賣超 資訊。

公布資訊] : 包含—
1. 買賣金額統計表 : 網址 — https://www.twse.com.tw/zh/page/trading/fund/BFI82U.html
◎ 可查詢 : 三大法人買賣超  /  / 報表。( ※排序方式 : 以股數多寡排序。)

2. 個股買賣日報表 : 網址 — https://www.twse.com.tw/zh/page/trading/fund/T86.html
◎ 可歷史查詢 : 三大法人在某日(10年內) 的個股分項投資的買賣資訊。

※ 已知證交所公布時間與個股買賣日報表網址,便能利用Excel VBA上網擷取證交所當日三大法人個股買賣日報表,得知所有個股的交易數據。
( PS. 依據交易數據內的表格排序,可抓出外資與投信買賣超股數的前20名公司,來加以記錄存檔。)

※ 此外,法人買賣超的「 連續性 」,也是值得注意的一環,同樣也能利用Excel VBA來累計外資與投信的「 連續買賣超 」,做為評估股票是否 續漲 / 續跌 的參考依據。
( PS. 參考的原因是 : 因為法人並不會一天就將部位買完,隨著部位的建立,股價就有機會往上拉升、展開波段行情。)

三大法人個股買賣超排行 ] : 參考網站如下 —
◎ HiStock 嗨投資 : https://histock.tw/stock/three.aspx?s=a
◎ 玩股網 : https://www.wantgoo.com/stock/institutional-investors/net-buy-sell-rank

三大法人個股買賣超排行榜 資料抓取

根據公布的二組法人(現貨/個股)買賣超資訊,便能利用 EXCEL 上網抓取,來做出不同的資料分類 —- 大盤整體投資個股投資分析

[ 個股投資分析 — 前置步驟 ] :
0. 作業系統 : Office 365
1. 新增一個 EXCEL 的 空白活頁簿
2. 先行另存新檔,存檔位置 : 自行設定,檔案名稱 : 自行設定 ( 我設 : 2022_三大法人個股買賣超 ),存檔類型(副檔名) : .xlsm ( 啟用巨集的活頁簿 )。
3. 下午四點 進行當日三大法人 個股投資分析 的資料抓取。

三大法人個股投資分析

證交所 — 網路資料抓取

個股投資分析 : 資料來源 —- 個股買賣日報表 : 網址 —- https://www.twse.com.tw/zh/page/trading/fund/T86.html,畫面圖示如下 :


[ 操作步驟 ] :
1. 查詢日期 : 進入證交所三大法人買賣超日報網頁,會顯示最新一日的歷史記錄。同時也可點選 : (下拉式選單),選擇 : 年 / 月 / 日,調出想查詢的日期資料。

2. 分類項目 : 進入網頁後,會先顯示 : 水泥工業 的分類項目,同樣點選 : ,選擇 : 全部(不含權證、牛熊證、可暫延牛熊證),只顯示股票類資訊。

3. 查詢 : 執行完 1 ~ 2 步驟,點擊 : ,數據資料會依照 三大法人買賣超股數 的大小,來做排序顯示。

4. 切換顯示筆數 : 由 每頁 10 筆,改為 : 每頁 全部 筆,等待 2 ~ 3 秒,頁面會將所有的股票資料全部顯示。

5. 游標移至 列印 / HTML,再按 : 滑鼠右鍵,選擇 : 在新分頁中開始連結,或直接選擇 : 複製連結網址,取得當日 三大法人個股買賣日報表 的資料網址 : https://www.twse.com.tw/fund/T86?response=html&date=20221109&selectType=ALLBUT0999,方便以VBA程式來抓取資料。( PS. 頁面開啟的畫面,如下。)

表格錄製與函式設定

A. 參考 抓取 — 大盤成份股 權重資料 內的錄製步驟,將會新增一個名稱 : 個股買賣日報表 的工作表。

◎ 在製作過程中,須注意的二點 :
一. 新增工作表,設定名稱 : 個股買賣日報表
二. 從WEB 抓取資料時, URL 網址輸入框內,需輸入 : https://www.twse.com.tw/fund/T86?response=html&date=20221111&selectType=ALLBUT0999

B. 證交所擷取出來的表格資料,顯示如下 :


C. 新增二個工作表,分別改名為 : 買超前20名 / 賣超前20名,方便記錄每日前20名買賣超的股票。

D. 然後在二個工作表內,填入三大法人個股買超的資料表頭。表頭資料顯示如下 : ( * A1欄位(日期),毋需填寫。)
[ 買超前20名 ] 工作表 :

[ 賣超前20名 ] 工作表 :


E. 表頭製作好,便利用 EXCEL函式,來連結對應證交所擷取的三大法人買賣超資料。示意圖 : 如下 —


[ EXCEL 函式設定 ] :
1. B4欄 (證券–代號) / 函式為 : =個股買賣日報表!B2
2. C4欄 (證券–名稱) / 函式為 : =個股買賣日報表!C2
3. D4欄 (外資–買進) / 函式為 : =個股買賣日報表!D2/1000。( PS. 除以 1000 的用意,是將單位 : 股數 — 改為 : 張數。)
4. E4欄 (外資–賣出) / 函式為 : =個股買賣日報表!E2/1000
5. F4欄 (外資–合計) / 函式為 : =個股買賣日報表!F2/1000
6. G4欄 (投信–買進) / 函式為 : =個股買賣日報表!J2/1000
7. H4欄 (投信–賣出) / 函式為 : =個股買賣日報表!K2/1000
8. I4欄 (投信–合計) / 函式為 : =個股買賣日報表!L2/1000
9. J4欄 (自營商–合計) / 函式為 : =個股買賣日報表!M2/1000
10. K4欄 (三大法人–總計) / 函式為 : =個股買賣日報表!T2/1000

[ 數據單位變更 ] : 為統一資料單位,故將單位 : 股數 ÷ 1000 ,轉換成 : 張數。示意圖 : 如下 —


注意 1 ] : 雖說上面的函式設定,可以完成當日證交所的資料擷取,但日後會發生一件事,那就是隔天數據一更新,原先的函式設定,就會發生錯誤;方便解決的辦法,就是改用 VBA程式,來控制資料連結,並刪除原本舊有的連線與資料。

注意 2 ] : 以上圖的數據連結,也只是 1 筆法人個股買超資料,可記得我們要抓取的是 : 前20名法人個股 ( 買 / 賣超 ) 排行 ?
◎ 所以在程式上必須多加個 FOR ~ NEXT 指令,來抓取其他的資料欄位,達到展示排行的目的。

轉化VBA — 操作步驟

錄製巨集

A. 首先利用 錄製巨集,獲取證交所三大法人買賣超日報表之程式碼。程式如下 :

程式碼 / 錄製巨集 ] :
Sub 巨集1()
Application.CutCopyMode = False
ActiveWorkbook.Queries.Add Name:="Table 0", Formula:= _
    "let" & Chr(13) & "" & Chr(10) & "    來源 = Web.Page(Web.Contents(""https://www.twse.com.tw/fund/T86?response=html&date=" & xDate & "&selectType=ALLBUT0999""))," & Chr(13) & "" & Chr(10) & "    Data0 = 來源{0}[Data]," & Chr(13) & "" & Chr(10) & "    已變更類型 = Table.TransformColumnTypes(Data0,{{""Header"", type text}, {""證券代號"", type text}, {""證券名稱"", type text}, {""外陸資買進股數(不含外資自營商)"", Int64.Type}, {""外陸資賣出股數(不含外資自營商)"", Int64.Type}, {""外陸資買賣超股數(不含外資自營商)"", In" & _
    "t64.Type}, {""外資自營商買進股數"", Int64.Type}, {""外資自營商賣出股數"", Int64.Type}, {""外資自營商買賣超股數"", Int64.Type}, {""投信買進股數"", Int64.Type}, {""投信賣出股數"", Int64.Type}, {""投信買賣超股數"", Int64.Type}, {""自營商買賣超股數"", Int64.Type}, {""自營商買進股數(自行買賣)"", Int64.Type}, {""自營商賣出股數(自行買賣)"", Int64.Type}, {""自營商買賣超股數(自行買賣)"", Int64.Type}, {""自營商買進股數(避險)"", Int64.Type}, {""自營商賣出股數(避險)"", Int64.Type}, " & _
    "{""自營商買賣超股數(避險)"", Int64.Type}, {""三大法人買賣超股數"", Int64.Type}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    已變更類型" & _
    ""
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
    "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Table 0"";Extended Properties=""""" _
    , Destination:=Range("$A$1")).QueryTable
    .CommandType = xlCmdSql
    .CommandText = Array("SELECT * FROM [Table 0]")
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .ListObject.DisplayName = "Table_0"
    .Refresh BackgroundQuery:=False
End With
End Sub 

更改巨集名稱

B. 更改巨集名稱 : 巨集錄製好,會自動產生名稱 : 巨集1的副程式,為了辨識程式內容,將其改為 : 三大法人個股買賣超。( ※Sub巨集1() 改為 Sub三大法人個股買賣超() )
◎ 模組名稱 : 則改為 更新_三大法人個股買賣超。不了解如何更改,請參考 : 開啟 VBA 程式 – 插入模組

函式轉化VBA程式碼

C. 將設計好的EXCEL函式,轉化成VBA程式碼。
◎ 直接以對應的方式,將三大法人個股買賣超資料,轉成 VBA程式碼。程式如下 :

程式碼 — 買超前二十名 ] :
Sheets(“買超前二十名”).Select
[B4] = “=個股買賣日報表!B2”
[C4] = “=個股買賣日報表!C2”
[D4] = “=個股買賣日報表!D2/1000”
[E4] = “=個股買賣日報表!E2/1000”
[F4] = “=個股買賣日報表!F2/1000”
[G4] = “=個股買賣日報表!J2/1000”
[H4] = “=個股買賣日報表!K2/1000”
[I4] = “=個股買賣日報表!L2/1000”
[J4] = “=個股買賣日報表!M2/1000”
[K4] = “=個股買賣日報表!T2/1000”

D. 依照上面程式碼,便能連結 “個股買賣日報表” 工作表內當日證交所擷取出來的資料。但 …… 依據上面二點注意事項提醒,程式碼必須稍作更改。
◎ 更改程式如下 :

程式碼 — 買超前二十名 ] :
Sheets(“買超前二十名”).Select
For xRow = 2 To 21
Range(“B” & xRow + 2) = “=個股買賣日報表!B” & xRow
Range(“C” & xRow + 2) = “=個股買賣日報表!C” & xRow
Range(“D” & xRow + 2) = “=個股買賣日報表!D” & xRow & “/1000”
Range(“E” & xRow + 2) = “=個股買賣日報表!E” & xRow & “/1000”
Range(“F” & xRow + 2) = “=個股買賣日報表!F” & xRow & “/1000”
Range(“G” & xRow + 2) = “=個股買賣日報表!J” & xRow & “/1000”
Range(“H” & xRow + 2) = “=個股買賣日報表!K” & xRow & “/1000”
Range(“I” & xRow + 2) = “=個股買賣日報表!L” & xRow & “/1000”
Range(“J” & xRow + 2) = “=個股買賣日報表!M” & xRow & “/1000”
Range(“K” & xRow + 2) = “=個股買賣日報表!T” & xRow & “/1000”
Next

程式碼 — 賣超前二十名 ] :
Sheets(“賣超前二十名”).Select
lastRow = Sheets(“個股買賣日報表”).Range(“A65536”).End(xlUp).Row
For sellRow = 4 To 23
For xRow = lastRow To lastRow – 19 Step -1
Range(“B” & sellRow) = “=個股買賣日報表!B” & xRow
Range(“C” & sellRow) = “=個股買賣日報表!C” & xRow
Range(“D” & sellRow) = “=個股買賣日報表!D” & xRow & “/1000”
Range(“E” & sellRow) = “=個股買賣日報表!E” & xRow & “/1000”
Range(“F” & sellRow) = “=個股買賣日報表!F” & xRow & “/1000”
Range(“G” & sellRow) = “=個股買賣日報表!J” & xRow & “/1000”
Range(“H” & sellRow) = “=個股買賣日報表!K” & xRow & “/1000”
Range(“I” & sellRow) = “=個股買賣日報表!L” & xRow & “/1000”
Range(“J” & sellRow) = “=個股買賣日報表!M” & xRow & “/1000”
Range(“K” & sellRow) = “=個股買賣日報表!T” & xRow & “/1000”
Next
Next

[ 程式碼 — 買超前二十名 解說 ] :
1. Sheet(“買超前二十名”).Select : 先將游標導入 買超前二十名 工作表內。
2. [A1] = Format(Now(), “yyyy/mm/dd”) : 利用 Format函式指令,將 運算式( Now() )傳回的日期格式,以 : yyyy/mm/dd 的格式顯示,再將格式好的值,顯示在 A1欄位。
( PS. Now() 函式 : 傳回目前的系統日期和時間。)
3. For xRow = 2 To 21 : 使用 FOR ~ NEXT 迴圈指令,並利用 xRow變數,調整工作表內20列( 4 ~ 23列 )的對應數據。
4. Range(“B” & xRow + 2)=”=個股買賣日報表!B” & xRow : 實際EXCEL函式為 : [B4] =”=個股買賣日報表!B2″,從位置對應的關係,了解兩個工作表的列數差2,所以只要控制 xRow變數,將買超前二十名工作表內的列數變數,設定為 : xRow + 2,便能抓取個股買賣日報表內的數據資料。

[ 程式碼 — 賣超前二十名 解說 ] :
◎ 首先要知道 賣超前20名 的股票位置在哪 ? → 觀察證交所的買賣超排行是由 正(多) ~ 負(多),所以 賣超前20名 = 最後20筆資料

1. Sheet(“賣超前二十名”).Select : 先將游標導入 賣超前二十名 工作表內。
由於對應的順序不同於買超程式,所以改用2組變數來控制對應位置,會比較方便。
2. lastRow = Sheets(“個股買賣日報表”).Range(“A65536”).End(xlUp).Row : 抓取個股買賣日報表內的最後一筆資料列位置,設定給 : lastRow變數( =1119 )。
3. [A1] = Format(Now(), “yyyy/mm/dd”) : 同 [ 程式碼 — 買超前二十名 解說 ] 之步驟 2
4. For sellRow = 4 To 23 : 使用 FOR ~ NEXT 迴圈指令,並利用 sellRow變數,來控制”賣超前二十名”工作表內,由第4列開始,至第23列的20個列數位置,再帶進對應公式內。
5. For xRow=lastRow To lastRow – 19 Step -1 : 同樣,利用 FOR~NEXT 迴圈 — 遞迴( Step -1 )指令,抓取個股買賣日報表最後20筆( lastRow To lastRow-19 )數據。
6. Range(“B” & sellRow)=”=個股買賣日報表!B” & xRow : 實際EXCEL函式為 : [B4]=”=個股買賣日報表!B1119″(賣超第一名),從位置對應的關係得知,sellRow4 開始遞增( +1 ),而 xRow 則透過 lastRow 導入,從最後一筆列數 : 1119 開始遞減( -1 ),而抓出賣超前20筆的資料。

刪除連線工作表舊資料

E. 刪除連線工作表舊資料 : 上次連線的舊資料,若不刪除,會導致再連線抓取時,產生覆蓋資料的錯誤。( PS. 刪除指令,必須放在連線前。)

VBA程式修改 — 刪除連線舊資料 ] : 如下圖 —

切斷查詢連線

F. 切斷查詢連線 : 為避免同連線,產生錯誤,及連線膨脹,而導致系統負載過大,造成死機。最好的解決方法,就是刪除連線。詳細解說 — 請參考 : 切斷查詢連線

VBA程式修改 — 刪除查詢連線 ] : 如下圖 —

調整時間變數

◎ 還記得 從WEB 抓取證交所三大法人個股買賣日報表資料時,需輸入網址 : https://www.twse.com.tw/fund/T86?response=html&date=20221111&selectType=ALLBUT0999,此時注意看網址內的 20221111,是以固定日期的方式來設計,表示只能擷取當天的資料,所以為了自動化,必須將 20221111 日期部分,改用 變數,來達成目的。程式碼更改如下 —-

[ 程式解說 ] :
首先了解網址中日期的編排格式 : 20221111,所以欲轉換的變數( xDate ),也要符合格式規定,才能代入。

1. xDate = Format(Now(), “yyyymmdd”) : 利用 Format 函式指令,將 運算式( Now() )傳回的日期格式,以 : yyyymmdd 的格式顯示,再將格式好的值,指定給 xDate變數。
( PS. Now() 函式 : 傳回目前的系統日期和時間。)

2. & xDate & : 將網址內的日期 : 20221111,改成 xDate變數,並前後以 & + 空格 / 空格 + & 串接,以達成文字組合的目的。

製作 更新數據 按鈕

※ 完成以上整合步驟,就能在 下午:04:00 證交所更新 三大法人買賣超 資料後,一鍵完成自動化更新 !
( PS. 若沒有設定 : 工作排程器,來定時自動執行的話,那就必須製作一個 按鈕,來輔助一鍵完成的更新。)

更新數據_按鈕製作 ] :
1. 按鈕製作方法 : 請參考 — VBA 按鈕製作

2. 指定巨集 : 游標移動到 更新數據 按鈕上,按 滑鼠右鍵,點選 : 指定巨集

3. 確定巨集名稱 : 出現 指定巨集 視窗後,選取 : 三大法人個股買賣超 巨集名稱 。

完成圖 / 三大法人買賣超排行榜

[ 完成圖 / 三大法人買賣超 — 前20名排行榜 ] :
三大法人個股買賣超排行榜

[ 圖表展示 ] :
三大法人個股買賣超排行榜
※ 請參考 — 圖表製作
( PS. 操作步驟 : 將 折線圖 改為 直條圖 製作,即可。)

完整程式碼


Sub 三大法人個股買賣超()

' 刪除 連線舊資料
Sheets("個股買賣日報表").Select
Range("A:T").Delete

xDate = Format(Now(), "yyyymmdd")

' 網站連線 : 證交所_三大法人買賣日報表
Application.CutCopyMode = False
ActiveWorkbook.Queries.Add Name:="Table 0", Formula:= _
    "let" & Chr(13) & "" & Chr(10) & "    來源 = Web.Page(Web.Contents(""https://www.twse.com.tw/fund/T86?response=html&date=" & xDate & "&selectType=ALLBUT0999""))," & Chr(13) & "" & Chr(10) & "    Data0 = 來源{0}[Data]," & Chr(13) & "" & Chr(10) & "    已變更類型 = Table.TransformColumnTypes(Data0,{{""Header"", type text}, {""證券代號"", type text}, {""證券名稱"", type text}, {""外陸資買進股數(不含外資自營商)"", Int64.Type}, {""外陸資賣出股數(不含外資自營商)"", Int64.Type}, {""外陸資買賣超股數(不含外資自營商)"", In" & _
    "t64.Type}, {""外資自營商買進股數"", Int64.Type}, {""外資自營商賣出股數"", Int64.Type}, {""外資自營商買賣超股數"", Int64.Type}, {""投信買進股數"", Int64.Type}, {""投信賣出股數"", Int64.Type}, {""投信買賣超股數"", Int64.Type}, {""自營商買賣超股數"", Int64.Type}, {""自營商買進股數(自行買賣)"", Int64.Type}, {""自營商賣出股數(自行買賣)"", Int64.Type}, {""自營商買賣超股數(自行買賣)"", Int64.Type}, {""自營商買進股數(避險)"", Int64.Type}, {""自營商賣出股數(避險)"", Int64.Type}, " & _
    "{""自營商買賣超股數(避險)"", Int64.Type}, {""三大法人買賣超股數"", Int64.Type}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    已變更類型" & _
    ""
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
    "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Table 0"";Extended Properties=""""" _
    , Destination:=Range("$A$1")).QueryTable
    .CommandType = xlCmdSql
    .CommandText = Array("SELECT * FROM [Table 0]")
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .ListObject.DisplayName = "Table_0"
    .Refresh BackgroundQuery:=False
End With

' 切斷 "Table 0" 查詢連線
ActiveWorkbook.Queries("Table 0").Delete

' 買/賣超股票排序 -- 前20名
Sheets("買超前二十名").Select
[A1] = Format(Now(), "yyyy/mm/dd")
For xRow = 2 To 21
    Range("B" & xRow + 2) = "=個股買賣日報表!B" & xRow
    Range("C" & xRow + 2) = "=個股買賣日報表!C" & xRow
    Range("D" & xRow + 2) = "=個股買賣日報表!D" & xRow & "/1000"
    Range("E" & xRow + 2) = "=個股買賣日報表!E" & xRow & "/1000"
    Range("F" & xRow + 2) = "=個股買賣日報表!F" & xRow & "/1000"
    Range("G" & xRow + 2) = "=個股買賣日報表!J" & xRow & "/1000"
    Range("H" & xRow + 2) = "=個股買賣日報表!K" & xRow & "/1000"
    Range("I" & xRow + 2) = "=個股買賣日報表!L" & xRow & "/1000"
    Range("J" & xRow + 2) = "=個股買賣日報表!M" & xRow & "/1000"
    Range("K" & xRow + 2) = "=個股買賣日報表!T" & xRow & "/1000"
Next

Sheets("賣超前二十名").Select
sellRow = 4
lastRow = Sheets("個股買賣日報表").Range("A65536").End(xlUp).Row
[A1] = Format(Now(), "yyyy/mm/dd")
For xRow = lastRow To lastRow - 19 Step -1
    Range("B" & sellRow) = "=個股買賣日報表!B" & xRow
    Range("C" & sellRow) = "=個股買賣日報表!C" & xRow
    Range("D" & sellRow) = "=個股買賣日報表!D" & xRow & "/1000"
    Range("E" & sellRow) = "=個股買賣日報表!E" & xRow & "/1000"
    Range("F" & sellRow) = "=個股買賣日報表!F" & xRow & "/1000"
    Range("G" & sellRow) = "=個股買賣日報表!J" & xRow & "/1000"
    Range("H" & sellRow) = "=個股買賣日報表!K" & xRow & "/1000"
    Range("I" & sellRow) = "=個股買賣日報表!L" & xRow & "/1000"
    Range("J" & sellRow) = "=個股買賣日報表!M" & xRow & "/1000"
    Range("K" & sellRow) = "=個股買賣日報表!T" & xRow & "/1000"
    sellRow = sellRow + 1
Next
End Sub

結論

此篇,講述如何利用 EXCEL 上網抓取三大法人當日的個股分項買賣金額,再運用 VBA程式,將法人買賣超數據加以整理/排序,分類製作出 買/賣超前20名 股票排行榜。

關於法人「 連續買賣超 」,是觀察法人對於某個股是否看好 / 看壞的參考指標,這對個股續漲 / 續跌,有著或多或少的影響性,是值得大家留意的。
( PS. 但在本篇文章並未針對 連續買賣超,製作程式碼,主要是雷同於 回測程式 的作法,就不再贅述,大家可以試做看看,不懂再詢問喔 ! )

非常感謝您看到最後,若在閱讀的過程中,有任何疑問,歡迎您利用左下角 Messenger 直接提問或寫信給我,我會盡快回覆您,最後感謝您的閱讀,感恩 !

( PS. 如果喜歡 股小白 的文章,歡迎到 股小白臉書粉絲頁 點讚,衝人氣,目前不定期分析大盤趨勢,將來會有 每日公報 : 分析並公布跑分的個股資料,讓大家作為投資參考。 )

關 聯 文 章

1. 每天收集 三大法人現貨買賣超 < 整體數據篇 >

  • 講述如何利用 EXCEL 上網抓取三大法人當日的整體買賣投資金額,並設計表格,運用 VBA程式設計,將各數據加以整理、計算,逐日記錄三大法人買賣動態,以掌握進出籌碼,評估未來的大盤走勢。

2. 3分鐘教會你 – 製作 三大法人個股買賣超排行榜

  • 講述如何利用 EXCEL 上網抓取三大法人當日的個股分項買賣金額,再運用 VBA程式,將法人買賣超數據加以整理/排序,分類製作出 買/賣超前20名 股票排行榜。

3. 輕鬆教會你 – 製作 外資買賣超與加權指數關係圖

  • 由於外資買賣超對加權指數有著相對的影響性,若是利用關係圖表,能更清晰看出差異性,凸顯重點。基於此,本篇文章則採用圖文對照的方式,手把手教會你如何利用VBA圖表的語法設定 — 新增圖表 / 訂定圖表大小 / 建立數列 / 變更圖表類型 / 變更數列範圍 / 調整數列位置 等功能,來達成自動完成圖表製作的目的。

3-1. 輕鬆幾步驟 – 抓取 外資買賣超 歷史資料

  • 外資買賣超歷史資料 可透過證交所網站提供的三大法人買賣金額統計表歷史資料下載機制,下載需要的年月日資料,再藉由VBA程式,將其整理/轉貼,建置成完整的歷史資料,提供給外資賣賣超與大盤歷史資料關係圖一文,做為數列數據源,再與大盤歷史資料搭配,製作出相對應的分析圖表。

3-2. 輕鬆幾步驟 – 抓取 加權指數 歷史資料

  • 加權指數歷史資料 是證交所每日下午三點前會公布的當日交易記錄。同時,證交所網站也提供下載連結點,方便大家下載 : 發行量加權股價指數歷史資料市場成交資訊,擷取大盤當日或歷史交易資訊,再藉由VBA程式,將其格式轉換/整理,建置成完整的大盤歷史資料,提供給外資賣賣超與大盤歷史資料關係圖一文,做為數列數據源,再與外資賣賣超歷史資料搭配,製作出相對應的分析圖表。

V B A 資 源

EXCEL & VBA功能 – 綜合筆記
  • EXCEL & VBA功能 筆記 : 將針對文章中所使用的 EXCEL 及 VBA公式 / 工具操作 / 巨集設定 / 控制項的運用,做個整合記錄,方便大家在學習當下的參考與使用。
VBA指令 – 彙整筆記
  • VBA 提供相當多的指令用法,VBA指令 彙整筆記,將會陸續記錄 VBA文章 中,所用過的 VBA指令,方便學員們對照運用。
VBA程式語法 – 彙整筆記
  • 語法就是程式的文法。 使用者要與電腦溝通,就必須遵守這些規則。VBA程式語法 筆記 : 將針對 VBA文章 中所使用的 VBA程式語法,做個整合記錄,方便大家在學習當下參考與使用。