请教,我想查找所有未成交的挂单,同时只对最早的那一笔未成交的开仓挂单进行撤单,以下写法是否对?(我的疑惑在于不知道 用For y = 0 To GetArraySize(orderIDs) - 1进行编历时,系统是自动会从时间最早的挂单开始按顺序遍历(由远及近),还是从离当下最近的时间开始遍历(由近及远)。谢谢
Integer y=0;
Array<Integer> orderIDs;
self_source=A_GetOrderCreateSource;
Bool ret=A_GetUnFillOrderIDs(RelativeSymbol,orderIDs,self_source);
Bool valuestatus=false;
For y = 0 To GetArraySize(orderIDs) - 1
{
Order value;
Bool ret1=A_getorder(orderids[y],value);
if(value.combOffset==Enum_Entry and value.side==Enum_buy)
{
bool ret2 =A_DeleteOrderEx(orderids[y]);
numeric sleep = SystemDateTime;
while(true)
{
A_getOrder(orderids[y], value);
if(value.status == Enum_Canceled) break;
if(value.status == Enum_Filled) break;
if(DateTimeDiffV2(Sleep, SystemDateTime) >= 1000) break;
}
}
if(value.status==Enum_Canceled) valuestatus=true;
if(value.status==Enum_Canceled) break;
}
下单的时候管理一下
看到我的代码身影
多试几个品种
print一下数组看看规律
或者按照老刘说的
排序一下
for之前
ArraySort(orderIDs, true);
就可以了
?目测你这个代码只会把所有买开未成交单全部撤掉
我的思路是先get所有未成交单的本地order,然后排序,从小到大,然后根据order遍历,查到第一个买开,撤单,break遍历
谢谢老师,我想下