關(guān)于Once問題在[IntrabarOrderGeneration = True 或 Flase]運(yùn)行機(jī)制問題? [MC]
-
MC用戶求助:
下面有代碼,[IntrabarOrderGeneration = True] 和[IntrabarOrderGeneration = Flase] 2種情況
問Once在2種情況運(yùn)行時的差異?
[IntrabarOrderGeneration = True]
//[IntrabarOrderGeneration = Flase]
Variable:TabMe(" ? ? ? ? ? ?"), Dates("How To Use"),Times(""),DatesNow("How To Use"),TimesNow(""),zijin("");
Once Dates = ?DateToString( El_DateToDateTime(TradeDate) ) ;
Once Times = ?TimeToString( EL_TimeToDateTime_s(Q_Time_s) ) ;
DatesNow = ?DateToString( El_DateToDateTime(TradeDate) ) ;
TimesNow = ?TimeToString( EL_TimeToDateTime_s(Q_Time_s) ) ;
//zijin = NumToStr(GetRTAccountEquity("1998_2-122227(CNY)") ,0);
If LastBarOnChart_s ? Then Begin
Value10 = Text_New(Date,Time,High,
TabMe + "StartDateTime : " + Dates + " ?" + Times + Newline +
TabMe + "DateTime : " + DatesNow + " ?" + TimesNow + Newline
);
Value10 =Text_SetStyle(Value10,0,2);
Text_Delete(Value10);
End;
?
?
-
MC回復(fù)討論一:
您的問題涉及到兩個知識點(diǎn):once關(guān)鍵字的使用;變量的更新和計算。這兩個知識點(diǎn)對應(yīng)的帖子名稱如下(您可以在論壇進(jìn)行搜索即可:
once關(guān)鍵字限制其后的語句只執(zhí)行一次,OpenD、HighD、LowD和CloseD系列函數(shù)(第三章第2節(jié))。
下面以您的代碼(變量dates)舉例來說明一下:
在開啟bar內(nèi)模式下,每一根bar有很多筆tick(包括開盤tick、bar內(nèi)tick和收盤tick),而每一筆tick都會計算一次,但是只會在收盤tick的計算時,變量dates的值才會更新,才會更新到當(dāng)根bar上(在以后的bar上可以通過dates[N]進(jìn)行回溯訪問);而once是當(dāng)條件滿足時執(zhí)行后面的語句一次,而如果在開盤tick或者bar內(nèi)tick下條件滿足,那么其實dates這個變量只是計算一次,并不會更新到當(dāng)根bar上,從而導(dǎo)致后續(xù)條件再次滿足時once后面的語句也不會執(zhí)行并且dates變量始終不能更新。
而未開啟bar內(nèi)模式下,就很好理解了,因為代碼只會在收盤tick進(jìn)行計算,而收盤tick進(jìn)行計算時,dates變量肯定是更新到當(dāng)根bar上的,也就是變量的計算和更新是一致的。
注意:以上討論暫時不考慮策略屬性中的重新計算選項帶來的影響。
?
?
-
MC回復(fù)討論二:
在分鐘周期及其它時間周期下,每根bar的收盤tick需要等到下一根bar的開盤tick來確認(rèn),請看一下帖子”This bar和next bar的區(qū)別“
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容