为何Pine Script中指定步长+1的for循环实际步长为-1?
问题原因及解决办法
在Pine Script v5的for循环机制里,循环能否执行完全看起始值、结束值和步长的方向是否匹配:
- 当起始值 < 结束值时,步长必须为正数,循环才会从起始值递增到结束值
- 当起始值 > 结束值时,步长必须为负数,循环才会从起始值递减到结束值
你写的for i = 10 to 0 by +1里,起始值10远大于结束值0,步长却设为正的+1,这种情况下循环条件完全不成立,循环体根本不会执行——你看到的“递减”大概率是误解,实际此时ii是空字符串,不会输出任何数字。
如果你的需求是让循环从10递减到0,只需把步长改成-1:
// 修正后的循环代码 ii = "" for i = 10 to 0 by -1 ii += str.format(" {0}", i) runtime.error(str.format("{0}", ii))
运行后runtime.error会输出 10 9 8 7 6 5 4 3 2 1 0,符合预期的递减效果。
要是你确实想用正步长执行循环,就得把起始值和结束值调换,写成for i = 0 to 10 by +1,这样循环会从0递增到10。
内容的提问来源于stack exchange,提问作者Micke
相关产品推荐
相关产品推荐

