设为首页收藏本站

 找回密码
 注册
查看: 2339|回复: 1
打印 上一主题 下一主题

关于交易开拓者V4(4.2.2)版本 程序编译的一个BUG [复制链接]

Rank: 2

精华
0
UID
18387
积分
90
帖子
14
主题
11
阅读权限
30
注册时间
2010-10-26
最后登录
2019-3-30
跳转到指定楼层
1#
发表于 2011-12-8 22:46:48 |只看该作者 |倒序浏览
将以下代码在交易开拓者V4(4.2.2)版本编译器内编译后加载到超级图表内运行,你会发现Highest(High,6)的值在if语句外和内是不一样的。为什么同一个系统函数在同一个bar内的运行结果是不同的呢?我怀疑这是一个BUG。还请高手解惑!!!!
Vars
NumericSeries  DK(0);
Begin
       
    DK  =XAverage(close[1],6)-XAverage(close[1],72);
           Commentary("DK="+Text(DK));
           Commentary("DK[1]="+Text(DK[1]));
       Commentary("Highest(High,6)="+Text(Highest(High,6)));
        If(DK>0 And DK[1]<0)//均线向上金叉
    {
      
       Commentary("Highest(High,6)金叉"+Text(Highest(High,6)));
      
    }
        If(DK>0 And DK[1]>0)//均线继续向上排列
    {
      
       Commentary("Highest(High,6)继续"+Text(Highest(High,6)));
      
    }
End

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2011-12-9 10:49:10 |只看该作者
此非bug...
highest之类的函数是序列函数,其计算需要使用序列数据,如果用条件限制了它,那它就不能取正全部所要的数据来计算,于是出来 结果就有可能是不对的。
且在这样的方式编写公式的,编译器都会有提示的。
请使用正确的方法来编写公式。
例如:
  1. Vars
  2.     NumericSeries  DK(0);
  3.     numeric myhigh;
  4. Begin
  5.     myhigh = highest(high,6);  
  6.     DK  =XAverage(close[1],6)-XAverage(close[1],72);
  7.     Commentary("DK="+Text(DK));
  8.     Commentary("DK[1]="+Text(DK[1]));
  9.     Commentary("Highest(High,6)="+Text(Highest(High,6)));
  10.     If(DK>0 And DK[1]<0)//均线向上金叉
  11.     {
  12.              Commentary("Highest(High,6)金叉"+Text(myhigh));
  13.     }
  14.     If(DK>0 And DK[1]>0)//均线继续向上排列
  15.     {
  16.            Commentary("Highest(High,6)继续"+Text(myhigh));
  17.     }
  18. end
复制代码

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-21 03:05

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部