设为首页收藏本站

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

编译通过加载到图形上,运行不正常! [复制链接]

Rank: 2

精华
0
UID
114737
积分
54
帖子
28
主题
4
阅读权限
30
注册时间
2013-1-9
最后登录
2013-5-6
跳转到指定楼层
1#
发表于 2013-4-12 10:47:54 |只看该作者 |倒序浏览
求面积,比大小,下单

Params
        Numeric FastLength(12);
        Numeric SlowLength(26);
        Numeric MACDLength(9);
Vars
        NumericSeries MACDValue;
        NumericSeries AvgMACD;
        NumericSeries MACDDiff;
        Numeric I;
        Numeric lenth1;
        Numeric lenth2;
        Numeric mj1(0);
        Numeric mj2(0);
       
Begin
        MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;       
        AvgMACD = XAverage(MACDValue,MACDLength);
        MACDDiff = MACDValue - AvgMACD;
        PlotNumeric("MACD",MACDValue);
        PlotNumeric("MACDAvg",AvgMACD);   
        If (MACDDiff >= 0)                               
                PlotNumeric("MACDDiff",MACDDiff,0,Red);
        Else
                PlotNumeric("MACDDiff",MACDDiff,0,Green);
        PlotNumeric("零线",0);                             //macd图形输出
        If (CrossOver(MACDDiff[2],0)){                  //判断:如果向前数第二根BAR满足macddiff上穿0(即金叉),那么从第三根K线开始累加macddiff的绝对值
                I=3;
            While(CrossUnder(MACDDiff[I],0)==false){     //直到某根BAR满足死叉
                     mj1=Abs(MACDDiff[I])+mj1;
                         I=I+1;               
                }
        }
        While(CrossOver(MACDDiff[I],0)==false){      //从刚才那根满足条件的BAR开始向前推寻找金叉
                I=I+1;       
        }
        lenth1=I;
        While(CrossUnder(MACDDiff[I],0)==false){    //继续向前寻找死叉
             I=I+1;
        }
        lenth2=I;       
        For I=lenth1 To lenth2{          //计算从死叉到金叉的面积
         mj2=mj2+Abs(MACDDiff[I]);
         I=I+1;
        }
        If(mj1<mj2)                    //  如果面积1<面积2,多单开仓
        Buy;   
          
End

有无逻辑错误?

Rank: 2

精华
0
UID
114737
积分
54
帖子
28
主题
4
阅读权限
30
注册时间
2013-1-9
最后登录
2013-5-6
2#
发表于 2013-4-12 15:27:37 |只看该作者
每人理啊!自己顶起来

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
116229
积分
2373
帖子
2247
主题
18
阅读权限
70
注册时间
2013-3-4
最后登录
2019-3-24
3#
发表于 2013-4-12 16:30:31 |只看该作者
测试了你的公式,编译时没有完全通过,提示FOR,WHILE,IF,ELSE包含序列函数,可能存在潜在的逻辑错误,请确认代码无误……

序列函数是一种特殊的用户函数,当它的参数或变量中使用了序列数据,我们就称之为序列函数,序列数据作为普通计算机语言和TB语言的重要区别,是进行金融序列数据计算的核心。为了保证序列数据的正确计算,序列函数需要每个Bar都被调用,如果有些Bar没有调用序列函数,序列函数中的序列数据则是上一个Bar的值。除非是您的算法需要,否则建议不要在条件语句,条件语句的判断表达式,循环语句中使用序列函数

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
116229
积分
2373
帖子
2247
主题
18
阅读权限
70
注册时间
2013-3-4
最后登录
2019-3-24
4#
发表于 2013-4-12 16:41:38 |只看该作者
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
116229
积分
2373
帖子
2247
主题
18
阅读权限
70
注册时间
2013-3-4
最后登录
2019-3-24
5#
发表于 2013-4-12 16:42:15 |只看该作者
如4楼红色所示的位置

使用道具 举报

Rank: 2

精华
0
UID
114737
积分
54
帖子
28
主题
4
阅读权限
30
注册时间
2013-1-9
最后登录
2013-5-6
6#
发表于 2013-4-12 16:52:45 |只看该作者
谢谢版主,我运行时,也时常会看到这个提示,一般情况下都能正常运行!
但这次情况特殊,可能我的代码中语句存在些逻辑问题,但是右边不是有注释么,思路摆在那,您看看对不对呢?!
要是不对,应该怎么修改啊?谢谢!

使用道具 举报

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

bottom

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

GMT+8, 2024-5-22 11:24

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部