不支援X分鐘頻率「賣出特大單量」欄位

  •   113 
  • 最後發表   victor108  2026 二月 11
victor108 發文於   2026/02/03

執行自動交易腳本回測時,跑出以下錯誤:

執行時發生錯誤[(1402)商品: 1303.TW 不支援5分鐘頻率「賣出特大單量」欄位]

執行時發生錯誤[(1402)商品: 2610.TW 不支援5分鐘頻率「賣出特大單量」欄位]

執行時發生錯誤[(1402)商品: 2059.TW 不支援1分鐘頻率「賣出特大單量」欄位]

執行時發生錯誤[(1402)商品: 2404.TW 不支援5分鐘頻率「賣出特大單量」欄位]

執行時發生錯誤[(1402)商品: 2474.TW 不支援5分鐘頻率「賣出特大單量」欄位]

執行時發生錯誤[(1402)商品: 6285.TW 不支援1分鐘頻率「賣出特大單量」欄位]

執行時發生錯誤[(1402)商品: 4904.TW 不支援1分鐘頻率「賣出特大單量」欄位]

執行時發生錯誤[(1402)商品: 8046.TW 不支援5分鐘頻率「賣出特大單量」欄位]

執行時發生錯誤[(1402)商品: 2355.TW 不支援5分鐘頻率「賣出特大單量」欄位]

我跑期貨商品,頻率1分K,然後用類似以下程式碼(包在函數腳本內),用交易腳本呼叫函數,來抓現貨的資料,並執行回測:
GetSymbolField("Underlying", "買進中單量","1") + GetSymbolField("Underlying", "買進小單量","1");

GetSymbolField("Underlying", "買進中單量","5") + GetSymbolField("Underlying", "買進小單量","5");


GetSymbolField("Underlying", "買進中單量","15") + GetSymbolField("Underlying", "買進小單量","15");


我的疑問是https://xshelp.xq.com.tw/中說明支援分鐘頻率,但回測卻說不支援,為什麼? 

排序方式: 標準 | 最新
虎科大許教授 發文於   2026/02/03

我用我的一個個股期貨的交易策略做回測,並Print(GetSymbolField("Underlying", "買進中單量","5"), GetSymbolField("Underlying", "買進小單量","5")); 運作都正常。

victor108 發文於   2026/02/04

那會不會是以下兩個問題其中一個?

1.GetSymbolField("Underlying", "買進中單量","1")被包在函數腳本裡,所以出問題?

2.特定股票現貨商品不支援這種資料欄位?

 

請問XQ小編,是否有特定股票現貨商品不支援這種資料欄位?

虎科大許教授 發文於   2026/02/04

只要執行商品是期貨,Underlying一定可以抓到現貨的數據。問題應該出在你把getsymbolfield放在函數。Getsymbolfield會在函數第一次被呼叫就指定,而且不受流程控制。

XS小編 發文於   2026/02/05

Hello victor108,

 

小編補充,如果將相關運算直接寫在腳本上,是可以取到賣出特大單量的,所以問題應該是出在函數或是呼叫函數的方式。

如果要確認問題原因的話,麻煩提供自動交易腳本、函數腳本、回測的設定 (截圖或回測報告儲存檔皆可) 以及 XQ Log 來檢驗。

您可以透過XQ內的設定 => 問題回報的方式來上傳提供,並附上討論區問題連結。

若需要附上的檔案數量或大小超過了問題回報可附上的範圍,則可以將相關檔案放置在雲端空間開放權限後提供連結。

感謝。

 

附加文件

victor108 發文於   2026/02/05

小編您好:

 

我在交易腳本中用以下程式碼呼叫函數

AgainstIndicator1_cur = AgainstIndicator1();

函數腳本如下:

if barfreq <> "Min" then 

raiseruntimeerror("僅支援分鐘頻率");

 

If SymbolType = 2 then begin//現貨

    value1 = GetField("賣出特大單量","1") + GetField("賣出大單量","1");

value2 = GetField("買進特大單量","1") + GetField("買進大單量","1");

value3 = GetField("賣出中單量","1") + GetField("賣出小單量","1");

value4 = GetField("買進中單量","1") + GetField("買進小單量","1");

end else if SymbolType = 3 then begin//期貨

value1 = GetSymbolField("Underlying", "賣出特大單量","1") + GetSymbolField("Underlying", "賣出大單量","1");

value2 = GetSymbolField("Underlying", "買進特大單量","1") + GetSymbolField("Underlying", "買進大單量","1");

value3 = GetSymbolField("Underlying", "賣出中單量","1") + GetSymbolField("Underlying", "賣出小單量","1");

value4 = GetSymbolField("Underlying", "買進中單量","1") + GetSymbolField("Underlying", "買進小單量","1");

end else

raiseruntimeerror("不支援股票、期貨以外的商品");

 

value11 = value2 - value1;

value22 = value4 - value3;

 

if (AbsValue(value11) + AbsValue(value22)) = 0 then begin

AgainstIndicator1 = 0;

end else begin

AgainstIndicator1 = (value11 - value22)/(AbsValue(value11) + AbsValue(value22));

end;

 

再麻煩確認是否可以辨識"不支援X分鐘頻率「賣出特大單量」欄位"的原因?

虎科大許教授 發文於   2026/02/05

我測試南亞期近月(FICAF*1),運作正常,並沒有發現你提及的問題。

var: AgainstIndicator1_cur(0);

AgainstIndicator1_cur=AgainstIndicator1;

print(datetime,SymbolType,AgainstIndicator1_cur);

victor108 發文於   2026/02/05

許教授您好:

 

我的交易腳本呼叫函數的方式是

AgainstIndicator1_cur = AgainstIndicator1();

跟你的不同,你的是

AgainstIndicator1_cur=AgainstIndicator1;

是否是這原因造成錯誤呢?

謝謝

虎科大許教授 發文於   2026/02/05

函數若沒有參數,呼叫時後面的空括號可以省略。

victor108 發文於   2026/02/05

好的,謝謝許教授,我再來試看看。

XS小編 發文於   2026/02/11

Hello victor108,

 

相關人員確認過您在 2/2 時伺服器上的紀錄,由於沒有足夠詳細的Log能夠確認原因,目前推論是該天從伺服器上抓資料時發生失敗所導致。

如果還是有相同情況的話,再麻煩您提供 回測腳本、回測的設定 (截圖或回測報告保存檔皆可) 以及 XQ Log 讓相關人員確認。

您可以透過XQ內的設定 => 問題回報的方式來上傳提供,並附上討論區問題連結。

若需要附上的檔案數量或大小超過了問題回報可附上的範圍,則可以將相關檔案放置在雲端空間開放權限後提供連結。

感謝。

 

顯示更多回應 發表回覆
Close