Board logo

標題: 已可抓取K線資料,但欠缺量有人可以協助一下? JSON [打印本頁]

作者: vavashop    時間: 2016-8-22 11:47     標題: 已可抓取K線資料,但欠缺量有人可以協助一下? JSON

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

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

[attach]24996[/attach]
作者: jackyq    時間: 2016-8-23 19:57

日k技術分析線圖
右上角有一各 日k完整線圖
你用那個 url 裡面的 json 會有 Volume
作者: GBKEE    時間: 2016-8-24 09:01

本帖最後由 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
複製代碼

作者: c_c_lai    時間: 2016-8-24 10:49

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

回復 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
作者: GBKEE    時間: 2016-8-24 11:51

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

回復 4# c_c_lai
週線 Readstr = xmlHttp.responseText
裡有"</script><script>var TAIEXcandlestickData_W = [" 試看看
作者: 小俠客    時間: 2016-8-24 13:47

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)