简单介绍同花顺_数据获取方式(Excel VBA)
2018-09-12
简单介绍数据获取方式(Excel VBA)
数据是量化的根本和原材料,数据的准确性非常重要。获得数据的方式各种各样,最小的单位是分笔数据(Tick数据),理论上是有更细的时间条做到每一笔交易都有,但是这不是普通人可以方便获得的,普通的Tick数据,是交易所的快照数据,一秒2个快照,囊括了这半秒内的数据总和。当然,普通投资者研究股票1分钟、5分钟、15分钟、1小时等分时数据够了,甚至因为T+1的存在,做日间交易数据我认为都是可行的,毕竟股票想做日内量化并不现实。在这里,我和大家分享下如何获得日间数据(Daily Close)
日间数据一般包括几个条目:
| 日期Date| 开票价 Open| 最高价 High| 最低价 Low| 收盘价 Close|
|成交量 Vol| 成交额 Turnover| 等
日数据的形式非常简单,一年约260个交易日,10年也不过2600条而已,所以分析起来也是相对容易和精简的。
下面是几个我认为比较方便的方式:
1. 这个是最近发现的,同花顺ifind 普惠版(免费),做到excel addin插件,和很多其他addin 插件一样(Bloomberg,Wind),安装了ifind就会在Excel上方出现一个按钮,可以按照提示输入参数,获得股票的这些数据。例如:
不得不说非常方便,是比较容易上手的一直方式,而且种类比较齐全,但数据的完整性和严谨性还是有待商榷。或许这就是同花顺最近暴涨原因之一?,假如Bloomberg、Wind这些专业平台的开放,我认为是互联网思维下可以做到的,毕竟是公开的source整理,未来机器数据挖掘完全可以做到去人化收集管理。盈利模式可以有很多,让大众参与到这个平台来才是关键,雪球就是个很正面的例子。
2. 通过Excel VBA写宏,抓取网上空开的接口数据。
其实开始用VBA也是误打误撞,公司平台老旧,程序化平台居然是VBA,所以从业开始也就是用VBA去写策略。但后来发现Excel功能虽简易,但是方便可视化数据操作,可以快速地验证逻辑,而且谁家电脑没个Excel呢?功能太过简单,基本所有统计函数都自己写个遍,对于理解数据本身是有裨益的。
接口1是新浪的:
“
URL = "http://biz.finance.sina.com.cn/stock/flash_hq/kline_data.php?symbol=" & StockCode & Chr(38) & "end_date=" & Date2 & Chr(38) & "begin_date=" & Date1
”
Example,沪深300,2014/09/10 到2014/12/09 的数据
“
http://biz.finance.sina.com.cn/stock/flash_hq/kline_data.php?symbol=sh000300&end_date=20141209&begin_date=20140901
”
目标文件是XML格式,function代码是
‘-------------------------------------------------------------------------------------------------------
Function B_LoadSina_Demo(ByRef StockCode As String, sDate As Date, eDate As Date, x As Long, Y As Long, P0 As Boolean, P1 As Boolean, P2 As Boolean, P3 As Boolean, P4 As Boolean, P5 As Boolean, P6 As Boolean)
Dim iData As String, URL As String
Dim a As String, b As String, c As String, d As String, E As String, F As String, Date1 As String, Date2 As String
Dim RW As Worksheet
With Application
Set RW = .Sheets("RAW")
End With
On Error Resume Next
If Len(StockCode) <> 9 Then Exit Function
If Right(StockCode, 2) = "SS" Then
StockCode = "sh" & Left(StockCode, 6)
ElseIf Right(StockCode, 2) = "SZ" Then
StockCode = "sz" & Left(StockCode, 6)
Else
GoTo SKIP
End If
a = Format(Day(sDate), "00")
b = Format(Month(sDate), "00")
c = Year(sDate)
d = Format(Day(eDate), "00")
E = Format(Month(eDate), "00")
F = Year(eDate)
Date1 = c & b & a
Date2 = F & E & d
ReDim PBol(6)
PBol(0) = P0
PBol(1) = P1
PBol(2) = P2
PBol(3) = P3
PBol(4) = P4
PBol(5) = P5
PBol(6) = P6
URL = "http://biz.finance.sina.com.cn/stock/flash_hq/kline_data.php?symbol=" & StockCode & Chr(38) & "end_date=" & Date2 & Chr(38) & "begin_date=" & Date1
"开始读取XML内容
Dim XML, objNode, objAtr As Object
Dim nCntChd, nCntAtr As Long
Set XML = CreateObject("Microsoft.XMLDOM")
With XML
.async = False
.Load (URL)
End With
Set objNode = XML.DocumentElement
nCntChd = objNode.ChildNodes.Length - 1 "XML的记录个数
Dim arrA
ReDim arrA(nCntChd + 1, 6)
"开始遍历
For i = 0 To nCntChd
Set objAtr = objNode.ChildNodes.Item(i)
nCntAtr = objAtr.Attributes.Length - 1
" For j = 0 To nCntAtr "遍历一条记录里面的所有的记录项,记录是从0开始的
" arrA(i, j) = objAtr.Attributes.Item(j).Text
" Next j
arrA(i + 1, 0) = objAtr.Attributes.Item(0).Text
arrA(i + 1, 1) = objAtr.Attributes.Item(1).Text
arrA(i + 1, 2) = objAtr.Attributes.Item(2).Text
arrA(i + 1, 3) = objAtr.Attributes.Item(4).Text
arrA(i + 1, 4) = objAtr.Attributes.Item(3).Text
arrA(i + 1, 5) = objAtr.Attributes.Item(5).Text
arrA(i + 1, 6) = objAtr.Attributes.Item(6).Text
Next i
"arrb = Array("Date", "Open", "High", "Close", "Low", "Vol")
arrA(0, 0) = "Date"
arrA(0, 1) = "Open"
arrA(0, 2) = "High"
arrA(0, 3) = "Low"
arrA(0, 4) = "Close"
arrA(0, 5) = "Vol"
arrA(0, 6) = ""
Set objAtr = Nothing
Set objNode = Nothing
Set XML = Nothing
If Err.Number > 0 Then MsgBox ("查不到股票信息")
Err.Clear
"================== Plot ===========================
If Left(StockCode, 2) = "sh" Then
StockCode = Right(StockCode, 6) & ".SS"
ElseIf Left(StockCode, 2) = "sz" Then
StockCode = Right(StockCode, 6) & ".SZ"
Else
GoTo SKIP
End If
RW.Cells(1, Y) = StockCode
For i = 0 To 6
If PBol(i) = True Then
x = 2
For j = 0 To nCntChd + 1
RW.Cells(j + 2, Y) = arrA(j, i)
Next j
Y = Y + 1
End If
Next i
"===================================================
SKIP:
End Function
‘-------------------------------------------------------------------------------------------------------
哈哈,其实这个就是网上搜VBA获得股票收盘价的一个代码,如何使用这个function就留作各位看官的作业啦!
接口2 Yahoo,发送请求 返回CSV
a = Month(sDate) - 1
b = Day(sDate)
c = Year(sDate)
d = Month(eDate) - 1
e = Day(eDate)
f = Year(Date)
“
URL = "http://table.finance.yahoo.com/table.csv?a=" & a & Chr(38) & "b=" & b & Chr(38) & "c=" & c & Chr(38) & "d=" & d & Chr(38) & "e=" & E & Chr(38) & "f=" & F & Chr(38) & "s=" & StockCode
”
雅虎的好处是数据源比较齐全,有港股、美股、期货的各路数据,但是数据质量一般,会有缺失。
有了数据,就有了量化的根源,整理好久可以开始想策略啦!
很多人觉得量化很复杂,但我认为量化并不复杂,只是你要清楚自己想做什么,然后再将这些想法模块化,然后一步步去实现而已。最近认识一好友,是个实干家,我认为他的一句话很好:“大部分觉得事情难办的人都属于光想不干的,但凡你主动去做一点什么,即便是失败也算是消掉一个可行的选项,断掉一个念想”
TZ
· 已收录至专栏 ·TZ_72的原创专栏
作者:TZ_72
链接:https://xueqiu.com/4240116588/33841569
来源:雪球
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。
http://www.pinlue.com/style/images/nopic.gif