- 精华
- 0
- 在线时间
- 131 小时
- UID
- 18507
- 积分
- 329
- 帖子
- 43
- 阅读权限
- 50
- 注册时间
- 2010-10-28
- 最后登录
- 2021-6-3
- 精华
- 0
- UID
- 18507
- 积分
- 329
- 帖子
- 43
- 主题
- 16
- 阅读权限
- 50
- 注册时间
- 2010-10-28
- 最后登录
- 2021-6-3
|
影响很大,序列函数几乎不能用,强烈质疑TB的这一不负责任的改动,要求恢复到v3
看我的另一个帖子 http://www.tradeblazer.net/forum/thread-14060-1-1.html
-------------------------------------------------------------------------------------------------
再谈V4序列变量使用重大缺陷,请TB严重关注
序列变量在子函数中取值错误
现在有一个指标 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 |
|