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

如何根据TradingView当前主标的自动切换自定义指标?

解决方案:根据主标的动态显示自定义指数指标

方法一:将两个指标逻辑整合到单个脚本(推荐)

直接把两个指数的计算逻辑合并到一个脚本中,无需调用外部自定义指标,实现更简洁:

indicator(title = "Dynamic Index", shorttitle = "DynIdx", overlay = false)

// 获取当前图表的主标的代码
current_ticker = syminfo.ticker

// 封装科技指数计算逻辑
calc_tech_idx() =>
    sec_1_t = request.security("NASDAQ:AAPL", timeframe.period, close) 
    sec_2_t = request.security("NASDAQ:MSFT", timeframe.period, close)
    sec_3_t = request.security("NASDAQ:GOOGL", timeframe.period, close) 
    sec_4_t = request.security("NASDAQ:AMZN", timeframe.period, close) 
    sec_1_t*0.25 + sec_2_t*0.25 + sec_3_t*0.25 + sec_4_t*0.25

// 封装银行指数计算逻辑
calc_bank_idx() =>
    sec_1_b = request.security("NYSE:JPM", timeframe.period, close) 
    sec_2_b = request.security("NYSE:BAC", timeframe.period, close)
    sec_3_b = request.security("NYSE:WFC", timeframe.period, close) 
    sec_4_b = request.security("NYSE:GS", timeframe.period, close) 
    sec_1_b*0.25 + sec_2_b*0.25 + sec_3_b*0.25 + sec_4_b*0.25

// 根据主标的选择要显示的指数
display_value = na
if current_ticker == "AAPL"
    display_value = calc_tech_idx()
elif current_ticker == "JPM"
    display_value = calc_bank_idx()

// 仅绘制有效数据
plot(display_value, title="Dynamic Index", color=color.blue, display=display.data_window)

代码说明

  • 用syminfo.ticker获取当前主标的代码;
  • 把两个指数的计算逻辑封装成函数,提升代码可读性;
  • 通过条件判断给display_value赋值:主标为AAPL时计算科技指数,JPM时计算银行指数,其他情况保持空值na;
  • 绘图时仅显示有有效值的部分,避免空值干扰。

方法二:调用已发布的自定义指标(需指标公开)

如果你的Tech_idx和Bank_idx已经发布为公开指标,可通过request.security()结合指标引用路径调用(需替换实际账户名和指标发布名称):

indicator(title = "Dynamic Index", shorttitle = "DynIdx", overlay = false)

current_ticker = syminfo.ticker

// 调用公开自定义指标,格式:[标的代码]@[用户名]:[指标名称]
tech_idx_value = request.security("NASDAQ:AAPL@your_username:Big.tech", timeframe.period, close)
bank_idx_value = request.security("NYSE:JPM@your_username:Big.Banks", timeframe.period, close)

display_value = na
if current_ticker == "AAPL"
    display_value = tech_idx_value
elif current_ticker == "JPM"
    display_value = bank_idx_value

plot(display_value, title="Dynamic Index", color=color.blue)

你之前代码的问题

  1. request.security仅用于获取证券行情数据,无法直接调用自定义指标;
  2. 变量赋值语法错误:var string b =未完成赋值,且字符串类型不能用NULL;
  3. 你尝试调用的XLF、XLK是ETF,并非自己创建的自定义指标,不符合需求。

内容的提问来源于stack exchange,提问作者mariano.b.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:43:24