设为首页收藏本站

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

再谈V4序列变量使用重大缺陷,请TB严重关注 [复制链接]

Rank: 4

精华
0
UID
18507
积分
329
帖子
43
主题
16
阅读权限
50
注册时间
2010-10-28
最后登录
2021-6-3
跳转到指定楼层
1#
发表于 2011-4-29 10:30:29 |只看该作者 |倒序浏览
序列变量在子函数中取值错误
现在有一个指标 TestMD,在条件语句中调用子函数iTest, iTest中只是简单输出序列变量MD
序列变量MD在每个Bar会修改一次,但有三次使用
1. 在IF语句之外输出10个
2. 在IF语句之内输出10个
3. 在IF语句之内的子函数iTest输出10个
结果1,2 都正确,3的输出严重错误, 程序如下
//------------------------------------------------------------------------
// 简称: TestMD
// 名称:
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
Params
String pKey("KKK");
Vars
Numeric i;
NumericSeries DIFF;
NumericSeries DEA;
NumericSeries MD;
NumericSeries MA1;
NumericSeries MA2;
string logfile("C:\\worktb\\logs\\icLogs.txt");
string ss;
Begin
        DIFF = (XAverage( Close, 7 ) - XAverage( Close, 19 ));       
        DEA = XAverage(DIFF,5);
        MD = DIFF - DEA;
        MA1=Average(C,5);
        MA2=Average(C,10);
        ss=Text(SystemDateTime()) + " - " + "BarTime= "  + Text(Date + time) + " Bar= " + Text(CurrentBar) +  " : " ;
        for i=0 to 10
             { FileAppend(LogFile,ss+ " 1. i="+text(i)+ " md="+text(md) ); }
        IF (MA1>MA1[1] && MA1[1] > MA1[2] && MA1 >MA2)
        {
                  for i=0 to 10
             { FileAppend(logfile,ss+"2. i="+text(i)+ " md="+text(md) ); }
                 iTest(pKey,logfile,MD);
         }
       
End


//------------------------------------------------------------------------
// 简称: iTest
// 名称:
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------

Params
    String pKey;
        String LogFile;
        NumericSeries MD;
Vars
        Numeric i;
        string ss;
Begin
     ss=Text(SystemDateTime()) + " - " + "BarTime= "  + Text(Date + time) + " Bar= " + Text(CurrentBar) +  " : " ;
         for i=0 to 10
          { FileAppend(LogFile,ss+" 3. i="+text(i)+ " md="+text(md) ); }

        Return i;
End

输出结果如下:
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  1. i=1 md=1.552115
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  1. i=2 md=1.345458
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  1. i=3 md=0.879360
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  1. i=4 md=1.279989
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  1. i=5 md=0.845014
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  1. i=6 md=0.431001
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  1. i=7 md=0.149780
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  1. i=8 md=-0.550251
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  1. i=9 md=-1.317075
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  1. i=10 md=-1.451735
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 : 2. i=0 md=1.103252
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 : 2. i=1 md=1.552115
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 : 2. i=2 md=1.345458
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 : 2. i=3 md=0.879360
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 : 2. i=4 md=1.279989
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 : 2. i=5 md=0.845014
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 : 2. i=6 md=0.431001
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 : 2. i=7 md=0.149780
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 : 2. i=8 md=-0.550251
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 : 2. i=9 md=-1.317075
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 : 2. i=10 md=-1.451735
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  3. i=0 md=1.103252
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  3. i=1 md=1.552115
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  3. i=2 md=1.552115
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  3. i=3 md=1.552115
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  3. i=4 md=1.279989
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  3. i=5 md=1.279989
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  3. i=6 md=1.279989
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  3. i=7 md=1.279989
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  3. i=8 md=1.279989
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  3. i=9 md=1.279989
20110429.102905 - BarTime= 20110429.094500 Bar= 1000 :  3. i=10 md=1.279989

Rank: 4

精华
0
UID
18507
积分
329
帖子
43
主题
16
阅读权限
50
注册时间
2010-10-28
最后登录
2021-6-3
2#
发表于 2011-4-29 10:34:19 |只看该作者
如果序列变量不能在条件语句中使用,我们怎样实现复杂的逻辑结构.

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
3#
发表于 2011-4-29 11:17:23 |只看该作者
不是序列变量,是序列函数。
也不是不能用,是要符合逻辑的使用

使用道具 举报

Rank: 4

精华
0
UID
18507
积分
329
帖子
43
主题
16
阅读权限
50
注册时间
2010-10-28
最后登录
2021-6-3
4#
发表于 2011-4-29 14:23:00 |只看该作者
请问怎样算是符合逻辑的使用? 我上面的程序如何修改??????

使用道具 举报

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

bottom

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

GMT+8, 2024-5-2 08:45

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部