- 精华
- 0
- 在线时间
- 431 小时
- UID
- 116920
- 积分
- 625
- 帖子
- 530
- 阅读权限
- 60
- 注册时间
- 2013-3-15
- 最后登录
- 2014-5-7
- 精华
- 0
- UID
- 116920
- 积分
- 625
- 帖子
- 530
- 主题
- 64
- 阅读权限
- 60
- 注册时间
- 2013-3-15
- 最后登录
- 2014-5-7
|
nopain 发表于 2013-7-15 14:39
1、Close,High是系统函数,所以不存在初始化的问题,任何时候都能访问到。
2、拿2楼的代码举例:根据上面的 ...
谢谢nopain,我根据你的伪代码是这样理解的,参函数Price1, Price2也是两个序列值,而通过每次对其赋值,其成为了一个和Close数值一样的完整序列。有两个问题还是有些不理解:
1、那作为函数参数(params)的Price1, Price2不是根据每次调用函数而重新声明,分配内存空间的吗?如果是:那每次重新声明以后则原有Price1保存的数值应该就不存在了,从而Price1,Price2不能完整的保留历史每次赋值的结果。但是实际试验中,Price1,Price2的确保留了历史值,那是否意味着函数调用后其Params是分配了一个空间,每次函数调用Params都是使用这个空间的值作为变量值?也就像其他编程语言的静态变量(static)?
2、我为了在一定程度上验证问题1,我编写了如下代码,一个函数,一个公式应用。分别如下:
函数:testFunciton- Params
- NumericSeries myList;
- Vars
- Begin
- //每次去上一个周期的值;
- Return (myList[1]);
- End
复制代码 公式应用:myTest- Params
- Vars
- Numeric myValue;
- NumericSeries count(0);
- Begin
- count = count + 1;
- If(count == 10)
- {
- myValue = testFunction(2013);
- }
- Else
- {
- myValue = testFunction(Close);
- }
- Commentary("myValue = " + Text(myValue));
- End
复制代码 但是其结果让我有些想不明白,如果按照我对问题1的理解,也就是参数是静态保存的,那么应该是第10次对应的参数值是2013,根据函数调用,第11根Bar打印的结果应是:2013。但是第10根Bar就显示了2013。而第11根Bar显示的是对应Bar的Close。其他Bar显示符合逻辑。这就用上面的理由解释不清楚。
希望斑竹能解惑一下。最近真是被这个**Series变量弄的头大。麻烦各位啦! |
|