A:
取数模型总览
函数 | 功能 | 备注
|
---|
Base(id,N) | 返回表格中的第N条数据的指定字段的值。
N从0开始为第一条记录,小于0则默认取最后一条记录。 | 默认取最后一条。
注:与当前时间无关,只取第几条,返回的是一个值。
|
InfoArray(infoID) | 返回指定表格的全部记录。 | 结果是一个数组。
|
InfoTable | SQL语法,返回指定表格指定代码指定条件的记录 | 满足大多数取数的需求,其用法可参考: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