共12 条记录, 每页显示 10 条, 页签:
[1]
[2]
1楼
套利 发表于: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价的价格进行委托。
2楼
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
3楼
套利 发表于:2019/9/3 21:38:22
4楼
套利 发表于: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价委托。如果双方均未成交则一直挂着即可直到一方成交,然后执行策略。
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
6楼
FireScript 发表于:2019/9/4 9:57:27
你的需求只要在2楼代码基础上修改即可了啊。你肯定得先理解2楼这个代码逻辑。
只要改下下单价格和委托方式 以及等待的秒数就变成减仓的逻辑了。 你可以先试着自行修改下。
7楼
套利 发表于:2019/9/4 11:54:44
我在这方面比较小白,昨天晚上试着自己套了套发现根本弄不会,还是要麻烦您帮忙构建一下,谢谢您了
8楼
套利 发表于:2019/9/4 17:39:47
9楼
套利 发表于: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
我是这样写的 为什么没有撤单发生
10楼
FireScript 发表于:2019/9/9 15:12:41
你要实现的思路到底是原先1楼的还是后面的4楼的描述?
另外对五价是买五或卖五 还是最新价加减五个点?
共12 条记录, 每页显示 10 条, 页签:
[1]
[2]