奇狐社區論壇
在這個頁面顯示本主題全部的 7 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [求救] 能否協助修改成「類股本益比」公式? (http://www.chiefox.com.tw/bbs/showthread.php?threadid=24106)


由 m3energy 在 2024-10-12 16:04 發表:

[求救] 能否協助修改成「類股本益比」公式?

在論壇找到底下之公式算法,無奈程式功力不足,改寫不出來。


參考文章:
【範例】類股平均EPS
http://www.chiefox.com.tw/bbs/showt...%B8%BB%E9%A1%8C


請教是否能協助將此公式修改成「類股本益比」公式。


想要修正的「類股本益比」算法:
1.對應年度已公佈的"類股股票全年EPS均值"算出當年類股本益比。
2.標示出類股年度最高本益比與類股年度最低本益比。
3.當年度的類股EPS均值,「使用者自行輸入類股EPS均值預估值」。
PS:待2024全年全部EPS公佈後,系統即修正為依上述方法算出2024年類股本益比。


由 cgjj 在 2024-10-14 16:38 發表:

回覆: [求救] 能否協助修改成「類股本益比」公式?

引用:
最初由 m3energy 發表
在論壇找到底下之公式算法,無奈程式功力不足,改寫不出來。


參考文章:
【範例】類股平均EPS
http://www.chiefox.com.tw/bbs/showt...%B8%BB%E9%A1%8C


請教是否能協助將此公式修改成「類股本益比」公式。


想要修正的「類股本益比」算法:
1.對應年度已公佈的"類股股票全年EPS均值"算出當年類股本益比。
2.標示出類股年度最高本益比與類股年度最低本益比。
3.當年度的類股EPS均值,「使用者自行輸入類股EPS均值預估值」。
PS:待2024全年全部EPS公佈後,系統即修正為依上述方法算出2024年類股本益比。



請自行核對計算結果是否為您想要的正確值!

注意!!!
這裡的"股票本益比"與奇狐系統內建公式算法不同!(有採用未來季度的數據)

另外!!!
若在不宜的時間觀看,會讓數值落差很大!
例如:僅只有幾支已公告12月的,其他都還沒有公告時
此時有效樣本數會過少,計算將嚴重偏差

原碼:
FEPS均:1.99 linethick; //請自行根據當前類股調改此值 //此為全年EPS均值尚未公告處所採用的值(自定義預估值) UseBlk:=''; //類股成份股板塊 if stklabel='201' then UseBlk:='水泥工業'; if stklabel='202' then UseBlk:='食品工業'; if stklabel='203' then UseBlk:='塑膠工業'; if stklabel='204' then UseBlk:='紡織纖維'; if stklabel='205' then UseBlk:='電機機械'; if stklabel='206' then UseBlk:='電器電纜'; if stklabel='208' then UseBlk:='玻璃陶瓷'; if stklabel='209' then UseBlk:='造紙工業'; if stklabel='210' then UseBlk:='鋼鐵工業'; if stklabel='211' then UseBlk:='橡膠工業'; if stklabel='212' then UseBlk:='汽車工業'; if stklabel='214' then UseBlk:='建材營造'; if stklabel='215' then UseBlk:='航運業'; if stklabel='216' then UseBlk:='觀光事業'; if stklabel='217' then UseBlk:='金融保險'; if stklabel='218' then UseBlk:='貿易百貨'; if stklabel='220' then UseBlk:='其他'; if stklabel='237' then UseBlk:='化學工業'; if stklabel='241' then UseBlk:='生技醫療業'; if stklabel='260' then UseBlk:='油電燃氣業'; if stklabel='223' then UseBlk:='半導體業'; if stklabel='224' then UseBlk:='電腦及週邊設備業'; if stklabel='225' then UseBlk:='光電業'; if stklabel='226' then UseBlk:='通信網路業'; if stklabel='227' then UseBlk:='電子零組件業'; if stklabel='228' then UseBlk:='電子通路業'; if stklabel='229' then UseBlk:='資訊服務業'; if stklabel='230' then UseBlk:='其他電子業'; if stklabel='531' then UseBlk:='文化創意業'; DRAWTEXTEX(UseBlk='',1,500,550,'本公式僅適用於類股指數(或無相對應類股成份)!') ALIGN0 COLORMAGENTA; if UseBlk='' then exit; ZeroAry:=C*0; YEPS總:=ZeroAry; 資料年月:ZeroAry linethick colorFF33FF; 樣本數:ZeroAry linethick color777777; //具資料才列入統計 //找出最新財報所屬資料年月 資料年月:=ZeroAry; for i=1 to STKCOUNT(UseBLK) do begin UseStk:=STKFROMBLK(UseBLK,i); DYM:=FLOOR(SEQDATA(UseStk,'FIN','DATE')/100)+190000; if lbound(DYM)>0 then begin DYM:=if(barpos>=lbound(DYM),DYM,0); 資料年月:=MAX(資料年月,DYM); end; end; //找出採用預估值的區域 LB:=datacount-barslast(MOD(資料年月,100)=12); 預估區:=barpos>LB[datacount]; 資料年月:=資料年月*(預估區=0); //以灰色背景標示全年EPS均值尚未公告處(亦即採自定義預估值處) STICKLINEPY(預估區,0,999,10,0) color777777; //注意!!! //這裡的"股票本益比"與奇狐系統內建公式算法不同!(有採用未來季度的數據) KYM:=FLOOR(tradedate/100)+190000; //K棒年月 KYZ:=MOD(KYM,100)=12 and refx(KYM,1)>KYM or islastbar; //年度終K KYF:=ref(KYZ,1) or barpos=1; //年度首K //將類股成份之EPS值加總 for i=1 to STKCOUNT(UseBLK) do begin UseStk:=STKFROMBLK(UseBLK,i); DYM:=FLOOR(SEQDATA(UseStk,'FIN','DATE')/100)+190000;//資料年月 if lbound(DYM)>0 then begin DYM:=if(barpos>=lbound(DYM),DYM,0); DMM:=MOD(DYM,100);//資料月份 IEPS:=SEQDATA(UseStk,'FIN','I_EPS'); YEPS:=SETVAL(KYM=DYM and KYZ,IEPS,-barslast(KYF),IEPS); //以該年度全年EPS(最終年累EPS),填滿該年度相應K棒 CheckOK:=資料年月=DYM and DYM>0; 樣本數:=樣本數+CheckOK; YEPS總:=YEPS總+if(CheckOK,YEPS,0); end; end; 預估EPS總:=FEPS均*ref(樣本數,barslast(預估區=0)); YEPS總S:=if(預估區,預估EPS總,YEPS總) linethick colorFF6666; 類股本益比:(CLOSE/YEPS總S)*(YEPS總S>0) linethick2; DLB:=BARSSINCE(資料年月>=201303); StKNo:=lbound(DLB); if StKNo>0 then x:=SETLBOUND(類股本益比,StKNo); KYFSP:=barslast(KYF); 年度最高本益比:HHV(類股本益比,KYFSP+1) linethick; 年度最低本益比:LLV(類股本益比,KYFSP+1) linethick;


由 m3energy 在 2024-10-15 14:27 發表:

感謝總版主對此程式的叮嚀,謝謝。

另請教總版主,我在程式底下加了畫年度垂直分隔線的程式碼,但是有些版塊正常、有些版塊不正常,請版主指導,謝謝。

加入畫垂直線程式碼:
------------------------------------------------------

//畫年分隔線
DYY:=FLOOR(DYM/100); //資料年
YYCK:=DYY<>ref(DYY,1) or barpos=lbound(DYY);
VERTLINE(YYCK and datatype<>9) linedot color777777;


//標示畫年分隔線-年月文字
if datatype=9 then PN:=DYY; else PN:=DMM;
DRAWNUMBER(YYCK and datatype<>9,類股本益比,DYY,0) color777777 align4;

------------------------------------------------------


食品202版塊,正常




水泥201版塊,無法顯示




206電器電纜,顯示不正確


由 cgjj 在 2024-10-15 16:44 發表:

引用:
最初由 m3energy 發表
[B]感謝總版主對此程式的叮嚀,謝謝。

另請教總版主,我在程式底下加了畫年度垂直分隔線的程式碼,但是有些版塊正常、有些版塊不正常,請版主指導,謝謝。

加入畫垂直線程式碼:
------------------------------------------------------

//畫年分隔線
DYY:=FLOOR(DYM/100); //資料年
YYCK:=DYY<>ref(DYY,1) or barpos=lbound(DYY);
VERTLINE(YYCK and datatype<>9) linedot color777777;


//標示畫年分隔線-年月文字
if datatype=9 then PN:=DYY; else PN:=DMM;
DRAWNUMBER(YYCK and datatype<>9,類股本益比,DYY,0) color777777 align4;

....


DYM 是迴圈中個股的資料,不可拿到迴圈外使用

DYY:=FLOOR(DYM/100); //資料年

需修正為
DYY:=FLOOR(資料年月/100); //資料


由 cgjj 在 2024-10-15 16:57 發表:

引用:
最初由 m3energy 發表
206電器電纜,顯示不正確



並非是顯示不正確~~
而是該期間有些成分股 I_EPS 是負數
會對加總的數值,產生較大的波動影響


由 m3energy 在 2024-10-15 22:13 發表:

引用:
最初由 cgjj 發表
並非是顯示不正確~~
而是該期間有些成分股 I_EPS 是負數
會對加總的數值,產生較大的波動影響



^^^^^^^^^^^^^^^^^
感謝總版主的解說,謝謝。


由 m3energy 在 2024-10-15 22:33 發表:

引用:
最初由 cgjj 發表
DYM 是迴圈中個股的資料,不可拿到迴圈外使用

DYY:=FLOOR(DYM/100); //資料年

需修正為
DYY:=FLOOR(資料年月/100); //資料



^^^^^^^^^^^^^^^^^^

謝謝。


全部時間均為台灣時間, 現在時間為04:49
在這個頁面顯示本主題全部的 7 個文章


Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.