發現XS選股奇怪的問題

  •   164 
  • 最後發表   chelsea  2019 三月 18
chelsea 發文於   2019/03/14

把下列註解掉的兩行程式碼打開,選出來的股票竟然不相同。

註解掉的程式碼(value3和value4),並沒有拿來做選股的條件是判斷用,理論上不應該選出不同的股票清單。

請問大家有什麼想法嗎?還是其實是個bug呢? 

 

=====

settotalbar(100);

value1 = average(close, 20);

value2 = highest(close, 20);

//value3=GetField("大戶持股張數","W",param := 1000);

//value4=GetField("大戶持股張數","W",param := 1000)[2];

if close >= value1 and close >= value2 and close <= value1*1.05 then ret=1;

排序方式: 標準 | 最新
XQ小幫手 發文於   2019/03/15

Hi chelsea,

您好,因為本週的大戶持股資料尚未更新,故將這兩行程式碼取消註解後,

會改以上週的資料為比較基準點,

 

若能接受「本週大戶持股資料尚未更新時,以「上週的資料為比較數值」則可以改寫成以下語法,

這樣還是能選出相同的股票清單,以上方向供您參考,謝謝。

value1 = average(close, 20);

value2 = highest(close, 20);

if GetFieldDate("大戶持股比例","W",param := 1000) = date then
    value3=GetField("大戶持股張數","W",param := 1000)
else
    value3=GetField("大戶持股張數","W",param := 1000)[1];

value4=GetField("大戶持股張數","W",param := 1000)[2];

if close >= value1 and close >= value2 and close <= value1*1.05 then ret=1;

outputfield1(close,"收盤價");
outputfield2(GetFieldDate("收盤價","D"),"收盤價資料日期");

 

chelsea 發文於   2019/03/17

Hi XQ小幫手,

感謝您的回覆。

但原本想問的問題是,不管大戶持股資訊是否更新、取得的資料為當週或是上週,都沒有用到該資料進行篩選判斷(您可以從if判斷式中看到,用來判斷的只有value1和value2,並沒有value3和value4)。

與邏輯判斷式中不相關的資料取得或運算,理論上不應該影響到最後邏輯判斷式的篩選結果。但從上面的程式碼中,顯示會影響,這是比較奇怪的地方。這部份可能要再請你們看看是不是哪裡有可能出錯、或是我哪裡誤會了,謝謝!

XQ小幫手 發文於   2019/03/18

Hi chelsea,

 

不管大戶持股資訊是否更新、取得的資料為當週或是上週,

都沒有用到該資料進行篩選判斷(您可以從if判斷式中看到,用來判斷的只有value1和value2,並沒有value3和value4)。

您好,雖然 if 判斷式沒有用到 value3 與 value4,但由於您有將 value3 與 value4 取消註解,

使得系統執行此腳本時,有進行 value3 與 value4 的運算,所以執行時會影響到此運算,

以上說明,謝謝您的詢問。

 

P.S. 除非將 value3 與 value4 註解,或者以小幫手在 2019/03/15 所述之範例語法避免

發表回覆
Close