public OrderMarket PlaceOrderMarket(Symbol symbol, OrderSide side, decimal quantity,
                                            Action <OrderBase> orderStatusHandler = null, Action <OrderBase, ErrorCodes> errorHandler = null)
        {
            OrderMarket order = new OrderMarket(side, quantity, symbol, this);

            return(_sender.PlaceOrderMarket(order, orderStatusHandler, errorHandler));
        }
        internal OrderMarket PlaceOrderMarket(OrderMarket order, Action <OrderBase> orderStatusHandler = null, Action <OrderBase, ErrorCodes> errorHandler = null)
        {
            if (!_connection.IsControlConnected())
            {
                return(null);
            }
            order.OrderStatusChanged += orderStatusHandler;
            order.ErrorEvent         += errorHandler;
            _ordersLock.EnterWriteLock();
            try
            { _orders.Add(order.ClientId, order); }
            finally
            { _ordersLock.ExitWriteLock(); }
            bool result = _connection.PlaceOrder(order);

            if (!result)
            {
                _ordersLock.EnterWriteLock();
                try
                {
                    order.Dispose();
                    _orders.Remove(order.ClientId);
                }
                finally
                { _ordersLock.ExitWriteLock(); }
                order = null;
            }
            return(order);
        }
Exemple #3
0
        private bool CreateMarketOrder(Trade unprocessedTrade, int nextValidId, IBApi.EClient clientSocket)
        {
            bool result = false;

            try
            {
                OrderMarket marketOrder = new OrderMarket();
                marketOrder.Action      = unprocessedTrade.Action;
                marketOrder.Quantity    = unprocessedTrade.Quantity;
                marketOrder.TimeInForce = unprocessedTrade.TimeInForce;

                Contract contract = new Contract();
                contract.Symbol   = unprocessedTrade.Symbol;
                contract.SecType  = unprocessedTrade.SecurityType.ToString();
                contract.Currency = unprocessedTrade.Currency;
                contract.Exchange = unprocessedTrade.Exchange;
                if (!string.IsNullOrEmpty(unprocessedTrade.PrimaryExchange))
                {
                    contract.PrimaryExch = unprocessedTrade.PrimaryExchange;
                }
                else
                {
                    string primaryExchange = CheckPrimaryExchangeForSymbol(contract.Symbol);
                    if (!string.IsNullOrEmpty(primaryExchange))
                    {
                        contract.PrimaryExch = primaryExchange;
                    }
                }

                Strategy strategy = new Strategy();
                strategy.ID = unprocessedTrade.StrategyId;

                DBUtils.SavePlaceOrder(nextValidId, contract, marketOrder.GetOrder);//, strategy);
                clientSocket.placeOrder(nextValidId, contract, marketOrder.GetOrder);

                result = true;
            }
            catch (Exception e)
            {
                SaveError("CreateMarketOrder error: " + e.Message);
                result = false;
            }

            return(result);
        }
Exemple #4
0
        private void MakeOrder(OrderType orderType, OrderAction orderAction)
        {
            Contract contract = new Contract();

            IBApi.Order order = new IBApi.Order();

            switch (orderType)
            {
            case OrderType.MTL:

                // AUC
                contract.Symbol   = "IBKR";
                contract.SecType  = "STK";
                contract.Currency = "USD";
                contract.Exchange = "SMART";

                OrderAuction orderAuction = new OrderAuction();
                orderAuction.Action     = orderAction;
                orderAuction.LimitPrice = 10;
                orderAuction.Quantity   = 1;

                order = orderAuction.GetOrder;

                break;

            case OrderType.MKT:


                contract.Symbol   = "IBKR";
                contract.SecType  = "STK";
                contract.Currency = "USD";
                contract.Exchange = "SMART";

                OrderMarket orderMarket = new OrderMarket();
                orderMarket.Action      = orderAction;
                orderMarket.Quantity    = 1;
                orderMarket.TimeInForce = OrderTimeInForce.GTC;

                order = orderMarket.GetOrder;

                break;

            case OrderType.LMT:

                contract.Symbol   = "IBKR";
                contract.SecType  = "STK";
                contract.Currency = "USD";
                contract.Exchange = "SMART";

                OrderLimit orderLimit = new OrderLimit();

                orderLimit.Action      = orderAction;
                orderLimit.LimitPrice  = 10;
                orderLimit.Quantity    = 1;
                orderLimit.TimeInForce = OrderTimeInForce.GTC;

                order = orderLimit.GetOrder;

                break;
            }

            manager.SubmitOrder(contract, order);
        }