设为首页收藏本站

 找回密码
 注册
查看: 7350|回复: 6
打印 上一主题 下一主题

自编函数中遇到一个问题,请指教: [复制链接]

Rank: 5Rank: 5

精华
0
UID
314
积分
1160
帖子
247
主题
105
阅读权限
60
注册时间
2007-9-9
最后登录
2008-3-3
跳转到指定楼层
1#
发表于 2007-12-15 18:38:38 |显示全部楼层 |倒序浏览
我先编写了一个“用户函数”,然后编写一个“技术指标”,在“技术指标”中调用这个“用户函数”,可是编译的时候说:”最终目标文件编译错误!“,不知是何缘故,请指教,代码如下:

用户函数代码:
//------------------------------------------------------------------------
// 简称: MY_HS_EMA
// 名称: 自创EMA函数
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------

Params
    NumericSeries Price(1);
        Numeric Length(10);
Vars
        NumericSeries MyEma(1);
Begin
MyEma=(2*Price+(Length-1)*MyEma[Length-1])/(Length+1);
Return MyEma;
End


//------------------------------------------------------------------------
// 编译版本        GS2004.06.12
// 用户版本        2007/12/15 16:48
// 版权所有        wg3k99
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

技术指标代码:

//------------------------------------------------------------------------
// 简称: MY_ZB_MACD_2
// 名称: 自创MACD指标(2)
// 类别: 技术指标
// 类型: 移动平均类
// 输出:
//------------------------------------------------------------------------
Params
Numeric Long(1);
Numeric Short(1);
Numeric M(1);
Vars
NumericSeries Diff(1);
NumericSeries Dea(1);
NumericSeries MacdDiff(1);
Begin
Diff=MY_HS_EMA(Close,Short)-MY_HS_EMA(Close,Long);
Dea=MY_HS_EMA(Diff,M);
MacdDiff=2*(Diff-Dea);
PlotNumeric("DIFF",Diff,White);
PlotNumeric("Dea",Dea,Yellow);
If (MACDDiff >= 0)
  PlotNumeric("MACDDiff",MACDDiff,Red);
Else
  PlotNumeric("MACDDiff",MACDDiff,rgb(000,255,255));
PlotNumeric("零线",0,rgb(000,255,255));
End

//------------------------------------------------------------------------
// 编译版本 GS2004.06.12
// 用户版本 2007/12/15 18:08
// 版权所有 wg3k99
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
//   每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
欢迎加入交易开拓者QQ群:38529330,让我们一起交流,一起提高,一起赚钱吧。。。

Rank: 5Rank: 5

精华
0
UID
314
积分
1160
帖子
247
主题
105
阅读权限
60
注册时间
2007-9-9
最后登录
2008-3-3
2#
发表于 2007-12-15 22:26:55 |显示全部楼层
原帖由 tradeblazer 于 2007-12-15 21:37 发表
My_EMA函数写法应该是有问题,你的算法需要在CurrentBar < Length时进行初始的处理



老大,帮忙调试一下啊,。。。。
欢迎加入交易开拓者QQ群:38529330,让我们一起交流,一起提高,一起赚钱吧。。。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
314
积分
1160
帖子
247
主题
105
阅读权限
60
注册时间
2007-9-9
最后登录
2008-3-3
3#
发表于 2007-12-15 22:57:17 |显示全部楼层
改了“用户函数”好“技术指标”中的参数和变量名称后,编译通过,可是无法在“超级图标”中调用,调用结果,一直显示不出来。。。
欢迎加入交易开拓者QQ群:38529330,让我们一起交流,一起提高,一起赚钱吧。。。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
314
积分
1160
帖子
247
主题
105
阅读权限
60
注册时间
2007-9-9
最后登录
2008-3-3
4#
发表于 2007-12-16 22:09:36 |显示全部楼层
想法大致就是把文华的EMA函数引用过来,然后以引用过来的EMA函数为基础,创建:MACD指标。文华的计算方式如下:
(1)文华的EMA计算公式:

EMA(X,N) 表示求X在N周期内的平滑移动平均。(指数加权)
计算方法:EMA(X,N)=[2*X+(N-1)*EMA(N-1)]/(N+1) 其中EMA(N-1)为第(N-1)天的EMA值


(2)文华的MACD计算公式:

DIFF : EMA(CLOSE,SHORT) - EMA(CLOSE,LONG),COLORWHITE;
DEA  : EMA(DIFF,M),COLORYELLOW;
2*(DIFF-DEA),COLORSTICK;


[ 本帖最后由 wg3k99 于 2007-12-16 22:12 编辑 ]
欢迎加入交易开拓者QQ群:38529330,让我们一起交流,一起提高,一起赚钱吧。。。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
314
积分
1160
帖子
247
主题
105
阅读权限
60
注册时间
2007-9-9
最后登录
2008-3-3
5#
发表于 2007-12-17 10:24:17 |显示全部楼层
nopain大哥,快帮我解决一下啊。。。。
欢迎加入交易开拓者QQ群:38529330,让我们一起交流,一起提高,一起赚钱吧。。。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
314
积分
1160
帖子
247
主题
105
阅读权限
60
注册时间
2007-9-9
最后登录
2008-3-3
6#
发表于 2007-12-17 11:36:27 |显示全部楼层
呵呵,其实,我比较了一下,文化和TB的计算结果,相差无几,0.00,所以,看来TB的XAverage()函数和文华的EMA()函数,真的是一样的,看来问题已经算解决了,不过我编写的代码,为什么可以编译,却不能正常运行呢?还请大家多多指教啊。。。
欢迎加入交易开拓者QQ群:38529330,让我们一起交流,一起提高,一起赚钱吧。。。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
314
积分
1160
帖子
247
主题
105
阅读权限
60
注册时间
2007-9-9
最后登录
2008-3-3
7#
发表于 2007-12-17 12:17:22 |显示全部楼层
那该如何处理呀,:-)
欢迎加入交易开拓者QQ群:38529330,让我们一起交流,一起提高,一起赚钱吧。。。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-18 02:59

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部