You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在脚本中使用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

火山引擎 最新活动