[原創] 過去五次的除息成功率統計

0Shares
Image

除權息的旺季再過幾個月就來了,習慣上會提前準備好,免得到時手忙腳亂的,而我說的準備是啥呢,就是統計出過去股票除息的成功率,當作今年要參與除息股票的參考,免得到時都要除息了,還不知道該不該參加。

為了計算過去的除息成功率,用選股寫了一個腳本,計算每個股票過去五次除息後在一定天數內的成功次數,而為什麼是過去五次而不是過去五年是因為現在有些股票開始採用半年或季配息,懶得去區分了,所以就用過去五次,不過,程式碼內還是有限制在過去的五次要在近五年內發生,免得出現一堆很久以前有配息的股票也被篩出來。

選股結果
以下,先上選股結果,不想理程式碼的,可以到下方直接下載檔案取用,裡面統計了20天內跟40天內除息的成功次數,最多就是5次。

選股設定
選股內只有一個參數要設定,就是要統計幾天內的除息成功次數

由於程式碼寫的較沒有效率,所以在跑選股時,請注意以下兩點,免得跑很久都跑不出來,

  1. 持有區間,不要設定太長,40天以內最好
  2. 每次選股時,數量最好限制在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;

程式碼比較沒效率,看看有沒有大師能幫忙修改了~~~

檔案下載

0Shares


7 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
youthful
3 years ago

可以請教一下 要如何修改成近10次的除息成功率的腳本如何編寫?

youthful
3 years ago
Reply to  查理哥

謝謝查理哥的建議 這個提問我有在XQ討論區提問 小幫手是給我這樣的建議 但我還是不懂

https://forum.xq.com.tw/thread/%e6%83%b3%e8%ab%8b%e6%95%99%e4%b8%80%e4%b8%8b-%e9%80%99%e5%80%8b%e8%85%b3%e6%9c%ac%e6%83%b3%e6%94%b9%e7%82%ba%e8%bf%9110%e6%ac%a1%e6%88%90%e5%8a%9f%e9%99%a4%e6%81%af%e7%9a%84%e6%ac%a1%e6%95%b8%e8%a6%81%e5%a6%82%e4%bd%95%e6%94%b9/

1.腳本裡面是用變數x來控制計算第幾次的除息。

您可以寫個迴圈包住原本的腳本讓其計算近10次的成功次數,但這會導致大量運算,若商品數量過多可能會逾時。

另外需注意,這樣的話要將 if value6>=close[getbaroffset(getfield(“除息日期”)[x])+1] then win201=1 else win201=0;

改為 if value6>=close[getbaroffset(getfield(“除息日期”)[x])+1] then win201+=1,並在迴圈開始前將其歸0,這樣才會是計算總合次數。

2.highest是用節省效能的寫法,所以文章中的 value6=highest(high,gap)[getbaroffset(DateAdd(getfield(“除息日期”)[x], “D”, i))]; 寫法計算應該會出錯。

建議您可以改用 simplehighest。

3.其用到 getbaroffset,故計算時需要有足夠的資料讀取筆數。

您需要將資料讀取筆數設定的比往前10次除息的日期還要長,才可以正常運作。

youthful
3 years ago
Reply to  查理哥

這邊通知查理哥 小幫手有修改好摟 謝謝查理哥的研發製作

相關文章

[VIP] XQ版RS相對強弱PR指標

本文延伸之前的文章,運用XQ新加入的Group函數,增加了類股跟細產業的RSPR指標,讓使用者可以不只可以觀察個股的PR值,更可以知道現在該類股、或細產業是否也是PR前段班,或許會更有參考性。

[VIP]用彼得林區邏輯 + XQ 選股中心打造成長型策略

本文優化用彼得林區的邏輯打造成長型策略一文,將績效進一步提升,達到今年年年獲利,而且每年平均有20%報酬率的策略。

用彼得林區邏輯 + XQ 選股中心打造成長型策略

本文將從彼得林區的選股邏輯出發,透過 XQ 選股中心工具與財報篩選條件,打造出一套適用於台股的成長型策略,並進行回測驗證其實戰效益。

周末特訓班 – 實作XS小幫手

此為6/14 XQ週末特訓班的分享,主要是在說明如何運用AI建立自己的XS小幫手,本次分享的技巧可以用來開發其他的AI小幫手
(adsbygoogle = window.adsbygoogle || []).push({});

最近發文

加入我們

Categories

最新留言

(adsbygoogle = window.adsbygoogle || []).push({});
7
0
本文有想法或疑問嗎?歡迎討論x
()
x