MQL4 这个函数算不算是个bug ?

 

bool  OrderSelect( 
   int     index,            // index or order ticket 
   int     select,           // flag 
   int     pool=MODE_TRADES  // mode 
   );
如果我们直接指定一个已知持仓编号(或者存在已经平仓的历史中),这两种写法都会返回true值,这是为什么?

OrderSelect(123456, SELECT_BY_TICKET, MODE_HISTORY)
OrderSelect(123456, SELECT_BY_TICKET, MODE_TRADES)

我的订单编号为123456单子,无论是正在持仓中或者已经被平仓了,这两种方法都会返回true,这是不是一个bug?


按我的理解,第一个方法是从历史订单中选中订单编号,第二个方法是从正在持仓的订单编号中选择

 

不是bug, 你的理解是错的.

直接用单号选单子时,第三个参数是忽略的,是从总的订单池中选单子.

这时需要根据OrderCloseTime()来判断是持仓(或挂单)还是历史单.

持仓单和挂单的OrderCloseTime()等于0,历史单的大于0.

 

你的意思我明白了,可能我一直是按照MQL5的思维去理解MQL4,所以如果是直接通过

订单编号去选择一个订单的话,还需要多一个OrderCloseTime()来判断是否是正在持仓中还是已经被平仓或者取消了

a