以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  套利代码撤单问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=171794)

--  作者:套利
--  发布时间:2019/8/26 13:10:45
--  套利代码撤单问题
TBUYSHORT(1,SS2,LMT,DYNAINFO2( 7,套利品种2),0,账户,套利品种2);
TBUY(1,SS2,LMT, DYNAINFO2( 7,套利品种1),0,账户,套利品种1);

上面分别是买单和卖单是最新价委托,麻烦帮我改进如果两笔交易60秒内没有成交则同时撤单,如果两笔交易任何一个成交了,则另一个马上撤单并以对手5价的价格进行委托。

--  作者:FireScript
--  发布时间:2019/8/26 13:43:08
--  
 这样试下:


if (TGLOBALSUBMITEX(3,账户,套利品种2,1)>=60 and  TGLOBALSUBMITEX(1,账户,套利品种2,1)>=60) then
begin
TCANCELEX(1,3,账户,套利品种2 );
TCANCELEX(1,1,账户,套利品种1 );
end

if (TGLOBALSUBMITEX(3,账户,套利品种2,1)>=60 and TGLOBALSUBMITEX(1,账户,套利品种1,0)=0) then
begin
TCANCELEX(1,3,账户,套利品种2);
TBUYSHORT(1,SS2,LMT,DYNAINFO2( 7,套利品种2)-5*MINDIFF,0,账户,套利品种2);
end

if (TGLOBALSUBMITEX(1,账户,套利品种1,1)>=60 and TGLOBALSUBMITEX(3,账户,套利品种2,0)=0) then
begin
TCANCELEX(1,1,账户,套利品种1);
TBUY(1,SS2,LMT, DYNAINFO2( 7,套利品种1)+5*MINDIFF,0,账户,套利品种1);
end

--  作者:套利
--  发布时间:2019/9/3 21:38:22
--  
 这几个语句能分别用中文解释下吗
--  作者:套利
--  发布时间:2019/9/4 2:15:51
--  
INPUT:M(50,1,100,1),X(3,1,100,1),SS(20,1,100,1),SS2(1,1,100,1);//M表示初始开仓价差,X表示加减仓的价差,SS表示首次开仓手数,SS2表示加减仓手数
GLOBALVARIABLE:mark:=0;//需要记住开始时候的价差,就必须使用全局变量
//*****************************
账户:\'632361\';
套利品种1:\'RB01\';
套利品种2:\'RB05\';
//*****************************

JC:dynainfo2(7,套利品种1)-dynainfo2(7,套利品种2);//价差


IF (JC-mark)>=X*MINDIFF and mark<>0  THEN BEGIN //减仓
mark:=JC;//价差记录下来
TSELLSHORT(1,SS2,LMT ,DYNAINFO2( 7),0,账户,套利品种2);//买平最新价
TSELL(1,SS2,LMT ,DYNAINFO2( 7),0,账户,套利品种1);//卖平最新价
END

IF (mark-JC)>=X*MINDIFF and mark<>0 THEN BEGIN //加仓
mark:=JC;//价差记录下来
TBUYSHORT(1,SS2,LMT ,DYNAINFO2( 7),0,账户,套利品种2);//开空最新价
TBUY(1,SS2,LMT ,DYNAINFO2( 7),0,账户,套利品种1);//开多最新价
END

这是之前写的套利策略,加仓和平仓都以最新价委托的,麻烦将之前说的,当触发加仓时,如果开多或开空只有一方成交了,另一个未成交超过20秒则立刻撤单按照对5价委托。当触发减仓时,如果平多或平空只有一方成交了,另一个未成交超过20秒则立刻撤单按照对5价委托。如果双方均未成交则一直挂着即可直到一方成交,然后执行策略。


--  作者:yukizzc
--  发布时间:2019/9/4 9:42:19
--  
//如果品种2和品种1都未成交超过60
if (TGLOBALSUBMITEX(3,账户,套利品种2,1)>=60 and  TGLOBALSUBMITEX(1,账户,套利品种2,1)>=60) then 
begin
TCANCELEX(1,3,账户,套利品种2 );
TCANCELEX(1,1,账户,套利品种1 ); 
end
//如果品种2的挂单时间超过60,并且品种1成交了
if (TGLOBALSUBMITEX(3,账户,套利品种2,1)>=60 and TGLOBALSUBMITEX(1,账户,套利品种1,0)=0) then 
begin
TCANCELEX(1,3,账户,套利品种2);
TBUYSHORT(1,SS2,LMT,DYNAINFO2( 7,套利品种2)-5*MINDIFF,0,账户,套利品种2);
end

if (TGLOBALSUBMITEX(1,账户,套利品种1,1)>=60 and TGLOBALSUBMITEX(3,账户,套利品种2,0)=0) then 
begin
TCANCELEX(1,1,账户,套利品种1);
TBUY(1,SS2,LMT, DYNAINFO2( 7,套利品种1)+5*MINDIFF,0,账户,套利品种1);
end

--  作者:FireScript
--  发布时间:2019/9/4 9:57:27
--  
 你的需求只要在2楼代码基础上修改即可了啊。你肯定得先理解2楼这个代码逻辑。
只要改下下单价格和委托方式 以及等待的秒数就变成减仓的逻辑了。 你可以先试着自行修改下。

--  作者:套利
--  发布时间:2019/9/4 11:54:44
--  
我在这方面比较小白,昨天晚上试着自己套了套发现根本弄不会,还是要麻烦您帮忙构建一下,谢谢您了
--  作者:套利
--  发布时间:2019/9/4 17:39:47
--  
 您好??
--  作者:套利
--  发布时间:2019/9/9 14:56:57
--  
IF (JC-mark)>=X*MINDIFF and mark<>0  THEN BEGIN //减仓
mark:=JC;//价差记录下来
TSELLSHORT(1,SS2,LMT ,DYNAINFO2( 7,套利品种2),0,账户,套利品种2);//买平
TSELL(1,SS2,LMT ,DYNAINFO2( 7,套利品种1),0,账户,套利品种1);//卖平
END

IF (mark-JC)>=X*MINDIFF and mark<>0 THEN BEGIN //加仓
mark:=JC;//价差记录下来
TBUYSHORT(1,SS2,LMT,DYNAINFO2( 7,套利品种2),0,账户,套利品种2);
TBUY(1,SS2,LMT, DYNAINFO2( 7,套利品种1),0,账户,套利品种1);
END




//如果品种2和品种1都未成交超过60
if (TGLOBALSUBMITEX(3,账户,套利品种2,1)>=60 and  TGLOBALSUBMITEX(1,账户,套利品种2,1)>=60) then 
begin
TCANCELEX(1,3,账户,套利品种2 );
TCANCELEX(1,1,账户,套利品种1 ); 
end


//如果品种2的挂单时间超过60,并且品种1成交了
if (TGLOBALSUBMITEX(3,账户,套利品种2,1)>=60 and TGLOBALSUBMITEX(1,账户,套利品种1,0)=0) then 
begin
TCANCELEX(1,3,账户,套利品种2);
TBUYSHORT(1,SS2,LMT,DYNAINFO2( 7,套利品种2)-5*MINDIFF,0,账户,套利品种2);
end


if (TGLOBALSUBMITEX(1,账户,套利品种1,1)>=60 and TGLOBALSUBMITEX(3,账户,套利品种2,0)=0) then 
begin
TCANCELEX(1,1,账户,套利品种1);
TBUY(1,SS2,LMT, DYNAINFO2( 7,套利品种1)+5*MINDIFF,0,账户,套利品种1);
end


//品种1平仓没成交 2成交了 
if (TGLOBALSUBMITEX(2,账户,套利品种1,1)>=60 and TGLOBALSUBMITEX(4,账户,套利品种2,0)=0) then 
begin
TCANCELEX(1,2,账户,套利品种1);
TSELL(1,SS2,LMT ,DYNAINFO2( 28,套利品种1),0,账户,套利品种1);//卖平
end


if (TGLOBALSUBMITEX(4,账户,套利品种2,1)>=60 and TGLOBALSUBMITEX(2,账户,套利品种1,0)=0) then 
begin
TCANCELEX(1,4,账户,套利品种2);
TSELLSHORT(1,SS2,LMT ,DYNAINFO2( 34,套利品种2),0,账户,套利品种2);//买平
end


我是这样写的 为什么没有撤单发生

--  作者:FireScript
--  发布时间:2019/9/9 15:12:41
--  
 你要实现的思路到底是原先1楼的还是后面的4楼的描述?
另外对五价是买五或卖五 还是最新价加减五个点?