Pine Script V4/V5添加市值标签触发Resolve_error "FUND"报错如何解决
问题解决办法
报错原因
Resolve_error "FUND"报错触发的核心原因是financial()函数的使用限制:TradingView的基本面数据接口仅支持股票、部分公募基金、ETF品类,加密货币、外汇、期货品类没有对应的TOTAL_SHARES_OUTSTANDING(总流通股数)字段,调用不存在的基本面字段时就会触发该错误。
解决方案
如果你的使用场景是加密货币品类,TradingView已经内置了市值数据字段,无需自己通过总流通量乘收盘价计算,直接调用syminfo.marketcap即可。
修改后的V4版本代码
//@version=4 study("My Script", overlay=true) // 直接调用内置市值字段 MarketCap = syminfo.marketcap // 处理空值情况 displayCap = na(MarketCap) ? "无市值数据" : tostring(MarketCap, "##.###") label MarketCapL = label.new(time, close, text=" MarketCap | " + displayCap,color=color.new(color.white,90), xloc= xloc.bar_time, style=label.style_none, textcolor= color.new(color.white,0), textalign=text.align_left) label.set_x(MarketCapL, label.get_x(MarketCapL)+ round(change(time)* 8)) label.set_y(MarketCapL, (label.get_y(MarketCapL) * 1.100)) label.delete(MarketCapL[1])
适配V5版本代码
//@version=5 indicator("My Script", overlay=true) MarketCap = syminfo.marketcap displayCap = na(MarketCap) ? "无市值数据" : str.tostring(MarketCap, "##.###") var label MarketCapL = na if barstate.islast MarketCapL := label.new(bar_index, close, text=" MarketCap | " + displayCap, color=color.new(color.white,90), style=label.style_none, textcolor=color.white, textalign=text.align_left) label.set_x(MarketCapL, label.get_x(MarketCapL) + round(ta.change(time)*8)) label.set_y(MarketCapL, label.get_y(MarketCapL) * 1.1) label.delete(MarketCapL[1])
注意事项
- 仅TradingView官方收录了市值数据的加密货币对能正常返回数值,部分小众币种没有收录的话会显示「无市值数据」
- 如果需要适配股票品类,可以加品类判断逻辑,股票场景调用
financial()接口,加密货币场景调用内置市值字段
内容的提问来源于stack exchange,提问作者Flo
相关产品推荐
相关产品推荐

