如何在脚本中使用if语句创建条件?以及如何实现plotshape为真时隐藏plotchar的显示逻辑?
没问题,我来一步步帮你解决这两个问题~
如何在脚本中使用if语句创建条件?
从你的代码来看,应该是在使用Pine Script(TradingView的脚本语言),这里给你讲两种最常用的if语句用法:
基础条件执行:当条件满足时,执行一段代码块,语法很直观:
if 条件表达式 // 条件成立时要运行的代码 // 比如定义变量、调用绘图函数等举个实际例子:
isBullish = close > open and volume > ta.sma(volume, 5) if isBullish label.new(bar_index, low, "放量阳线", color=color.green)带else分支的双向判断:如果需要处理条件不满足的场景,可以搭配else使用:
if 条件表达式 // 条件成立的逻辑 else // 条件不成立的逻辑比如根据收盘价和开盘价的关系设置背景色:
priceGap = close - open if priceGap > 0 bgcolor(color.new(color.green, 90)) else bgcolor(color.new(color.red, 90))
另外,简单的条件赋值还可以用三元运算符(条件 ? 满足时的结果 : 不满足时的结果),这在你第二个问题里会用到哦~
解决plotchar仅在plotshape为false时显示的问题
你想要的逻辑是:当show_atr_rule为true(也就是plotshape显示黄色圆点)时,不绘制BUY/SELL标记;只有当show_atr_rule为false时,才显示这两个标记。
在Pine Script里,所有绘图函数如果接收的核心参数是na,就会跳过绘制。所以我们可以用三元运算符给plotchar加个条件判断,修改后的代码如下:
plotshape(show_atr_rule ? atrchecklocation : na, style=shape.circle, location=absolute, size=tiny, color=color.yellow, transp=20) // 仅当show_atr_rule为false时,才显示BUY标记 plotchar(show_atr_rule ? na : codiff_long, color=color.green, location=location.abovebar, text="BUY", transp=0) // 仅当show_atr_rule为false时,才显示SELL标记 plotchar(show_atr_rule ? na : codiff_short, color=color.red, location=location.belowbar, text="SELL", transp=0)
逻辑拆解:
- 当
show_atr_rule为true时,plotchar的第一个参数被设为na,函数就不会绘制任何标记; - 当
show_atr_rule为false时,就传入原来的codiff_long/codiff_short,正常显示买卖标记。
这样就完全符合你的需求啦~
内容的提问来源于stack exchange,提问作者Ayodeji




