精華 once關(guān)鍵字限制其后的語句只執(zhí)行一次 [MC]
-
MC用戶求助:
once關(guān)鍵字限制其后的語句只執(zhí)行一次
(原創(chuàng):Alex)未開啟bar內(nèi)模式下,信號腳本是在每根bar收盤時執(zhí)行一次(當然,導致信號腳本執(zhí)行的因素還有其它情況,在此不深入探討),所以信號腳本會在整個策略運行中執(zhí)行很多次,那么如何限制某些語句命令只執(zhí)行一次,我們可以使用once關(guān)鍵字來實現(xiàn),關(guān)鍵字once限制其后的一條語句(只能限制一條語句,即一條簡單語句或者包含多條簡單語句的復合語句,因為一條復合語句也是一條語句)在整個策略運行中只執(zhí)行一次(once關(guān)鍵字也可以使用在指標和函數(shù)中,效果是一樣的,這里不再贅述),下面以限制語句value1=value1+1在整個策略運行中只執(zhí)行一次為例進行介紹。
? 一、一般用法 once?(condition1)?value1=value1+1;這是once關(guān)鍵字一般的用法(condition1需要用括號括起來,否則會報錯),也就是當condition1第一次滿足的時候,執(zhí)行后面的語句value1=value1+1;而當condition1第二次滿足或者后續(xù)再次滿足的時候,value1=value1+1語句不再執(zhí)行;這樣就達到了使value1=value1+1語句命令在整個策略運行中只執(zhí)行一次。
? 二、其它變化除了以上的一般用法之外,還有其它變化;若需要限制兩個語句或者更多的語句命令在策略運行中只執(zhí)行一次,我們可以使用復合語句(由于once后面只能限制一條語句,而復合語句也是一條語句)來代替上面的value1=value1+1,如下面所示:
once?(condition1)?begin ? ?? ??value1=value1+1; ? ?? ??value2=value2+1; end;若需要限制語句命令在信號腳本第一次執(zhí)行的時候就執(zhí)行該語句命令,可以使用下面的代碼,將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回復討論一:
那一般在什么情況下會用到只執(zhí)行一次的情況?
?
-
MC回復討論二:
我個人一般使用once都是用在初始化情境中,當然特殊情況下需要看策略的需求了
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進行 有償 編寫!(不貴!點擊查看價格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容