編董您好
最近執行自動交易策略發現以下錯誤訊息
且該標的似乎就啟動失敗無法執行策略
請問什麼狀況下會產生以下訊息?
-執行時發生錯誤[(1404)商品XXXX Tick 頻率K線資料為空]
-執行時發生錯誤[(1401)Tick頻率資料不足]
想了解一下原因及避免方法
3Q
Hello 不太方便,
Tick 頻率K線資料為空 應該是發生在當您該商品資料預讀筆數的範圍內都沒有Tick的時候,取用Tick資料就會發生此錯誤。
Tick頻率資料不足 則是運算時發生需取用某筆tick資料但取不到的時候 (ex. 腳本在預讀筆數剛開始運算時)。
如果還是有問題的話,麻煩您提供 自動交易中心匯出檔勾選(包含)交易腳本、執行商品和發生日期時間 以及 XQ Log 來檢驗。
Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。
您可以直接將檔案上傳,如果檔案過大的話也可以Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。
感謝。
編董您好,已經寄信過去了
再麻煩幫忙
Thanks
Hello 不太方便,
您發生的錯誤有兩種(1401、1405),主要是沒有Tick,或是Tick數量不足所導致。
1401可以在腳本開頭加上 if getinfo("isrealtime")=0 then return; 來解決。
1405的話可以嘗試開頭加上 setbackbar(3, "Tick"); 看是否能運作。
如果不行的話,改成 if getfield("seqno","tick")<3 then return; 這樣若腳本當日的Tick數量少於3的話會直接return,直到有3筆以上。
我在執行權證交易時也遇到同樣情形,洗價後會出現異常 大多是1401代碼
小編管理員請幫幫忙
Hello 不太方便,
您在寄來的腳本中有使用到 前兩根tick,也就是 [2] 的資訊。
包含運算當下的那一根 [0],所以最少要有3根Tick的資料才能運算。
您改成 if getfield("seqno","tick")<2 then return; 自然就沒有效果。
if getfield("seqno","tick") < 3 then return;
這行腳本的意思是,當天最少要有3根Tick,腳本才會繼續運算。
小幫手這邊也會用您提供的腳本測試看會不會發生相同的情況。
Hello KENj1985,
如果您也是類似的問題,那麼如同上面所說,視您使用的多少前期資料,就需要用條件來限制。
若還是無法解決,麻煩您提供 自動交易中心匯出檔勾選(包含)交易腳本、問題發生的日期時間和截圖 以及 XQ Log 來檢驗。
Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。
您可以直接將檔案上傳,如果檔案過大的話也可以Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。
感謝。
另外小幫手補充,小幫手回覆時都是由討論區的後面往前面回覆。(優先回覆較早發問的用戶)
所以如果您在同一篇文章推文的話會造成您的文章被往前推,反而讓小幫手看到問題的時間變晚。
由於近來問題量不少,麻煩您發問後多等待一陣子。
編董
謝謝您的回覆
目前我限制使用這兩行
if getinfo("isrealtime")=0 then return;
if getfield("seqno","tick")<2 then return;
程式碼的部分只用到2個tick [0]和[1] 如下
getfield("當日序號", "Tick")>=2
and
getfield("volume","tick")=250
and
getfield("volume","tick")[1]=250
and
getfield("內外盤", "Tick")=-1
and
getfield("內外盤", "Tick")[1]=1
理論上應該符合您所提到的情境把2個tick以下的都return
return了還會出現1401嗎?
Hello 不太方便,
就您的描敘來看,這樣應該是不會發生tick頻率資料不足的狀況。
但這次的腳本和之前寄來的不同,要確認問題的話需要麻煩您提供 自動交易中心匯出檔勾選(包含)交易腳本、執行商品和發生日期時間 以及 XQ Log 來檢驗,看是否有辦法解決。
Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。
您可以直接將檔案上傳,如果檔案過大的話也可以Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。
感謝。
9 評論