以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- [求助]请教,有没有用变量改写递归或者循环的例子 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=174834) |
|
-- 作者:vakoth -- 发布时间:2020/3/8 12:33:40 -- [求助]请教,有没有用变量改写递归或者循环的例子 因为在PEL里面的循环效率太慢,我在论坛搜索了一下,没搜到,所以请教一下有没有把递归或者循环写成全局变量的例子 比如 c1:=c; v1:=v; a[1]:=100; for i=2 to datacount do begin a:=a[i-1]*if(v1<v1[i-1],c1/c1[i-1],1); end; 能不能改写成变量编写 |
|
-- 作者:wenarm -- 发布时间:2020/3/8 12:40:45 -- 请直接告诉我们你要实现什么样的逻辑需求。 感觉你应该表达的是这个逻吧? VARIABLE:a=100;
你上面代码的逻辑,相当于在每根k线上,都以初始值100,从第一根k计算到当前位置,然后从当前位置向未来方向计算到最新的k线位置。
金字塔中基本不需要在k线Y轴上进行计算,并且这计算也没有量化意义。量化代码的处理,基本上都是沿着X轴(时间轴)处理的。
[此贴子已经被作者于2020/3/8 13:02:55编辑过]
|
|
-- 作者:vakoth -- 发布时间:2020/3/8 13:20:04 -- 版主,我这只是举个例子!!! |
|
-- 作者:vakoth -- 发布时间:2020/3/8 13:44:01 -- len:= 10; hh :=hhv(close,len); ll :=llv(close,len); tenk[0]:= 0; for i=1 to datacount do begin cvi= (close[i]-ll)/(hh-ll); tenk := tenk + sqrt(pow(cvi[i]-cvi[i+1],3)+(1/pow(len,3))); end |
|
-- 作者:vakoth -- 发布时间:2020/3/8 14:31:17 -- 错了,上面的是错的,应该是
|
|
-- 作者:vakoth -- 发布时间:2020/3/8 14:51:07 -- length =14 a = 0 for i = 1 to length a = a + i*(ref(C,length-i)-REF(C,i-1)) 还有这个公式,跟上面的类似,只是表达意思,不知道怎么改写成公式
|
|
-- 作者:wenarm -- 发布时间:2020/3/8 15:41:13 -- 请告诉我们,你这种写法是想实现什么样的逻辑、本身这种写法就是有逻辑问题。
首先:金字塔中的变量是序列变量。你可以理解为数组。所以的序列变量计算年后,其结果还是一个序列变量。 其次:不要把其他软件或者类c的语法带到pel语言中学习。因为你刚接触pel,你可以直接当做pel中没有数组的概念。 写法就是我前面给你的。不需要循环 [此贴子已经被作者于2020/3/8 16:00:36编辑过]
|
|
-- 作者:vakoth -- 发布时间:2020/3/8 15:54:05 -- 版主,请你消消气,我只是请教写法而已,没有别的意思!! 目前还在学习,很多都是在积累和摸索之中,或者你的经验判断认为这是没意义的事情, 但是对我来说,没有积累就没有进步 或许在你眼中有问题的东西很可能是我进步的阶梯 每个小孩都在跌跌碰碰中学会走路的
|
|
-- 作者:wenarm -- 发布时间:2020/3/8 16:02:53 -- 这个只是你感觉在生气。
你现在进入了一个误区。只有知道你想实现什么,我们才能给出段代码,让你从for循环的误区中转变回来。而不是跟着你错误的代码逻辑进行修改。
首先:金字塔中的变量是序列变量。你可以理解为数组。所以的序列变量计算年后,其结果还是一个序列变量。 其次:不要把其他软件或者类c的语法带到pel语言中学习。因为你刚接触pel,你可以直接当做pel中没有数组的概念,同时,在时间坐标轴方向上,不需要循环语句的参与。 写法就是我前面给你的。不需要循环 [此贴子已经被作者于2020/3/8 16:06:19编辑过]
|
|
-- 作者:vakoth -- 发布时间:2020/3/8 16:27:11 -- 其实我一开始是在
|