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); }
public Order GetOrderByID(int orderID) { if (!MetaAPI.OrderSelect(orderID, SelectType.SELECT_BY_TICKET, SelectModeType.MODE_TRADES)) { return(null); } return(BuildOrderFromCurrent()); }
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); }
public bool CloseOrder(Order order) { if (order.Type == OrderType.Market) { return(MetaAPI.OrderClose(order.ID, order.Volume, 0, 0)); } else { return(MetaAPI.OrderDelete(order.ID)); } }
public void ModifyLimitOrder(int orderID, int OpenPrice, int SL, int TP) { MetaAPI.OrderModify(orderID, OpenPrice, SL, TP, OrderType.Limit); }
public void ModifyMarketOrder(int orderID, int SL, int TP) { MetaAPI.OrderModify(orderID, 0, SL, TP, OrderType.Market); }
public Order AddOrder(Order order) { int ticket = MetaAPI.OrderSend(order.Symbol, order.Type, order.Side, order.Volume, order.OpenPrice, order.SL, order.TP, ""); return(GetOrderByID(ticket)); }