精华 once关键字限制其后的语句只执行一次 [MC]
-
MC用户求助:
once关键字限制其后的语句只执行一次
(原创:Alex)未开启bar内模式下,信号脚本是在每根bar收盘时执行一次(当然,导致信号脚本执行的因素还有其它情况,在此不深入探讨),所以信号脚本会在整个策略运行中执行很多次,那么如何限制某些语句命令只执行一次,我们可以使用once关键字来实现,关键字once限制其后的一条语句(只能限制一条语句,即一条简单语句或者包含多条简单语句的复合语句,因为一条复合语句也是一条语句)在整个策略运行中只执行一次(once关键字也可以使用在指标和函数中,效果是一样的,这里不再赘述),下面以限制语句value1=value1+1在整个策略运行中只执行一次为例进行介绍。
一、一般用法 once (condition1) value1=value1+1;这是once关键字一般的用法(condition1需要用括号括起来,否则会报错),也就是当condition1第一次满足的时候,执行后面的语句value1=value1+1;而当condition1第二次满足或者后续再次满足的时候,value1=value1+1语句不再执行;这样就达到了使value1=value1+1语句命令在整个策略运行中只执行一次。
二、其它变化除了以上的一般用法之外,还有其它变化;若需要限制两个语句或者更多的语句命令在策略运行中只执行一次,我们可以使用复合语句(由于once后面只能限制一条语句,而复合语句也是一条语句)来代替上面的value1=value1+1,如下面所示:
once (condition1) begin value1=value1+1; value2=value2+1; end;若需要限制语句命令在信号脚本第一次执行的时候就执行该语句命令,可以使用下面的代码,将condition1直接替换成true,更简单的方法就是将condition1直接删除掉,两者的效果完全一样:
once (true) value1=value1+1; 或者 once (true) begin value1=value1+1; end; 或者 once value1=value1+1; 或者 once begin value1=value1+1; end; -
MC回复讨论一:
那一般在什么情况下会用到只执行一次的情况?
-
MC回复讨论二:
我个人一般使用once都是用在初始化情境中,当然特殊情况下需要看策略的需求了
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容