以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- 为什么这三句代码不能正确执行 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=100670) |
-- 作者:NatalieGuan -- 发布时间:2016/7/11 10:44:19 -- 为什么这三句代码不能正确执行 tbuy(1,1,lmt,stkindi(HY1,\'Formula3.bprice\',0,0)+0.2,0,\'\',HY1); tsell(TISREMAINex(1,\'\',HY1)=0,1,mkt,0,0,\'\',HY2); TCANCELEX(TISREMAINex(1,\'\',HY1),1,\'612808\',HY1); 预期代码效果是:若HY1成交,则平一手HY2,若未成交,则撤单 执行结果是:HY1在未成交的情况下HY2就会平,而且这种情况似乎只出现在tsell的时候,我将tsell改为tbuy的话似乎就可以按照预期执行了(即HY1成交时才执行开仓HY2)
|
-- 作者:wenarm -- 发布时间:2016/7/11 10:53:57 -- 你是通过什么方式判断,有未成交单是,有平仓动作? 使用debugfile 打印输出下你的条件。 |
-- 作者:NatalieGuan -- 发布时间:2016/7/11 10:59:22 -- 就是上一笔委托单是否未成交那个函数,我以为它会在每一次执行的时候检查是否上一笔委托单是否成交(即限价单是否成交) |
-- 作者:yukizzc -- 发布时间:2016/7/11 11:07:47 -- 你看下交易日志,是同一时刻tbuy了然后马上tsell 还是过了几秒,下一次轮询时候再执行tsell. 另外用debugfile输出下TISREMAINex(1,\'\',HY1) 看下输出值是多少 |
-- 作者:NatalieGuan -- 发布时间:2016/7/11 11:30:58 -- 1.是tbuy下一次轮询的时候再执行tsell 2.TISREMAINex(1,\'\',HY1) 之前检查过,有未成交单的时候为1,没有未成交单的时候为0 3.我发现问题可能在于,它每一次轮询的时候并不都执行第一个tbuy,反而可能tbuy之后过了两个轮询的时候由于已经撤单,显示没有未成交单的时候执行了一次tsell,但是也仅此一次,不会在每次显示没有未成交单的时候都执行 另外我怀疑,系统判断是否上一笔委托未成交的时候,是首先判断是否有开仓动作,然后判断未成交委托中是否有相应的单,若两者皆是则判断上一笔委托未成交,若有开仓动作且未成交委托中没有相应的单,则判断成交。然而,如果我已经撤单了,那么系统会发现有开仓动作,未成交委托中没有相应的单,因此判断为上一笔委托成交了,这就变成了一个bug
|
-- 作者:NatalieGuan -- 发布时间:2016/7/11 11:33:01 -- 是tbuy下两次以上的轮询的时候再执行tsell |
-- 作者:NatalieGuan -- 发布时间:2016/7/11 11:35:10 -- 或者也不能说是bug,当我撤单了以后,系统就不认为这是上一笔委托了,而是认为上上一笔委托才是上一笔委托 |
-- 作者:yukizzc -- 发布时间:2016/7/11 13:35:12 -- 或者你直接走vba,对报单的id做监控,这样去跟踪单子情况 |