以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]这样的代码逻辑会错吗?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=84356)

--  作者:jason123
--  发布时间:2015/8/24 14:11:51
--  [求助]这样的代码逻辑会错吗?
代码如下
 {没有仓位}
if A43=0 and 多信号 then begin
TBUY((TBUYHOLDINGEX(AC,PZ,1)=0 AND (TSELLHOLDINGEX(AC,PZ,1) = 0)),B04,LMT,A01,0,AC,PZ); 
A43:=1;
END 

if A43=0 and 空信号 then begin
TBUYSHORT((TBUYHOLDINGEX(AC,PZ,1)=0 AND (TSELLHOLDINGEX(AC,PZ,1) = 0)),B04,LMT,A01,0,AC,PZ); 
A43:=-1;
END 
{有买持仓位}
if A43:=1   then begin
TCANCELEX(1,2,AC,PZ);//取消未成交的平多单
TCANCELEX(1,3,AC,PZ);//取消未成交的开空单

{如有没有平仓的空单,止损50个点}
IF (TSELLHOLDINGEX(AC,PZ,1)>0 AND (DYNAINFO(7)-TAVGENTERPRICEEX2(AC,PZ,1)>=ZSDS))then BEGIN
TSELLSHORT(1,TSELLHOLDINGEX(AC,PZ,1),MKT,0,0,AC,PZ);
END{如有没有平仓的空单,全部取消}

if 平多信号 then begin
TSELL(1,TBUYHOLDINGEX(AC,PZ,2),LMT,A02,0,AC,PZ);
A43:=0;
END

if 开空信号 then begin
TBUYSHORT((TBUYHOLDINGEX(AC,PZ,1)>=0),B04,LMT,A01,0,AC,PZ);
A43:=-(1)
END

END

{有卖持仓位}
if A43:=-1   then begin
TCANCELEX(1,4,AC,PZ);//取消未成交平空单
TCANCELEX(1,1,AC,PZ);//取消未成交开多单


{如有没有平仓的多单,止损50个点}
IF (TBUYHOLDINGEX(AC,PZ,1)>0 AND (TAVGENTERPRICEEX2(AC,PZ,0)-DYNAINFO(7)>=ZSDS))then BEGIN
TSELL(1,TBUYHOLDINGEX(AC,PZ,1),MKT,0,0,AC,PZ);
END{如有没有平仓的多单,止损50个点}

if 平空信号 then begin
TSELLSHORT(1,TSELLHOLDINGEX(AC,PZ,2),LMT,A02,0,AC,PZ);
A43=0;
END

if 开多信号 then begin
TBUY((TSELLHOLDINGEX(AC,PZ,1)>=0),B04,LMT,A01,0,AC,PZ);
A43:=1;
END

END



--  作者:jinzhe
--  发布时间:2015/8/24 14:17:48
--  
什么逻辑?你的逻辑是什么?
[此贴子已经被作者于2015/8/24 14:17:56编辑过]

--  作者:jason123
--  发布时间:2015/8/24 14:22:15
--  
实际运行后,老是报单后,马上又被撤单了,日志如下
2015-08-24 13:42:35.660    【下单】实际持仓为0下单失败
2015-08-24 13:42:35.661    【下单】IC09 价6527.566406 量1 买卖0 类型0 开平0 账户512810491 Formula 1
2015-08-24 13:42:35.661    【下单】确认报单已发送 ID=-1568729433 RefID = 460
2015-08-24 13:42:35.706    【指令】收到回报指令 ID = -1568729433 RefID = 460
2015-08-24 13:42:35.723    【回报】512810491 : IC1509 - 已报单 1 价格:6527.6 开 买
2015-08-24 13:42:35.748    【指令】收到回报指令 ID = -1568729433 RefID = 460
2015-08-24 13:42:36.021    【后台】IC09 TCANCELEX 出现信号 类型:4 帐号:512810491
2015-08-24 13:42:36.022    【后台】IC09 TCANCELEX 出现信号 类型:1 帐号:512810491
2015-08-24 13:42:36.027    【后台】IC09 运行结束
2015-08-24 13:42:36.028    【后台】IF09 运行结束
2015-08-24 13:42:36.041    【指令】收到回报指令 ID = -1568729433 RefID = 460
2015-08-24 13:42:36.078    【指令】收到回报指令 ID = -1568729433 RefID = 460
2015-08-24 13:42:36.089    【回报】512810491 : IC1509 - 已撤单 量:1
2015-08-24 13:42:36.161    【后台】IC09 TCANCELEX 出现信号 类型:4 帐号:512810491
2015-08-24 13:42:36.162    【后台】IC09 TCANCELEX 出现信号 类型:1 帐号:512810491

--  作者:jason123
--  发布时间:2015/8/24 14:23:15
--  
debugfile 输出如下

2015-08-24 13:42:36.021       做空信号DYNAINFO(7):6534.60   A00:0   TAVGENTERPRICEEX2(AC,PZ,0):0.00   TENTERPRICE:-1.#R  SHORT:0   A14:0   LONG:1   TREMAINQTY(4,AC,PZ):0   B01:1   TBUYHOLDINGEX(AC,PZ,2):0   TSELLHOLDINGEX(AC,PZ,1):0   A43:-1   B02:0   A15:0   A14:0   A15:0
2015-08-24 13:42:36.022       多单止损前:6534.60   TBUYHOLDINGEX(AC1,PZ,1):0   TSELLHOLDINGEX(AC,PZ,1):0.00   A02:6547.03  SHORT:0   A14:0   LOW:6523.60   THOLDING:0   B01:1   TISREMAIN:1   THOLDING2:0   A43:-1   B02:0   A15:0   A14:0   A15:0
2015-08-24 13:42:36.023       空后平空:6534.60   SHORTX1:1   TSELLHOLDINGEX(AC,PZ,2):0.00   A02:6527.57  SHORT:0   A14:0   LOW:6523.60   THOLDING:0   B01:1   TISREMAIN:1   THOLDING2:0   A43:-1   B02:0   A15:0   A14:0   A15:0

--  作者:jinzhe
--  发布时间:2015/8/24 14:30:00
--  

if a43:=1 then begin

......

end

 

你要判断还是赋值?如果是判断a43是否等于1,那么你多写个冒号是为了什么?

 

你这样写就表示直接赋值a43为1而根本没有判断到底这个条件是否成立

 

这样写直接导致判断无效后面的撤单语句直接执行


--  作者:jason123
--  发布时间:2015/8/24 14:34:23
--  
判断 这里我写错了 实际上是 IF (((A43 = 1)   没有冒号的
--  作者:jason123
--  发布时间:2015/8/24 14:43:45
--  
我想达到这个目的
 A43=1 有多信号 TCANCELEX(1,2,AC,PZ);//取消未成交的平多单
TCANCELEX(1,3,AC,PZ);//取消未成交的开空单

而且{如有没有平仓的空单,止损50个点}

 A43=-1 ,有空信号  TCANCELEX(1,4,AC,PZ);//取消未成交平空单
TCANCELEX(1,1,AC,PZ);//取消未成交开多单

而且{如有没有平仓的多单,止损50个点}

--  作者:jinzhe
--  发布时间:2015/8/24 14:49:43
--  
那你改了再试试,条件满足才会执行撤单,不满足不撤单
--  作者:jason123
--  发布时间:2015/8/24 14:49:57
--  
A43:=  是赋值

A43= 是判断

这些我代码中没有错的


--  作者:jinzhe
--  发布时间:2015/8/24 14:52:00
--  
问题是上面的代码里面就有啊,你先改了