以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  [求助]如何在VBA中以时间节点为参数取历史成交数据!  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=31185)

--  作者:sw3661354
--  发布时间:2012/12/5 14:22:16
--  [求助]如何在VBA中以时间节点为参数取历史成交数据!

请教各位高手个问题! 如果我想在VBA中取得今天某一时点的成交价格 用什么对象能实现啊?

我考察了下取数据的对象 report 是取及时数据的这个时点过去了就不能回头取了

minute和history取的数据是按成交顺序排的并不按时间序列排序,如果这样的话我11点开电脑想调用9:30的成交价格就成问题了!!!

求各位大侠赐教!

[此贴子已经被作者于2012-12-5 14:23:13编辑过]

--  作者:王锋
--  发布时间:2012/12/6 0:51:09
--  

HistoryData 对象

 

GetPosFromDate(DateData)

得到得到指定日期时间DateData的数据的基于0索引的序号。
如果指定日期超过数据范围返回-1。

示例:
\'得到上期所指定品种的日线数据
Set History = marketdata.GetHistoryData("rb00","sq",5)
\'显示指定日期的数据所在位置
MSGBOX HISTORY.GetPosFromDate("2010/12/28")


--  作者:sw3661354
--  发布时间:2012/12/6 9:57:30
--  

谢谢王锋老师!

 

您的方法我试了,但是当我取当日的分笔成交数据的的时候又碰到了新问题

dim i

Set History = marketdata.GetHistoryData("IF12","ZJ",10)
i = HISTORY.GetPosFromDate("2012/12/6 9:18:20")

mydate = History.Close(i)

上边这段代码运行的时候报错了, 提示 i 的用法错误!!

我查了下帮助里的范例 发现用法是mydate = History.Close(History.Count-1)这样的话 我只能倒序取数据,但是我从GetHistoryData函数里取得的是正序,无法传递到History.Close函数也就取不到数据。。。。。。。。。

请问王锋老师这个问题怎么解决?


--  作者:王锋
--  发布时间:2012/12/6 13:34:33
--  

Sub Test()
dim i

Set History = marketdata.GetHistoryData("IF12","ZJ",10)
i = HISTORY.GetPosFromDate("2012/12/6 9:18:20")

MSGBOX I
mydate = History.Close(i)

msgbox mydate

End Sub

 

经过上述代码测试没发现问题。

你出现的情况有可能是 GetPosFromDate 返回的数据索引为-1导致,处理数据时做下判断即可。

 

----------

发现用法是mydate = History.Close(History.Count-1)这样的话 我只能倒序取数据,但是我从GetHistoryData函数里取得的是正序,无法传递到History.Close函数也就取不到数据。。。。。。。。。

--------------

上面这句话看不懂是什么意思,想要表达什么? 

 


--  作者:sw3661354
--  发布时间:2012/12/6 17:20:23
--  

问题解决了 谢谢 王锋老师