Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[求助]

1楼
xxn139 发表于:2011/4/7 14:52:59

请版主修正下面编译的错误,目前不知路径是否对,且系统没通过.方案如下:

缺省设置:  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;

              

2楼
王锋 发表于:2011/4/7 14:55:59
楼主是否可以下次发帖时附带标题名字?
3楼
xxn139 发表于:2011/4/7 15:01:40
哦哦,下次注意
4楼
董小球 发表于:2011/4/7 17:23:25

 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;

5楼
董小球 发表于:2011/4/7 17:32:10

楼主你真的最基础的语法还没学会,好好的再看看基础教程吧!

在交易函数里这么复杂的条件,不如写成中间变量,然后再在交易里调用,这样就不容易写错了,这些方法在我们的基础教程里都有的!

 

比如: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;

 

这样是不是一目了然了!

 

6楼
xxn139 发表于:2011/4/7 17:56:29
先谢谢,我具体感受一下.
7楼
xxn139 发表于:2011/4/7 18:39:44

BB:=REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1;

DD:=REF("VOL#MIN60",1)/REF("VOL#MIN60",2)>=M1;这两句应该归为同类,而不应该分成两类吧

8楼
董小球 发表于:2011/4/8 9:17:33

方法给你了,希望你可以举一反三!

不管怎么变换原理是一样的!

共8 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.09766 s, 3 queries.