PineScript V5中最后一个if语句未执行问题求助
PineScript V5 最后一个if语句未执行的排查
你的代码问题出在PineScript的代码块规则上:PineScript不通过缩进识别代码块,必须用大括号{}明确包裹属于同一个条件的多个语句。
看你代码的else块部分:
else if true label.new(bar_index, high, color = color.orange) if true label.new(bar_index, high, color = color.white, yloc = yloc.abovebar)
这里的第二个if true并没有被包含在前一个if true的代码块里——因为没有大括号,前一个if true只控制紧跟的第一行label.new,后面的if true是独立的全局语句。虽然理论上它会在每根K线都执行,但可能因为以下原因导致你看不到效果:
- 大量重复创建的label堆叠在一起,TradingView界面无法清晰显示;
- 没有添加文本内容,你无法区分不同label的存在。
解决方法
用大括号包裹条件内的多个语句,同时给label添加文本方便观察:
//@version=5 indicator("Test", overlay = true) if false if false { label.new(bar_index, high, "橙", color = color.orange) if true label.new(bar_index, high, "红", color = color.red, yloc = yloc.abovebar) } else if true { label.new(bar_index, low, "红下", color = color.red, yloc = yloc.belowbar) if true label.new(bar_index, high, "白", color = color.white) } else if true { label.new(bar_index, high, "橙", color = color.orange) if true label.new(bar_index, high, "白上", color = color.white, yloc = yloc.abovebar) }
修改后,两个label都会在else分支的if true成立时执行,且能通过文本清晰看到不同标签的位置。
内容的提问来源于stack exchange,提问作者Surendra Yannam
相关产品推荐
相关产品推荐

