自定义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
相关产品推荐
相关产品推荐

