设为首页收藏本站

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

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

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: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
17#
发表于 2007-12-17 15:15:34 |只看该作者
用XAverage就好了阿,算法其实是一样的

使用道具 举报

Rank: 5Rank: 5

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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
15#
发表于 2007-12-17 11:59:03 |只看该作者
您的算法就是对EMA的初值处理不对。包括 孤舟骑浪 写的也是有问题。

使用道具 举报

Rank: 5Rank: 5

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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25132
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
12#
发表于 2007-12-16 22:19:32 |只看该作者
等nopain明天上班帮您写吧
交易开拓者 - 期货程序化与量化系统自动交易领航者

网站已支持在线开通模拟账户功能

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
314
积分
1160
帖子
247
主题
105
阅读权限
60
注册时间
2007-9-9
最后登录
2008-3-3
11#
发表于 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: 7Rank: 7Rank: 7

精华
1
UID
387
积分
2724
帖子
167
主题
33
阅读权限
80
注册时间
2007-9-21
最后登录
2020-2-24
10#
发表于 2007-12-16 11:23:44 |只看该作者
原帖由 wg3k99 于 2007-12-15 18:38 发表
我先编写了一个“用户函数”,然后编写一个“技术指标”,在“技术指标”中调用这个“用户函数”,可是编译的时候说:”最终目标文件编译错误!“,不知是何缘故,请指教,代码如下:

用户函数代码:
//------------------------------- ...


请提供编函数的想法,否则没法进一步修改

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
9#
发表于 2007-12-16 11:20:51 |只看该作者
  1. Params
  2.     NumericSeries Price(1);
  3.         Numeric Length(1);
  4.   numeric iniEma(1);
  5. Vars
  6.         NumericSeries MyEma;
  7. Begin
  8. if(currentbar=length-1)
  9. {
  10. MyEma=iniEma;
  11. }
  12. else if(currentbar>length-1)
  13. {
  14. MyEma=(2*Price+(Length-1)*MyEma[Length-1])/(Length+1);
  15. }else
  16. {
  17. MyEma=invalidnumeric;
  18. }
  19. return MyEma;
  20. End
复制代码

iniEma用笔算或靠估计,大概是多少就填多少.
TradeBlazer交流群33647992。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-18 18:39

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部