获取同花顺数据接口_简单介绍同花顺_数据获取方式(Excel VBA)

本文介绍了如何利用同花顺iFind普惠版的Excel插件和VBA宏代码,便捷地获取股票的日间数据,包括日期、开盘价、最高价、最低价和收盘价等。同时提到了新浪及Yahoo的数据接口作为替代方案,强调数据在量化分析中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单介绍同花顺_数据获取方式(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值