以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 -- 问题是上面的代码里面就有啊,你先改了 |