以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 公式中有没有办法实现递归 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=8926) |
-- 作者:杉杉 -- 发布时间:2011/11/13 10:29:37 -- 公式中有没有办法实现递归 请教各位,我想实现以下的语句,但是编译时报错。我尝试了其他系统,通达信和和讯遇到同样问题,不过博易可以。
SVOL:=REF(SVOL,1)+VOL;
有没有什么方法可以替代呢?先谢谢各位了!!! |
-- 作者:王锋 -- 发布时间:2011/11/13 10:35:04 -- VARIABLE:SVOL=0; SVOL:=REF(SVOL,1)+VOL; |
-- 作者:杉杉 -- 发布时间:2011/11/13 10:47:36 -- 以下是引用王锋在2011-11-13 10:35:04的发言:
VARIABLE:SVOL=0; SVOL:=REF(SVOL,1)+VOL; 非常感谢您的回复。我刚才试了一下,编译可以通过。不过SVOL无法实现累加。我写那条语句的初衷是累加一定周期的成交量,但是这样写之后,每次都归零了。 就跟C语言一样,如果是静态变量,定义的时候可以初始化为0,例如 static int abc=0;以后每次调用定义的语句不起作用。但是动态变量就不行了。 |
-- 作者:阿火 -- 发布时间:2011/11/13 11:21:49 -- VARIABLE:SVOL=0; SVOL:=SVOL+VOL;//把每根K线的vol累加到SVOL
你想累加一定周期的成交量。实际举个例子吧。 |
-- 作者:杉杉 -- 发布时间:2011/11/13 19:15:23 -- 比如我想累加凡是MACD是红柱时的成交量,当绿柱则为0。例如下边的指标,在博易上是可以实现的。其中REF(SUM_VOL,1)这一句为递归调用。
DIFF : EMA(CLOSE,SHORT) - EMA(CLOSE,LONG); SUM_VOL:IF(MACD>0,REF(SUM_VOL,1)+VOL,0);
|
-- 作者:阿火 -- 发布时间:2011/11/14 9:56:04 -- 小case variable:svol=0; if macd>0 then svol:=svol+vol; else svol:=0; |
-- 作者:杉杉 -- 发布时间:2011/11/14 15:25:01 -- 以下是引用leevolvo在2011-11-14 9:56:04的发言:
小case variable:svol=0; if macd>0 then svol:=svol+vol; else svol:=0; 非常感谢您的回复。 不过我需要的是累加前一天的SVOL,REF(S_VOL,1)。您的代码是只能加今天的。 而我提出此问题的根本原因在于以下的语句无法编译通过。目前好像只有博易才行。 SVOL:=REF(SVOL,1)+VOL; |
-- 作者:fly -- 发布时间:2011/11/14 15:33:34 -- 无法编译通过,不支持您所写的格式.
图表上有几天的数据,就会显示多久 variable:svol=0; if macd>0 then svol:=svol+vol;
vv:svol,noaxis; |
-- 作者:阿火 -- 发布时间:2011/11/14 23:40:09 -- 以下是引用杉杉在2011-11-14 15:25:01的发言:
非常感谢您的回复。 不过我需要的是累加前一天的SVOL,REF(S_VOL,1)。您的代码是只能加今天的。 而我提出此问题的根本原因在于以下的语句无法编译通过。目前好像只有博易才行。 SVOL:=REF(SVOL,1)+VOL;
本来就是累加昨天的。楼主还没理解金字塔的运行原理 |