ptLibert 发表于 2012-10-11 13:54:07

自定义”公共函数“的用法

本帖最后由 ptLibert 于 2012-10-12 20:11 编辑

在金魔方中新增了一类指标类型,“F公共函数”,这类指标有何用处呢?下面举例说明。
我们知道,同行软件会不断推出一些有用的函数,而金魔方暂时又没有内置,那怎么办?用公共函数自己实现就是。

例如,通x信有一个函数expmema,是金魔方目前还没有实现的,同时我们又知道它的算法,那就可以把它放到公共函数中。

首先:我们知道expmema的算法是这样的,用普通指标表示:
#RunMode Run_By_Bar
input :n(5,1,100000);
maN:=ma(c,n);
if(BarPos<n)then
  cc:=invalid;
else  
if( BarPos==n) then
  cc:= maN;  
else
  cc:=(2*c+ (n-1)*cc)/(n+1);
expmema:cc;  

显然,这么长的代码不太好直接使用。所以需要放到公共函数中:
我们在”F公共函数“类目下新建公式,取一个我们喜欢的名字,例如”myExpmEma"然后填入以下代码
INPUT:
  NumericSeries x,
  Numeric n;
  
maN := ma(x, n);
if(BarPos<n)then
        cc:=invalid;
else  if( BarPos==n) then
        cc:= maN;  
else
        cc:=(2*x+ (n-1)*cc)/(n+1);
return cc;  


最后,我们可以建一个测试指标看看效果
#RunMode Run_By_Bar
myExpmEma( c, 5);



wh8510 发表于 2012-10-11 14:49:32

通x信:lol    如果有N个参数要输出该怎么写呢,比如一个公式中有A ,B,D 三个参数要输出,return 后面怎么写?

ptLibert 发表于 2012-10-11 17:50:04

wh8510 发表于 2012-10-11 14:49 static/image/common/back.gif
通x信    如果有N个参数要输出该怎么写呢,比如一个公式中有A ,B,D 三个参数要输出,return 后面怎么写 ...

好问题
公共函数指标支持两种特别的数据类型:numericRef和stringRef
这两种数据类型的特点是在函数内部的改变可以带到函数外

例如,我们撰写一个这样的公共函数refFunc
INPUT:
  Numeric P1,
  NumericRef P2,
  NumericRef P3,
  StringRef P4;


  p2:=p1+10;
  p3:=p1+20;
  P4:= NumToStr( c, 2 );
return 1;


然后再写一个这样的指标:
#RunMode Run_By_Bar
cc:=0;
cc1:=0;
str := '';
aa:=refFunc( c, cc, cc1, str);
cc;
cc1;
Comment( str );看看效果。

wh8510 发表于 2012-10-11 23:51:48

谢谢管理员的解答,但是还有1个问题没有搞清楚。
1 ,这句 Comment( str ); 应该在走势图左上角显示收盘价吧,但是输出的确是一条数值为0的水平线,而且还会影响与主图K线的结合。而且第二个指标我是放在技术指标分类里面的,为什么每次载入的时候都是按照交易策略载入会出现策略设置,见下图。

ptLibert 发表于 2012-10-12 08:47:26

wh8510 发表于 2012-10-11 23:51 static/image/common/back.gif
谢谢管理员的解答,但是还有1个问题没有搞清楚。
1 ,这句 Comment( str ); 应该在走势图左上角显示收盘价 ...

这两个是bug,将在今天的升级中解决

花生油 发表于 2012-11-4 06:57:02

升级中解决了

312gd 发表于 2013-3-5 11:13:39

好贴,学习 了

bluechina 发表于 2013-4-1 15:27:31

ptLibert 发表于 2012-10-12 08:47 static/image/common/back.gif
这两个是bug,将在今天的升级中解决

请问,公共函数必须在逐根模式下吗?
像TrueLow这样的?

bluechina 发表于 2013-4-1 15:38:23

ptLibert 发表于 2012-10-12 08:47 static/image/common/back.gif
这两个是bug,将在今天的升级中解决

错误 行:47 列:7 变量:TRUELOW 没有初始化

ptLibert 发表于 2013-4-1 19:48:02

bluechina 发表于 2013-4-1 15:38 static/image/common/back.gif
错误 行:47 列:7 变量:TRUELOW 没有初始化

什么样的公式
页: [1] 2
查看完整版本: 自定义”公共函数“的用法