input:N(15,0,80,1);////
 VARIABLE: SumXi:=0;
 VARIABLE: SqrSumYi:=0; 
     If (DATE<>REF(DATE,1)) THEN BEGIN
     Xi:=1;
 END
  If (DATE=REF(DATE,1)) THEN      Xi:=Xi+1;
  
    If (Xi>N) THEN BEGIN   
     For i = 1 To N DO BEGIN    
    SumXi=SumXi+Ref(Xi,i);  
    SumYi=SumYi+REF(Close,i);  
     END
     Part:=SumXi+SumYi;
    END
我想表达这样的逻辑;基本上上面能够看懂了,但是金字塔不支持在IF语句后面 使用REF,
请咨询如何实现我代码表达的意思;
谢谢,我会即使更新的,
题外话,在解决这个问题上TB就非常容易的,他的向前引用不受IF语句的影响。如果能弄的像TB一样方便就好了
申明;我是金字塔的忠实拥护者;哈哈
c[barpos-1] 即可
或者用一个变量在if....then .... 结构外记录一下
close[barpos-i]
用这个来替换
     For i = 1 To N DO BEGIN    
    SumXi=SumXi+xi[barpos-i];  
    SumYi=SumYi+c[barpos-i];  
     END
这样改吗?
公式中的XI变量之前未做任何的声明初始,这样的做法,是一种很不好的编程习惯
用序列计算试试
提示越界的主要原因是当barpos=1的时候,你去减2,自然会越界。
处理办法是用if语句,对序列做限制,前面头一行加上
if barpos < 3 then
exit;