第二种是对的。sumbars是从1开始计数的。而barslast从0开始计数
两种实现思路都没有错。但是第一种的算法写错了。你理解下下面的代码就知道了。两个barslast的结果是存在2个0,所以应该加2.
//上次:barslast(time=133000);
//上上次:ref(barslast(time=133000),上次+1)+1+上次+1;
上次:barslast(time=133000)+1;
上上次:ref(barslast(time=133000),上次)+上次+1;
aa:sumbars(time=133000,1);
bb:sumbars(time=133000,2);
交叉值1:ref(交叉,交叉距离1);有值的原因是:你这个位置始终获得的都是上根交叉位置。
交叉值2:ref(交叉,交叉距离2);没有值的原因是:你始终得到的是交叉位置上一根k的结果,自然始终是0.
你自己想一下:如果在某根k上“交叉距离1”等于4 ,那么“交叉距离2”就是等于5。那你向前引用的结果向前数4根就是交叉位置。数5根就是交叉的上一根