pine-script - 松树脚本:如果与 IFF
问题描述
回到我的基础.. 似乎无法弄清楚“if”和“iff”语句之间的真正区别,而且我没有找到太多详细解释的信息。“如果”和“?:”具有我收集的相同功能。
这是一些示例代码,根据我使用的 if/iff 函数,它们的行为会有所不同。
'''
longStop = input(title="Stop", type=input.bool, defval=false)
//following works fine when passed to plot funtion
longStpTransp = iff(longStop, 0, 100)
//following does not work when passed to plot function
longStpTransp = if (longStop == true)
0
else
100
//also does not work when passed to plot function
longStpTransp = 100
if (longStop == true)
longStpTransp := 0
else
longStpTransp := 100
plot(series=(strategy.position_size > 0) ? longStopPrice : na, color=color.red,
style=plot.style_linebr, transp=longStpTransp, linewidth=4, title="Long Stop")
'''
解决方案
正确的。所有这些在功能上都是等效的。
if then else
iff
?:
iff
与三元条件运算符完全相同,?:
但采用函数式风格。
也iff
比操作员效率略低?:
您的两个示例都正确绘制。
示例 1
//@version=4
study("IF", "IF", false)
longStop = input(title="Stop", type=input.bool, defval=false)
//following does not work when passed to plot function
longStpTransp = if (longStop == true)
0
else
100
plot(longStpTransp)
示例 2
//@version=4
study("IF", "IF", false)
longStop = input(title="Stop", type=input.bool, defval=false)
//also does not work when passed to plot function
longStpTransp = 100
if (longStop == true)
longStpTransp := 0
else
longStpTransp := 100
plot(longStpTransp)
编辑 1以回应此评论
这是一个有趣的观察。
函数中的transp=
参数plot()
需要是一个固定的整数。
所以它不能是一个可变变量。
的返回值iff()
不被视为可变变量,但在使用时if
,它似乎被视为可变变量并被拒绝。
我自己不知道这一点。
我假设iff()
并且if-then-else
是相同的。
显然情况并非如此。
transp(输入整数)图的透明度。可能的值从 0(不透明)到 100(不可见)。可选参数。
推荐阅读
- ios - 如何在 uicollectionview 标题中添加 uicollectionview
- java - 读取 CSV 文件并用 Java 编写 Json 文件
- javascript - Google Drive API Picker v3(2018 年 5 月)窗口消失并给出 .split is not a function 错误
- css - 使用 Z-Index 的图像叠加,但看不到下面的元素
- amazon-web-services - 容错集群队列 - SQS
- oracle - 在更新、插入或删除之前检查触发器中的时间
- java - Jenkins Pipeline Compiler-Warnings 插件声明
- reactjs - React admin-on-rest 添加 X-Total-Count
- dart - 如何在 Flutter TextField 上使用 InputFormatter?
- hive - Hive:如何从多个文件创建多个表或计算每个文件的条目