如何在Pine Script中调用ETF的折溢价/资金流字段用于策略开发
如何在Pine Script中调用ETF的折溢价/资金流字段用于策略开发
嘿,我完全懂你这种困惑——在TradingView界面上点几下就能调出这些字段,但要写到Pine Script策略里就摸不着头脑对吧?别慌,我给你拆解这两个需求的具体实现方式:
一、调用ETF的折溢价(Discount/Premium to NAV)
TradingView的Pine Script专门内置了ta.premium()函数,能直接获取ETF当前价格相对NAV的折溢价比例,用法超直观:
//@version=5 indicator("ETF折溢价示例", overlay=false) // 获取折溢价比例(返回值为百分比,正数代表溢价,负数代表折价) premium_value = ta.premium() // 绘制折溢价曲线 plot(premium_value, title="折溢价(%)", color=color.blue, linewidth=2) // 结合RSI做策略信号示例 rsi_value = ta.rsi(close, 14) buy_signal = premium_value < -2 and rsi_value < 30 // 折价超2%+RSI超卖 sell_signal = premium_value > 2 and rsi_value > 70 // 溢价超2%+RSI超买 plotshape(buy_signal, title="买入信号", location=location.belowbar, color=color.green, style=shape.labelup, text="买入") plotshape(sell_signal, title="卖出信号", location=location.abovebar, color=color.red, style=shape.labeldown, text="卖出")
注意:ta.premium()只对有公开NAV数据的ETF生效,非ETF标的或无NAV数据的ETF会返回na,你可以加个判断提示:if na(premium_value) => label.new(bar_index, high, "当前标的无NAV数据")
二、调用ETF的资金流(Fund Flows)
资金流属于TradingView的基本面财务数据,需要用request.financial()函数调取,不过要注意不是所有ETF都有公开的资金流数据,主流ETF(比如SPY、QQQ)一般都能查到:
//@version=5 indicator("ETF资金流示例", overlay=false) // 调取每日资金流数据(单位多为美元,具体依标的而定) // 参数说明:当前标的ID、日线周期、资金流字段 fund_flow = request.financial(syminfo.tickerid, "D", "fund_flow") // 绘制资金流柱状图 plot(fund_flow, title="每日资金流", style=plot.style_columns, color=fund_flow > 0 ? color.green : color.red) // 结合50日均线做策略信号示例 ma_50 = ta.sma(close, 50) buy_flow = fund_flow > 1000000 and close > ma_50 // 当日流入超100万+价格站在50均线上 sell_flow = fund_flow < -1000000 and close < ma_50 // 当日流出超100万+价格跌破50均线 plotshape(buy_flow, title="资金流入买入", location=location.belowbar, color=color.green, style=shape.triangleup) plotshape(sell_flow, title="资金流出卖出", location=location.abovebar, color=color.red, style=shape.triangledown)
如果返回na,说明当前标的没有资金流数据,换个主流ETF测试就行。另外资金流数据大多是日线级,小时级这类高频数据基本没有公开源。
小提醒
- 测试前确认当前加载的是ETF标的,不然函数会返回空值
- 折溢价阈值、资金流金额阈值这些参数,要根据你交易的ETF品种灵活调整
备注:内容来源于stack exchange,提问作者SUU VU
相关产品推荐
相关产品推荐

