測試腳本 回測異常

  •   115 
  • 最後發表   我是新手請多指教  2020 七月 29
我是新手請多指教 發文於   2020/07/27

小幫手你好

我在使用XS內附腳本[公司連續N年獲利大於X億]在201226~20130105期間 進行回測

結果發現 在1月2日以後以後 取得的最近兩年營收都是一模一樣的

 

以下是我除錯碼

input:lowlimit(1,",金額下單位億元");

input:period(10,"連續年度數");

value1=GetField("本期稅後淨利","Y");//單位百萬

print("vic new eps",date,GetFieldDate("總市值(億)","D"),value1,value1[1],value1[2]);

if trueall(value1>lowlimit*100,period) 

then ret=1;

 

以 1102為例

輸出的結果 可見附件

最後三行如下 

 

vic new eps 20131201.000000 20130102.000000 10016.000000 10016.000000 7676.000000 

vic new eps 20131201.000000 20130103.000000 10016.000000 10016.000000 7676.000000 

vic new eps 20131201.000000 20130104.000000 10016.000000 10016.000000 7676.000000 

 

再麻煩你幫我看看這個回測設定是否有錯誤的地方 ,謝謝

附加文件

排序方式: 標準 | 最新
XQ小幫手 發文於   2020/07/28

我是新手請多指教大 您好

Q:為何value1[1],value1[2]與value1 取得的數值會相同?

A:原因是因為value1=GetField("本期稅後淨利","Y"),value1是取得當年度的淨利當然沒毛病,

value1[1]則會取得前一日的資料,也就是日頻率下,

假設您2020年 7/2抓資料,「雲端」幫您抓到當年度淨利,

value1[1] 「程式」取得的是7/1 的當年度淨利,

如果你要選取一年的,就必須要在撰寫

value2=GetField("本期稅後淨利","Y")[1];

 

value3=GetField("本期稅後淨利","Y")[2];

來從「雲端」上抓取數據。

以上解釋提供給您參考  謝謝您

我是新手請多指教 發文於   2020/07/28

可是程式碼 

 trueall(value1>lowlimit*100,period) 

不就是看value1這個序列 是否都滿足測試條件嗎?

所以意思是上述程式只能在年頻率以下使用?

那如果我今天想要寫一個腳本

[日]股價從N年低點至今的漲幅超過X%

[年]公司連續N年獲利大於X億

然後逐日回測

我應該怎麼做呢

上述的程式是不是就得修改呢

感謝回復

XQ小幫手 發文於   2020/07/29

我是新手請多指教 大 您好

您可以把GetField("本期稅後淨利","Y")直接代替value1

trueall(GetField("本期稅後淨利","Y")>lowlimit*100,period) 

就能夠使用了。

您還是可以使用日頻率去抓低點,然後年資料就用GetField("本期稅後淨利","Y")

只是要小心遇到這種情況不能用var 簡化。

謝謝您

 

 

發表回覆
Close