A:基金因其收费模式不一致存在多个代码,天软分别记录每个代码的份额变动及基金净值数据。
计算单个份额基金代码的总规模参考模型:
fundscale
计算该基金所有份额的总规模直接将不同收费模式的基金规模相加即可,实现模型参考如下。
实现模型
模型说明
定义:getFundScale(stock:string,endt:datetime):real
说明:获取基金指定日总规模,不同收费模式基金计算该基金所有份额规模求和
参数:
stock:string,基金代码
endt:datetime,指定日期
返回:实数,基金规模
实现代码
function getFundScale(stock,endt);
begin
ov:=BackupSystemParameters2();
setsysparam(pn_date(),endt);
mcode:=spec(FundMasterCode(),stock);
codes:=GetSysParam("fundmcodelist");
if not codes then
begin
col:="mcode";
codes:=select thisrow as "code",spec(FundMasterCode(),thisrow) as col
from getbk("上市基金;已退市基金") end;
codes:=select [col],sselect ['code'] from thisgroup end as "code"
from codes group by [col] end;
codes:=NormalTabletoStrSubscript(codes,col);
setsysparam("fundmcodelist",codes);
end
funds:=codes[mcode,"code"];
v:=0;
for i,fund in funds do
v+=spec(fundscale(),fund);
return v;
end
实现范例
//获取OF008656指定日所属基金总规模
return getFundScale("of008655",20250430t);
//返回结果:657999481.0539