代码如下 {没有仓位}
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
什么逻辑?你的逻辑是什么?
[此贴子已经被作者于2015/8/24 14:17:56编辑过]
实际运行后,老是报单后,马上又被撤单了,日志如下
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
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
if a43:=1 then begin
......
end
你要判断还是赋值?如果是判断a43是否等于1,那么你多写个冒号是为了什么?
你这样写就表示直接赋值a43为1而根本没有判断到底这个条件是否成立
这样写直接导致判断无效后面的撤单语句直接执行
判断 这里我写错了 实际上是 IF (((A43 = 1) 没有冒号的
我想达到这个目的
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个点}
那你改了再试试,条件满足才会执行撤单,不满足不撤单