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

Pine Script编写RCI策略出现ord函数调用警告如何解决

问题解决方法

这个警告的触发核心是Pine Script编译器要求所有自定义计算函数必须保证每根K线都被调用,避免不同K线的计算上下文不一致。你当前代码中ord函数的调用链路嵌套在rci函数内,仅在条件判断时才会触发调用,被编译器判定为存在不被每根K线执行的风险,因此抛出警告。

具体修改方案
  • 新增全局变量提前计算RCI数值,保证每根K线都会触发ord函数的调用
  • 后续条件判断直接使用提前计算好的RCI变量即可,原有交易逻辑完全不变
修改后的完整代码
//@version=4
strategy(title="RCI strategy test")

itv = input(12, "interval")
src = input(close, "source")

ord(seq, idx, itv) =>
    p = seq[idx]
    o = 1
    s = 0
    for i = 0 to itv - 1
        if p < seq[i]
            o := o + 1
        else
            if p == seq[i]
                s := s + 1
    o + (s - 1) / 2.0

d(itv) =>
    sum = 0.0
    for i = 0 to itv - 1
        sum := sum + pow((i + 1) - ord(src, i, itv), 2)
    sum

rci(itv) => (1.0 - 6.0 * d(itv) / (itv * (itv * itv - 1.0))) * 100.0

// 新增:全局作用域提前计算RCI值,保证ord函数每根K线都被调用
rci_val = rci(itv)

cond1 = rci_val <= 0
cond2 = rci_val > 0

if (cond1)
    strategy.order("L", strategy.long)

if (cond2)
    strategy.close_all()

修改后不会改变原有策略的任何计算逻辑和交易信号,仅调整了计算顺序让编译器确认ord函数每根K线都会执行,警告即可消失。

内容的提问来源于stack exchange,提问作者pine_beginner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:27:03