各位老师,请教一下:要想实现FAK功能的自动发单,TB用那个函数可以实现?
FOK 和FAK指令的定义
(一)立即全部成交否则自动撤销指令(FOK指令),指在限定价位下达指令,如果该指令下所有申报手数未能全部成交,该指令下所有申报手数自动被系统撤销。
(二)立即成交剩余指令自动撤销指令(FAK指令),指在限定价位下达指令,如果该指令下部分申报手数成交,该指令下剩余申报手数自动被系统撤销。
看了解释应该理解,举个例子,如果报买入10手,盘口能买入的只有6手,
那么按照fok判断,不能全部成交,那就撤单10手,一单都不要了
如果按照fak判断,那就买入6手,剩下4手撤单。
从程序化的角度来讲,fok是很难做到的,因为本地端运行的判断总是有延迟的,在本地段判断盘口单量是否够成交,等报了单到交易所,可能情况又不一样了。
fak可以近似做到,但是也不一定。思路就是用onfill和onorder事件域,跟踪订单,发单后分别在onorder和onfill域判断。如果一手都成交不了,必然进onorder呈declared状态,那就直接写全部撤单。如果部分成交,那会进onfill域,根据fill结构体的已成交量,撤掉剩下的单量即可。