您現在的位置:程序化交易>> 期貨公式>> (MC)multicharts>> MC知識>>正文內容

關于Once問題在[IntrabarOrderGeneration = True 或 Flase]運行機制問題? [MC]

  • MC用戶求助:

    下面有代碼,[IntrabarOrderGeneration = True] 和[IntrabarOrderGeneration = Flase] 2種情況

    問Once在2種情況運行時的差異?

    [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回復討論一:

    您的問題涉及到兩個知識點:once關鍵字的使用;變量的更新和計算。這兩個知識點對應的帖子名稱如下(您可以在論壇進行搜索即可:

    once關鍵字限制其后的語句只執行一次,OpenD、HighD、LowD和CloseD系列函數(第三章第2節)。

    下面以您的代碼(變量dates)舉例來說明一下:

    在開啟bar內模式下,每一根bar有很多筆tick(包括開盤tick、bar內tick和收盤tick),而每一筆tick都會計算一次,但是只會在收盤tick的計算時,變量dates的值才會更新,才會更新到當根bar上(在以后的bar上可以通過dates[N]進行回溯訪問);而once是當條件滿足時執行后面的語句一次,而如果在開盤tick或者bar內tick下條件滿足,那么其實dates這個變量只是計算一次,并不會更新到當根bar上,從而導致后續條件再次滿足時once后面的語句也不會執行并且dates變量始終不能更新。

    而未開啟bar內模式下,就很好理解了,因為代碼只會在收盤tick進行計算,而收盤tick進行計算時,dates變量肯定是更新到當根bar上的,也就是變量的計算和更新是一致的。

    注意:以上討論暫時不考慮策略屬性中的重新計算選項帶來的影響。

    ?

    ?

  • MC回復討論二:

    在分鐘周期及其它時間周期下,每根bar的收盤tick需要等到下一根bar的開盤tick來確認,請看一下帖子”This bar和next bar的區別“

 

有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友

可聯系技術人員 QQ: 511411198  點擊這里給我發消息進行 有償 編寫!不貴!點擊查看價格!


【字體: 】【打印文章】【查看評論

相關文章

    沒有相關內容
新疆18选7基本走势带坐标