如何用BQL获取多只ETF中唯一持仓标的的市值?
多只ETF唯一持仓标的美元市值的BQL实现方法
要实现多只ETF的唯一持仓标的美元市值查询,你可以通过以下两种方式处理:
直接传入多只ETF代码并去重
利用holdings函数支持多证券参数的特性,传入多个ETF代码,再通过distinct()函数对持仓标的去重,最后拉取美元市值:=@BQL("distinct(holdings('IHI US EQUITY', 'XHE US EQUITY'))", "cur_mkt_cap(currency=USD)")这里
holdings('IHI US EQUITY', 'XHE US EQUITY')会同时获取两只ETF的全部持仓,distinct()会自动剔除重复标的,确保最终只返回唯一的持仓标的及其市值。通过变量定义ETF列表(适合扩展场景)
如果后续需要添加更多ETF,可以先定义一个包含所有目标ETF的集合变量,再传入holdings函数:let target_etfs = {'IHI US EQUITY', 'XHE US EQUITY'}; =@BQL("distinct(holdings(target_etfs))", "cur_mkt_cap(currency=USD)")
你之前尝试的[holdings(ETF),holdings(ETF)]写法无效,是因为这种方式会生成两个独立的持仓结果集合,BQL无法直接合并嵌套的集合结构。正确的做法是直接在holdings函数内传入多个ETF代码,或者通过集合变量批量传入,再配合distinct()完成去重逻辑。
内容的提问来源于stack exchange,提问作者user2565552
相关产品推荐
相关产品推荐

