设为首页收藏本站

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

请教一个好像很菜的问题。。。 [复制链接]

Rank: 3Rank: 3

精华
0
UID
658
积分
129
帖子
15
主题
2
阅读权限
40
注册时间
2007-11-1
最后登录
2019-4-5
跳转到指定楼层
1#
发表于 2009-3-6 23:56:34 |只看该作者 |倒序浏览
代码如下:
Vars   
        Numeric  mrrq(1);
        Numeric  mcrq(1);
Begin
        Commentary("mrrq " + text(mrrq));
        Commentary("mcrq " + text(mcrq));

   
        mrrq=mrrq+1;
        mcrq=mcrq+1;

        Commentary("mrrq " + text(mrrq));
        Commentary("mcrq " + text(mcrq));
End

我的原意是在超级图表上计算某个结果,从开始bar计算,如上面代码,注释应该显示1,1,2,2,3,3,4,4,5,5,6,6,7,7......一直到共有多少bar数才对,可是为什么全显示1,1,2,2而已,而值不累加?不解。。。。

难道对于每个bar,都会重新运行var赋初值????谢谢,
如果是这样,怎样实现累加?序列?我试过,也不行的。。。。。

[ 本帖最后由 bhwhui 于 2009-3-6 23:58 编辑 ]

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2009-3-7 08:16:37 |只看该作者
要定义为序列变量。
Vars
    NumericSeries mrrq(0);
Begin
    If(CurrentBar>0)
        mrrq = mrrq[1]+1;
   ....
End

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
658
积分
129
帖子
15
主题
2
阅读权限
40
注册时间
2007-11-1
最后登录
2019-4-5
3#
发表于 2009-3-7 20:38:14 |只看该作者
谢谢管理员的回答。
程序还有2个小问题:
1:如果不加入  If(CurrentBar>0)  就不会有计算结果,为什么?我自己开始测试的时候就是没加这句话,就没有输出。。。。不解

2:程序如果这样写:
Vars   
        NumericSeries  rq(1);
Begin
        Commentary("rq " + text(rq));   //第一句
   
          rq=rq[1]+1;
      //If(CurrentBar>0)  rq=rq[1]+1;

        Commentary("rq " + text(rq));  //第二句
       
End

第一句的输出始终为1,为什么?

估计没人回答了,还是谢谢。。。。。自己要再看看TB的序列问题了,和一些标准的语言还是有才别的。。。。。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
658
积分
129
帖子
15
主题
2
阅读权限
40
注册时间
2007-11-1
最后登录
2019-4-5
4#
发表于 2009-3-7 20:43:09 |只看该作者
哦,第2个问题我知道为什么了,谢谢。。。。
还是第一个问题:
如果不加入  If(CurrentBar>0)  就不会有计算结果,为什么?


另外:请教TB交易策略参数优化的时候,次数上限是多少?我运行次数多时总是报错,不知道为什么。2台计算机都如此,另外建议TB对多核计算机优化,现在没有充分发挥多核的优势。。。。。。

[ 本帖最后由 bhwhui 于 2009-3-7 20:49 编辑 ]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
5#
发表于 2009-3-7 20:59:37 |只看该作者
因为第一个Bar的时候,没有rq[1]。这个值是无效值,无效值的任何运算结果还是无效值,则所有的值都变成无效值了。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
658
积分
129
帖子
15
主题
2
阅读权限
40
注册时间
2007-11-1
最后登录
2019-4-5
6#
发表于 2009-3-7 21:53:24 |只看该作者
原帖由 nopain 于 2009-3-7 20:59 发表
因为第一个Bar的时候,没有rq[1]。这个值是无效值,无效值的任何运算结果还是无效值,则所有的值都变成无效值了。



这就是第一个问题的原因?好像不大对,
1: rq=rq[1]+1;

2: If(CurrentBar>0)  rq=rq[1]+1;

一定要加 CurrentBar>0这一句?自己笨点,还是不解

如果是第2个问题的回答,自己认为更不对了,呵呵呵呵

还是谢谢。。。。

使用道具 举报

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

bottom

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

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

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部