除權息的旺季再過幾個月就來了,習慣上會提前準備好,免得到時手忙腳亂的,而我說的準備是啥呢,就是統計出過去股票除息的成功率,當作今年要參與除息股票的參考,免得到時都要除息了,還不知道該不該參加。
為了計算過去的除息成功率,用選股寫了一個腳本,計算每個股票過去五次除息後在一定天數內的成功次數,而為什麼是過去五次而不是過去五年是因為現在有些股票開始採用半年或季配息,懶得去區分了,所以就用過去五次,不過,程式碼內還是有限制在過去的五次要在近五年內發生,免得出現一堆很久以前有配息的股票也被篩出來。
選股結果
以下,先上選股結果,不想理程式碼的,可以到下方直接下載檔案取用,裡面統計了20天內跟40天內除息的成功次數,最多就是5次。
選股設定
選股內只有一個參數要設定,就是要統計幾天內的除息成功次數
由於程式碼寫的較沒有效率,所以在跑選股時,請注意以下兩點,免得跑很久都跑不出來,
- 持有區間,不要設定太長,40天以內最好
- 每次選股時,數量最好限制在100檔之內
程式碼說明
這個選股腳本,由於想要計算除息後一定的交易天數內的成功次數,因此在找到除息日之後,需要能找到N個交易天後的日期,而這個部分,在XQ內會有點困難,因為用dateadd函數時,並不會聰明的跳過非交易日,只是單純的日期相加,因此,這邊用了迴圈+getbaroffset去找到N天後且不包含非交易日的正確日期
而在找到正確的N天日期後,再往前比對N天,找到區間內最高點,反正就是這樣來來回回的計算日期、確認日期有無錯誤、區間有無錯誤…….,剩下就子己看程式碼了
input:gap(20,"查看幾天內"); var: x(0); //第X次除息 for i=gap*1.2 to gap*2 begin if getbaroffset(getfield("除息日期")[x])-getbaroffset(DateAdd(getfield("除息日期")[x], "D", i))+1=gap then begin value3=DateAdd(getfield("除息日期")[x], "D", i); value4=i; // value5=date[getbaroffset(DateAdd(getfield("除息日期")[x], "D", i))+gap-1]; value6=highest(high,gap)[getbaroffset(DateAdd(getfield("除息日期")[x], "D", i))]; if value6>=close[getbaroffset(getfield("除息日期")[x])+1] then win201=1 else win201=0; break; end; end;
程式碼比較沒效率,看看有沒有大師能幫忙修改了~~~
檔案下載

發佈留言
很抱歉,必須登入網站才能發佈留言。