以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请问我用IF错在何处  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=59916)

--  作者:haizxj
--  发布时间:2013/12/13 23:13:16
--  请问我用IF错在何处

费率设置设ASSET为10万

 

IF ASSET>=100000 THEN BEGIN
平空:SELLSHORT(PK and HOLDING<0,1,THISCLOSE),ORDERQUEUE;                  //平空信号
开多:BUY(KD AND HOLDING=0,1,THISCLOSE),ORDERQUEUE;          //开多信号
平多:SELL(PD and HOLDING>0,1,THISCLOSE),ORDERQUEUE;                       //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE),ORDERQUEUE;     //开空信号
END
ELSE
if ASSET< 100000  then BEGIN
平空:SELLSHORT(PK and HOLDING<0,1,THISCLOSE),ORDERQUEUE;
平多:SELL(PD and HOLDING>0,1,THISCLOSE),ORDERQUEUE; 
END

 

显示编译错误,说平空不能重复,可是如果我想实现ASSET 小于八万平掉所有仓位,等下次虚拟运算,如果大于再次开平仓.怎么样实现

[此贴子已经被作者于2013/12/13 23:13:59编辑过]

--  作者:王锋
--  发布时间:2013/12/14 9:15:39
--  

不可能不让多次平空的,你把完整代码贴过来我们帮你看看


--  作者:haizxj
--  发布时间:2013/12/14 12:17:30
--  
就是用的你们的软件的KDJ交易系统呀
--  作者:王锋
--  发布时间:2013/12/14 17:11:45
--  
你完整贴过来吧
--  作者:haizxj
--  发布时间:2013/12/15 21:01:40
--  


RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
J:=3*K-2*D;

手数:=ss;
//交易条件

开多平空条件:=CROSS(J,0);//开多平空条件
开空平多条件:=CROSS(100,J);//开空平多条件
KD:=cross(j,0);
PD:=cross(100,j);
KK:=pd;
pk:=kd;

IF ASSET>=100000 THEN BEGIN
平空:SELLSHORT(PK and HOLDING<0,1,THISCLOSE),ORDERQUEUE;                  //平空信号
开多:BUY(KD AND HOLDING=0,1,THISCLOSE),ORDERQUEUE;          //开多信号
平多:SELL(PD and HOLDING>0,1,THISCLOSE),ORDERQUEUE;                       //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE),ORDERQUEUE;     //开空信号
END
ELSE
if ASSET< 100000  then BEGIN
平空:SELLSHORT(PK and HOLDING<0,1,THISCLOSE),ORDERQUEUE;
平多:SELL(PD and HOLDING>0,1,THISCLOSE),ORDERQUEUE; 
END


--  作者:RogarZ
--  发布时间:2013/12/15 22:12:59
--  

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
J:=3*K-2*D;

手数:=ss;
//交易条件

开多平空条件:=CROSS(J,0);//开多平空条件
开空平多条件:=CROSS(100,J);//开空平多条件
KD:=cross(j,0);
PD:=cross(100,j);
KK:=pd;
pk:=kd;

IF ASSET>=100000 THEN BEGIN
平空:SELLSHORT(PK and HOLDING<0,1,THISCLOSE),ORDERQUEUE;                  //平空信号
开多:BUY(KD AND HOLDING=0,1,THISCLOSE),ORDERQUEUE;          //开多信号
平多:SELL(PD and HOLDING>0,1,THISCLOSE),ORDERQUEUE;                       //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE),ORDERQUEUE;     //开空信号
END
ELSE
if ASSET< 100000  then BEGIN
平空:SELLSHORT(PK and HOLDING<0,1,THISCLOSE),ORDERQUEUE; 
平多:SELL(PD and HOLDING>0,1,THISCLOSE),ORDERQUEUE;  
END


一个系统 相同的变量名只能是1个 


--  作者:haizxj
--  发布时间:2013/12/16 9:13:15
--  

怎么样解决这个问题呢


--  作者:qwer123
--  发布时间:2013/12/16 12:24:58
--  
把“平空”改为“平空1”,“平空2” 或者干脆把“平空:”去掉就ok。