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

自定义Mag7指数归一化至IXIC截距异常问题求助

自定义Mag7指数与纳斯达克综合指数(IXIC)对齐问题

我正在尝试将自定义Mag7指数的绘图归一化至起始截距,使其与纳斯达克综合指数(IXIC)对齐。该指数由Mag7个股股价及总流通股计算得出,计划将首次运行时的初始Mag7指数值bar_c_init设为归一化除数factor,再将归一化后的初始值(1)及后续值乘以IXIC初始值以实现图表起始点对齐。但从日志及图表可见,全局变量nq_initial与实时获取的nq_init数值不符,日志显示nq_initial取自屏幕外的历史K线(20000根左侧),而图表主标的在百分比Y轴下可正确显示收益,需解决基于可见窗口实现对齐的问题。

现有代码

// redbulleconomy - notes: improved RaenonX NQ 7 Index script to update % change based on window timeframe
// attribution to RaenonX for original script

//@version=5
indicator("NQ 7 Dynamic", overlay = true)


candle_up = #26a699
candle_down = #ef5350


var float factor = na // This will hold the first value of your index
var bool isFactorSet = false 
log.warning('isFactorSet {0}', isFactorSet)
var float nq_initial = na
var float[] bar_c_history = array.new_float()

[msft_o, msft_h, msft_l, msft_c] = request.security(ticker.new("NASDAQ", "MSFT", session.extended), timeframe.period, [open, high, low, close])
[msft_h_d, msft_l_d, msft_c_d] = request.security(ticker.new("NASDAQ", "MSFT", session.extended), "D", [high, low, close])
msft_shares = request.financial("NASDAQ:MSFT", "TOTAL_SHARES_OUTSTANDING", "FQ")

[aapl_o, aapl_h, aapl_l, aapl_c] = request.security(ticker.new("NASDAQ", "AAPL", session.extended), timeframe.period, [open, high, low, close])
[aapl_h_d, aapl_l_d, aapl_c_d] = request.security(ticker.new("NASDAQ", "AAPL", session.extended), "D", [high, low, close])
aapl_shares = request.financial("NASDAQ:AAPL", "TOTAL_SHARES_OUTSTANDING", "FQ")
log.info('apple close {0}', aapl_c)

[goog_o, goog_h, goog_l, goog_c] = request.security(ticker.new("NASDAQ", "GOOG", session.extended), timeframe.period, [open, high, low, close])
[goog_h_d, goog_l_d, goog_c_d] = request.security(ticker.new("NASDAQ", "GOOG", session.extended), "D", [high, low, close])
goog_shares = request.financial("NASDAQ:GOOG", "TOTAL_SHARES_OUTSTANDING", "FQ")

[nvda_o, nvda_h, nvda_l, nvda_c] = request.security(ticker.new("NASDAQ", "NVDA", session.extended), timeframe.period, [open, high, low, close])
[nvda_h_d, nvda_l_d, nvda_c_d] = request.security(ticker.new("NASDAQ", "NVDA", session.extended), "D", [high, low, close])
nvda_shares = request.financial("NASDAQ:NVDA", "TOTAL_SHARES_OUTSTANDING", "FQ")

[tsla_o, tsla_h, tsla_l, tsla_c] = request.security(ticker.new("NASDAQ", "TSLA", session.extended), timeframe.period, [open, high, low, close])
[tsla_h_d, tsla_l_d, tsla_c_d] = request.security(ticker.new("NASDAQ", "TSLA", session.extended), "D", [high, low, close])
tsla_shares = request.financial("NASDAQ:TSLA", "TOTAL_SHARES_OUTSTANDING", "FQ")

[amzn_o, amzn_h, amzn_l, amzn_c] = request.security(ticker.new("NASDAQ", "AMZN", session.extended), timeframe.period, [open, high, low, close])
[amzn_h_d, amzn_l_d, amzn_c_d] = request.security(ticker.new("NASDAQ", "AMZN", session.extended), "D", [high, low, close])
amzn_shares = request.financial("NASDAQ:AMZN", "TOTAL_SHARES_OUTSTANDING", "FQ")

[meta_o, meta_h, meta_l, meta_c] = request.security(ticker.new("NASDAQ", "META", session.extended), timeframe.period, [open, high, low, close])
[meta_h_d, meta_l_d, meta_c_d] = request.security(ticker.new("NASDAQ", "META", session.extended), "D", [high, low, close])
meta_shares = request.financial("NASDAQ:META", "TOTAL_SHARES_OUTSTANDING", "FQ")

nq_init = request.security(ticker.new("NASDAQ","IXIC",session.extended),timeframe.period, close)
log.warning("Current bar time: {0}-{1}-{2} {3}:{4} UTC", year(time), month(time), dayofmonth(time), hour(time), minute(time))
log.warning("IXIC index value: {0}", nq_init)

if na(nq_initial) and not na(nq_init) // or if barstate.isfirst
    nq_initial := nq_init

bar_c_init = aapl_c * aapl_shares + msft_c * msft_shares + goog_c * goog_shares + nvda_c * nvda_shares + tsla_c * tsla_shares + meta_c * meta_shares + amzn_c * amzn_shares

if not isFactorSet and not na(bar_c_init)
    factor := bar_c_init
    isFactorSet := true

// if na(factor)
//     factor := input.float(750241000, title = "Divisor")

log.warning('bar_c init {0}', bar_c_init)
log.warning("factor {0}", factor)
log.warning("nq initial {0}", nq_initial)

bar_o = (((aapl_o * aapl_shares + msft_o * msft_shares + goog_o * goog_shares + nvda_o * nvda_shares + tsla_o * tsla_shares + meta_o * meta_shares + amzn_o * amzn_shares)) / factor) * nq_initial
bar_h = ((aapl_h * aapl_shares + msft_h * msft_shares + goog_h * goog_shares + nvda_h * nvda_shares + tsla_h * tsla_shares + meta_h * meta_shares + amzn_h * amzn_shares)) / factor * nq_initial
bar_l = ((aapl_l * aapl_shares + msft_l * msft_shares + goog_l * goog_shares + nvda_l * nvda_shares + tsla_l * tsla_shares + meta_l * meta_shares + amzn_l * amzn_shares)) / factor * nq_initial
bar_c = (((aapl_c * aapl_shares + msft_c * msft_shares + goog_c * goog_shares + nvda_c * nvda_shares + tsla_c * tsla_shares + meta_c * meta_shares + amzn_c * amzn_shares)) / factor) * nq_initial

bar_c_prev = (((aapl_c_d[1] * aapl_shares + msft_c_d[1] * msft_shares + goog_c_d[1] * goog_shares + nvda_c_d[1] * nvda_shares + tsla_c_d[1] * tsla_shares + meta_c_d[1] * meta_shares + amzn_c_d[1] * amzn_shares)) / bar_c_init) * nq_initial

bar_color = bar_c > bar_o ? candle_up : candle_down

plotcandle(
     bar_o, bar_h, bar_l, bar_c,
     title = "NQ 7 Index", color = bar_color, wickcolor = bar_color, bordercolor = bar_color, format = 'percent')

初始日志输出

[2024-02-20T16:46:00.000-00:00]: isFactorSet true
[2024-02-20T16:46:00.000-00:00]: Current bar time: 2,024-2-20 11:46 UTC
[2024-02-20T16:46:00.000-00:00]: IXIC index value: 15,589.749
[2024-02-20T16:46:00.000-00:00]: bar_c init 11,667,709,725,440
[2024-02-20T16:46:00.000-00:00]: factor 11,423,353,265,270
[2024-02-20T16:46:00.000-00:00]: nq initial 14,147.935

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:57:03