以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  为什么显示“未定义的标识符”?我明明前面赋值了  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=2739)

--  作者:mashimaroinf
--  发布时间:2010/9/6 20:46:56
--  为什么显示“未定义的标识符”?我明明前面赋值了

 

公式如下。我知道这个公式金字塔里有,但是这些语句是原始的算法。为什么我在公式编辑窗口里输入语句-确定以后,它提示未定义的标识符“CC”?这个变量我明明前面赋值了

请指点!很感谢

 

input: n(9,1,60),  p(2,1,60), Q(30,1,60);
Direction:=CLOSE - REF( CLOSE , N ) ;
XX:=ABS( CLOSE - REF( CLOSE , 1 ) ) ;
Volatility:=SUM( XX , N ) ;
ER:=ABS( Direction / Volatility ) ;
FastC:= 2 / ( p + 1 ) ;
SlowC:= 2 / ( q + 1 ) ;
SSC:=ER * ( FastC - SlowC ) + SlowC ;
Constant:=SSC * SSC , Linethick0 ;

YY:=REF( Close , 1 ) + Constant * ( CLOSE - REF( Close , 1 ) );
AA:=IF( SUM( 1 , 0 )= N + 1 , YY , 0 ) ;
BB:=BarsLast( AA>0 ) ;

DD:=REF( C , BB ) ;
CC:=CLOSE;

for m=N + 2 to DATACOUNT DO
  DD[m]:=DD[m - 1] + Constant[m] * ( CC[m] - DD[m- 1] );

AMA:DD;


--  作者:admin
--  发布时间:2010/9/6 20:54:03
--  
目前飞狐的这种循环语句不要在金字塔上运行,请等待日后的升级版
--  作者:wattwei
--  发布时间:2010/9/7 7:29:37
--  
 楼主好像想实现考夫曼自适应均线,金字塔直接提供此函数,参考

http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=1897&skin=0

--  作者:mashimaroinf
--  发布时间:2010/9/7 8:50:55
--  

是的 这是考夫曼的比较原始的代码,我知道飞狐有MD函数用起来好像很方便,但我想知道原始的运算过程所以才问以上的语句。

能否请教一下:

1.以上语句哪部分金字塔不支持?

2。今后是否会解决?


--  作者:wattwei
--  发布时间:2010/9/7 9:02:34
--  
1.好像是不支持循环中单语句的迭代。如不嫌麻烦,经过合理的拆分,还是可以使用的。以前在不知道MD函数时,曾拆分实现过,但是效率估计不高,源码也没有保存
2.看金字塔的开发安排

--  作者:mashimaroinf
--  发布时间:2010/9/7 9:57:31
--  

是的 我注意到变量“DD”被赋值两次,在飞狐里可以 ,在金字塔不行。

 

关于你说的拆分实现,能否指点一二?不用劳驾写全部的代码,只写一两句例子就行 非常感谢!


--  作者:wattwei
--  发布时间:2010/9/7 10:28:15
--  
input: n(9,1,60),  p(2,1,60), Q(30,1,60);
Direction:=CLOSE - REF( CLOSE , N ) ;
XX:=ABS( CLOSE - REF( CLOSE , 1 ) ) ;
Volatility:=SUM( XX , N ) ;
ER:=ABS( Direction / Volatility ) ;
FastC:= 2 / ( p + 1 ) ;
SlowC:= 2 / ( q + 1 ) ;
SSC:=ER * ( FastC - SlowC ) + SlowC ;
Constant:=SSC * SSC , Linethick0 ;

YY:=REF( Close , 1 ) + Constant * ( CLOSE - REF( Close , 1 ) );
AA:=IF( SUM( 1 , 0 )= N + 1 , YY , 0 ) ;
BB:=BarsLast( AA>0 ) ;


DD:REF( C , BB ),coloryellow ;
CC:=CLOSE;


IF NOT(ISLASTBAR) THEN EXIT;

for m=N + 2 to DATACOUNT DO
  DD[m]:=DD[m - 1] + Constant[m] * CC[m]- Constant[m]*DD[m- 1];


图片点击可在新窗口打开查看

 输出DD,即楼主所要。如觉不爽,替换公式中所有DD为AMA,是楼主最终所要。




--  作者:mashimaroinf
--  发布时间:2010/9/7 19:46:06
--  
非常感谢!