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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → vba中有个头疼的开盘时间问题

   

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


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

主题:vba中有个头疼的开盘时间问题

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


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
vba中有个头疼的开盘时间问题  发帖心情 Post By:2014/8/21 9:32:14 [显示全部帖子]

我希望开盘后程序才运行,因此用了一个

iopen=reportdata.open

iopen>0来判断,但是iopen在集合竞价的时候就大于0了,也就是提前了1分钟.这不是我想要的.如何写呢?要考虑夜盘的开盘时间不同

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


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2014/8/21 9:35:37 [显示全部帖子]

可能要用reportdata.IsVirtualData判断,明天再试试

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


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2014/8/22 9:26:06 [显示全部帖子]

刚刚看到你的回复.我今天早上测试了一下,有这么个疑问:
jihe=reportdata.IsVirtualData
thisopen=reportdata.open
tLabel=GRID.StockLabel
if thisopen>0 and jihe=0 then
  application.msgout time & " tLabel:" & tLabel &" work! thisopen:" & thisopen & " jihe:" & jihe
end if

8:59:20 tLabel:M00 work! thisopen:3270 jihe:0
9:00:06 tLabel:SRX00 work! thisopen:4491 jihe:0
9:00:12 tLabel:TA00 work! thisopen:6912 jihe:0

我就纳闷了,为什么大商所在9点前运行了,而郑商所在9点后才运行?我核实了一下电脑时间和金字塔右下角的时间,对得上.


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


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2014/8/22 9:36:58 [显示全部帖子]

触发模式都是一样的,
(1)一个框架分为几个窗格,每个窗格一个品种,加载相同的指标,所以你看到上面一共有3个品种运行了程序
(2)规定每个品种每天开盘后各运行一遍以刷新一个变量供该品种当天调用,对开盘时间的限制方式就是前面写的 thisopen>0 and jihe=0


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


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2014/8/22 10:27:03 [显示全部帖子]

触发代码都是一样的,说得更详细点,触发代码分为2部分,第一部分判断程序运行次数,第二部分判断开盘时间:
Function SWjg(Formula)
.....
hiscount=HistroyData.count
barrecord=Document.GetPrivateProfileFloat("Gen", tLabel & "Num", 0, "D:\SystemSet.ini")

if (hiscount<>barrecord or barrecord=0) and right(tLabel,2)="00" and (thisopen>0 and jihe=0) then  '加粗的条件就是用于限制开盘再运行  {这就是我的全部触发条件}
....
....
Document.WritePrivateProfileString "Gen",tLabel & "Num",hiscount,"D:\SystemSet.ini"         '这样的话就实现了当天只运行一遍的要求
end if
end Function 
所以我觉得这个触发条件前半部分不应该有什么问题

另外,你说的

"IsVirtualData 属性的集合竞价数据不是你理解的哪种,期货的开盘第一笔数据已经不是集合竞价数据了"
那我就纳闷了,开盘前的数据都不是集合竞价数据,那什么时候IsVirtualData=1?
[此贴子已经被作者于2014/8/22 10:28:39编辑过]

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


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2014/8/22 11:18:02 [显示全部帖子]

考虑到夜盘, ReportData.date方法不好,
刚才蹲坑儿的时候想到一个野路子.thisopen>0 and minute(time)<1
这个问题就解决了!

 回到顶部