使用数组的 for 循环未返回预期的数字

问题描述 投票:0回答:1

如果将下面的代码添加到图表中,它将计算输入中默认设置为 true 的 7 个项目,并且 7 应显示在表格单元格中。 但是,表格单元格显示 5 或 6 位数字。 这些数字似乎会根据品牌和当前的接近值而变化。 如何获得我期望的 bool 值聚合?

//@version=5
indicator("test", overlay = true)
var int maxPos = 20

pL01_S = input.bool(true,  title="long pos 01", inline="L01-1", display=display.none)
pL02_S = input.bool(true,  title="long pos 02", inline="L02-1", display=display.none)
pL03_S = input.bool(false,  title="long pos 03", inline="L03-1", display=display.none)
pL04_S = input.bool(false,  title="long pos 04", inline="L04-1", display=display.none)
pL05_S = input.bool(false,  title="long pos 05", inline="L05-1", display=display.none)
pL06_S = input.bool(false,  title="long pos 06", inline="L06-1", display=display.none)
pL07_S = input.bool(false,  title="long pos 07", inline="L07-1", display=display.none)
pL08_S = input.bool(false,  title="long pos 08", inline="L08-1", display=display.none)
pL09_S = input.bool(false,  title="long pos 09", inline="L09-1", display=display.none)
pL10_S = input.bool(false,  title="long pos 10", inline="L10-1", display=display.none)
pS01_S = input.bool(true,  title="Short pos 01", inline="S01-1", display=display.none)
pS02_S = input.bool(true,  title="Short pos 02", inline="S02-1", display=display.none)
pS03_S = input.bool(true,  title="Short pos 03", inline="S03-1", display=display.none)
pS04_S = input.bool(true,  title="Short pos 04", inline="S04-1", display=display.none)
pS05_S = input.bool(true,  title="Short pos 05", inline="S05-1", display=display.none)
pS06_S = input.bool(false,  title="Short pos 06", inline="S06-1", display=display.none)
pS07_S = input.bool(false,  title="Short pos 07", inline="S07-1", display=display.none)
pS08_S = input.bool(false,  title="Short pos 08", inline="S08-1", display=display.none)
pS09_S = input.bool(false,  title="Short pos 09", inline="S09-1", display=display.none)
pS10_S = input.bool(false,  title="Short pos 10", inline="S10-1", display=display.none)

pShow = array.new_bool(20, false)
array.set(pShow, 0, pL01_S)
array.set(pShow, 1, pL02_S)
array.set(pShow, 2, pL03_S)
array.set(pShow, 3, pL04_S)
array.set(pShow, 4, pL05_S)
array.set(pShow, 5, pL06_S)
array.set(pShow, 6, pL07_S)
array.set(pShow, 7, pL08_S)
array.set(pShow, 8, pL09_S)
array.set(pShow, 9, pL10_S)
array.set(pShow, 10, pS01_S)
array.set(pShow, 11, pS02_S)
array.set(pShow, 12, pS03_S)
array.set(pShow, 13, pS04_S)
array.set(pShow, 14, pS05_S)
array.set(pShow, 15, pS06_S)
array.set(pShow, 16, pS07_S)
array.set(pShow, 17, pS08_S)
array.set(pShow, 18, pS09_S)
array.set(pShow, 19, pS10_S)

var int tabNo = 0
for i = 0 to maxPos - 1
    if array.get(pShow, i)
        tabNo := tabNo + 1
pTab = table.new(position.top_center, 4, 1, bgcolor=color.new(color.black, 56), frame_color=color.new(color.blue, 80), frame_width=1, border_color=color.new(color.blue, 80),border_width=1)
table.cell(pTab, 0, 0, text=str.tostring(tabNo))
arrays for-loop pine-script pine-script-v5
1个回答
0
投票

您正在每个柱上运行循环,并且因为您的

tabNo
是使用
var
初始化的,所以它永远不会重置。

您可以使用 if

barstate.islast
运行循环,并在每个新柱处重置
tabNo
或删除
var

tabNo = 0
if barstate.islast
    for i = 0 to maxPos - 1
        if array.get(pShow, i)
            tabNo := tabNo + 1
© www.soinside.com 2019 - 2024. All rights reserved.