選股策略執行錯誤

  •   154 
  • 最後發表   jd  2022 六月 29
jd 發文於   2022/06/25

小幫手您好,

寫了選股策略進行回測,如下圖所示會有734失敗。

有些看起來不是上市日期小於回測區間的問題,有將程式碼分開執行進行回測發有會有錯的就是下列幾行,

想請問下列幾行會造成回測有失敗的原因是什麼?

 

input:discountrate(35,"折價率");//折價率
var:parvalue(0),afterTax(0);
afterTax=getField("每股稅後淨利(元)", "Q");
value1=afterTax[0]+afterTax[1]+afterTax[2]+afterTax[3];
value2=getField("每股淨值(元)", "Q");
    //最新每股淨值
if value1<>0 then
    begin 
     parvalue=squareroot(22.5*value1*value2);
    end
else
    begin
    parvalue=0;
    end;
Condition2=close<parvalue*((100-discountrate)/100);

if Condition2 then ret=1;

XQ小幫手 發文於   2022/06/29

Hello jd,

 

squareroot 函數無法傳入小於0的數字。

建議您可以將條件改為 if value1<>0 and 22.5*value1*value2 > 0 then ...。

另外,afterTax[1] 會是執行頻率 (日) 前一根的資訊,而不是前一季的每股稅後淨利。

如果要前一季的每股稅後淨利,應該是 getField("每股稅後淨利(元)", "Q")[1]。

發表回覆
Close