返回列表 上一主題 發帖

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

本帖最後由 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

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

回復 9# bioleon69

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

TOP

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

回復 11# bioleon69


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

TOP

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

TOP

        靜思自在 : 道德是提昇自我的明燈,不該是呵斥別人的鞭子。
返回列表 上一主題