欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 怎样判断Grid或HistoryData中要取的k线数据是不是存在?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4584人关注过本帖树形打印复制链接

主题:怎样判断Grid或HistoryData中要取的k线数据是不是存在?

帅哥哟,离线,有人找我吗?
szwangwei88
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2013/6/19 15:11:59
怎样判断Grid或HistoryData中要取的k线数据是不是存在?  发帖心情 Post By:2014/4/7 22:32:27 [只看该作者]

在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#)

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2014/4/7 23:20:08 [只看该作者]

GetPosFromDate返回的是最近的数据位置,这个函数是不能精确查找的。

你只能通过循环遍历来查找数据了



金字塔—专业程序化软件提供商

金字塔-技术部

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

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
szwangwei88
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2013/6/19 15:11:59
  发帖心情 Post By:2014/4/8 7:58:49 [只看该作者]

GetPosFromDate返回的是最近的数据位置,是往前最近的,还是往后最近?这个教程上的说明应该改一下呀,以免用户耽误时间。数据不存在的情况,分为几种,一是周末,这个可用程序鉴别,但附加的停市和缺数据的就比较难鉴别了,循环遍历也很难做鉴别。强烈建议增加方法。

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2014/4/8 18:20:52 [只看该作者]

这个循环处理最容易鉴别了,用循环判断不就行了?

你可以自己先尝试写一下代码,不对的地方我们再帮你改改



金字塔—专业程序化软件提供商

金字塔-技术部

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

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
szwangwei88
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2013/6/19 15:11:59
  发帖心情 Post By:2014/4/8 19:41:21 [只看该作者]

实话说,k线数据是不是存在,我还真想不出怎么循环判断,能不能提示下。

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2014/4/8 21:03:57 [只看该作者]

给你做个范例,可以遍历主图数据的,你应该看懂的

 

Sub Test()
Set Grid = Technic.GetGridByName("Main")

'得到该窗格所对应的对象
Set History = Grid.GetHistoryData()

for i = 0 to History.Count-1
    Application.MsgOut History.Date(i)
next


End Sub



金字塔—专业程序化软件提供商

金字塔-技术部

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

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
szwangwei88
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2013/6/19 15:11:59
  发帖心情 Post By:2014/4/8 22:46:51 [只看该作者]

我需要的是在输入日期和时间,得到数据,而这个数据就是真实的数据,而不是其他附近的数据,如果没有我要求的这个日期时间的数据,就返回一个标志让程序知道没有数据,看来你还是没有看懂我的问题。真晕,在Grid或HistoryData取数据,时间和数据要真实对应是最基本的要求啊,不然我输入一个休市的日期,也会得到一个数据,用这样的数据,运算后得到的结果有什么用啊。

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2014/4/8 22:58:17 [只看该作者]

上面代码都告诉你了遍历数据的方法,你就不知道做个函数?在函数里遍历数据,通过参数传递要检索的数据,函数返回-1表示没有检索到,返回一个大于等于0的就是找到数据了及数据的序号


金字塔—专业程序化软件提供商

金字塔-技术部

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

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
szwangwei88
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:61 积分:0 威望:0 精华:0 注册:2013/6/19 15:11:59
  发帖心情 Post By:2014/4/9 0:53:44 [只看该作者]

算了,这个问题不问了,晕。

 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2014/4/9 8:12:40 [只看该作者]

function AAA(sDate)
Set Grid = Technic.GetGridByName("Main")

AAA=0

'得到该窗格所对应的对象
Set History = Grid.GetHistoryData()

for i = 0 to History.Count-1
    'Application.MsgOut History.Date(i)

     abc=History.Date(i) 

     if Cdate(sDate)=Cdate(abc) then

         AAA=1

        exit for

     end if
next


End function



'以上是我根据王峰的代码给你做出来的现成的函数,你只要传递要判断的日期,如果有该日期的行情,就返回1,否则返回0

'调用方法 :

    vvv=aaa("2014-04-09")



 回到顶部
总数 11 1 2 下一页