我想寫一個計算近年平均殖利率的選股邏輯,但是跑出來的個股進行計算驗證,似乎怪怪的,請問我那裏頭寫錯了嗎?
邏輯:近5年 平均殖利率率大於5% 個股
input:CASH(5,"近年現金股利平均"),Yie(5,"大於平均殖利率(%)");
value1=Yie/100;
if
(sumlist(GetField("CashDividend"),CASH)/CASH)/C>=value1
then ret=1;
Hi Daiso,
您好,請您使用 現金股利 (選股欄位) 與 股票股利 (選股欄位) 這兩個資料搭配 average 語法,進行近年平均殖利率的選股邏輯,
由於此選股邏輯僅在最後一期進行運算即可,故使用 if currentbar <> gettotalbar then return; 的語法撰寫在最後一期的運算,
最後在使用 outputfield1 顯示相關運算數值是否正確。
加入選股腳本後,記得將資料頻率調整為年,且資料讀取筆數至少要 5 筆,
如下圖,這樣應該較符合您的選股邏輯,

選股腳本範例程式碼如下,以上方向供參考,謝謝。
input:CASH(5,"現金股利平均年數"),Yie(5,"大於平均殖利率(%)");
value1 = (GetField("現金股利","Y") + GetField("股票股利","Y"))/close * 100;
if currentbar <> gettotalbar then return;
if average(value1,CASH) > Yie then ret = 1;
outputfield1(average(value1,CASH),"近五年平均殖利率");
謝謝分享程式碼,有收穫。不過提出幾個問題: 1. input宣告了CASH,在程式碼裡面沒有用到。 2. CASH根據原發問的問題,這邊應該是輸入的年數? 因此顯示輸入似乎不應該寫"近年現金股利平均",應該是"現金股利平均年數"。
3 評論