请教一下,orderselect选中的问题?

 

   for(int i=0;i<OrdersTotal();cnt++)
   {
  
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   }
   麻烦请教一下,这个第一张选中的订单是最早的开单还是最近的开单呢?

   麻烦说一下原因,谢谢。

 
1196920779:

   for(int i=0;i<OrdersTotal();cnt++)
   {
  
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   }
   麻烦请教一下,这个第一张选中的订单是最早的开单还是最近的开单呢?

   麻烦说一下原因,谢谢。

最近的,因为你是按索引号搜索订单,0就是当前索引号,cnt++是从0开始递增

 
1196920779:

   for(int i=0;i<OrdersTotal();cnt++)
   {
  
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   }
   麻烦请教一下,这个第一张选中的订单是最早的开单还是最近的开单呢?

   麻烦说一下原因,谢谢。

是我孤陋寡闻了吗?cnt是哪里定义的,你值定义了i

 

把单子打印出来试试

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {         
         printf("i:%d, ticket=%d, symbol = %s, time=%s",i,OrderTicket(),OrderSymbol(),(string)OrderOpenTime());      
        }
     }

一般来说 ,如果只有一个品种的多个单子,i=0是最早的 但并不是绝对,如果有多个品种的多个单子,那i=0是不是最早的就更难说了。

总之,要找最早,最近的单子,就老老实实的遍历所有单子,比较开仓时间,不要想当然的以为i=0就是最早的,i=OrdersTotal()-1就是最近的,这个结论不成立。

原因: