策略集成Money Flow Index时IF/THEN/Else语法错误修复求助
修复Pine Script中MFI指标的语法错误
问题分析
你的代码存在两个核心问题:
- 最后一行计算
mfi时缺少闭合括号,导致语法结构不完整。 - 负资金流(
negM)的计算逻辑错误,且尝试三元运算符时格式不符合Pine Script要求。
修复后的完整代码
mf_index = input(14, "Money Flow Index Length", type=input.integer) mf_oversold = input(20, "MFI Oversold Level (%)", type=input.float) mf_overbought = input(80, "MFI Overbought Level (%)", type=input.float) // Define MFI tp = (high + low + close) / 3 mf_raw = tp * volume // 修复后的正/负资金流计算(原生if-then-else语法) posM = sum(if mf_raw > nz(mf_raw[1]) then mf_raw else 0, mf_index) negM = sum(if mf_raw < nz(mf_raw[1]) then mf_raw else 0, mf_index) mf_ratio = posM / negM // 补全缺失的闭合括号 mfi = 100 - 100 / (1 + mf_ratio)
关键修复点说明
- 括号缺失修复:最后一行
mfi表达式末尾添加了闭合括号),解决语法结构不完整问题。 - 负资金流逻辑修正:原代码中
(-mf_raw + 0)逻辑错误,MFI的负资金流是累加当日资金流量(当日值小于昨日时),而非取负值,因此改为直接使用mf_raw。 - 三元运算符正确用法:若偏好使用三元运算符,可替换
posM和negM的行,格式如下:
注意严格遵循posM = sum(mf_raw > nz(mf_raw[1]) ? mf_raw : 0, mf_index) negM = sum(mf_raw < nz(mf_raw[1]) ? mf_raw : 0, mf_index)条件 ? 满足时的值 : 不满足时的值的格式,保持语句连贯即可避免"expecting end of line without continuation"错误。
内容的提问来源于stack exchange,提问作者Boamassa
相关产品推荐
相关产品推荐

