小幫手您好 :
我想要寫個程式, 去抓 XQ 系統裡哪些公司已有最新的季報, 並且知道該季報是哪一天進 XQ 系統的.
關於 是否已有最新季報, 我可以透過像 getfilelddate("EPS", "Q") 來完成.
但關於 最新的季報是哪一天進 XQ系統的,我試著用 settotalbar(10) 寫程式, 往前抓 10天 check 哪一些開始有最新的季報, 但執行起來都無效.
能否告知該怎麼寫? 或利用哪個指令可達成目的 ?
感謝您 !
小幫手您好 :
我想要寫個程式, 去抓 XQ 系統裡哪些公司已有最新的季報, 並且知道該季報是哪一天進 XQ 系統的.
關於 是否已有最新季報, 我可以透過像 getfilelddate("EPS", "Q") 來完成.
但關於 最新的季報是哪一天進 XQ系統的,我試著用 settotalbar(10) 寫程式, 往前抓 10天 check 哪一些開始有最新的季報, 但執行起來都無效.
能否告知該怎麼寫? 或利用哪個指令可達成目的 ?
感謝您 !
Hello lobogaw,
如果只是想得知季報是哪天更新的話,您可以用簡單的腳本例如
print("日期=",date, "季報日期=",getfielddate("EPS", "Q"));
勾選啟動腳本內print指令後運行回測即可(參考附圖)。
如果是要在選股中心即時提醒您今天有更新季報的話可以用像是
if getfielddate("EPS", "Q") <> value1 then value2 = 1 else value2 = 0;
outputField1(value2); //如果今天更新的話outputField1顯示1,沒有更新的話顯示0
value1 = getfielddate("EPS", "Q");
請問小幫手為何多加了vale11那一行,結果就全都顯示1,而不是顯示當天更新為1,昨天更新為0,結果差很多?
Var: eps_date(0);
if getfielddate("EPS", "Q") <> eps_date then value2 = 1 else value2 = 0;
outputField1(value2); //如果今天更新的話outputField1顯示1,沒有更新的話顯示0
eps_date = getfielddate("EPS", "Q");
value11 = GetField("EPS","Q") - GetField("EPS","Q")[1];
if value11 > 0
then ret =1;
Hello 大財星,
GetField("EPS","Q")[1] 取得的是上一期(季)的EPS,不是您使用的頻率上一根Bar的值。
您的寫法會讓當期EPS比上期EPS大的話就會被篩選出來。
value1 = GetField("EPS","Q")[1];
value1[1] 才會是上一根Bar的值。
須注意 getfield 的資訊會跟著裡面設定的頻率,變數是跟著腳本執行的頻率。
5 評論