返回列表 上一主題 發帖

已可抓取K線資料,但欠缺量有人可以協助一下? JSON

本帖最後由 GBKEE 於 2016-8-24 09:06 編輯

回復 1# vavashop
修改附檔中 fnLoadFileAndParse 直接讀取資料
可不需再用物件類別模組中的clsJSParse
  1. Sub fnLoadFileAndParse(ByVal StockNo As String, ByVal DataType As String)
  2.     Dim xmlHttp As Object
  3.     Dim Readstr As Variant, Ar As Variant, xAr(), i As Integer, T As Date
  4.     T = Time
  5.     Set xmlHttp = CreateObject("MSXML2.XMLHTTP.6.0")
  6.     If DataType = "Week" Then
  7.             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
  8.     ElseIf DataType = "Day" Then
  9.             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
  10.     Else
  11.         Exit Sub
  12.     End If
  13.     xmlHttp.setRequestHeader "Content-Type", "text/html; charset=utf-8"
  14.     xmlHttp.send
  15.     Readstr = xmlHttp.responseText
  16.     '************* 'responseText  檔案的本文
  17.     'Mid 函數           從一字串傳回特定數量字元所構成的Variant (String)
  18.     'InStr 函數         傳回在某字串中一字串的最先出現位置,此位置為 Variant (Long)。
  19.     'Split 函數         傳回一個陳列索引從零開始的一維陣列,它包含指定數目的子字串。
  20.     'Replace 函數   傳回一個字串,該字串中指定的子字串已被取代成另一子字串,並且取代發生的次數也是指定的。
  21.     '******************************************
  22.     '***擷取所要的文字
  23.     If DataType = "Week" Then
  24.         Readstr = Mid(Readstr, InStr(Readstr, "W = [{x:") + Len("D = [{x:"))
  25.         Readstr = Split(Readstr, "}];var Close_W =")(0)
  26.     Else
  27.         Readstr = Mid(Readstr, InStr(Readstr, "D = [{x:") + Len("D = [{x:"))
  28.         Readstr = Split(Readstr, "}];var Close_D =")(0)
  29.     End If
  30.     '***踢除不要的文字
  31.     Readstr = Replace(Readstr, "open:", "")
  32.     Readstr = Replace(Readstr, "high:", "")
  33.     Readstr = Replace(Readstr, "low:", "")
  34.     Readstr = Replace(Readstr, "close:", "")
  35.     '*** 以  "},{x:"  將文字分割為陣列
  36.     Readstr = Split(Readstr, "},{x:")
  37.     ReDim xAr(UBound(Readstr))  '重置一陣列的維數
  38.     For i = 0 To UBound(Readstr)
  39.         Ar = Split(Readstr(i), ",")
  40.         Ar(0) = DateAdd("s", Mid(Ar(0), 1, 10), CDbl(DateSerial(1970, 1, 1))) '*** 字串轉為日期
  41.         xAr(i) = Ar '***整理好的資料放在陣列
  42.     Next
  43.     With Sheet2
  44.         .UsedRange.Offset(1).ClearContents   '清除之前記錄的資料
  45.         .Range("A2").Resize(UBound(xAr) + 1, UBound(Ar) + 1) = Application.Transpose(Application.Transpose(xAr)) '陣列資料的讀取
  46.     End With
  47.     'MsgBox Application.Text(Time - T, ["S秒"])  '測試程式運行的速度
  48. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2016-8-24 11:52 編輯

回復 4# c_c_lai
週線 Readstr = xmlHttp.responseText
裡有"</script><script>var TAIEXcandlestickData_W = [" 試看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 口說好話、心想好意、身行好事。
返回列表 上一主題