以下测试代码,后台执行,序列模式,固定间隔
GLOBALVARIABLE: n=1;
IF (30 >=12+n) THEN BEGIN
n:=n+10;
MSGOUT(1 ,NUMTOSTR((n+12) , 1) );SLEEP(2000);
MSGOUT(1 ,NUMTOSTR(n , 1) ); SLEEP(2000);
end
但是,监控几个品种(即使休市品种)就执行几遍,问题在哪里?
怎么才能执行的次数与监控品种数量无关? 谢谢。
以下是监控 4 个品种是的执行情况:
2015/06/03 08:57:02 23.0
2015/06/03 08:57:04 11.0
2015/06/03 08:57:06 23.0
2015/06/03 08:57:08 11.0
2015/06/03 08:57:10 23.0
2015/06/03 08:57:12 11.0
2015/06/03 08:57:14 23.0
2015/06/03 08:57:16 11.0
2015/06/03 08:57:18 33.0
2015/06/03 08:57:20 21.0
2015/06/03 08:57:22 33.0
2015/06/03 08:57:24 21.0
2015/06/03 08:57:26 33.0
2015/06/03 08:57:28 21.0
2015/06/03 08:57:30 33.0
2015/06/03 08:57:32 21.0
你的条件判断语句的作用是什么?
第一次:n=1,条件符合执行一次。
第二次:n=11,条件语句30>=23,条件符合,执行内部语句,n=21;
第三次判断就不符合你的条件语句了。
你说的对,应该执行 2 次。
但是,为什么每一次都执行了4遍(与监控的数量相同)呢?
我的本意是执行一遍即可。
1.每个品种都会执行一次,就是4次,条件语句符合2次。打印输出的语句就是4(品种)*2(打印语句)*2(条件符合次数)。
2.你如果只想打印一边的话,可以限制你的条件。
感谢 wenarm 的耐心答复 !
但是我觉得 监控品种的数量与执行的次数应该没有关系,
否则监控一个版块、市场,要执行多少遍了,呵呵。
期待其他权威答复,谢谢!
1.程序判断条件执行的次数只和你的判断条件有关系。
2.你监控的每个品种,都会进行监控然后打印输出。
1,2两个组合一起就是你一共打印的次数(类似双重循环的结构)
例如:你上面的打印输出16句话。是判断程序执行2次的结果。1次打印8条语句。
在这8条语句中,每2条一组,代表一个品种共计4个品种。
感谢楼上 二位 的回答!
以上的测试代码,主要语句 msgout,是通用的,
输出的次数与监控的品种数量相同,明白的。
现在加入一条买入语句:
GLOBALVARIABLE: n=1;
IF (30 >=12+n) THEN BEGIN
n:=n+10;
TBUY(1,1,LMT,0.01,0,'账户','品种'); SLEEP(2000);
MSGOUT(1 ,NUMTOSTR((n+12) , 1) ); SLEEP(2000);
end
输出结果如下:
监控4个品种时(有一个欧洲品种,休市中,不应该起作用啊),msgout输出 8 遍 (4*2),
但是买入的执行了 5 遍,(4 + 1 ?)。
监控3个品种时(有一个欧洲品种,休市中),msgout输出 6 遍 (3*2),
但是买入的执行了 4 遍,(3 + 1 ?)。
问题是:第二轮,为什么 买入仅 执行了 1遍 呢?
主要是我不想要重复的执行交易。
比如:我的程序里,有恒指,金,银,dax,的判断条件。
因为他们的 交易时间各不相同。有的交易时段交叉。
那么监控这4个品种。交叉时段,比如恒指符合条件,买入4次。
金 符合条件,也重复买入了?
如何做到,只买入 1 次呢?
(我现在只能监控一个 全天候交易品种 的笨方法)