public void ClientCancelsLimitOrder() { OrderStatus status = OrderStatus.New; var manualResetEvent = new ManualResetEvent(false); var ib = new InteractiveBrokersBrokerage(); ib.Connect(); ib.OrderEvent += (sender, args) => { status = args.Status; manualResetEvent.Set(); }; // try to sell a single share at a ridiculous price, we'll cancel this later var order = new Order("AAPL", SecurityType.Equity, -1, OrderType.Limit, DateTime.UtcNow, 100000); ib.PlaceOrder(order); manualResetEvent.WaitOne(2500); ib.CancelOrder(order); manualResetEvent.Reset(); manualResetEvent.WaitOne(2500); Assert.AreEqual(OrderStatus.Canceled, status); }
public void ClientPlacesLimitOrder() { bool orderFilled = false; var manualResetEvent = new ManualResetEvent(false); var ib = new InteractiveBrokersBrokerage(); ib.Connect(); decimal aapl = 100m; decimal delta = 85.0m; // if we can't get a price then make the delta huge ib.OrderEvent += (sender, args) => { orderFilled = true; aapl = args.FillPrice; delta = 0.02m; manualResetEvent.Set(); }; // get the current market price, couldn't get RequestMarketData to fire tick events int id = 0; ib.PlaceOrder(new Order("AAPL", SecurityType.Equity, 1, OrderType.Market, DateTime.UtcNow) { Id = ++id }); manualResetEvent.WaitOne(2000); manualResetEvent.Reset(); // make a box around the current price +- a little const int quantity = 1; var order = new Order("AAPL", SecurityType.Equity, +quantity, OrderType.Limit, DateTime.Now, aapl - delta) {Id = ++id}; ib.PlaceOrder(order); ib.PlaceOrder(new Order("AAPL", SecurityType.Equity, -quantity, OrderType.Limit, DateTime.Now, aapl + delta) {Id = ++id}); manualResetEvent.WaitOne(1000); var orderFromIB = AssertOrderOpened(orderFilled, ib, order); Assert.AreEqual(OrderType.Limit, orderFromIB.Type); }
public void ClientSellsMarketOrder() { bool orderFilled = false; var manualResetEvent = new ManualResetEvent(false); var ib = new InteractiveBrokersBrokerage(); ib.Connect(); ib.OrderEvent += (sender, args) => { orderFilled = true; manualResetEvent.Set(); }; // sell a single share var order = new Order("AAPL", SecurityType.Equity, -1, OrderType.Market, DateTime.UtcNow); ib.PlaceOrder(order); manualResetEvent.WaitOne(2500); var orderFromIB = AssertOrderOpened(orderFilled, ib, order); Assert.AreEqual(OrderType.Market, orderFromIB.Type); }
public void ClientPlacesMarketOrder() { bool orderFilled = false; var manualResetEvent = new ManualResetEvent(false); var ib = new InteractiveBrokersBrokerage(); ib.Connect(); ib.Client.RequestOpenOrders(); ib.OrderEvent += (sender, args) => { orderFilled = true; manualResetEvent.Set(); }; const int buyQuantity = 1; //ib.PlaceOrder(new Order("AAPL", SecurityType.Equity, buyQuantity, OrderType.Market, DateTime.Now)); var order = new Order("AAPL", SecurityType.Equity, buyQuantity, OrderType.Market, DateTime.Now); ib.PlaceOrder(order); manualResetEvent.WaitOne(2500); var orderFromIB = AssertOrderOpened(orderFilled, ib, order); Assert.AreEqual(OrderType.Market, orderFromIB.Type); }