以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  让VBA代码在某一点上停止运行一段时间  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=30185)

--  作者:bl6712
--  发布时间:2012/10/29 17:07:28
--  让VBA代码在某一点上停止运行一段时间

我做套利操作,两边同时发单之后,因为一段时间之后回单才会到本地,所以希望发单之后停一定时间然后查持仓数据,VBA应该如何实现,定时器可以么  还是需要用DO循环,

 

 

DO

  IF TIME()-TIME1>1 THEN

      查持仓

 ELSE 

     MSGOUT  "订单等待时间不足"

END IF

 LOOP


--  作者:bl6712
--  发布时间:2012/10/29 17:08:44
--  

还有就是如果用DO循环 势必会资源占用较大,而且两个时间相隔只能精确到秒,能不能有更好的方式来解决这个问题

 


--  作者:王锋
--  发布时间:2012/10/29 17:09:36
--  

使用定时器是比较好的方法,使用循环会导致程序停止响应


--  作者:bl6712
--  发布时间:2012/10/29 17:13:09
--  

我是在函数中间哦  定时器是这个功能么 不是你们告诉我说是每隔一定时间去刷新代码一遍么

有没有SLEEP之类的函数的

 


--  作者:王锋
--  发布时间:2012/10/29 17:15:20
--  

SLEEP会造成系统停止响应,不建议使用,使用定时器是最好的方法。

金字塔在报单后,会有报单事件给你,你记下这个时间后,用1秒一次的定时器与当前时间对比,然后进行操作


--  作者:bl6712
--  发布时间:2012/10/29 17:17:21
--  
能否例子示范下简单示范一下,就从发单之后开始,多谢
--  作者:王锋
--  发布时间:2012/10/29 17:19:08
--  
问题太函数,无法给出具体例子,建议你先按照我说的方法自行在论坛找相应的范例,遇到具体的编程问题再来发帖求教
--  作者:guotx2010
--  发布时间:2012/10/29 17:19:55
--  

使用DateDiff函数比较时间,如:

Ms=DateDiff("s",CDate(tOrderTime),Cdate(time))

就是比较下单时间与当前时间的间隔秒数,在你的条件上加上秒数判断就可以实现你的需求了。


--  作者:bl6712
--  发布时间:2012/10/29 17:39:25
--  

 解决了,谢谢,先建立一个SUB 然后回头调用call sleeponesecond

Sub sleeponesecond
SaveTime=TimeGetTime
While TimeGetTime<SaveTime+1000
Wend
End Sub


--  作者:adansmu
--  发布时间:2016/7/31 3:46:34
--  
请问这种方法是不是需要打断流程?
比方在需要暂停3秒的时候,设置一个100号计时器,然后end sub。将后续流程写入另一个sub next()
然后在计时器流程中写:“if id=100 then ...判断时间到了3秒,执行sub next()?在sub开头加入kill timer来结束这个计时器?