找最小订单号是智能交易EA编程方面的问题,订单号是指订单编号,我们在MT4终端上每开一个单子,它都有一个编号,如果将订单按开仓时间先后排序就不难发现,订单编号是随开仓时间的顺势越来越大的,也就是说最早开仓的那个单子订单编号是最小的。
那么我们将这个问题演变一下,就是问如何查早最早或者说是最远开仓的那个订单的编号。在MQL4语言中订单编号用 OrderTicket() 函数获取,这里需要注意的技巧就是用for循环语句遍历订单的时候用 i– 才能最快找到最早开的订单。可以自行构造一个函数来获取需要的最小订单编号,参考代码:
int Tk_minus()
{
int tkmi = 0;
for (int i = OrdersTotal() - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
{
if (OrderSymbol() == Symbol())
{
tkmi = OrderTicket();
}
}
}
return(tkmi);
}
为了便于比较,我们同时也用 i++的方式做个函数,然后用模拟盘先后开几个订单,比较这两个函数所获得的结果。
从上图就很明显的看出来,找最小订单时for循环中应当用 i– ,实际编程中根据上面函数演变即可。如果用i++那所获得的结果就是最近开的单子,其订单号也是最大的。
当然,这里仅仅是针对上述函数而已,如果在 Tk_minus() 函数中使用 break 语句,也就是找到就跳出,那么在 for 循环中用 i– 找到的就是最新开出的单子。