如果一张开仓新单成交后,我想用一对bracket order(止损止盈单)来跟进,我有两种做法。一种是把这对单子放在客户端,根据行情的变化来决定下一张提交的平(今)仓单子是止损还是止盈。另一种是直接向金士达服务端发止损止盈指令。现在我希望这张止盈的单子是第一时间进场排队的,而止损的单子是不入场的(因为交易所应该还不支持止损指令,一入场就会成交)。 我的问题是: 1)如果是向金士达服务端发止损止盈指令,意味着一张开仓单同时对应了两张平仓单,这会不会有(”没有你想要平的指令“)错误? 2)如果上述1)的操作不构成错误,是否意味着金士达服务端的止盈指令在价格触发前也没有入场,直到市场出现了对手方报价,才撤消另一张止损指令,将止盈指令限价设平仓标志(等同于市价)入场。换言之,止盈指令也没有参与本方的定单薄排队。 3)如果金士达服务端控制的止损止盈指令没有实现止盈指令的第一时间进场排队,是否这个功能目前只能通过委托客户端控制来实现?
这个问题我过去和黑马建议过,希望止盈单采用挂单提前排队的方式,不清楚是不是后来更改过,以前金士达服务端的止损止盈单双条件单中的止盈单都是采用价格触发在入场的方式的,没有提前入场排队。 我给黑马qq留言了,让他看到留言上论坛来这里。 黑马回短信了,回头他会上来.
一般的纯止盈单可能是会用限价单参与提前排队的,但也不一定.反正过去那个金仕达的止损止盈单(联合条件单)采用的是条件触发才入场的方式,大概一年前和黑马建议过将联合条件单的止盈单采用限价单提前入场参与排队的方式,但是不是更改过就不知道了,估计还没更改过.
1。因为止损止盈单同时只会触发一个,所以在金仕达里是可以同时把止损单和止盈单挂进去的,一个触发成交后会自动撤掉另一个。 2。金仕达有个条件单服务器OrderScan,它负责把保存在服务器上的所有条件触发指令定时或tick计算一次,如果满足了触发条件,就激活该笔条件单,然后以设定的委托价格发送到交易所。 3。不管你在金仕达服务器上还是在客户端,都无法实现止损止盈指令第一时间进场排队,都是条件触发后才发送到交易所。止损单没有办法,止盈单倒是可以通过在客户端手工输入指令入场等待,应该会比触发后入场的指令排在更优先的位置上。
如果你一定要实现第一时间入场排队,倒也不是没有办法,你用交易所的“单腿”指令设置止损和止盈,是会比一般的指令排在更前面的,可惜的是这个功能不是每个交易所都支持,另外金仕达提供的接口中目前也不支持这个功能,他们最多只支持他们自己的条件单功能。
wj兄说的对! 因为金仕达的止损止盈单是通过金仕达的条件单系统来实现的,所以都是必须经过轮询条件是否触发,触发后才发往交易所的。 所以有想提前入场的止盈指令,我都是建议客户干脆不要用止盈单,而是直接把单子挂到交易所去算了,这样应该能排在前面的。
这个的一个问题是当直接将单子(止盈单)以限价单挂到交易所去时如果出现止损就需要你先撤单才能再执行止损指令了,如果是手工操作就比较麻烦的。 所以如果条件许可的话,不如自己利用CTP做个下单服务器系统(包括条件委托),甚至是一个类似IB那样的多业务多交易所支持的统一的“服务器系统”(有“路径路由选择”功能)。
谢谢blackhorse。了解了很重要的两个信息,1)止损止盈是条件触发式的,这样我可以在客户端自己程序实现止盈的先进场排队;2)条件触发是轮循数据库方式实现的,这样我的行情事件触发程序虽然是在客户端,但也可能比服务端的止损止盈模块动作要快。 潜在的风险是:我的行情事件触发后,要先撤一张单,再下一张单。由于程序的速度很快,可能撤完单后,金士达服务器的可平状态还没有改回来,我的单就进去了,造成平仓请求被拒绝。
存在这种可能性,撤单也是需要时间的,根据服务器的不同,存在几十到几百毫秒的时延,在高速交易的时候必须考虑这个问题。 建议Tom兄在策略上寻求一个解决方案,比如正常情况下止损止盈总是有一定的差距的,可以以策略的形式判断,当行情接近止损价的时候,触发止损的概率大于触发止盈,这时可以将止盈单撤掉;反之当行情接近止盈价的时候,触发止盈概率加大,再将止盈单挂上去排队。
接着请教之一: 1)金仕达接口有无清仓(整个帐户或指定品种头寸)的命令?我说的是并非为委托命令(5011),而是一个笼统的帐户头寸轧平为0的指令,这样客户端在有些特定的情况下(例如日收盘前或交易程序发生错误时),可以一步恢复到风险中性的状态,而不需做先全部撤单,再平所有开口头寸的两步工作(如需请求所有开口头寸就是三个步骤); 2)如果出现锁单情况,可否(在收盘后)指定锁单的头寸对冲归0?是否目前还是不允许先进先出(即下单时不指定开平,头寸自行轧平)的清算模式?