コード例 #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
        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);
        }