以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  有关撤单追单  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=62550)

--  作者:fsrobin
--  发布时间:2014/3/11 11:37:54
--  有关撤单追单

开多:TBUY(开多条件,手数,LMT,DYNAINFO(28));
开多撤单:TCANCEL(DYNAINFO(28)>TENTERPRICE,1);
思路是之前买一卖一为99/100,变成100/101时委托100买,没成交并出现101/102时,撤100并马上委托101
代码上面这样写变成出现102/103时才挂102

下面这样写,出现连续挂多单现象
开多:TBUY(开多条件,手数,LMT,DYNAINFO(28));
IF DYNAINFO(28)>TENTERPRICE THEN BEGIN
TCANCEL(1,1);
TBUY(TISREMAIN(1)=0 AND TBUYHOLDING(0)=0,手数,LMT,DYNAINFO(28));
END
求助修改出符合思路的代码

--  作者:jinzhe
--  发布时间:2014/3/11 13:08:03
--  
用360浏览器发的帖?看不到发帖内容,用IE再发一遍
--  作者:fsrobin
--  发布时间:2014/3/11 13:14:57
--  
开多:TBUY(开多条件,手数,LMT,DYNAINFO(28));
开多撤单:TCANCEL(DYNAINFO(28)>TENTERPRICE,1);
思路是之前买一卖一为99/100,变成100/101时委托100买,没成交并出现101/102时,撤100并马上委托101
代码上面这样写变成出现102/103时才挂102

下面这样写,出现连续挂多单现象
开多:TBUY(开多条件,手数,LMT,DYNAINFO(28));
IF DYNAINFO(28)>TENTERPRICE THEN BEGIN
TCANCEL(1,1);
TBUY(TISREMAIN(1)=0 AND TBUYHOLDING(0)=0,手数,LMT,DYNAINFO(28));
END
求助修改出符合思路的代码

--  作者:fsrobin
--  发布时间:2014/3/11 13:25:27
--  
能看到了吗?用分笔图测试的

开多:TBUY(开多条件,手数,LMT,DYNAINFO(28));
开多撤单:TCANCEL(DYNAINFO(28)>TENTERPRICE,1);
思路是之前买一卖一为99/100,变成100/101时委托100买,没成交并出现101/102时,撤100并马上委托101
代码上面这样写变成出现102/103时才挂102

下面这样写,出现连续挂多单现象
开多:TBUY(开多条件,手数,LMT,DYNAINFO(28));
IF DYNAINFO(28)>TENTERPRICE THEN BEGIN
TCANCEL(1,1);
TBUY(TISREMAIN(1)=0 AND TBUYHOLDING(0)=0,手数,LMT,DYNAINFO(28));
END
求助修改出符合思路的代码
[此贴子已经被作者于2014/3/11 13:25:43编辑过]

--  作者:jinzhe
--  发布时间:2014/3/11 13:43:53
--  
开多条件是什么?
--  作者:fsrobin
--  发布时间:2014/3/11 13:45:54
--  
N:=REF(BARSLAST(C<>REF(C,1)),1);
//交易条件
开多条件:=TISREMAIN(1)=0 AND TBUYHOLDING(0)=0 AND C>REF(C,1) AND (REF(C,N+1)>REF(C,N+2) OR REF(C,1)>REF(C,2));

--  作者:fsrobin
--  发布时间:2014/3/11 13:47:03
--  
问题出现在开多条件和撤单条件 实际上是一样的,只是表达方式不同。
[此贴子已经被作者于2014/3/11 13:47:16编辑过]

--  作者:jinzhe
--  发布时间:2014/3/11 13:59:36
--  
开多条件:=TISREMAIN(1)=0 AND TBUYHOLDING(0)=0 AND C>REF(C,1) AND (REF(C,N+1)>REF(C,N+2) OR REF(C,1)>REF(C,2));

 

 

这个开多条件是不是不要表达:

TISREMAIN(1)=0 AND TBUYHOLDING(0)=0 AND C>REF(C,1) 

这个条件和  (C,N+1)>REF(C,N+2) OR REF(C,1)>REF(C,2));

这两个条件同时成立?

 

那么就要多加一个括号

开多条件:=TISREMAIN(1)=0 AND TBUYHOLDING(0)=0 AND C>REF(C,1) AND ((REF(C,N+1)>REF(C,N+2) OR REF(C,1)>REF(C,2)));

 


--  作者:fsrobin
--  发布时间:2014/3/11 14:03:31
--  
是要同时成立,括号好像也够了吧,加就加吧,
--  作者:jinzhe
--  发布时间:2014/3/11 14:20:56
--  

不是,你不加就是

tisremain(1)=0 AND TBUYHOLDING(0)=0 AND C>REF(C,1) AND (REF(C,N+1)>REF(C,N+2)

或者

REF(C,1)>REF(C,2));

这两个中的某一个成立,

 

 

REF(C,1)>REF(C,2))这个条件太好成立了