本文主要是介绍如何获取股票.机构持股表数据在指定日的最新数据报告期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
相关链接:Q:如何获取股票.机构持股表数据在指定日的最新数据报告期
由于天软的股票.机构持股(27)表数据是天软后期衍生,而非公告实时采集的,所以没有具体公布日。
而若需要知道在指定日,用户实际能获取到的最新的报告期数据是哪个,则需要根据数据公布情况进行估计。
其衍生的具体数据来源于:
“根据股票十大股东、十大流通股东及基金持股明细进行统计。该表数据是在所有股票及基金定期报告数据采集完成再衍生”
具体衍生时间:
“每季定期报告披露完毕的 15 个工作日内更新完成”
其中,根据国家规定的财务报表发布频率:
股票:
一季报: 4 月公布
中报: 7、 8 月公布
三季报: 10 月公布
年报:次年 1 月到 4 月公布
基金:
季报: 报告期结束的 15 个工作日内公布
中报:报告期结束的 60 个自然日内公布
年报: 报告期结束的 90 个自然日内公布
根据以上数据情况,我们可以大致估算该数据的最后衍生日期,具体实现可参考:
封装函数:T27Rate(endt:TDatetime):Array
函数说明:根据指定日,获取表27的最早数据报告期。
由于当年一季报与去年年报的数据几乎是同一时间衍生。
所以,当最新取到一季报时,同时也会返回上年年报,模型返回值设计是一个数组,而非一个报告期,且结果是倒序排列。
具体实现:
function T27Rate(endt);//根据选股日,获取表27的最早数据报告期
begin
year:=yearof(endt);
Month:=Monthof(endt);
RdateArr:= RDateListQK(Endt-365,Endt,0);
RdateArr:=select thisrow as 'RDate',ReportDateType(thisrow) as 'RType' from RdateArr end;
Lb:=Function(Rt,year)
begin
if Rt=1 then
R:=inttodate(year*10000+0430);
else if Rt=2 then
R:=inttodate(year*10000+0831);
else if Rt=3 then
R:=inttodate(year*10000+1031);
else if Rt=4 then
R:=inttodate((year+1)*10000+0430);
return StockEndTAfterNDay(R,15);
end
RdateArr:=select *,Lb.do(['RType'],['RDate'] div 10000) as '衍生日' from RdateArr order by ['Rdate'] desc end;
YSR:= vselect ['衍生日'] from RdateArr where ['衍生日']<=endt order by ['衍生日'] desc end;
return sselect ['RDate'] from RdateArr where ['衍生日']=YSR end;
end;
调用实例及结果展示:
场景一:最新衍生的为一季报及去年年报
return T27Rate(20220526T);
场景二:最新衍生的为三季报
return T27Rate(20220316T);
这篇关于如何获取股票.机构持股表数据在指定日的最新数据报告期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!