- 精华
- 0
- 在线时间
- 33 小时
- UID
- 9631
- 积分
- 900
- 帖子
- 11
- 阅读权限
- 60
- 注册时间
- 2010-5-4
- 最后登录
- 2010-11-10
- 精华
- 0
- UID
- 9631
- 积分
- 900
- 帖子
- 11
- 主题
- 5
- 阅读权限
- 60
- 注册时间
- 2010-5-4
- 最后登录
- 2010-11-10
|
本帖最后由 cug02204105 于 2010-8-20 14:13 编辑
正在学习TB编程。在网页上看到如下公式:
公式含义为:假定我们需要编写一个用户函数,该函数需要求出序列变量Price在最近Length周期内的最大值,并且要求出最大值出现的Bar和当前Bar的偏移值。
Params
NumericSeries Price(1);
Numeric Length(10);
NumericRef HighestBar(0);
Vars
Numeric MyVal;
Numeric MyBar;
Numeric i;
Begin
MyVal = Price;
MyBar = 0;
For i = 1 to Length - 1
{
If ( Price > MyVal)
{
MyVal = Price;
MyBar = i;
}
}
HighestBar = MyBar;
Return MyVal;
End
问题:begin下
MyVal = Price 此时 MyVal 的值为1。(因为MyVal的默认值为1且不能确定MyVal的值是当前的bar的Price的值。)
所以在循环的时候当前Bar的值没有参与比较吧。那如果是当前BAR出现最大值的话。公式不是有问题吗?
是不是MyVal=Price 修改为MyVal=Price[0]? |
|