设为首页收藏本站

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

求助 大家都来看看吧!实在是晕了! [复制链接]

Rank: 1

精华
0
UID
924
积分
29
帖子
4
主题
4
阅读权限
10
注册时间
2007-12-15
最后登录
2008-1-2
跳转到指定楼层
1#
发表于 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

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
2#
发表于 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的,这样就是一个确定的值了。
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
3#
发表于 2007-12-15 10:34:59 |只看该作者
if(currentstaus<2)
应为if(currentstatus<2)
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
4#
发表于 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交流群33647992。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
5#
发表于 2007-12-15 12:56:40 |只看该作者
Else If(open < qqpj[1]);

去掉最后的;
交易开拓者 - 期货程序化与量化系统自动交易领航者

网站已支持在线开通模拟账户功能

使用道具 举报

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

bottom

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

GMT+8, 2024-5-3 07:57

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部