public IEnumerable <Order> GetLimitOrders(OrderSide side) { List <Order> listOrders = new List <Order>(); int total = MetaAPI.OrdersTotal(); for (int i = total - 1; i >= 0; i--) { MetaAPI.OrderSelect(i, SelectType.SELECT_BY_POS, SelectModeType.MODE_TRADES); if (side == OrderSide.Buy) { if (MetaTypeConvertor.ToOrderType(MetaAPI.GetOrderType()) == OrderType.Limit && MetaTypeConvertor.ToOrderSide(MetaAPI.GetOrderType()) == OrderSide.Buy && MagicNumber == MetaAPI.GetOrderMagicNumber()) { listOrders.Add(BuildOrderFromCurrent()); } } else { if (MetaTypeConvertor.ToOrderType(MetaAPI.GetOrderType()) == OrderType.Limit && MetaTypeConvertor.ToOrderSide(MetaAPI.GetOrderType()) == OrderSide.Sell && MagicNumber == MetaAPI.GetOrderMagicNumber()) { listOrders.Add(BuildOrderFromCurrent()); } } } return(listOrders); }
private Order BuildOrderFromCurrent() { string symbol = MetaAPI.GetOrderSymbol(); Order newOrder = new Order(MetaAPI.GetOrderTicket(), symbol, MetaAPI.GetOrderType(), MetaAPI.GetOrderOpenPrice(symbol), MetaAPI.GetOrderLots(), MetaAPI.GetOrderStopLoss(symbol), MetaAPI.GetOrderTakeProfit(symbol), MetaAPI.GetOrderComment()); newOrder.ClosedPrice = MetaAPI.GetOrderClosePrice(symbol); return(newOrder); }