if tremainqty(0,ac,stklabel)>0 then begin
tcancelex(1,0,ac,stklabel),orderqueue;
tbuy(1,kc1,MKT,0,0,ac),ORDERQUEUE;
end ;
如果出现此情况:撤单的时候,发现该单在那瞬间已成交,撤单报错,系统会不会执行第二个TBUY命令?
THANKS
因为你的TBUY是不检测条件的,所以这种极端情况可能下单
所以建议你在TBUY的下单条件里 仍然要对 持仓量 未成交单数量做判断 再下单 这样更稳妥
另外,最新版的2.95版本中,交易设置的程序化交易 选项中,最下面新增了关于队列等待超时的等待规则,你看看
顺序下单超时等待N秒(0表示无限等待):设置后表示程序化交易时使用orderqueue函数队列的超时等待时间。
顺序递交:当勾选本选项后,使用orderqueue指令报单时,如果前面的报单超过这个设置值而未成交或者未撤单时,就不再进行队列等待,而是直接报单出去。例如将超时等待设置为10秒,就表示排在队列第一个位置的动作(假设这个动作的名字是A)等待了10秒后,不管在它之前委托单是否成交或者撤销,动作A都将不再等待,而是直接委托出去。同理,此时,排在A后面的动作开始10秒倒计时,等超时后,也会委托出去。
之前报单完全成交后再顺序递交:勾选本选项后,只有在报单队列里的上一笔委托完全成交后才会委托报单下一笔。一旦上一笔交易出现委托失败或者撤单等情况,后面的委托队列会被完全清空。使用时请务必注意,在策略里的报单至少需要2笔以上委托单,如果只往队列报单一笔,那么金字塔将会在2秒钟之后才开始处理这一笔报单。
我的理解不是这样,应该是A等待10秒后仍没有成交就不再等侍,而是触发B动作,而不是A再发单出去,不知这样理解是否正确
[此贴子已经被作者于2013-3-22 15:31:37编辑过]