以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  callstock语句速度问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=80202)

--  作者:roadpeace
--  发布时间:2015/6/28 8:15:42
--  callstock语句速度问题
测试代码及输出结果如下面
用PP13(聚丙烯,开盘时间和L一样)5分钟下测试,瞬间输出;
用rb13(螺纹,有夜盘)日线下测试,就是瞬间输出;
      5分钟下测试,不知道为什么,非常慢(可以看看下面的输出结果)
      5分钟下测试,如果不要红色那句,也是瞬间输出(说明就是红色那句很慢)

问题:红色那句有什么问题?为什么用rb13 5分钟来测那么慢??

另外,好像callstock有时取的数不对,好像是跨市场或者品种的时候,但是不总是不对,所以我暂时未弄清楚什么时候会不对




--------------------------------------------------------------------------
runmode:1;

if ISLASTBAR then begin
msgout(1,\'测试1:callstock取值不输出\');
hhh:=callstock(\'L09\',vtclose,6);
msgout(1,\'测试1结束\');

msgout(1,\'测试2:callstock取值并输出\');
hhh:=callstock(\'L09\',vtclose,6);
msgout(1,\'收盘价:\'&NUMTOSTR(hhh,2));
msgout(1,\'测试2结束\');
end

--------------------------------------------------------------
测试对象:PP13,5分钟线
输出结果:
2015/06/28 08:12:22  测试1:callstock取值不输出
2015/06/28 08:12:22  测试1结束
2015/06/28 08:12:22  测试2:callstock取值并输出
2015/06/28 08:12:22  收盘价:9870.00
2015/06/28 08:12:22  测试2结束

测试对象:rb13,日线
输出结果:
2015/06/28 07:51:24  测试1:callstock取值不输出
2015/06/28 07:51:24  测试1结束
2015/06/28 07:51:24  测试2:callstock取值并输出
2015/06/28 07:51:24  收盘价:9870.00
2015/06/28 07:51:24  测试2结束

测试对象:rb13,5分钟线
输出结果:
2015/06/28 07:52:05  测试1:callstock取值不输出
2015/06/28 07:52:05  测试1结束
2015/06/28 07:52:05  测试2:callstock取值并输出
2015/06/28 07:52:07  收盘价:9870.00
2015/06/28 07:52:07  测试2结束


--  作者:王锋
--  发布时间:2015/6/28 22:57:51
--  

是不是你在选项里,设置的默认内存调用的数据太大了?


--  作者:roadpeace
--  发布时间:2015/6/29 7:27:32
--  
默认3000根,测试是由2009/1/1开始到现在,序列模式。我的问题是,就5分钟rb13下测,并且是含红字那行,才会特别慢,不明
在日线rb13,5分钟PP13下测都不会这样,不要红字那行,同样不会
[此贴子已经被作者于2015/6/29 7:28:28编辑过]

--  作者:roadpeace
--  发布时间:2015/6/29 7:30:40
--  
想了下PP好像历史不是很长,我忽略了,只能说可能callstock挺慢的吧
[此贴子已经被作者于2015/6/29 7:32:38编辑过]

--  作者:roadpeace
--  发布时间:2015/6/29 7:34:10
--  
还有,为什么多了msgout那句,速度就非常慢呢???不要那句,其实速度很快的
--  作者:roadpeace
--  发布时间:2015/6/29 7:39:53
--  
而且测试的代码是序列模式,并且里面也写了“if islastbar then”,那就是说只算了一次,多一句msgout需要2秒那么久吗?
--  作者:jinzhe
--  发布时间:2015/6/29 9:09:09
--  
把&改成+试试
--  作者:roadpeace
--  发布时间:2015/6/29 9:33:06
--  
速度都差不多

msgout(1,\'收盘价:\'+NUMTOSTR(hhh,2));
msgout(1,\'收盘价:\'&NUMTOSTR(hhh,2));
msgout(1,strcat(\'收盘价:\',NUMTOSTR(hhh,2)));

以上3句随便只要有一句,速度就慢

--  作者:jinzhe
--  发布时间:2015/6/29 9:38:16
--  
我本地测试就没有这个问题,用户是不是加载的数据太多了
--  作者:roadpeace
--  发布时间:2015/6/29 9:47:35
--  
rb13合约,5分钟线,由2009/01/01开始到现在
序列模式,是测试(ctrl+F7那里)

不要那句msgout,基本就是瞬出,加了,就是两秒,按道理应该不用那么久吧?
我那里有好多句msgout,就有关callstock的,加了,就用多两秒(不加那句,保留其他4句msgout基本就是0秒)

而且那个callstock的,只要不是msgout,都是瞬出的(还有没别的语句会很慢暂时不知道)


帮忙按我那个rb13,5分钟,2009/01/01开始来测测试试呗?