GetInfo 與 IsFirstCall 實盤與回測與各商品時間點的組合 (請提供更詳細範例)

  •   233 
  • 最後發表   MakeMoneyFromStock  2025 四月 01
MakeMoneyFromStock 發文於   2025/04/01

可否請高手或小幫手,幫個忙,將以下所有項目,列舉出發生的時間點,

雖然部分有範例,可是實盤跟回測上一直遇到不一致且沒有說明清楚的地方。

請以 股票/期貨日盤/期貨夜盤/期貨全盤  以及 實盤與回測 的組合來區分:

 

https://xshelp.xq.com.tw/XSHelp/?HelpName=GetInfo&group=GENERALFUNC

當參數為"IsRealTime"時,可以取得K棒的狀態:

當參數為"IsTimerMode"時,可以判斷該次洗價是否因為自動洗價所觸發,只支援警示腳本和交易腳本:

當參數為"TradeMode"時,可以交易策略目前執行的K棒是否處於資料讀取區間:

 

https://xshelp.xq.com.tw/XSHelp/?HelpName=IsFirstCall&group=GENERALFUNC

isfirstcall(" "):此次執行的第一次洗價

isfirstcall("Bar"):此根 Bar 的第一次洗價

isfirstcall("Date"):此交易日的第一次洗價

isfirstcall("Realtime"):此交易日進入即時洗價區間的第一次洗價

isfirstcall("RealBar"):此交易日進入即時洗價區間,首次產生成交事件後的第一次洗價

 

相信有詳細的列表,會更清楚如何使用,感謝。

虎科大許教授 發文於   2025/04/01

有詳細的列表或範例當然很好,但要整理出不同函數之間比較的範例,恐怕需要很多時間,也很難週全。有很多函數的應用,若能夠自己驗證,則對於函數的了解會更深刻。這也是學習過程中很重要的一部份。我舉兩個例子說明:

(1)當你在期貨市場使用getInfo("isRealTime"),想知道什麼時候它會是1或0,只需要用Print指令列印看看,你就會發覺,不論是日盤或夜盤,只要是盤中交易的時間,它都是1。既然它的特性是這樣,我們就可以用它等於1時,在啟動策略後的第一個Tick洗價時做一些初始化的設定。但用來回測呢?由於回測都是歷史資料,因此它都是0,這會造成原本實戰的初始化設定出現問題,因為它沒有機會變成1。很多時候,用來實戰的策略,要做回測,往往需要做一些修改。當然,你也可以想辦法寫成兩者兼顧的程式,但付出的代價可能是實戰時的效率。

(2)你覺得Date這樣的函數,是否需要列表?我們都知道,它代表資料的日期,似乎不需要特別列表說明,最多只是拿currentDate做個比較;但按照相關的函數需要列表的概念,是否也應將它與GetFieldDate("日期")及GetField("日期", "D")等做比較?若按照這種概念推演,那XQ相關人員恐怕就算忙翻了,也無法滿足需求。我想,使用者可以自己分擔一些,自己實證,畢竟最清楚自己需求的是自己。你知道嗎?以台指期為例,Date、GetFieldDate("日期")及GetField("日期", "D")都是資料日期,但在週五晚上及週六凌晨,它們傳回的數值其實不盡相同。Date在週五晚上的日期為週五,但週六凌晨的日期為週六。GetFieldDate("日期")在週五晚上及週六凌晨的日期都是下週一。GetField("日期", "D")與GetFieldDate("日期")相同,在週五晚上及週六凌晨的日期都是下週一;但兩者加[1]又不相同,GetFieldDate("日期")[1]在週五晚上及週六凌晨都顯示下週一,而非前一天的週四;而GetField("日期", "D")[1]在週五晚上及週六凌晨都顯示週五。這些複雜的概念,若不是自己花時間驗證,是無法理解的。

發表回覆
Close