Hello, 雞雞王.
您的問題主因是資料頻率,因為選股預設是日頻率資料,但是您索取的資料多半為季或年,
所以您得將您的程式修改如下,
input:n1(0.07);
value2 = GetField("每股稅後淨利(元)","Y");
value3 = GetField("現金股利","Y");
value4 = GetField("每股稅後淨利(元)","Q");
value5 = summation(GetField("每股稅後淨利(元)","Q"),4);
value6 = GetField("現金股利","Y") / GetField("每股稅後淨利(元)","Y"); //最近一年的
value16 = GetField("現金股利","Y")[1] / GetField("每股稅後淨利(元)","Y")[1]; //最近一年的前一年
value26 = GetField("現金股利","Y")[2] / GetField("每股稅後淨利(元)","Y")[2]; //最近一年的前兩年
value7 = value6 * value5;
if
value7 / GetField("收盤價") >= n1
then
ret = 1;
outputField1(value5, "近四季EPS");
outputField2(GetField("每股稅後淨利(元)","Q"), "EPS");
outputField3(GetField("每股稅後淨利(元)","Q")[1], "EPS[1]");
outputField4(GetField("每股稅後淨利(元)","Q")[2], "EPS[2]");
outputField5(GetField("每股稅後淨利(元)","Q")[3], "EPS[3]");
outputField6(GetField("現金股利","Y"), "現金股利");
outputField7(GetField("每股稅後淨利(元)","Y"), "每股稅後淨利(Y)");

value2 = GetField("每股稅後淨利(元)","Y");
value2[1]:表示前一期取GetField("每股稅後淨利(元)","Y")資料的值(如果跑在日頻率,就是前一天)
GetField("每股稅後淨利(元)","Y")[1]:表示前一期GetField("每股稅後淨利(元)","Y")資料的值(也就是資料最新年份的前一年),
另外,您可以善用outputField(...)來做資料的驗證,
謝謝。
1 評論