我在后台程序化里使用了TISPRVREMAIN(3),明明上一手空单已成交,但是debugfile出来的数值一直为0.
TISPRVREMAIN(3)函数取到的上一次开空成交状态的是通过后台程序化交易明细窗口获取的,你看下你的交易明细那是否已成交的状态。本地测试正常。

此主题相关图片如下:qq截图20171122134052.png
这个函数只对通过后台程序化下单的监测有效,对于其他的挂单方式,没有效果
TISPRVREMAIN该函数是上一次交易是否未成交,未成交返回1,成交返回0。重新测试了下,连续输出时,程序化成交了,是输出为0,表示成交了,上一次交易没有存在未成交情况。

此主题相关图片如下:qq截图20171122144922.png
但是初始值也是0。我用在套利交易里,需要先判断前一个成交了,再下后一个。如果用tisprvremain=0 去判断的话,前一个合约不发单或者成交都会发单第二个合约。我的目的是需要先判断前一个成交了,再下后一个。
判断是否有未成交单,再加上判断另一腿是否有持仓就可以确定了
if zcc=totalhold and tisremainex(0,'','')=0 then BEGIN
tbuyShort(1,1,lmt,p1,0,'',nextstk);
TSellShort(1,1,lmt,p2,0,'',thisstk);
END
我用如上的能两个合约都发单。
但是用下面的就不行,只能发出第一个合约"thisstk"的指令,在第一个合约成交的情况下也不能发第二合约"nextstk"的指令:
nexthold:=tsellholdingex('',nextstk,1);
if zcc=totalhold and tisremainex(0,'','')=0 then BEGIN
tbuyShort(1,1,lmt,p1,0,'',nextstk);
if tsellholdingex('',nextstk,1)=nexthold+1 then TSellShort(1,1,lmt,p2,0,'',thisstk);
END
用下面的也是类似的结果,也只能发第一个合约的指令,即使第一个合约立马成交也不能发第二合约的指令
if zcc=totalhold and tisremainex(0,'','')=0 then BEGIN
tbuyShort(1,1,lmt,p1,0,'',nextstk);
if tisremainex(3,'',nextstk)=0 then TSellShort(1,1,lmt,p2,0,'',thisstk);
END
请大神帮忙看看