请直接告诉我们你要实现什么样的逻辑需求。
感觉你应该表达的是这个逻吧?
VARIABLE:a=100;
c1:=c;
v1:=v;
a:=a*if(v1<ref(v1,1),c1/ref(c1,1),1);
cc:a;
你上面代码的逻辑,相当于在每根k线上,都以初始值100,从第一根k计算到当前位置,然后从当前位置向未来方向计算到最新的k线位置。
金字塔中基本不需要在k线Y轴上进行计算,并且这计算也没有量化意义。量化代码的处理,基本上都是沿着X轴(时间轴)处理的。
len:= 10; hh :=hhv(close,len); ll :=llv(close,len); tenk[0]:= 0; for i=1 to datacount do begin cvi= (ref(close,i)-ll)/(hh-ll); tenk := tenk + sqrt(pow(REF(cvi,i)-ref(cvi,i+1),3)+(1/pow(len,3))); end 意思是这样的,但是因为if内不能使用ref,所以公式是不对的,但是是这个意思 |
请告诉我们,你这种写法是想实现什么样的逻辑、本身这种写法就是有逻辑问题。
首先:金字塔中的变量是序列变量。你可以理解为数组。所以的序列变量计算年后,其结果还是一个序列变量。
其次:不要把其他软件或者类c的语法带到pel语言中学习。因为你刚接触pel,你可以直接当做pel中没有数组的概念。
写法就是我前面给你的。不需要循环
这个只是你感觉在生气。
你现在进入了一个误区。只有知道你想实现什么,我们才能给出段代码,让你从for循环的误区中转变回来。而不是跟着你错误的代码逻辑进行修改。
首先:金字塔中的变量是序列变量。你可以理解为数组。所以的序列变量计算年后,其结果还是一个序列变量。
其次:不要把其他软件或者类c的语法带到pel语言中学习。因为你刚接触pel,你可以直接当做pel中没有数组的概念,同时,在时间坐标轴方向上,不需要循环语句的参与。
写法就是我前面给你的。不需要循环
len:= 10; hh :=hhv(close,len); ll :=llv(close,len); tenk[0]:= 0; for i=1 to datacount do begin cvi= (ref(close,i)-ll)/(hh-ll); tenk := tenk + sqrt(pow(REF(cvi,i)-ref(cvi,i+1),3)+(1/pow(len,3))); end 这个公式上写出现了问题,想请教,后来在论坛看了半天,也没看到类似的公式,才想到请教的,但是因为看了半天,一下子思路太分散了,没有立刻想不起来这个公式,所以临时用第一个例子来提问,现在按照你给的答案来改写这个公式,软件提示风险 |