请版主修正下面编译的错误,目前不知路径是否对,且系统没通过.方案如下:
缺省设置: X缺省=350;最小=0.00001;最大=1000; M1缺省=1.5;最小=0.01;最大=100;M2缺省=0.5;最小=0.01;最大=100;
开多条件:时间在9时10分至9时20分之间并且5分钟分析周期REF(VOL,1)/REF(VOL,2)>=M1或者CLOSE>=开空以来的最低价+X并且5分钟分析周期REF(VOL,1)/REF(VOL,2)>=M1;
平多条件:CLOSE<=开多以来的最高价-X并且5分钟分析周期REF(VOL,1)/REF(VOL,2)<=M2;
开空条件:时间在9时10分至9时20分之间并且5分钟分析周期REF(VOL,1)/REF(VOL,2)<=M2或者CLOSE<=开多以来的最高价-X并且5分钟分析周期REF(VOL,1)/REF(VOL,2)<=M2;
平空条件:CLOSE>=开空以来的最低价+X并且5分钟分析周期REF(VOL,1)/REF(VOL,2)>=M1;
编译如下:
BUY((TIME>=091000 AND TIME<092000 AND REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1)OR
(CLOSE>=LLV(L,TYPEBAR,1,3))+X AND REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1)),1,MARKET), ORDERQUEUE;
SELL((CLOSE<=HHV(H,TYPEBAR,1,1))-X AND
REF("VOL#MIN60",1)/REF("VOL#MIN60",2)<=M2)),1,MARKET), ORDERQUEUE;
BUYSHORT((TIME>=091000 AND TIME<092000 AND REF("VOL#MIN60",1)/REF("VOL#MIN60",2)<=M2)OR
CLOSE<=HHV(H,TYPEBAR,1,1))-X AND
REF("VOL#MIN60",1)/REF("VOL#MIN60",2)<=M2)),1,MARKET), ORDERQUEUE;
SELLSHORT((CLOSE>=LLV(L,TYPEBAR,1,3))+X AND
REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1)),1,MARKET), ORDERQUEUE;
BUY((TIME>=091000 AND TIME<092000 AND REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1)OR
(CLOSE>=LLV(L,TYPEBAR(1,3){这里你没有按照TYPEBAR的语法规则书写参数,语法中写参数用括号括起来,你却用逗号分隔})+X){这一句是判断语句,返回 值是0或者1,你后面加一个X是什么意义,所以应该吧X移动到括号里面,如果不明白运算符的优先级,请百度“运算符优先级”六个字} AND
REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1{")"这里多了一个右括号},1,MARKET), ORDERQUEUE;
SELL((CLOSE<=HHV(H,TYPEBAR(1,1))-X){这里的2个错误和上面一样} AND
REF("VOL#MIN60",1)/REF("VOL#MIN60",2)<=M2{")"这里多了一个右括号},1,MARKET), ORDERQUEUE;
BUYSHORT((TIME>=091000 AND TIME<092000 AND REF("VOL#MIN60",1)/REF("VOL#MIN60",2)<=M2 OR
CLOSE<=HHV(H,TYPEBAR(1,1))-X{")"这里多了一个右括号} AND REF("VOL#MIN60",1)/REF("VOL#MIN60",2)<=M2){")"这里多了一个右括号},1,MARKET), ORDERQUEUE;
SELLSHORT((CLOSE>=LLV(L,TYPEBAR(1,3))+X){这里的2个错误和上面一样} AND REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1{")"这里多了一个右括号},1,MARKET), ORDERQUEUE;
楼主你真的最基础的语法还没学会,好好的再看看基础教程吧!
在交易函数里这么复杂的条件,不如写成中间变量,然后再在交易里调用,这样就不容易写错了,这些方法在我们的基础教程里都有的!
比如:BUY((TIME>=091000 AND TIME<092000 AND REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1)OR
(CLOSE>=LLV(L,TYPEBAR(1,3))+X) AND
REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1,1,MARKET), ORDERQUEUE;
这一句条件比较复杂,你可以改成:
AA:=TIME>=091000 AND TIME<092000;
BB:=REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1;
CC:=CLOSE>=LLV(L,TYPEBAR(1,3))+X;
DD:=REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1;
COND1:=AA AND BB;
COND2:=CC AND DD;
BUY(COND1 OR COND2,1,MARKET), ORDERQUEUE;
这样是不是一目了然了!
BB:=REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1;
DD:=REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1;这两句应该归为同类,而不应该分成两类吧
方法给你了,希望你可以举一反三!
不管怎么变换原理是一样的!