大家好,選股在撰寫尚未更新時的資料時,
蠻常因為資料尚未更新,導致選股執行不出結果的狀況發生,
故以下將用「日外資+週大戶」持股比例的主頻率為日,指定週頻率取得大戶持股比例
的撰寫方式分享給大家參考,
期望產生的選股結果:「日外資+週大戶」的持股比例數據,產生報表在選股結果區。
- 選股策略執行頻率為「日」更詳細的設定可以參考附檔範例選股策略匯出檔案。
選股範例腳本語法,與撰寫邏輯說明如下:
setbarfreq("D");
var:sameweek(0),val_fss(0), val_bss(0),val_sst(0);
//因為外資持股比例需要等到轉檔時間才會更新當日資料
//故需要使用 GetFieldDate("外資持股比例","D") <> date 來判斷資料日期是否已經更新
//若尚未更新則先取前一期值代表。
if GetFieldDate("外資持股比例","D") <> date then
val_fss = GetField("外資持股比例")[1]
else
val_fss = GetField("外資持股比例");
//因為大戶持股比例在集保,多是週末更新,故使用 sameweek 的方式來判斷是否週末更新
//這樣的撰寫方式在回測與回溯也能避免「在過往週一就取得當週的集保資料」的狀況發生
//若尚未週末更新則先取前一期值代表。
if datediff(GetFielddate("收盤價","D"),GetFielddate("收盤價","W")) < 6 then sameweek = 1 else sameweek = 0;
val_bss = GetField("大戶持股比例","W",param := 400)[sameweek];//持股400張以上
val_sst = val_fss + val_bss;
ret=1;
outputfield(5,val_sst,1,"BCR");
方才執行選股的結果如下,供大家參考,謝謝:
