以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- 怎样判断Grid或HistoryData中要取的k线数据是不是存在? (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=63574) |
-- 作者:szwangwei88 -- 发布时间:2014/4/7 22:32:27 -- 怎样判断Grid或HistoryData中要取的k线数据是不是存在? 在1分钟k线中,从Grid得到HistoryData,按教程说明,如果数据不存在,方法GetPosFromDate应返回-1,按下面程序我取周日(2014-3-30)的数据,结果返回849,而不是-1,这个是怎么回事?在程序中常需要判断要取的k线数据是否存在,应该怎样判断? Set MyGrid = Technic.GetGridByName("Main")
Set History=MyGrid.GetHistoryData() msgbox History.GetPosFromDate(#2014-3-30 15:00:00#) |
-- 作者:王锋 -- 发布时间:2014/4/7 23:20:08 -- GetPosFromDate返回的是最近的数据位置,这个函数是不能精确查找的。 你只能通过循环遍历来查找数据了 |
-- 作者:szwangwei88 -- 发布时间:2014/4/8 7:58:49 -- GetPosFromDate返回的是最近的数据位置,是往前最近的,还是往后最近?这个教程上的说明应该改一下呀,以免用户耽误时间。数据不存在的情况,分为几种,一是周末,这个可用程序鉴别,但附加的停市和缺数据的就比较难鉴别了,循环遍历也很难做鉴别。强烈建议增加方法。 |
-- 作者:王锋 -- 发布时间:2014/4/8 18:20:52 -- 这个循环处理最容易鉴别了,用循环判断不就行了? 你可以自己先尝试写一下代码,不对的地方我们再帮你改改 |
-- 作者:szwangwei88 -- 发布时间:2014/4/8 19:41:21 -- 实话说,k线数据是不是存在,我还真想不出怎么循环判断,能不能提示下。 |
-- 作者:王锋 -- 发布时间:2014/4/8 21:03:57 -- 给你做个范例,可以遍历主图数据的,你应该看懂的
Sub Test() \'得到该窗格所对应的对象 for i = 0 to History.Count-1
|
-- 作者:szwangwei88 -- 发布时间:2014/4/8 22:46:51 -- 我需要的是在输入日期和时间,得到数据,而这个数据就是真实的数据,而不是其他附近的数据,如果没有我要求的这个日期时间的数据,就返回一个标志让程序知道没有数据,看来你还是没有看懂我的问题。真晕,在Grid或HistoryData取数据,时间和数据要真实对应是最基本的要求啊,不然我输入一个休市的日期,也会得到一个数据,用这样的数据,运算后得到的结果有什么用啊。 |
-- 作者:王锋 -- 发布时间:2014/4/8 22:58:17 -- 上面代码都告诉你了遍历数据的方法,你就不知道做个函数?在函数里遍历数据,通过参数传递要检索的数据,函数返回-1表示没有检索到,返回一个大于等于0的就是找到数据了及数据的序号 |
-- 作者:szwangwei88 -- 发布时间:2014/4/9 0:53:44 -- 算了,这个问题不问了,晕。 |
-- 作者:guotx2010 -- 发布时间:2014/4/9 8:12:40 -- function AAA(sDate) AAA=0 \'得到该窗格所对应的对象 for i = 0 to History.Count-1 abc=History.Date(i) if Cdate(sDate)=Cdate(abc) then AAA=1 exit for end if
\'以上是我根据王峰的代码给你做出来的现成的函数,你只要传递要判断的日期,如果有该日期的行情,就返回1,否则返回0 \'调用方法 : vvv=aaa("2014-04-09") |