Pine脚本多条件if语句语法咨询:MT4代码转Pine示例求助
Pine脚本多条件判断与plotarrow使用指南
一、MT4多条件if语句的Pine等价实现
你的MT4代码逻辑可直接迁移到Pine脚本,核心语法差异仅在于变量赋值方式,以下是等价实现:
//@version=5 indicator("双值判断示例", overlay=true) // 声明变量(Pine v5中用=初始化,后续赋值用:=) float MyFirstValue = 1.0 float MySecondValue = 1.0 bool BothValuesNegative = false // 多条件判断逻辑与MT4完全一致 if (MyFirstValue < 0 and MySecondValue < 0) BothValuesNegative := true // 可选简化写法:直接用布尔表达式赋值,省去if语句 // BothValuesNegative := MyFirstValue < 0 and MySecondValue < 0
说明:
- Pine v5中逻辑与运算符支持
and(推荐)或&&,功能完全相同 - 变量初始化用
=,后续修改值必须用:=,这是Pine脚本的语法要求
二、解决plotarrow无法正常调用的问题
你代码的核心错误是将plotarrow放在了if代码块内——Pine脚本的绘图函数(plot、plotarrow、plotshape等)必须在全局作用域执行,不能嵌套在条件语句中。正确的做法是先计算绘图条件,再通过条件控制绘图函数的输出值。
修正后的示例代码:
//@version=5 indicator("双条件箭头绘图示例", overlay=true) float MyFirstValue = 1.0 float MySecondValue = 1.0 // 先计算触发箭头的条件 bool drawDownArrow = MyFirstValue < 0 and MySecondValue < 0 // 使用plotarrow,通过三元运算符控制是否绘制箭头 // 条件满足时返回-1(向下箭头),否则返回na(不绘制) plotarrow(drawDownArrow ? -1 : na, color=color.red, size=size.small)
说明:
plotarrow的参数为-1时绘制向下箭头,1绘制向上箭头,na则不绘制- 三元运算符
condition ? value1 : value2是Pine中实现条件输出的常用方式,替代了MT4中在条件块内调用绘图函数的逻辑
内容的提问来源于stack exchange,提问作者Johnny586
相关产品推荐
相关产品推荐

