返回列表 上一主題 發帖

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

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

各位大大好
小弟有一個檔案
已經可以抓歷史資料
但這個JSON的應用
我不太懂
不知道有好心的大大可以協助一下嗎?
只需要用原本的網址
因為他盤中才會有資料進去

有需要的大大們也可以自行取用此檔案

資料範例.zip (80.95 KB)

日k技術分析線圖
右上角有一各 日k完整線圖
你用那個 url 裡面的 json 會有 Volume

TOP

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

回復 3# GBKEE
程式碼精簡許多了,目前雖已可抓取K線資料,
但尚欠缺量,不知是否可以抓取到?  
而將它順便加入到 F 欄內?
閒著閒著便上網看了一下,謝謝您囉!

TOP

回復 3# GBKEE
裡面好像找不到 Volume
    '  Readstr : "{"code":"0","message":"","returnValues":{"value":"<script>var
    '  candlestickData_D = [{x:1440547200000,open:59.3,high:60.5,low:58.65,close:60.35},
    '  {x:1440633600000,open:60.6,high:6
    '  Readstr : "1440547200000,59.3,60.5,58.65,60.35},{x:1440633600000,60.6,60.65,60,60.15},
    '  {x:1440720000000,61,61.9,61,61.8},{x:1440979200000,61.3,62.35,61.2,62.3},
    '  {x:1441065600000,61.9,62.6,6
    '  ---------------------------------------------------------------------------------------
    '  Readstr :  : Variant/String(0 to 244)
    '  Readstr(0) : "1440547200000,59.3,60.5,58.65,60.35" : String
    '  Readstr(1) : "1440633600000,60.6,60.65,60,60.15" : String
    '  Readstr(2) : "1440720000000,61,61.9,61,61.8" : String
    '  Readstr(242) : "1471824000000,69,69.15,68.45,68.7" : String
    '  Readstr(243) : "1471910400000,68.9,69.6,68.9,69.4" : String
    '  Readstr(244) : "1471996800000,69.35,69.55,69.2,69.4" : String

TOP

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

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

TOP

是指把
Readstr = Split(Readstr, "}];var Close_W =")(0)
改成
Readstr = Split(Readstr, "</script><script>var TAIEXcandlestickData_W = [" )(0)
好像不行

TOP

        靜思自在 : 能付出愛心就是福,能消除煩惱就是慧。
返回列表 上一主題