在條件式為不成立的情況下,指標仍去辨識條件成立下才要執行的函式

  •   149 
  • 最後發表   艾瑪  2025 十月 23
艾瑪 發文於   2025/10/22

 

plot(1, 0,"======個股資訊======");
plot(2, GetSymbolInfo("有期貨"), "無期貨");
if GetSymbolInfo("有期貨") then 
begin
    value1 = GetSymbolField("Future*1", "收盤價");
    setplotLabel(2, Text("期貨價:", value1));
end;

您好,想請問關於這段條件式在個股沒有期貨的狀態下運行指標,卻仍然執行判斷下列這行程式

GetSymbolField("Future*1", "收盤價");

 

如附圖所示,將上面這行刪除,if GetSymbolInfo("有期貨")  確實是有正常不去執行setplotLabel函式
不明白為何還會去判斷
GetSymbolField函式?

附加文件

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/10/23

XS有一些函數是不受條件判斷的限制,例如setBarFreq、getsymbolfield等等。儘管你用條件判斷,但其實是控制不了的,洗價時,所有getsymbolfield的陳述式都會被執行,當然呈現的結果就是最後一行陳述式的結果。

艾瑪 發文於   2025/10/23

感謝 虎科大許教授的回覆!

想再請教後來嘗試getsymbolfield第一個參數改使用Group,縱使沒有可轉債商品的情況取得可轉債資訊卻不會出現問題
在沒有相關商品的情況下的 Group 取[1]會得到什麼呢?

謝謝!

plot(3, GetSymbolInfo("有可轉債"), "無可轉債");
if GetSymbolInfo("有可轉債") then 
begin
    group: _list();
    _list = GetSymbolGroup("可轉債");
    setplotLabel(3, Text("可轉債轉換價:", numToStr(GetSymbolField(_list[1], "轉換價格"), 2)));
end;

虎科大許教授 發文於   2025/10/23

_list[1]是Group群組第一檔商品的商品代號。

艾瑪 發文於   2025/10/23

在沒有相關商品的情況下的_list[1]是回傳什麼樣的商品代號?
是空字串嗎?

如果是為何getsymbolfield不會跟最一開始我放的例子那樣傳出無商品的錯誤資訊?

虎科大許教授 發文於   2025/10/23

你可能需要先了解一點,執行商品不必然要是Group的成員。執行商品是用來監控或交易的商品,而使用Group主要用來針對群組裡面的商品進行跨商品統計數據。若你只是判斷執行商品是否有可轉債,並不需要使用Group。

使用Group,群組裡面一定有商品,也能抓到商品代號。

發表回覆
Close