FAQ > 金融建模 > 数据提取 > 基本面数据

Q:天软表格数据(基本面表)提取的接口汇总    

简述
除财务数据与报告期相关外,我们还有许多与报告期无关的数据表格,该类表格通常也存在与指定日的关系。
用户在使用时一般需要通过对表格进行条件筛选得到指定日的字段值,使用较为麻烦,本文汇总天软已有的对该类数据提取的接口,方便用户参考引用。
  • A:取数模型总览

    函数功能备注
    Base(id,N)返回表格中的第N条数据的指定字段的值。
    N从0开始为第一条记录,小于0则默认取最后一条记录。
    默认取最后一条。
    注:与当前时间无关,只取第几条,返回的是一个值。
    InfoArray(infoID)返回指定表格的全部记录。结果是一个数组。
    InfoTableSQL语法,返回指定表格指定代码指定条件的记录满足大多数取数的需求,其用法可参考:FAQ:INFOTABLE
    BaseArray(id,IEndt)返回“截止日”等到指定日的字段的值适用于表格存在“截止日”这个字段的表格,且指定日期存在记录。
    返回的是一个值

    InfoArrayEx(infoID,IEndt)返回"截止日"等于指定日的记录适用于表格存在“截止日”这个字段的表格,且指定日期存在记录。
    返回的是一个数组

    InfoArrayEx2(infoID,CFName,v)返回指定字段等于指定值的记录InfoArrayEx的升级,有些表中无“截止日”但有“生效日”等字段。
    InfoArrayExt(InfoID,CFName,v,Rid,Field,...)返回数据表中指定字段值小于等于指定数值的指定记录可以实现指定日最新数据的提取。
    可以选择返回的记录数,也可以选择返回的字段列表。
    更多函数说明可参考:FAQ:InfoArrayExt
    其它固定接口返回其它量大的数据表格,通过固定接口才能访问到的数据详情请查看:FAQ:Q:固定取数接口汇总(Infotable取不到或取不全的数据)

    其中:infoID:是指表格ID号。id:是指表格字段的ID号。具体理解可查阅:FAQ:Q:天软表格ID与指标ID
    以上取数除Infotable外,都与当前证券相关。
    取数范例展示
    举例说明:下列范例中,均以取基金华夏成长(OF000001)的净值表格(表格ID:328)的数据为例,其中“单位净值”字段ID号为328003。
    demo编写日为:2023-3-28日,取比如最新数据只记录当前时间的最新,会根据数据的变更而发生变动。
    范例01:取当前基金最新的单位净值数据
    setsysparam(pn_stock(),"OF000001");
    return base(328003);

    返回:0.934
    对比原始表格数据中的最后一条记录的值:


    范例02:返回基金净值表中第6条记录的单位净值数据
    setsysparam(pn_stock(),"OF000001");
    return base(328003,5); //从0开始,所以第6条取N=5

    返回:1.001
    对比原始表格数据中第6条记录的值:


    范例03:取当前基金净值表格数据中“截止日”等于指定日的单位净值
    SetSysParam(pn_stock(),'OF000001');
    return BaseArray(328003,20230324);

    返回:0.939

    范例04:取当前基金的净值表格所有记录
    setsysparam(pn_stock(),"OF000001");
    return InfoArray(328);

    返回:(部分结果展示)

    范例05:返回表格中“截止日”字段等于指定日的记录。
    setsysparam(pn_stock(),"OF000001");
    return InfoArrayEx(328,20230324);

    返回:

    注:当表格中无“截止日”,或指定的值在表格中不存在时,即取不到数据。

    范例06:返回指定字段等于指定值的记录
    setsysparam(pn_stock(),"OF000001");
    return InfoArrayEx2(328,"截止日",20230324);

    返回:

    注:是InfoArrayEx的一个升级,多一个指定字段的选项。同样只能筛选出等于的记录。

    范例07:返回指定字段小于等于指定值的最后一条记录
    setsysparam(pn_stock(),"OF000001");
    return InfoArrayExt(328,"截止日",20230326);

    返回:

    注:2023-3-26日是周末,当日无净值数据,会向前推取到周五24日的净值记录返回。
    可以满足取指定日最新记录的需求。

    范例08:返回指定日最新记录的指定字段的值
    方式一:用InfoArrayExt取最后记录的方式
    setsysparam(pn_stock(),"OF000001");
    return InfoArrayExt(328,"截止日",20230326)[0,"单位净值"];

    返回:0.939
    方式二:利用InfoArrayExt的可选参数,可同时取多个字段
    setsysparam(pn_stock(),"OF000001");
    InfoArrayExt(328,"截止日",20230324,-1,"单位净值",v1);
    return v1;

    返回:0.939

    范例09:返回指定日最新记录的多个字段的值
    setsysparam(pn_stock(),"OF000001");
    InfoArrayExt(328,"截止日",20230324,-1,"单位净值",v1,"累计净值",v2);
    return array("单位净值":v1,"累计净值":v2);



    提示
    若以上的范例都无法满足你取数据的需求,请通过Infotable的方式实现:FAQ:INFOTABLE