XS指標無法顯示今天的指標

  •   387 
  • 最後發表   GaryChiang  2024 六月 26
GaryChiang 發文於   2024/06/13

小幫手你好:

如程式碼, 如果只有前1-5行, 則指標可以正常運行!

但加了後面幾行之後, 因為今天無法取得"周"更新的資料, 造成1-5行的指標也無法正常顯示今天的資料, 如圖一所示, 

請問, 有解決的方法嗎?

謝謝!

 

value1 = GetSymbolInfo("轉換價格");
value2 = 100/value1;                                  //轉換數量
value3 = getsymbolField("Underlying", "close");       //標的物股價
value4 = value2 * value3;                              //轉換價值 
plot2(value4, "轉換價值");


value20 = getfield("CB剩餘張數", "W");
value21 = iff(currentBar>60, value20[currentBar-20], value20);
plot11(value20,"可轉債剩餘張數");
plot12((1-GetField("CB剩餘張數", "W")/value21)*100, "轉換比例(%)");

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/06/14

在日頻率之下,你的指標腳本是可以繪製轉換價格,只是因為週五結束後才會有CB剩餘張數週資料,所以CB剩餘張數數據無法顯示。以13164為例,6/11至今的轉換價格是有被繪製。

GaryChiang 發文於   2024/06/15

謝謝許教授!

如教授所示的圖, 它的轉換價值的值也停留在6/12, 而教授截圖那天是6/13, 6/13這根K棒的資料就沒有出現!

但若把8行之後的刪除, 就可以正常出現6/13的值!

我之前測試過了幾次! 

虎科大許教授 發文於   2024/06/15

這問題,看小編能否幫忙反映。

虎科大許教授 發文於   2024/06/15

暫時先控制只有下週一才繪製週的指標吧!

value1 = GetSymbolInfo("轉換價格");

value2 = 100/value1;                                  //轉換數量

value3 = getsymbolField("Underlying", "close");       //標的物股價

value4 = value2 * value3;                              //轉換價值 

plot2(value4, "轉換價值");

 

value111=xf_GetDTValue("W",date);

if value111<>value111[1] then

begin

value20 = getfield("CB剩餘張數", "W")[1];

value21 = iff(currentBar>60, value20[currentBar-20], value20);

plot11(value20,"可轉債剩餘張數");

plot12((1-GetField("CB剩餘張數", "W")/value21)*100, "轉換比例(%)");

end;

 

  • 按讚來自於
  • gary63chiang
GaryChiang 發文於   2024/06/15

謝謝教授指導!

XS小編 發文於   2024/06/19

Hello GaryChiang

 

這個狀況就跟在盤中使用盤後才更新的日頻率資料一樣,因為當天的資料尚未更新導致無法取得資料而錯誤。

您可以使用 GetFieldDate 來判斷資料是否更新,舉例來說:

if getfielddate("CB剩餘張數", "W") <> 0 then value20 = getfield("CB剩餘張數", "W") else value20 = getfield("CB剩餘張數", "W")[1];

這樣就可以避開沒有資料的狀況。

或是直接使用前期值,會比較符合實際情況。

 

感謝 虎科大許教授 的熱心回覆。

  • 按讚來自於
  • Pingzz0719
GaryChiang 發文於   2024/06/19

建議, 是否針對, 沒有資料的 plot 勿略不劃, 而其它正常顯示!

這樣理論上是使用者是比較友好的, 不需要每個資料都去檢查它的更新時間, 造成程式碼的覆雜化!

 

XS小編 發文於   2024/06/21

Hello GaryChiang,

 

相關人員有在規劃讓使用者自行設定若資料為空值的狀況下回預設值。

此功能開發完畢後應該可以解決您的問題。

 

由於目前XS腳本運算時取到空值會出錯,故您的建議應該是無法作到。

小編會將其轉告相關人員作參考。

GaryChiang 發文於   2024/06/23

小編不知是否還有印像

getfield("CB剩餘張數", "W")

這類的函式, 在之前, 資料沒有對齊時, 會造成取到"未來值"的問題, 但不會造成指標無法顯示!

後來, 版本更新之後, 資料對齊了, 但無法顯示的就問題就發生了!

我的想法有二個

1. 回傳的值, 若是空值 (null), 在程式裏可以單純讓使用者可以判斷, 我是否有取到值了, 例如, value1 = null 這樣子的判斷, 會比判斷 getfileddate 來的直覺, 易操作!

2. 從plot函式著手, 當plot的內容為空是, 預先判斷plot資料是否合理可以執行的, 否則跳過! 或使用 try catch 攔截錯誤, 制定錯誤處理函式! 第2項, 使用者完全不會感到差異, 是我覺得最佳方法!

以上!

謝謝你!

XS小編 發文於   2024/06/26

Hello GaryChiang,

 

就小編所知,資料欄位的對位邏輯是沒有調整過的。

所以使用 getfield("CB剩餘張數", "W") 當期值畫出的會是未來 (當週收盤) 的資料。

故上面建議您使用前期值會比較符合實際情況。

 

您提到的應該是集保相關欄位調整,此調整是針對選股的集保欄位而非資料欄位。

 

XS語法中沒有空值,就小編所知目前也沒有規劃要新增。

作為替代的是讓取用的欄位為空值的話要回什麼預設值。

發表回覆
Close