开拓者期货期权程序化系统交易论坛
标题:
求助 大家都来看看吧!实在是晕了!
[打印本页]
作者:
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
Params
Numeric n1(5);
Numeric n2(5);
Vars
NumericSeries qqgd;
NumericSeries qqdd;
NumericSeries qqpj;
Numeric qjzf;
Begin
if(currentstaus<2)
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
或:
begin
qqgd = Highest(high,n1);
qqdd = Lowest(low,n2);
qqpj = (qqgd+qqdd)*0.5;
qjzf = Abs(qqgd - qqdd);
if (Open > qqgd[1])
{
Buy(1,min(open,open+minmove*pricescale));
}
Else If(open < qqpj[1]);
{
FileAppend("c:\\lxptest.log","open"+ text(open)+" qqpj="+Text(qqpj[1])+" Day= "+ Text(day)+" time ="+Text(time));
}
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