我的程式碼有問題,找不到bug,請協助

  •   231 
  • 最後發表   好朋友888  2025 五月 23
好朋友888 發文於   2025/04/30

小幫手您好,

1. 我的程式(Test5年除息殖利率及PE.XSB)如附件,目的是抓取過去4-5年的除息和除權原始資料並加以表格化整理,程式主要分成二大部份,第一部分,程式碼 8-60行原始除息除權資料抓取, 第二部分, 程式碼 77-217行資料整理,計算(除息前一天收盤價,PE和殖利率)及表格化, 第二部分可細分為

2-1: 77-117行 除息資料整理

2-2: 121-159行 除權資料整理

2-3: 173-217行 匯總 2-1和2-2

我的問題情況說明如下:

1.若全部程式執行,最後匯總2-3輸出結果有誤(附件:Test5年除息殖利率及PE20250429除息除權匯總有誤.csv),但此時2-1除息和2-2除權資料整理仍是正確,故我將程式碼做不同的屏蔽並加以測試如後

2 若將2-1除息這部分的程式碼(77-117行)加以屏蔽,則全部程式含2-2和2-3執行結果都正確(附件:TTest5年除息殖利率及PE20250429除權.csv)

3 若將2-2除權這部分的程式碼(121-159行)加以屏蔽,則全部程式含2-1和2-3執行結果都正確(附件:Test5年除息殖利率及PE20250429除息.csv)

例如8942森鉅,在2024年有2次除息,分別是2元和2.1(2+2.1=4.1), 除權一次0.9元, 另外在2023年有2次除息,分別是2元和1.5元(2+1.5=3.5), 除權一次1元, 在上述情況說明,程式碼 2-1, 2-2不論是個別或同時執行結果皆是正確(含PE和殖利率),但在同時執行程式碼2-1, 2-2,2-3 同時執行時, 2-3輸出為, 2024年除權息卻成8元(正確時應該是4.1+0.9=5),2023年除權息合併為9.1元(正確時應該是3.5+1+0.9=5),此時,這兩年PE和殖利率的計算結果也有問題

我找不到其中程式的bug,請協助,謝謝. 附件只能上傳xsb檔案

附加文件

XS小幫手 發文於   2025/05/23

好朋友888 您好

 

問題點主要出在:變數在不同計算階段被重複使用,導致數值累計時發生了互相影響。

 

具體來說:

 

在處理除息資料時,您使用 ArrRawData3 來累計除息值,並使用 ArrRawData5 來累計除息前收盤價。

 

緊接著在處理除權資料時,您又將除權相關的數值(ArrRawData[k,8] 和 ArrRawData[k,10])加到了 ArrRawData3 和 ArrRawData5 上。例如:

 

ArrRawData8=ArrRawData3 + ArrRawData[k,8]; 

ArrRawData10=ArrRawData5 + ArrRawData[k,10];

 

這表示 ArrRawData8 和 ArrRawData10 在計算時,已經包含了當年度的除息總值和總收盤價,而非僅僅是除權相關的數值。因此,當程式碼最後進行除息除權資料匯總時,這些已受影響的變數會導致最終的總和、PE 值和殖利率計算出現偏差。

 

當您單獨執行除息或除權部分時,因為只有一組資料在累計,所以結果會是正確的。但當兩部分同時執行時,變數的共用和重複累計便會導致最終匯總的數據不符預期。

發表回覆
Close