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

Pine Script(14):if语句的完整形态 - if/else

#Pine Script入门教学

我们已经知道,单纯的if语句解决的是“做”与“不做”的问题。但更多时候,我们的交易逻辑是“二选一”:“如果价格在均线上方,我们就看多;否则,我们就看空”。

这种非此即彼的决策,就需要if语句的完整形态——if/else语句。它给了我们两条明确的代码路径,并且保证有且只有一条会被执行。

if/else语句的基本模式

它的结构非常清晰:if 条件 ... else ...

程序会先判断if后面的条件,如果为true,就执行if下面的代码块,然后整个if/else结构就结束了。如果条件为false,程序会跳过if的代码块,直接执行else下面的代码块。

// 代码结构
if 布尔条件
    // 当“布尔条件”为true时,执行此代码块
else
    // 当“布尔条件”为false时,执行此代码块

这里有个新手需要注意的“坑”:else会接住所有if条件不满足的情况,有时候这可能会包含一些你没预料到的边缘场景。所以在写else逻辑时,要确保它真的能处理好所有“其它”可能性。

同样,缩进规则至关重要,错误的缩进会导致逻辑混乱。

if/else,我们既可以执行二选一的“动作”,比如提交不同方向的订单,也可以“返回”一个二选一的值,比如给一个变量赋予不同的颜色。

案例一:动态设置均线颜色

这个例子非常直观,它使用if/else语句,根据收盘价是在SMA之上还是之下,来动态地决定均线应该显示成什么颜色。这是一种非常常见的图表可视化技巧。

//@version=6
indicator(title="if/else语句 - 案例1", overlay=true)

// 1. 计算20日SMA
smaValue = ta.sma(close, 20)

// 2. 使用if/else语句决定均线的颜色
plotColour = if close > smaValue
    color.green
else
    color.red

// 3. 绘制均线
plot(smaValue, color=plotColour,
     style=plot.style_circles, linewidth=3)

其着色后的均线图效果如下:

使用Pine脚本if/else语句动态设置均线颜色的图表示例

案例二:动态计算策略的止盈目标

下面这个策略案例展示了if/else一个更高级的用法:动态调整策略参数。我们的目标是,止盈位不是一个固定的点数,而是根据市场所处的“势”来动态调整,让止盈更“智能”。

//@version=6
strategy(title="if/else语句 - 策略案例", overlay=true)

// 1. 计算12周期EMA作为多空分界线
emaValue = ta.ema(close, 12)
plot(emaValue, color=color.lime, linewidth=2, title="EMA(12)")

// 2. 使用if/else动态设定止盈目标
priceTarget = if close > emaValue
    emaValue * 1.10
else
    emaValue * 0.99

// 3. 提交订单
if ta.crossover(close, emaValue) // 当价格上穿均线时
    strategy.entry("Enter Long", strategy.long)
    strategy.exit("Exit Long", limit=priceTarget)

在这个策略中,if/else语句根据收盘价与均线的相对位置,动态地计算出不同的priceTarget。这种自适应的参数设置,是让策略更贴合市场节奏的有效方法。

该策略在图表上的效果如下:

使用Pine脚本if/else语句动态计算策略止盈目标的图表示例

总结

if/else语句是你代码里的“岔路口”,它强制你的程序在两条路中选择一条来走,实现了“如果…就…否则…”的完整决策逻辑。它也会根据一个布尔条件的真假,执行两条预设代码路径中的一条:如果条件为true,执行if块;如果为false,执行else块。无论是执行不同的动作,还是返回不同的值,当你需要处理非此即彼的场景时,if/else就是你的不二之选。最后清晰的缩进是它能正确工作的保证。

赞(1)
未经允许不得转载:图道交易 » Pine Script(14):if语句的完整形态 - if/else
分享到

评论 抢沙发

登录

找回密码

注册