返回列表 上一主題 發帖

[原創] 上市櫃三大法人買賣超日報資料彙整處理

[原創] 上市櫃三大法人買賣超日報資料彙整處理

這是小弟我做的上市櫃三大法人買賣超日報資料彙整
不過需要每天去證交所和櫃買中心下載買賣超日報和盤後的價格資料(有人可以改寫自動下載功能並分享的話,小弟我將五體投地佩服至極xD)
例如:上櫃法人買賣超的檔名是SQUO*......
批量匯入或單日更新的資料夾位置也要自行去看我的程式碼做更改xD
不過這是半成品,所以還需要大家的珍貴意見,任何能讓程式加速或更多功能的方法之類的...小弟還要多跟版上高手學習^^
進一步的資料分析功能還沒做,只有做簡單的測試功能
1.法人連買幾日
2.法人區間內買超天數達幾日以上...
大家就自行發揮創意改程式碼再上來分享給吧~~~
感謝各位高手為我解惑,在此將小弟的新手作品貢獻給大家使用~~
也感謝管理群的拔擢與信賴!!! 上市櫃三大法人買賣超.zip (841.44 KB)

回復 16# zyzzyva

阿阿我衝動地先回覆了您的原創文了xD 因為太興奮了哈哈哈
真的很感謝您的努力! 我會好好研究!!! 剛剛我已經執行您的程式,成功了!!! 超厲害的超佩服>w<
真的感激不盡~~~!!!
真心感謝每一位願意分享所學、指導新手的人!

TOP

我目前都是用python把資料抓下來,感覺python好像比較好寫一點。
http://forum.twbts.com/thread-18219-1-1.html
可以用shell的方式整合在原來的程式中。
  1. exe_path = ThisWorkbook.Path & "\getTwseOtc\getTwseOtc.exe"
  2. ChDir (exe_path)
  3. Shell (exe_path)
  4. Application.Wait (Now + TimeValue("0:00:05"))
複製代碼

TOP

回復 14# c_c_lai

哇~縮減好多程式碼 當初也沒想到要用select case~感謝!!! 再過一兩天我把新增加的功能加上去 再Po上來給大家看看~

TOP

本帖最後由 c_c_lai 於 2016-8-6 11:52 編輯

回復 12# VBALearner
  1. Option Explicit
  2. Option Base 1

  3. Sub 調整儲存格大小()
  4.     Dim cts As Integer
  5.    
  6.     For cts = 1 To Sheets.Count
  7.         With Sheets(cts)
  8.             .Activate
  9.             .Columns.ColumnWidth = 10
  10.             .Rows.RowHeight = 15
  11.         End With
  12.     Next
  13. End Sub

  14. Sub 批量匯入買賣超與價格()
  15.     Call 上市上櫃交易("上市外資", "上市投信", 4, 7, "201*")    '  批量匯入買賣超
  16.     Call 上市上櫃交易("上櫃外資", "上櫃投信", 4, 7, "BIG*")    '  批量匯入價格
  17.     Call 上市上櫃交易("上市收盤價", "", 8, 0, "A112201*")     '  更新買賣超
  18.     Call 上市上櫃交易("上櫃收盤價", "", 2, 0, "SQUOTE*")     '  更新價格
  19.     Beep
  20. End Sub

  21. Sub 上市上櫃交易(tbl As String, tbl2 As String, pos1 As Integer, pos2 As Integer, typ As String, Optional auto As Boolean = False)
  22.     Dim myFile As String, myDate As String
  23.     Dim rng As Range, stkNo As Variant
  24.     Dim wb As Workbook
  25.     Dim cts As Long, xs As Long
  26.    
  27.     Application.ScreenUpdating = False
  28.     xs = Sheets(tbl).Range("A" & Rows.Count).End(xlUp).Row
  29.     ReDim tget2(xs - 1) As Long
  30.     If pos2 > 0 Then
  31.         ReDim tget3(xs) As Long
  32.     End If

  33.     stkNo = Application.Transpose(Range(Sheets(tbl).Range("A2"), Sheets(tbl).[A2].End(xlDown)))
  34.       
  35.     myFile = Dir("C:\三大法人更新區\" & typ)
  36.     Do While myFile <> ""
  37.         Workbooks.Open "C:\三大法人更新區\" & myFile
  38.         Select Case typ
  39.             Case "201*"               '  (20160802_2by_issue.csv)
  40.                 myDate = Left(myFile, 8)
  41.             Case "BIG*"               '  (BIGD_1050802.csv)
  42.                 myDate = Mid(myFile, 6, 7): myDate = CStr((Val(Left(myDate, 3)) + 1911)) + Mid(myDate, 4, 4)
  43.             Case "A112201*"           '  (A11220160802ALL.csv)
  44.                 myDate = Mid(myFile, 5, 8)
  45.             Case "SQUOTE*"            '  (SQUOTE_AL_1050802.csv)
  46.                 myDate = Mid(myFile, 11, 7): myDate = CStr((Val(Left(myDate, 3)) + 1911)) + Mid(myDate, 4, 4)
  47.         End Select
  48.          
  49.         myDate = Left(myDate, 4) + "/" + Mid(myDate, 5, 2) + "/" + Right(myDate, 2)
  50.         
  51.         myFile = Dir '第二次調用Dir函數而不帶任何參數,則會返回至同一目錄下的下一個文件
  52.         
  53.         Set wb = ActiveWorkbook
  54.         With Sheets(1)
  55.             For cts = 1 To xs - 1
  56.                 Set rng = .Range("A:A").Find(stkNo(cts))
  57.                 If Not rng Is Nothing Then
  58.                     tget2(cts) = IIf(IsNumeric(rng.Offset(0, pos1).Value), rng.Offset(0, pos1).Value, 0)                    '  (0, 8)
  59.                     If pos2 > 0 Then tget3(cts) = IIf(IsNumeric(rng.Offset(0, pos2).Value), rng.Offset(0, pos2).Value, 0)   '  (0, 7)
  60.                 Else
  61.                     tget2(cts) = 0
  62.                     If pos2 > 0 Then tget3(cts) = 0
  63.                 End If
  64.             Next
  65.         End With
  66.         wb.Close SaveChanges:=False
  67.         
  68.         With Sheets(tbl)
  69.             .Activate
  70.             Set rng = Range(.[A1], .[A1].End(xlToRight))     '  從 A 欄至最右欄位範圍
  71.             Set rng = rng.Find(CDate(myDate), LookIn:=xlValues, LookAt:=xlWhole)
  72.             If rng Is Nothing Then
  73.                 .Range("C:C").Insert
  74.                 Set rng = .[C1]
  75.                 rng.Value = myDate
  76.             End If
  77.             '  Range(.Range("C2"), .Range("C" & .[A2].End(xlDown).Row)) = Application.Transpose(tget2)
  78.             Range(rng.Offset(1), .Range(Chr(64 + rng.Column) & .[A2].End(xlDown).Row)) = Application.Transpose(tget2)
  79.         End With
  80.         
  81.         If tbl2 <> "" Then
  82.             With Sheets(tbl2)
  83.                 .Activate
  84.                 Set rng = Range(.[A1], .[A1].End(xlToRight))     '  從 A 欄至最右欄位範圍
  85.                 Set rng = rng.Find(CDate(myDate), LookIn:=xlValues, LookAt:=xlWhole)
  86.                 If rng Is Nothing Then
  87.                     .Range("C:C").Insert
  88.                     Set rng = .[C1]
  89.                     rng.Value = myDate
  90.                 End If
  91.                 '  Range(.Range("C2"), .Range("C" & .[A2].End(xlDown).Row)) = Application.Transpose(tget3)
  92.                 Range(rng.Offset(1), .Range(Chr(64 + rng.Column) & .[A2].End(xlDown).Row)) = Application.Transpose(tget3)
  93.             End With
  94.         End If
  95.     Loop
  96.    
  97.     Application.ScreenUpdating = True
  98. End Sub
複製代碼

TOP

本帖最後由 c_c_lai 於 2016-8-6 10:36 編輯

回復 12# VBALearner
我做了一些更動 (整合、以及語法修正), 請參考:
上市櫃三大法人買賣超.rar (860.81 KB)
至於自動下載尚在研究、思考中。
上市上櫃交易(tbl As String, tbl2 As String, pos1 As Integer, pos2 As Integer, typ As String, Optional auto As Boolean = False)
中的 auto 即為預留之伏筆。

TOP

回復 11# c_c_lai

上市買賣超日報 : http://www.twse.com.tw/ch/trading/fund/T86/T86.php
上市盤後行情表 : http://www.twse.com.tw/ch/trading/exchange/MI_INDEX/MI_INDEX.php
上櫃買賣超日報 : http://www.tpex.org.tw/web/stock/3insti/daily_trade/3itrade_hedge.php?l=zh-tw
上櫃盤後行情表 : http://www.tpex.org.tw/web/stock/aftertrading/otc_quotes_no1430/stk_wn1430.php?l=zh-tw

目前這個彙整Excel還在開發階段哈哈哈,未來能有什麼價值還待琢磨...-w-

TOP

回復 10# VBALearner
能否提共另三個網址?

TOP

回復 9# c_c_lai

恩恩BIGD*開頭的是上櫃買賣超日報
201*開頭的是上市買賣超日報
SQUOTE*開頭的是上櫃行情表
A112201*開頭的是上市行情表

TOP

回復 1# VBALearner
你那 "C:\三大法人更新區\201*" 裡的
檔案內容是否如:
BIGD_1050804.rar (11.14 KB)
一樣?
是否也請上傳一個 "C:\三大法人更新區\201*"
中之任一檔案做為參考?

TOP

        靜思自在 : 【生命在呼吸間】佛陀說:「生命在呼吸間。」人無法管住自己的生命,更無法擋住死期,讓自己永住人間。既然生命去來這麼無常,我們更應該好好地愛惜它、利用它、充實它,讓這無常、寶貴的生命,散發它真善美的光輝,映照出生命真正的價值。
返回列表 上一主題