已可抓取K線資料,但欠缺量有人可以協助一下? JSON
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
本帖最後由 GBKEE 於 2016-8-24 09:06 編輯
回復 1# vavashop
修改附檔中 fnLoadFileAndParse 直接讀取資料
可不需再用物件類別模組中的clsJSParse- Sub fnLoadFileAndParse(ByVal StockNo As String, ByVal DataType As String)
- Dim xmlHttp As Object
- Dim Readstr As Variant, Ar As Variant, xAr(), i As Integer, T As Date
- T = Time
- Set xmlHttp = CreateObject("MSXML2.XMLHTTP.6.0")
- If DataType = "Week" Then
- xmlHttp.Open "GET", "http://www.wantgoo.com/Stock/%E5%80%8B%E8%82%A1%E7%B7%9A%E5%9C%96/%E6%8A%80%E8%A1%93%E7%B7%9A%E5%9C%96%E8%B3%87%E6%96%99?StockNo=" & StockNo & "&Kcounts=245&Type=%E5%91%A8K_K%E7%B7%9A%7C%E5%91%A8K_%E6%BC%B2%E8%B7%8C%E8%B3%87%E6%96%99%7C%E5%91%A8K_%E6%88%90%E4%BA%A4%E9%87%8F%7C%E5%91%A8K_KD%7C%E5%91%A8K_RSI%7C%E5%91%A8K_MACD%7C%E5%91%A8K_%E5%8A%A0%E6%AC%8A%E6%8C%87%E6%95%B8%7C%E5%91%A8K_DMI&isCleanCache=false", False
- ElseIf DataType = "Day" Then
- xmlHttp.Open "GET", "http://www.wantgoo.com/Stock/%E5%80%8B%E8%82%A1%E7%B7%9A%E5%9C%96/%E6%8A%80%E8%A1%93%E7%B7%9A%E5%9C%96%E8%B3%87%E6%96%99?StockNo=" & StockNo & "&Kcounts=245&Type=%E6%97%A5K_K%E7%B7%9A%7C%E6%97%A5K_%E6%BC%B2%E8%B7%8C%E8%B3%87%E6%96%99%7C%E6%97%A5K_%E6%88%90%E4%BA%A4%E9%87%8F%7C%E6%97%A5K_KD%7C%E6%97%A5K_RSI%7C%E6%97%A5K_MACD%7C%E6%97%A5K_%E5%91%A8%E8%BD%89%E7%8E%87%7C%E6%97%A5K_William%7C%E6%97%A5K_%E5%8A%A0%E6%AC%8A%E6%8C%87%E6%95%B8%7C%E6%97%A5K_DMI&isCleanCache=false", False
- Else
- Exit Sub
- End If
- xmlHttp.setRequestHeader "Content-Type", "text/html; charset=utf-8"
- xmlHttp.send
- Readstr = xmlHttp.responseText
- '************* 'responseText 檔案的本文
- 'Mid 函數 從一字串傳回特定數量字元所構成的Variant (String)
- 'InStr 函數 傳回在某字串中一字串的最先出現位置,此位置為 Variant (Long)。
- 'Split 函數 傳回一個陳列索引從零開始的一維陣列,它包含指定數目的子字串。
- 'Replace 函數 傳回一個字串,該字串中指定的子字串已被取代成另一子字串,並且取代發生的次數也是指定的。
- '******************************************
- '***擷取所要的文字
- If DataType = "Week" Then
- Readstr = Mid(Readstr, InStr(Readstr, "W = [{x:") + Len("D = [{x:"))
- Readstr = Split(Readstr, "}];var Close_W =")(0)
- Else
- Readstr = Mid(Readstr, InStr(Readstr, "D = [{x:") + Len("D = [{x:"))
- Readstr = Split(Readstr, "}];var Close_D =")(0)
- End If
- '***踢除不要的文字
- Readstr = Replace(Readstr, "open:", "")
- Readstr = Replace(Readstr, "high:", "")
- Readstr = Replace(Readstr, "low:", "")
- Readstr = Replace(Readstr, "close:", "")
- '*** 以 "},{x:" 將文字分割為陣列
- Readstr = Split(Readstr, "},{x:")
- ReDim xAr(UBound(Readstr)) '重置一陣列的維數
- For i = 0 To UBound(Readstr)
- Ar = Split(Readstr(i), ",")
- Ar(0) = DateAdd("s", Mid(Ar(0), 1, 10), CDbl(DateSerial(1970, 1, 1))) '*** 字串轉為日期
- xAr(i) = Ar '***整理好的資料放在陣列
- Next
- With Sheet2
- .UsedRange.Offset(1).ClearContents '清除之前記錄的資料
- .Range("A2").Resize(UBound(xAr) + 1, UBound(Ar) + 1) = Application.Transpose(Application.Transpose(xAr)) '陣列資料的讀取
- End With
- 'MsgBox Application.Text(Time - T, ["S秒"]) '測試程式運行的速度
- End Sub
複製代碼 |
|
|
|
|
|
|
|