季報資料一堆錯誤???

  •   180 
  • 最後發表   大財星  2023 八月 28
大財星 發文於   2023/08/24

小幫手你好請問一下為何季報計算一堆錯誤

以營業毛利資料來說,在8/18日時可以看到Q2的季報大部分都已經公布了,可以看到outputfield GetField("營業毛利率","Q")的數據是正確的,但是為何Q2 - Q1的數據卻是錯的

例如金居明明顯示的資料Q2是11.86、Q1是16.01 所以Q2 - Q1 應該是-4.15,結果數據顯示卻是Q1 -去年Q4的資料 2.49???不只金居這樣這檔有這問題,而是一堆都有這種問題

請問小幫手這問題該如何解決?感謝

Var: QQ(0);

QQ = Month(getfielddate("營業毛利率", "Q"));

if QQ = 3 then

outputfield(1, 1,"季");

if QQ = 6 then

outputfield(1, 2,"季");

if QQ = 9 then

outputfield(1, 3,"季");

if QQ = 12 then

outputfield(1, 4,"季");

value1 = GetField("營業毛利率","Q") - GetField("營業毛利率","Q")[1];

outputfield2(GetField("營業毛利率","Q"),"1");

outputfield3(GetField("營業毛利率","Q")[1],"2");

if value1 > 0 then outputField4(value1, "營毛率M");

if close > 0 then ret = 1;

 

排序方式: 標準 | 最新
大財星 發文於   2023/08/27

這兩天測試了很多方法都有問題啊

例如以下這方式

value11 = GetField("營業毛利率","Q");

value12 = GetField("營業毛利率","Q")[1];

outputfield10(value11,"1");

outputfield11(value12,"2");

value13 = value11 - value12;

outputfield顯示的資料是對的,但是value11 - value12 的數值卻不對

請問小編這麼大的BUG是什麼原因??

阿建 發文於   2023/08/27

我是路過的人XD
我稍微觀察了一下,大部分都負數出現了問題,所以猜測主因在於

if value1 > 0 then outputField4(value1, "營毛率M");

這應該是資料殘留的問題,也就是說之前在value1 >0時,已經把資料刻印在outputField4(value1, "營毛率M")內了,也就是說會變成16.01-13.52=2.49,但之後value1 <0,因此不會更新outputField4(value1, "營毛率M")的值。

解決方法就是,直接寫成以下即可。

outputField4(value1, "營毛率M");

 

大財星 發文於   2023/08/28

感謝樓上回復

目前改成不做判斷直接輸出數值是對的,但是只要下判斷就有問題@@不知道該如何解決,例如大於0的才篩選出來

Var: QQ(0);

QQ = Month(getfielddate("營業毛利率", "Q"));

if QQ = 3 then

outputfield(1, 1,"季");

if QQ = 6 then

outputfield(1, 2,"季");

if QQ = 9 then

outputfield(1, 3,"季");

if QQ = 12 then

outputfield(1, 4,"季");

value1 = GetField("營業毛利率","Q") - GetField("營業毛利率","Q")[1];

outputfield2(GetField("營業毛利率","Q"),"1");

outputfield3(GetField("營業毛利率","Q")[1],"2");

outputField4(value1, "營毛率M");

 

if close > 0 then ret = 1;

 

大財星 發文於   2023/08/28

判斷這樣寫顯示出來的就是錯的@@

if GetField("營業毛利率","Q") > GetField("營業毛利率","Q")[1] then outputField5("大於0", "營毛率Y");

阿建 發文於   2023/08/28

最後兩行改成這樣,應該就能符合你的需求了。

 outputField4(value1, "營毛率M");

if close > 0 and value1 > 0 then ret = 1;
//意思就是說value1也要大於0才納入選股(顯示出來)

發表回覆
Close