返回列表 上一主題 發帖

[發問] 從證交所抓取收盤價的VBA方法請益

[發問] 從證交所抓取收盤價的VBA方法請益

目前小弟還是用最基本的web資料匯入(YAHOO股市)
現在抓YAHOO的股票
超過10筆以上速度已開始有點LAG了
想請教大大們都是用什麼方法把每日的收盤資料(股價部分)
匯入到EXCEL裡面的?
主要是想看各位大大都是用什麼方法?(證交所的)
會比較方便,我這樣一筆一筆的好像不是很好用

有辦法一次全部顯示嗎

TOP

這裡不是就有快門
https://tw.stock.yahoo.com/s/list.php?c=tse&pid=1

TOP

只要收盤價,就更簡單了
DDE寫一寫就好了
EXCEL VBA新手,請前輩多多指教

TOP

回復 12# ketrddem

也太猛!!(遠目
不過小弟的需求只要能抓取證交所的收盤價即可
還不用到這麼高階的歷史的資料
檔案我測試過,讀取似乎花太多時間
只需要最新收盤價的資料即可

因為證交所這個網站的網址沒辦法跟YAHOO一樣後面打股號就好
所以想問問看各位大大是怎麼抓的...

TOP

本帖最後由 ketrddem 於 2016-9-18 23:36 編輯

回復 11# bioleon69


剛附上去了,但說實在的,抓歷史股價沒啥用處的,除非你有選股邏輯,將邏輯寫成判斷式,去挑出你要的股票
真正難的反而是選股邏輯的寫法
我目前寫出用歷史股價算出kd值,布林通道,均線等等等
就是卡關在如何將選股邏輯用語法呈現出來
EXCEL VBA新手,請前輩多多指教

TOP

回復 10# ketrddem


有點複雜 看不太懂XDD
是否可以附個檔案?

TOP

本帖最後由 ketrddem 於 2016-9-18 23:27 編輯

回復 9# bioleon69

插入模組
語法寫到模組��
然後要設定一個查詢的起始日,我是寫在cells(1,4)
歷史股價.rar (47.44 KB)
EXCEL VBA新手,請前輩多多指教

TOP

回復 8# ketrddem

你好,複製程式碼到excel發現無法執行
XD

TOP

本帖最後由 ketrddem 於 2016-9-18 23:23 編輯

用鉅亨網來抓歷史股價

第一張表為「清單」,設定你要抓取的股票清單,第一列為股號,第二列以後依序為你的股票代號
新增一個模組
SUB TEST()
Dim 股號 As String
Dim 查詢起始日 As Date
查詢起始日 = sheet1.Cells(1, 4)


For i = 2 To sheet1.Cells(Rows.Count, 1).End(xlUp).Row
股號 = sheet1.Cells(i, 1).Value
On Error Resume Next
If Sheets(股號) Is Nothing Then '指定的工作表不存在
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = 股號
End If

Dim QT As QueryTable
Dim WebAddress As String
WebAddress = "http://www.cnyes.com/twstock/ps_historyprice/" & 股號 & ".htm"

With ThisWorkbook.Worksheets(股號)
.Cells.Clear
Set QT = .QueryTables.Add("URL;" & WebAddress, .Range("$A$1"))
End With
With QT
.PostText = "ctl00$ContentPlaceHolder1$startText=" & 查詢起始日
.WebTables = "2"
.Refresh False
End With
Next
END SUB

以上方法是WEB查詢,依次將清單的股票歷史股價抓下來,速度還OK。
另一種方法是用winhttp5.1的方法,缺點是只適用32依元,速度比較過,winhttp5.1的方法比較快,但其實差不了多少。
歷史股價抓下來後,就用另一個工作簿,使用SQL語法去抓這資料,再做計算。SQL語法去抓,其實也很快,之後做計算,建議不要直接讀寫RANGE去計算,而是直接用陣列計算,效率才會高。
EXCEL VBA新手,請前輩多多指教

TOP

        靜思自在 : 唯其尊重自己的人,才更勇於縮小自己。
返回列表 上一主題