You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

策略集成Money Flow Index时IF/THEN/Else语法错误修复求助

修复Pine Script中MFI指标的语法错误

问题分析

你的代码存在两个核心问题:

  1. 最后一行计算mfi时缺少闭合括号,导致语法结构不完整。
  2. 负资金流(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 19:08:22