請教XS程式編寫疑惑?

  •   416 
  • 最後發表   塞繆爾  2024 八月 28
塞繆爾 發文於   2024/08/22

為何下方的程式,其Outfield輸出值都相同,不知哪裡錯誤?

Value2,Value2[1],Value2[2] 都是最近一個月的值(月營收年增率)

Value3,Value3[1],Value3[2] 都是最近一個月的值(累計月營收年增率)

 

Input: W1(0.5, "本益比大於"); 

Input: W2(40, "本益比小於");

Input: W3(10, "月營收年增率大於%");

Input: W4(10, "累計營收年增率大於%");

 

value1= GetField("本益比", "D");

value2= GetField("月營收年增率", "M");

value3= GetField("累計營收年增率", "M");

 

if value1 > W1 and value1 < W2 

and value2 > W3 

and value3 > W4 

then ret=1;

 

outputfield1(value1,1,"本益比");

outputfield2(value2,1,"月營收年增率1");

outputfield3(value2[1],1,"月營收年增率2");

outputfield4(value2[2],1,"月營收年增率3");

outputfield5(value3,1,"累計營收年增率1");

outputfield6(value3[1],1,"累計營收年增率2");

outputfield7(value3[2],1,"累計營收年增率3");

 

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

在使用日頻率的情況下,value2是今天的月營收年增率。value2[1]是昨天的月營收年增率。大部份情況,這兩者是相同的。若你要抓今天及前一個月的月營收年增率,不能透過變數處理。必須改成:

outputfield2(GetField("月營收年增率", "M"),1,"月營收年增率1");

outputfield3(GetField("月營收年增率", "M")[1],1,"月營收年增率2");

outputfield4(GetField("月營收年增率", "M")[2],1,"月營收年增率3");

塞繆爾 發文於   2024/08/23

感謝許教授的熱心解惑。您的專業說明簡潔又清楚。不愧為教授級大師。

感恩。

塞繆爾 發文於   2024/08/23

若是仍想用value1、value2...等變數以簡化程式的閱讀與編寫,又該如何應用頻率的改變來撰寫呢?

虎科大許教授 發文於   2024/08/23

跨頻率的資料,若透過變數處理,例如value1,則value1[1],代表主頻率的前一期的跨頻率資料。若想抓前一期跨頻率數值,不能這樣做。這部分沒有精簡的寫法。

塞繆爾 發文於   2024/08/23

謝謝說明。感恩。

XS小編 發文於   2024/08/28

Hello 塞繆爾,

 

變數的頻率是跟著執行商品的頻率。

如果要取不同頻率下對位的變數值,可以參考 xf_GetValuexfMin_GetValue 函數。

 

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

塞繆爾 發文於   2024/08/28

謝謝小編,技術好,服務好

發表回覆
Close