A:天软数据采集好后,是直接入库到各证券相关的数据表格中的,若需要筛选出某一天哪些证券有发布财务公告,则需要通过对数据的公布日进行筛选得到。
实现举例:
本文以股票的财报为例,通过对业绩预测表(40)、业绩快报表(41)、定期财务报表(42)数据进行筛选,提取出在今日与历史某日哪些证券发布了相关公告。
说明:
下面两个范例中,用到了两种实现方式,
其中,
范例一比较高效,但它只适合筛选出今日最新公告的情况。
范例二适应所有情况,即既支持历史日的筛选,也支持今日的筛选,若同一日公布了多个数据,则会返回多个记录。
若有其它类似的需求,如基金的相关表格的公告的时候,也可以采用范例二的实现方式。
目标的实现可有多种方式,下面提供一种笔者认为较优的方式进行举例,供用户参考。
范例01:今日发布了财务公告的公司
注:通过base(公布日字段id)方式提取指定表中最新的公布日数据。
//--取出所有股票今日的最新公布日
t:= select thisrow as '代码',spec(base(42001),thisrow) as '定期-公布日',
spec(base(41002),thisrow) as '快报-公布日',
spec(base(40001),thisrow) as '预测-公布日'
from getbk("A股") end;
//--筛选出今日公布了数据的证券--三个公布日有一个满足即可
dendt:=datetoint(today());
return select * from t where ['定期-公布日']=dendt or ['快报-公布日']=dendt
or ['预测-公布日']=dendt end;
返回:(运行结果的日期是20240710日,公布日为0说明无相关公告,公布日等于今日则为今日发布了该公告)
范例02:历史指定日发布了财务公告的公司
注:只能通过infotable对逐个表格进行筛选公布日符合指定日的记录
endt:=20240706T;
stocks:=getAbkbydate("A股",endt);
dendt:=datetoint(endt);
t0:= select ["StockID"],["公布日"],["截止日"],"预测" as "公告" from infotable 40 of stocks
where ['公布日']=dendt end;
t1:= select ["StockID"],["公布日"],["截止日"],"快报" as "公告" from infotable 41 of stocks
where ['公布日']=dendt end;
t2:= select ["StockID"],["公布日"],["截止日"],"定期" as "公告" from infotable 42 of stocks
where ['公布日']=dendt end;
return t0 union t1 union t2;
返回:
