w_sure_241 发表于 2014-2-24 22:29:28

while语句在每个BAR上都执行吗?下面代码不太明白

Vars
    Numeric        SumVolume(0);
    Numeric        Counter (0);
Begin
    While (SumVolume < 100000)
    {
        SumVolume = SumVolume + Vol
        Counter = Counter + 1;
    }
End

这是帮助上的一个列子,来计算要产生大于100000成交量需要最近Bar的个数:
我将这个代码插入到FG1405上,输出counter的值,Date=2013-09-16  53
Date=2013-09-17  52
Date=2013-09-18  51
Date=2013-09-23  51
Date=2013-09-24  51
Date=2013-09-25  52
Date=2013-09-26  52
Date=2013-09-27  52
Date=2013-09-30  52
Date=2013-10-08  53
Date=2013-10-09  53
Date=2013-10-10  53
Date=2013-10-11  52
Date=2013-10-14  46
Date=2013-10-15  42
Date=2013-10-16  38
Date=2013-10-17  33
Date=2013-10-18  33
Date=2013-10-21  31
Date=2013-10-22  30
Date=2013-10-23  28
Date=2013-10-24  27
Date=2013-10-25  25
Date=2013-10-28  24
Date=2013-10-29  24
Date=2013-10-30  24
Date=2013-10-31  21
问题1:这也不对吧,玻璃一天的成交量肯定大于10万,怎么会出现counter值为几十。
问题2:这个while循环,在每个BAR上都执行吗
问题3,:counter为什么不定义成序列变量。如果是简单变量,它在每个bar上执行后,不又从新初始化了吗,为什么会输出53,52,51,51……

ample 发表于 2014-2-25 08:39:26

1、楼主加载的fg1405,选择的是日线周期吗?我将公式复制下来,加载,执行得到的结果是
DATE:20130916,3
DATE:20130917,1
DATE:20130918,1
DATE:20130923,2
DATE:20130924,2
DATE:20130925,2
DATE:20130926,1
DATE:20130927,2
DATE:20130930,2
DATE:20131008,3
DATE:20131009,2
DATE:20131010,2
DATE:20131011,2
DATE:20131014,1
DATE:20131015,1
DATE:20131016,1
DATE:20131017,1
DATE:20131018,1
DATE:20131021,1
DATE:20131022,1
DATE:20131023,1
DATE:20131024,1
DATE:20131025,1
DATE:20131028,1
DATE:20131029,1
DATE:20131030,1
DATE:20131031,1
DATE:20131101,1
DATE:20131104,1
DATE:20131105,1
DATE:20131106,1
DATE:20131107,1
DATE:20131108,1
DATE:20131111,1
DATE:20131112,1
DATE:20131113,1
DATE:20131114,1
DATE:20131115,1
DATE:20131118,1
DATE:20131119,1
DATE:20131120,1
DATE:20131121,1
DATE:20131122,1
DATE:20131125,1
DATE:20131126,1
DATE:20131127,1
DATE:20131128,1
DATE:20131129,1
DATE:20131202,1
DATE:20131203,1
DATE:20131204,1
DATE:20131205,1
DATE:20131206,1
DATE:20131209,1
DATE:20131210,1
DATE:20131211,1
DATE:20131212,1
DATE:20131213,1
DATE:20131216,1
DATE:20131217,1
DATE:20131218,1
DATE:20131219,1
DATE:20131220,1
DATE:20131223,1
DATE:20131224,1
DATE:20131225,1
……
2、while是在每个bar上都执行,这是tb程序运行的机制
3、counter是重新初始化了的,因为每一次都需要重新计算。楼主显示的52,53,表示当时那一次的循环执行了那么多次

w_sure_241 发表于 2014-2-25 21:23:22

是的,我又加载了一下,运行结果和你运行的结果相同,多谢。

cheng2014 发表于 2014-2-27 23:51:58

从哪里看到counter值

w_sure_241 发表于 2014-2-28 11:47:18

用FileAppend函数,输出到TXT文件,可以看到。

sjzlhn 发表于 2014-3-3 13:16:56

新手学习中,没看一贴都有收获!

tb1992402481 发表于 2014-3-5 16:19:30

欢迎加入tb期货程序化讨论群304973064, 验证:tb论坛。
页: [1]
查看完整版本: while语句在每个BAR上都执行吗?下面代码不太明白