开拓者期货期权程序化系统交易论坛

标题: 求助 大家都来看看吧!实在是晕了! [打印本页]

作者: lxp    时间: 2007-12-15 01:58:33     标题: 求助 大家都来看看吧!实在是晕了!

以下是我写的一段测试代码,不知为何,无论IF条件是否满足,IF下的语句都会被执行。请大家帮忙看看,是何缘故?
“ Else If(Close < qqpj[1]);“这句与句条件不论是否满足条件,后面的语句都会被执行。执行的结果如下:


Close=4469 qqpj=4478.50 Day= 14 time =0.14
Close=4472 qqpj=4476 Day= 14 time =0.14
Close=4473 qqpj=4475 Day= 14 time =0.14
Close=4474 qqpj=4472 Day= 14 time =0.14
Close=4469 qqpj=4472 Day= 14 time =0.14
Close=4463 qqpj=4472 Day= 14 time =0.14
Close=4467 qqpj=4466.50 Day= 14 time =0.14
Close=4467 qqpj=4466.50 Day= 14 time =0.14
Close=4473 qqpj=4466.50 Day= 14 time =0.14
Close=4480 qqpj=4466 Day= 14 time =0.15
Close=4484 qqpj=4469.50 Day= 14 time =0.15

以下为全部语句
Params

    Numeric n1(5);
    Numeric n2(5);

Vars
    NumericSeries qqgd;
    NumericSeries qqdd;
    NumericSeries qqpj;
    Numeric qjzf;
Begin
    qqgd = Highest(high,n1);
    qqdd = Lowest(low,n2);
    qqpj = (qqgd+qqdd)*0.5;
    qjzf = Abs(qqgd - qqdd);
   
    if (Open > qqgd[1])
    {
        Buy(1,Close);
        
    }
    Else If(Close < qqpj[1]);
    {
    FileAppend("c:\\lxptest.log","Close="+ text(Close)+" qqpj="+Text(qqpj[1])+" Day= "+ Text(day)+" time ="+Text(time));
    }
   
End
作者: 孤舟骑浪    时间: 2007-12-15 10:33:50

  1. Params

  2.     Numeric n1(5);
  3.     Numeric n2(5);

  4. Vars
  5.     NumericSeries qqgd;
  6.     NumericSeries qqdd;
  7.     NumericSeries qqpj;
  8.     Numeric qjzf;
  9. Begin
  10. if(currentstaus<2)
  11. qqgd = Highest(high,n1);
  12.     qqdd = Lowest(low,n2);
  13.     qqpj = (qqgd+qqdd)*0.5;
  14.     qjzf = Abs(qqgd - qqdd);
  15.    
  16.     if (Open > qqgd[1])
  17.     {
  18.         Buy(1,Close);
  19.         
  20.     }
  21.     Else If(Close < qqpj[1]);
  22.     {
  23.     FileAppend("c:\\lxptest.log","Close="+ text(Close)+" qqpj="+Text(qqpj[1])+" Day= "+ Text(day)+" time ="+Text(time));
  24.     }
  25. }
  26. End
  27. 或:
  28. begin
  29.     qqgd = Highest(high,n1);
  30.     qqdd = Lowest(low,n2);
  31.     qqpj = (qqgd+qqdd)*0.5;
  32.     qjzf = Abs(qqgd - qqdd);
  33.    
  34.     if (Open > qqgd[1])
  35.     {
  36.         Buy(1,min(open,open+minmove*pricescale));
  37.         
  38.     }
  39.     Else If(open < qqpj[1]);
  40.     {
  41.     FileAppend("c:\\lxptest.log","open"+ text(open)+" qqpj="+Text(qqpj[1])+" Day= "+ Text(day)+" time ="+Text(time));
  42.     }
  43.    
  44. End
复制代码

close在最后bar中是按每tick更新一次的,所以用close来作为条件判断是不妥当的,应用open、low、high。用close作为买入价在最后bar上也是不妥的,信号容易出现了又消失,道理同上。
如果要使用close,就用上一bar的,这样就是一个确定的值了。
作者: 孤舟骑浪    时间: 2007-12-15 10:34:59

if(currentstaus<2)
应为if(currentstatus<2)
作者: 孤舟骑浪    时间: 2007-12-15 10:40:33

if (Open > qqgd[1])
    {
        Buy(1,min(open,open+minmove*pricescale));
        
    }
应为
if (open > qqgd[1])
    {
        Buy(1,min(open,low+minmove*pricescale));
        
    }
作者: tradeblazer    时间: 2007-12-15 12:56:40

Else If(open < qqpj[1]);

去掉最后的;




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2