You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何绕过Pine Script资产调用限制,编写NIFTY50市场宽度指标

绕过Pine Script 40只标的限制,编写NIFTY 50市场宽度指标的方法

方法1:拆分脚本为两个独立指标

把50只NIFTY50成分股分成两组(比如25+25),分别编写两个Pine Script指标,各自处理一组标的的市场宽度统计(比如上涨家数、均线突破家数等),最后在图表上合并结果。

  • 操作步骤:
    1. 第一组脚本:选取25只成分股,用request.security逐个获取标的数据,统计目标指标(如站上20日均线的家数)。
    2. 第二组脚本:处理剩余25只成分股,复用相同的统计逻辑。
    3. 在TradingView图表上同时加载两个指标,手动将两组统计值相加,得到完整的50只标的市场宽度数据。
  • 代码片段示例(第一组):
//@version=5
indicator("NIFTY50 宽度指标-组1", overlay=false)
// 填入前25只NIFTY50成分股代码
symbols = ["RELIANCE", "TCS", "HDFCBANK", "INFY", "ICICIBANK", ...]
upCount = 0
for sym in symbols
    closeVal = request.security(sym, timeframe.period, close)
    ma20 = ta.sma(closeVal, 20)
    if closeVal > ma20
        upCount += 1
plot(upCount, title="组1站上年线家数")

方法2:跨bar分批获取数据(进阶)

利用var变量存储跨bar数据,在不同bar周期分批获取两组标的的数据,最后合并计算。这种方法需注意数据同步问题,适合有Pine Script经验的用户。

  • 代码片段示例:
//@version=5
indicator("NIFTY50 宽度指标-合并版", overlay=false)
var int upCount1 = 0
var int upCount2 = 0
// 拆分两组成分股代码
symbols1 = ["RELIANCE", "TCS", ...] // 25只
symbols2 = ["HDFCLIFE", "BAJFINANCE", ...] // 25只

// 偶数bar获取第一组数据,奇数bar获取第二组
if bar_index % 2 == 0
    upCount1 := 0
    for sym in symbols1
        closeVal = request.security(sym, timeframe.period, close)
        ma20 = ta.sma(closeVal, 20)
        if closeVal > ma20
            upCount1 += 1
else
    upCount2 := 0
    for sym in symbols2
        closeVal = request.security(sym, timeframe.period, close)
        ma20 = ta.sma(closeVal, 20)
        if closeVal > ma20
            upCount2 += 1

totalUp = upCount1 + upCount2
plot(totalUp, title="总站上年线家数")

方法3:利用TradingView指标组合功能

加载两个拆分的分组指标后,通过TradingView自带的组合功能合并输出:

  • 操作步骤:右键点击其中一个指标的线条,选择「添加到组合」,再选择另一个指标的对应输出,即可自动生成合并后的总数据系列。

内容的提问来源于stack exchange,提问作者Krishnendu Bhattacharyya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:54:19