1

在 TradingView (tradingview.com) 中处理 pine 脚本时,我一直看到图表顶部附近出现红色文本,上面写着“索引超出深度”540,并且我的脚本无法执行。作为 pine 脚本的新手,我不太确定这意味着什么。

这个问题相当神秘,很难用谷歌搜索,所以我在这里发布了我找到的答案。希望它对某人有用。

4

1 回答 1

2

我通过这篇关于这个问题的详细文章找到了答案。由于 stackoverflow 不喜欢链接腐烂,我将在此处复制足够多的内容以达到重点。

基本上,TradingView 无法计算出您的脚本需要多少历史数据。因此,您要么必须更改脚本的组织来帮助它,要么通过将max_bars_back参数传递给您的study()strategy()调用来手动输入脚本所需的柱数。

示例:我创建了一个运行超过 200 个柱的 SMA。所以,我需要通过strategy("example", max_bars_back=200)200 是这里的最小值,因此您可能需要将值设置得更大,具体取决于您要分析的数据量。

几乎所有 TradingView 指标和策略脚本都使用历史数据进行计算。我们使用多少数据会影响脚本在计算之前“等待”的时间。绘制 20 条高点的指标需要 20 条价格数据才能做到这一点。交易 9 根 SMA 的策略需要 9 个价格柱才能发送订单。

TradingView 可以很好地估计我们的脚本需要多少条价格柱,并在有足够数据之前推迟计算。但有时即使是一个好的估计也可能是错误的。发生这种情况时,TradingView 会触发“超出索引深度”错误消息。

[...]

'out of depth at index' 错误消息可能令人生畏,因为它听起来很抽象。但修复错误只需三个步骤:

  1. 在 Pine 编辑器中打开触发“超出索引深度”错误的指标或策略脚本。
    1. 查看代码以了解您的脚本用于计算的许多历史柱。还要考虑输入选项可以具有的值的范围。
    2. 现在将 max_bars_back 参数添加到脚本中的 study() 或 strategy() 函数中。将该参数的值设置为您估计脚本在其计算中使用的柱数。
      • 您是否已经将 max_bars_back 参数添加到 study() 或 strategy() 函数,但仍然出现“索引深度不足”错误?然后增加 max_bars_back 的值并保存您的脚本以重试。

旁注:起初对我来说,“max_bars_back”听起来像是一个糟糕的名称选择,但现在我认为它之所以这么叫,是因为它是您正在使用的指标中的“最大”数字。因此,如果我有一个 15 天 sma()、一个 50 天 sma() 和一个 200 天 sma(),那么 200 将是我所有计算中所需的“最大”柱。

于 2018-08-18T21:30:34.547 回答