Pine脚本lowestbars函数报length参数需大于0问题咨询
Pine脚本lowestbars参数报错问题解决
报错根因
- 核心问题出在
barssince()函数的返回值特性:当你的条件mwIsAnchorBot从未被触发过时,barssince()会返回na,而非有效整数 - 你当前的代码逻辑没有处理
na的情况:min(5000, na)结果还是na,int(na)在Pine中会被转换为无效值,后续max(1, 无效值)的运算结果依然是无效值 - 报错提示里的
0.0是Pine运行时错误的显示BUG:当函数接收到na类型的整数参数时,提示信息会错误格式化为浮点型的0.0,和你主动声明的变量类型无关
修复方案
你只需要用nz()函数处理barssince()的na返回值即可,nz()会把第一个参数的na替换为第二个参数的默认值:
bool mwIsAnchorBot = nz(mw, 0) < -60 // 可选:先处理mw本身的na,避免条件返回na int mwBarsSinceAnchBot = int(min(5000, nz(barssince(mwIsAnchorBot), 5000))) // 把未触发条件时的na替换为5000,也可根据你的需求替换为其他≥1的有效值 int loLowestBarsSinceAnchBot = lowestbars(low, max(1, mwBarsSinceAnchBot))
如果你的逻辑是在条件未触发时,取上市以来所有K线的最低价,可以把替换值改成bar_index + 1,适配历史K线数量。
内容的提问来源于stack exchange,提问作者Nique
相关产品推荐
相关产品推荐

