保持敬畏之心
交易是一场持久战

Pine Script(9):比较运算符的使用

我们的任何交易策略,其本质都是一系列“如果…那么…”的判断。比如“如果收盘价站上了均线”,或者“如果RSI低于30”。要让程序替我们完成这些判断,就需要给它一双眼睛:比较运算符。它们专门负责比较两个值的大小或关系,然后告诉我们一个明确的结果:true(是)或者false(否)。这个truefalse的布尔值,就是我们所有交易逻辑的起点。

PineScript里一共有六种比较运算符,它们的用法非常直观:

运算符 名称 说明与示例
< 小于 3 < 10 结果为 true。<br>close < close[2] 仅在当前收盘价低于两根K线前的收盘价时,结果为true
<= 小于或等于 close <= open 仅在当前收盘价小于或等于开盘价时(即阴线或十字星),结果为true
!= 不等于 volume != volume[1] 当成交量与上一根K线不同时,结果为true
== 等于 high == high[1] 仅在当前最高价与上一根K线最高价完全相同时,结果为true
> 大于 10 > 3 结果为 trueclose > ta.ema(close, 30) 仅在当前收盘价高于30周期EMA时,结果为true
>= 大于或等于 ta.sma(close, 10) >= ta.sma(close, 50) 仅在10周期SMA大于或等于50周期SMA时,结果为true

现在,我们通过两个实战案例,看看怎么把这些“眼睛”用在我们的策略里。

案例一:判断“放量下跌”的新低信号

这个例子里,我们的目标是找到一个创下20周期新低的K线,但我们不希望捕捉所有的“新低”,我们还想增加一个过滤条件:这次创下新低,必须是伴随着市场波幅放大的,这样的信号可能更有效。

//@version=6
indicator(title="比较运算符 - 案例1", overlay=true)

// 条件一:判断当前最低价 < 过去20根K线的最低价
plotCircle = low < ta.lowest(low, 20)[1]

// 条件二:判断当前波幅 >= 过去30根K线的平均波幅
circleColour = ta.tr >= ta.sma(ta.tr, 30)[1] ? color.red : color.fuchsia

// 最终绘图
plotshape(plotCircle, style=shape.circle,
     location=location.belowbar, color=circleColour)

这段代码的逻辑很清晰:我们用<>=两个比较运算符,分别建立了两个判断条件,一个判断价格,一个判断波幅。只有当第一个条件满足时,我们才去绘制图形,而图形的颜色则由第二个条件来决定。

将此示例指标添加到图表后,效果如下:

案例二:判断“连续三根K线收低”的下跌趋势

下面的例子会让你看到一个非常重要的编程思想:如何把一个简单的条件,组合成一个更复杂的、描述“状态”的条件。我们的目标是,找出“连续三根K线收盘价依次降低”的区域,这通常意味着一段下跌趋势的形成或延续。

//@version=6
indicator(title="比较运算符 - 案例2", overlay=true)

// 步骤一:当前收盘价 < 上一根收盘价
closedLower = close < close[1]

// 步骤二:判断连续三根K线收低
// 用and连接,要求三者(当前、上一根、上上根)同时为true
backgroundColour = closedLower and closedLower[1] and closedLower[2] ?
     color.new(color.red, 70) : 
     na

// 步骤三:满足条件的高亮出来
bgcolor(backgroundColour)

这个例子里,我们首先用<定义了一个最简单的原子条件closedLower。因为它是一个序列值,我们可以用历史引用运算符[]来获取它过去的值。然后,我们用逻辑运算符and,把“现在”、“昨天”和“前天”的状态连接起来,构建了一个描述“连续状态”的复杂条件。

将此指标添加到图表后,效果如下:

总结

总结一下,比较运算符是你策略的“感官”,它们负责感知市场的状态(高了还是低了?等于还是不等于?)。它们本身只返回truefalse

但当它们和我们后面要讲的逻辑运算符and, or, not以及条件运算符?:结合起来时,就能构建出任何你想要的复杂交易逻辑。它们是所有策略判断的基础。

赞(0)
未经允许不得转载:图道交易 » Pine Script(9):比较运算符的使用
分享到

评论 抢沙发