當天上漲的機率

  •   282 
  • 最後發表   老漢  2023 十月 16
老漢 發文於   2023/09/10

小幫手您好:
已參考過此篇文章及發問區的其他文章

那些股票外資買超的隔天上漲的機會比較大??By 發財橘子 | 2017-05-09

目的想統計過去N年內每次除息當日開高的次數和機率(開盤價(還原)大於上一個營業日的收盤價)
例:今日9/11,統計過去1年內台積電2330開高3次佔總除息次數4次的機率=0.75

能力太差不知到哪裡寫錯.回測執行時好像開高次數都算錯.懇請指點。感激不盡~

附加文件

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/09/20

Hello, 老漢.

根據您提供的腳本,小幫手發現一個問題,

主要台積電2019從年配息改成半年配季配,

 

此外,您的C2~C6計算應放入condition1 內計算,

input:cashY(5,"N年配息次數");
var:c1(0),c2(0),c3(0),c4(0),c5(0),c6(0),pr1(0),pr2(0),pr3(0),pr4(0),pr5(0), c99(0);
settotalBar(1250);
c1 = 0;

for value1=0 to cashY-1 begin 

if GetField("現金股利","Y")[value1] > 0 then c1+=1; //count1 就是配息次數

condition1 = date = GetField("除權息日期");  //判斷當日是否是除權息當日
if condition1 
then begin
    value2 = getfield("Close", "D")[1];  //紀錄除權息前一日的close
    c99 += 1;   // Count99 計算除權息次數

if open>value2
then c2=c2+1; //開高的次數
if close>open
then c3=c3+1;//上漲的次數
if open>value2 and close>open
then c4=c4+1;//開高走高的次數
if close<open
then c5=c5+1;//下跌的次數

if open>value2 and close<open
then c6=c6+1;//開高走低的次數

end;

end;

pr1=c2/c99; //開高的機率
pr2=c3/c99; //上漲的機率
pr3=c4/c99; //開高走高的機率
pr4=c5/c99; //下跌的機率
pr5=c6/c99;//開高走低的機率

if c99 >0 then ret=1;

outputfield(1,c99,0,"除權息次數");
outputfield(2,c2,0,"開高次");
outputfield(3,pr1,2,"開高率");
outputfield(4,pr2,2,"上漲率");
outputfield(5,pr3,2,"高漲率");
outputfield(6,pr4,2,"下跌率");
outputfield(7,pr5,2,"高跌率");

 

此外建議您也要一併檢查資料的日期來判斷是否為近五年的資料。

 

由於選股會取用最近期的資料,所以若商品近幾年沒配息的話,取到的就是最後一次配息的資料,但那可能是N年前的資料。

謝謝。

  • 按讚來自於
  • james6662111
老漢 發文於   2023/09/22

感謝回覆,但是過去5年台積電也沒有除息90次.應該也頂多只有20次而已. 而開高的次數也頂多只有20次,請教我該如何修改呢?或去哪裡找答案?

XQ小幫手 發文於   2023/10/11

Hello, 老漢.

 

小幫手這邊發現上次幫您修改的腳本有誤,

for value1=0 to cashY-1 begin

這邊不需要跑五次,因為設定長度已經包含五年了,

input:cashY(5,"N年配息次數");

var:c1(0),c2(0),c3(0),c4(0),c5(0),c6(0),pr1(0),pr2(0),pr3(0),pr4(0),pr5(0), c99(0);

settotalBar(cashY*250);


condition1 = date = GetField("除權息日期");  //判斷當日是否是除權息當日
if condition1 
then begin
    value2 = getfield("Close", "D")[1];  //紀錄除權息前一日的close
    c99 += 1;   // Count99 計算除權息次數

    Print("2330除權息日期",NumToStr(GetField("除權息日期"), 0));

if open>value2
then
c2=c2+1; //開高的次數

if close>open
then 
c3=c3+1;//上漲的次數

if open>value2
and close>open
then 
c4=c4+1;//開高走高的次數

if close<open
then 
c5=c5+1;//下跌的次數

if open>value2
and close<open
then 
c6=c6+1;//開高走低的次數

end;


pr1=c2/c99; //開高的機率
pr2=c3/c99; //上漲的機率
pr3=c4/c99; //開高走高的機率
pr4=c5/c99; //下跌的機率
pr5=c6/c99;//開高走低的機率

if c99 >0 then ret=1;

outputfield(1,c99,0,"除權息次數");
outputfield(2,c2,0,"開高次");
outputfield(3,pr1,2,"開高率");
outputfield(4,pr2,2,"上漲率");
outputfield(5,pr3,2,"高漲率");
outputfield(6,pr4,2,"下跌率");
outputfield(7,pr5,2,"高跌率");

所以得到的 2330 除權息日期 如下

除權息日期 20190624

除權息日期 20190919

除權息日期 20191219

除權息日期 20200319

除權息日期 20200618

除權息日期 20200917

除權息日期 20201217

除權息日期 20210317

除權息日期 20210617

除權息日期 20210916

除權息日期 20211216

除權息日期 20220316

除權息日期 20220616

除權息日期 20220915

除權息日期 20221215

除權息日期 20230316

除權息日期 20230615

除權息日期 20230914

因迴圈跑了5次,故之前次數誤算成90次。

 

謝謝。

 

老漢 發文於   2023/10/16

非常感謝小幫手的幫忙! 感激不盡~

發表回覆
Close