以文本方式查看主题

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

--  作者:yin8jun
--  发布时间:2017/11/23 10:34:37
--  后台套利交易
f zcc=totalhold and tisremainex(0,\'\',\'\')=0 then BEGIN
    tbuyShort(1,1,lmt,p1,0,\'\',nextstk);
    TSellShort(1,1,lmt,p2,0,\'\',thisstk);
    EN
我用如上的能两个合约都发单。

但是用下面的就不行,只能发出第一个合约"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

请大神帮忙看看

--  作者:yin8jun
--  发布时间:2017/11/23 10:34:50
--  
用的是分笔数据