コード例 #1
0
        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);
        }
コード例 #2
0
 public Order GetOrderByID(int orderID)
 {
     if (!MetaAPI.OrderSelect(orderID, SelectType.SELECT_BY_TICKET, SelectModeType.MODE_TRADES))
     {
         return(null);
     }
     return(BuildOrderFromCurrent());
 }
コード例 #3
0
        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);
        }
コード例 #4
0
 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));
     }
 }
コード例 #5
0
 public void ModifyLimitOrder(int orderID, int OpenPrice, int SL, int TP)
 {
     MetaAPI.OrderModify(orderID, OpenPrice, SL, TP, OrderType.Limit);
 }
コード例 #6
0
 public void ModifyMarketOrder(int orderID, int SL, int TP)
 {
     MetaAPI.OrderModify(orderID, 0, SL, TP, OrderType.Market);
 }
コード例 #7
0
        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));
        }