for i=1 to i=99 do
if TISREMAINEX(0,'','rb05')=0 and TISREMAINEX(0,'','rb01')=0 then
sleep(1000);
i=i+1;
else
begin
if TISREMAINEX(0,'','rb05')>0 then
TCANCELEX(1,0,'','rb01');
tbuyshort(1,1,mkt,0,0,'','rb01');
else
TISREMAINEX(0,'','rb01')>0 then
TCANCELEX(1,0,'','rb05');
tbuy(1,1,mkt,0,0,'', 'rb05');
end
break;
不知道你的意图
编译通过了
for i=1 to i=99 do
begin
if TISREMAINEX(0,'','rb05')=0 and TISREMAINEX(0,'','rb01')=0 then
begin
sleep(1000);
i=i+1;
end
else
begin
if TISREMAINEX(0,'','rb05')>0 then
begin
TCANCELEX(1,0,'','rb01');
tbuyshort(1,1,mkt,0,0,'','rb01');
end
else if TISREMAINEX(0,'','rb01')>0 then
begin
TCANCELEX(1,0,'','rb05');
tbuy(1,1,mkt,0,0,'', 'rb05');
end
end
break;
end
基本思路是这样的
2个限价单发出后,100%保证2个限价单成交,其中一个用限价,另一个防止瘸腿用市价
这里,2个单子那个先成交那个不知道,所以,只能用函数去判断,成交一个后,在去撤销另一个限价单,用市价去追单。
由于运行环境比较复杂,所以,不用简单的用仓位控制,只能用for循环语句来控制,强制完成2个单子的交易。但在实现过程中,好像语法上的问题
还是其他什么问题,不能编译通过。
用以下试试
//后台,用固定时间间隔.
//如果05未成交,01成交
if TISREMAINEX(0,'','rb05')>0 and TISREMAINEX(0,'','rb01')=0 then
begin
TCANCELEX(1,0,'','rb05');
tbuyshort(1,1,mkt,0,0,'','rb05');
end
//如果01未成交,05成交
if TISREMAINEX(0,'','rb01')>0 and TISREMAINEX(0,'','rb05')=0 then
begin
TCANCELEX(1,0,'','rb01');
tbuy(1,1,mkt,0,0,'', 'rb01');
end
谢谢just ,谢谢fly
帮我解决这个问题
fly的方法简单情况下是可以的,但实际上的运行环境,比较复杂,因为有可能是2张限价单10秒不成交,这个时候可能大的条件都不对了,根本进不了这个语句,随时间推进,假设如果限价单成交了一张,又进不了这个语句,那后面就全步乱掉了,事实情况也是这样的,所以,需要限价单挂出后,要对这2个单子做处理,100%保证2张单子成交掉。
不放在FOR循环里,
直接放到策略开始的几行,不满足什么大条件,或者说只要是最后一周期就好,别的什么条件都不要