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

请求修复AmiBroker中Filtered CRSI AFL代码的ERROR 16语法错误

修复AmiBroker中Filtered Connors RSI的ERROR 16参数过多问题

问题背景

我是AmiBroker平台新手,正尝试将TradingView中常用的Filtered Connors RSI指标改写为AFL代码,运行代码时提示ERROR 16: Too many arguments,原代码如下:

_SECTION_BEGIN("Filtered Connors RSI");

ma_length  = 4;
c_length   = 3;
ud_length  = 2;
roc_length = 100;

// Heikin - Ashi Technique
HaClose = (O + H + L + C) / 4;
//HaOpen = AMA( Ref( HaClose, -1 ), 0.5 );
//HaHigh = Max( H, Max( HaClose, HaOpen ) );
//HaLow = Min(  L, Min(HaClose, HaOpen) );

function crsi(input, len, ud_len, roc_len) {
    upDays = BarsSince(HaClose <= Ref(HaClose,-1));
    downDays = BarsSince(HaClose >= Ref(HaClose,-1));
    updown = IIf(upDays > 0, upDays, IIf(downDays > 0, -downDays, 0));
    rsi1 = RSI(input, len);
    updownrsi = RSI(updown, ud_len);
    percrank = PercentRank( ROC( input,1), roc_len);
    return (rsi1 + updownrsi + percrank)/3;
}

rsi_open = crsi( Open, c_length, ud_length, roc_length);
rsi_high = crsi( High, c_length, ud_length, roc_length);
rsi_low = crsi( Low, c_length, ud_length, roc_length);
rsi_close = crsi( Close, c_length, ud_length, roc_length);

function sHaClose()
{
   return (O + H + L + C) / 4;
}

source = sHaClose(rsi_open, rsi_high, rsi_low, rsi_close);
fcrsi = TEMA(source, ma_length);

PlotGrid(70, colorGreen, pattern=10, width=2, label=True);
PlotGrid(50, colorBrown, pattern=9, width=2, label=True);
PlotGrid(30, colorRed, pattern=10, width=2, label=True);
Plot(fcrsi, "Filtered Connors RSI", colorBlue, styleLine|styleThick, width=2);
_SECTION_END();

错误原因

  • sHaClose函数定义未声明任何参数,但调用时传入了4个参数(rsi_open、rsi_high、rsi_low、rsi_close),参数数量不匹配导致报错。
  • 原函数内部使用原始K线的O/H/L/C,和基于四个CRSI值计算Heikin-Ashi Close的逻辑不符。

修复后的代码

_SECTION_BEGIN("Filtered Connors RSI");

ma_length  = 4;
c_length   = 3;
ud_length  = 2;
roc_length = 100;

// Heikin - Ashi Technique
HaClose = (O + H + L + C) / 4;
//HaOpen = AMA( Ref( HaClose, -1 ), 0.5 );
//HaHigh = Max( H, Max( HaClose, HaOpen ) );
//HaLow = Min(  L, Min(HaClose, HaOpen) );

function crsi(input, len, ud_len, roc_len) {
    upDays = BarsSince(HaClose <= Ref(HaClose,-1));
    downDays = BarsSince(HaClose >= Ref(HaClose,-1));
    updown = IIf(upDays > 0, upDays, IIf(downDays > 0, -downDays, 0));
    rsi1 = RSI(input, len);
    updownrsi = RSI(updown, ud_len);
    percrank = PercentRank( ROC( input,1), roc_len);
    return (rsi1 + updownrsi + percrank)/3;
}

rsi_open = crsi( Open, c_length, ud_length, roc_length);
rsi_high = crsi( High, c_length, ud_length, roc_length);
rsi_low = crsi( Low, c_length, ud_length, roc_length);
rsi_close = crsi( Close, c_length, ud_length, roc_length);

// 修改sHaClose函数,接收四个参数并计算对应的Heikin-Ashi Close
function sHaClose(open_val, high_val, low_val, close_val)
{
   return (open_val + high_val + low_val + close_val) / 4;
}

source = sHaClose(rsi_open, rsi_high, rsi_low, rsi_close);
fcrsi = TEMA(source, ma_length);

PlotGrid(70, colorGreen, pattern=10, width=2, label=True);
PlotGrid(50, colorBrown, pattern=9, width=2, label=True);
PlotGrid(30, colorRed, pattern=10, width=2, label=True);
Plot(fcrsi, "Filtered Connors RSI", colorBlue, styleLine|styleThick, width=2);
_SECTION_END();

修复说明

  • 调整sHaClose函数定义,添加4个参数对应传入的四个CRSI值
  • 函数内部逻辑改为使用传入参数计算Heikin-Ashi Close,匹配指标计算需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:50:29