昨天提的没人回答,今天再说清楚一点,请教各位如何处理我这个问题:
我在后台程序里,1秒轮询,做一个止损程序,思路如下(只说多头);
1、程序把TBUGHOLIND(1),和程序自己记录(用 全局变量记录)的多头余仓比较,发现TBUGHOLIND(1)>多头余仓,就作为一次开多记录,记录下相关数据,比如:第1次开多的日期、时间、价格、第1次开多余仓等等;第2次、3次....以此类推;
2、当TBUGHOLIND(1)<多头余仓,就作为一次平多,按照一定的规则,找到某一个开多记录,进行平仓;
3、每次开多记录里,包含止损价格,当价格小于某次开多记录里的止损价格时,触发平多指令,并对该开多记录做平多处理;
现在的问题是:
比如:第1次开多的止损价格时20000,余仓1手,第2次开多的止损价格是20010,余仓2手,总多头余仓是5手,最新价格是19990。在这种情况下,我的程序是先处理第1个开多记录,去平第1次开多的那个1手余仓;但因为平多指令执行的时间有延迟,在发出平多指令后,程序会将第1次的开多余仓减为0,同时将总多头余仓减为4手,因平多指令还没执行所以实际的仓位TBUGHOLIND(1)还是等于5手;这时候程序继续执行,却变成了TBUGHOLIND(1)>多头总余仓,转而以为是产生了一次开多交易,当做开多处理了,导致整个思路混乱。
自己也想在平多指令发出后,等待一段时间再执行下一个语句,但会导致其他的止损的触发时间。
请问如何解决这个问题?
谢谢。