A:实现步骤如下:
1.先获取指数的
成份股权重数据;
2.在获取所有成分股的
所属申万行业数据;
3.最后对数据按行业进行
分组求个股权重比例之和即可。
实现示例
范例一:获取指数指定日行业权重数据
//获取SH000300在20260731日的行业权重数据
index:="SH000300";
endt:=20260731T;
setsysparam(pn_date(),endt);
GetBkWeightByDate(index,endt,t); //获取成分股权重数据
//获取成份股所属行业
t:=select *,spec(StockSWIndustryName1(),["代码"]) as "行业" from t end;
strt:=datetostr(endt);
name:=StockName(index);
r:=select index as "指数代码",name as "指数名称",
strt as "日期",["行业"],
sumof(["比例(%)"]) as "比例(%)"
from t group by ["行业"] end;
SortTableByField(r,"比例(%)",0);
return r;
部分结果:
范例二:获取指数区间每日的行业权重数据
//获取SH000300在20260701-20260730区间每日的行业权重数据
begt:=20260701t;
endt:=20260731t;
index:="SH000300";
dayarr:=MarketTradeDayQk(begt,endt);
r:=array();
for i,day in dayarr do
begin
setsysparam(pn_date(),day);
ret:=GetBkWeightByDate(index,day,t); //获取指定日成分股权重数据
if not ret then continue;
//获取成份股所属行业
t:=select *,spec(StockSWIndustryName1(),["代码"]) as "行业" from t end;
strt:=datetostr(day);
name:=StockName(index);
t:=select index as "指数代码",name as "指数名称",
strt as "日期",["行业"],
sumof(["比例(%)"]) as "比例(%)"
from t group by ["行业"] end;
SortTableByField(t,"比例(%)",0);
r&=t;
end
return r;
部分结果:
