以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- 反馈一个奇怪的问题 (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=87304) |
-- 作者:dwjgwsm -- 发布时间:2015/11/15 20:11:12 -- 反馈一个奇怪的问题 [此贴子已经被作者于2015/11/15 20:12:35编辑过]
|
-- 作者:dwjgwsm -- 发布时间:2015/11/15 20:33:43 -- Sub findfirstsecondOPI(Precode,tMarket) on error resume next \'有可能没有某些合约,如02合约通常没有 for k=1 to 12 \'3 遍历同一品种所有合约 if k<10 then icode=Precode & "0" & cstr(k) else icode=Precode & cstr(k) end if set History2 = marketdata.GetHistoryData(iCode,tMarket,5) \'由于这一句可能会发生错误,导致cs中输出日期错误,怎么解释? next \'3 End Sub Sub cs() on error resume next T=25 Precode="CS" tMarket="DQ" set History1 = marketdata.GetHistoryData(Precode & "00",tMarket,5) M=History1.Count-1 for j=0 to M tdate=cdate(History1.Date(j)) findfirstsecondOPI Precode,tMarket application.msgout tdate next End Sub 得到错误的日期输出: 2014-12-19 2014-12-23 ‘从这里开始就不对了 2014-12-24 2015-01-06 2015-01-08 2015-01-19 2015-01-20 2015-01-21 2015-01-22 2015-01-30 2015-02-05 2015-03-10 2015-03-12 2015-03-16 2015-03-20 2015-04-02 2015-04-15 2015-04-29 2015-05-06 2015-05-07 2015-05-11 2015-05-14 2015-05-26 2015-06-01 2015-06-25 2015-06-30 2015-09-22 2015-09-28 2015-10-15 2015-10-16 2015-10-27 2015-11-02 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 0:00:00 |
-- 作者:dwjgwsm -- 发布时间:2015/11/15 20:53:55 -- 即便在 findfirstsecondOPI Precode,tMarket 后面再加一句err.number=0也不管用 但是,在后面加一句 set History1 = marketdata.GetHistoryData(Precode & "00",tMarket,5) 重新set一下倒是管用,不过其中的原因想不明白,为什么后面的错误在已经on error resume next 或者err.number=0后会导致早前声明的History1 对象毁了。是不是可以进一步推广,任何语句中的错误(无论之前之后发生的)都会导致所有与之相关的子程序中的对象被毁?!
[此贴子已经被作者于2015/11/15 20:55:25编辑过]
|
-- 作者:yukizzc -- 发布时间:2015/11/16 11:19:06 -- marketdata.HistoryDataMode=1\'不同品种为独立的缓冲区 加一句这个,您看下GetHistoryData函数说明里的注意,默认对象共享同一个缓冲区。 |