变量声明问题咨询

老师好,Average或Highest函数中的变量,按要求应当是序列数值型的。但我下面编写的公式(只是在比较不同变量声明的区别),变量N1声明为数值型时,但在N2及N3的公式中使用,仍可编译通过,并且N2及N3也能输出正确的值。

在此想请教一下

1、下例中,N1变量规范的声明方式,应当是Numeric还是Series<Numeric>?

2、下例中,如果N1变量声明为Numeric是错误的话,请问实际使用当中,会有什么影响?

Vars
    Numeric N1;
    Numeric N2;
    Numeric N3;
    
Events
    OnBar(ArrayRef<Integer> indexs)
    {
        N1 = Close;
        N2 = Average(N1,5);
        N3 = Highest(N1,5);    
        
        PlotNumeric("N2",N2);
        Commentary("N1="+Text(N1));
        Commentary("N2="+Text(N2));
        Commentary("N3="+Text(N3));
    }
 

请教变量声明
变量声明
这种变量声明方式是什么意思?
Then的变量没有被声明
Then变量没有被声明
驱动区域和变量声明结构体应用的不同
咨询全局变量
咨询编写问题
MACD函数,Capital变量,HHV函数没有被声明,怎样处理?
咨询关于series<Numeric>的问题

您好!N1声明为简单变量或序列变量都可以。Average和Highest内部第一个参数是序列类型的,这个称为序列参数。函数内部的序列参数或序列变量,函数内部会根据传入的参数,生成序列参数(或变量)。所以,即使从公式调用时,传入的是一个序列变量,实际在函数内部也只是得到了该序列变量当前BAR的值,并不是把一个序列变量的所有值都传入。如果扯远一点,这其实就是老生长谈的序列函数问题的根源。因为如果有某根BAR该函数没有被调用,函数内部就少了这根BAR的序列参数(或变量)的值,就会导致函数计算出来的值是错误的。所以,我们才会要求,序列函数不要放在条件语句中。