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); }
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); }
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); }