可交易函數

  •   6 
  • 最後發表   PHOT-196  1小時前
PHOT-196 發文於   2025/10/28

Xs小編您好

最近我嘗試寫了一個函數tradable,若是為ture代表可交易,若為false則不可交易,不可交易清單我會每天晚上自己更新函數,來拓展到其他交易腳本。因此若股號等於1316,則會產生false,代表不可交易。不過實際上print(tradable)後,會發現每一檔都是false,想請問我函數哪邊寫錯了嗎?

此外,我之所以用isfirstcall(""),是因為想要判斷一次即可,因為當天的ture或false不會改變,且不可交易清單都很長,這樣寫可以節省效能。


var:intraBarPersist tradable(false);

if isfirstcall("") then tradable = 

LeftStr(Symbol, 4) <> "1316" and

LeftStr(Symbol, 4) <> "1466" and

LeftStr(Symbol, 4) <> "2330" ;

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

一般講函數,指的是函數腳本。你提供的腳本並非函數腳本。在此,tradable並非函數,而是布林變數。

按照你程式的邏輯,若目前洗價的商品是1316,則傳回false;洗價商品是1466或2330都是一樣。

若你希望洗價商品是這三個商品其中之一就傳回true,應該寫成:

if isfirstcall("") then tradable = 

LeftStr(Symbol, 4) = "1316" or

LeftStr(Symbol, 4) = "1466" or

LeftStr(Symbol, 4) = "2330" ;

  • 按讚來自於
  • PHOT-196
PHOT-196 發文於   2025/10/29

謝謝教授,那我清楚了~

發表回覆
Close