- 精华
- 0
- 在线时间
- 432 小时
- UID
- 7887
- 积分
- 527
- 帖子
- 65
- 阅读权限
- 50
- 注册时间
- 2010-3-28
- 最后登录
- 2019-11-8
- 精华
- 0
- UID
- 7887
- 积分
- 527
- 帖子
- 65
- 主题
- 23
- 阅读权限
- 50
- 注册时间
- 2010-3-28
- 最后登录
- 2019-11-8
|
接着看另一个更为严重的问题,SetTBProfileString写入后,GetTBProfileString居然读出无效。。。。可以说它就是让航天飞机失事的故障螺丝钉,很危险!
代码如下
我的系统中有一个用户函数,代码如下:-
- UpdateIndicators
- Params
- Vars
- Score Numeric;
- Begin
- /* 1 始化代码*/
- /* 3 始化代码*/
- /* 4 始化代码*/
- /* 5 始化代码*/
- 。。。。。
- /* 以上代码绝无if和for等分支,也无return指令,特此说明,是想说明下面的代码是绝对能执行到的*/
- Score = GetTrendScore(1);
- Score = Average(Score,20);
- SetTBProfileString(Symbol,"SCR",text(Score));
- End
复制代码 有另一个函数,代码如下:- //------------------------------------------------------------------------
- // 简称: mget_scorea
- // 名称: 趋势分数的平均值
- // 类别: 用户函数
- // 类型: 用户函数
- // 输出: 数值型
- //------------------------------------------------------------------------
- Params
- Vars
- string vs1;
- Numeric score;
- Begin
- vs1 = GetTBProfileString(Symbol,"SCR");
- if( vs1==InvalidString )
- {
- score = GetTrendScore(1);
- FileAppend("E://tb.log",text(CurrentBar));
- }Else
- {
- score = Value(vs1);
- }
- return score;
- End
复制代码 接着在交易指令AAS中使用以上连个函数。代码如下:- Params
- Vars
- Begin
- UpdateIndicators();
- /* 很多代码,趋势决策 */
- /* 信号处理 */
- /* 资金管理 */
- score = mget_scorea();
- End
复制代码 结果。。。。。请看,我抓到的证据,有图有真相。。
从图上看,从0 bar到130 bar都是正常的, 131的bar位置写入后,读出无效。接着到214都是正常,215开始读出无效。
[ 本帖最后由 brucecolvin 于 2010-6-22 12:52 编辑 ] |
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
|