Sub OrderCheDan(iCheTime) '获取未成交单,指定秒数后撤单
dim Orderid '订单ID
dim Filled '提交手数
dim Remaining '剩余手数
dim Action '买卖
dim OrderType '订单类型
dim LmtPrice '委托价
dim Account '账户
dim Kaiping '开平
PendingCount=Order.OrderNum2
For i=0 to PendingCount-1
Call Order.OrderInfo2(i,OrderID,ConSign,Filled,Remaining,Action,OrderType,LmtPrice,Account,Kaiping,Code,Market)
'application.MsgOut "PendingCount:" & PendingCount & ",OrderID:" & OrderID & ",Code:" & Code & ",lmtPrice:" & lmtPrice & ",Action:" & Action & ",Kaiping:" & Kaiping & ",Filled:" & Filled & ",Remaining:" & Remaining
'application.MsgOut Cdate(time) & ",sAction:" & sAction & ",sKaiping:" & sKaiping & ",LmtPrice:" & LmtPrice & ",OrderID:" & OrderID
OrdTime=right(Order.OrderInfoTime2(i),8) '订单的委托时间
application.MsgOut "OrdTime:"&OrdTime
if Datediff("s",OrdTime,Cdate(time))>iCheTime then '超过间隔指定的秒数,就撤单
Call Order.CancelOrder(OrderID)
end if
Next
End Sub
调用以上代码的方式:OrderCheDan 5 '间隔5秒不成交就撤单
可以把这个过程放到计时器中,定时检测有没有未成交的单,有,而且超过时间就撤单。