A:可通过一级市场代码获取基金的设立日与退市日进行判断,最后再获取其交易代码
如下:
endt:=20201230T;
stocks:=getbkall('ETF');//所有ETF基金
//判断出指定日在运作的
dendt:=datetoint(endt);
t1:=select thisrow as 'code',
spec(base(302033),thisrow) as '交易代码',
spec(base(302003),thisrow) as '设立日',
GetFundLastEndDate(thisrow) as '退市日'
from stocks end;
t1:= select * from t1 where ['设立日'] and ['设立日']<=dendt and (['退市日']=0 or ['退市日']>=dendt) end;
//return t1[:,"交易代码"]; //取交易代码列表
return t1;
注:可以将这一段代码封装出来,endt做为参数,就可以取指定日的了
其它方式:获取ETF指定日一级市场代码
方式一:通过FundsOperateFunds(funds,EndT)指定日指定列表中还在运作的基金进行筛选
stocks:= getbkall("ETF");
return FundsOperateFunds(stocks,20200101T);
方式二:FundOperateFundsbyBkname函数可判断基金在指定日是否上市与清算,可采用该函数进行筛选
实现代码:
bks:='ETF';
endt:=20200101T;
stock1:=FundOperateFundsbyBkname(bks,endt); //从现有的“ETF”基金中去掉指定日还未上市的
//从已退市基金中筛选出指定日还在运作的,且交易方式属于“ETF”的基金
stock2:=FundOperateFundsbyBkname("已退市基金",endt);
stock2:= sselect thisrow from stock2 where spec(base(302002),thisrow) in str2array(bks) end;
return stock1 union2 stock2;//两种合并,返回指定交易方式在指定日的还在运作的基金集合