public void PartialFill() { // reset everything id = 1; o = new OrderImpl(); ot = new OrderTracker(); ot.SendDebugEvent += new DebugDelegate(ot_SendDebugEvent); ot.VerboseDebugging = true; // verify no size/pending/cancel Assert.AreEqual(0, ot.Sent(id), "sent but not sent"); Assert.IsFalse(ot.isCompleted(id), "completed but not sent"); Assert.IsFalse(ot.isCanceled(id), "wrongly canceled"); Assert.IsFalse(ot.isPending(id), "wrongly pending"); Assert.IsFalse(ot.isTracked(id), "wrongly tracked"); // send a buy order o = new BuyLimit(sym, 200, 100, id++); ot.GotOrder(o); // fill it Assert.IsTrue(o.Fill(TickImpl.NewTrade(sym, 100, 100)), "order did not fill"); ot.GotFill((Trade)o); // verify order is there Assert.IsTrue(ot.SentOrder(id - 1).isValid, "no valid order"); // verify size/pending/cancel Assert.AreEqual(200, ot.Sent(id - 1), "not sent buy"); Assert.AreEqual(100, ot.Filled(id - 1), "incorrect fill size buy"); Assert.IsFalse(ot.isCompleted(id - 1), "wrongly completed"); Assert.IsFalse(ot.isCanceled(id - 1), "wrongly canceled"); Assert.IsTrue(ot.isPending(id - 1), "wrongly pending"); Assert.IsTrue(ot.isTracked(id - 1), "not tracked"); // do sell order // verify no size/pending/cancel Assert.AreEqual(0, ot.Sent(id), "sent but not sent"); Assert.IsFalse(ot.isCompleted(id), "completed but not sent"); Assert.IsFalse(ot.isCanceled(id), "wrongly canceled"); Assert.IsFalse(ot.isPending(id), "wrongly pending"); Assert.IsFalse(ot.isTracked(id), "wrongly tracked"); // send sell order o = new SellLimit(sym, 200, 100, id++); ot.GotOrder(o); // fill it Assert.IsTrue(o.Fill(TickImpl.NewTrade(sym, 100, 100)), "order did not fill"); ot.GotFill((Trade)o); // verify order is there Assert.IsTrue(ot.SentOrder(id - 1).isValid, "no valid order"); // verify size/pending/cancel Assert.AreEqual(-100, ot.Filled(id - 1), "incorrect fill size sell"); Assert.AreEqual(-200, ot.Sent(id - 1), "not sent sell"); Assert.IsFalse(ot.isCompleted(id - 1), "wrongly completed"); Assert.IsFalse(ot.isCanceled(id - 1), "wrongly canceled"); Assert.IsTrue(ot.isPending(id - 1), "wrongly pending"); Assert.IsTrue(ot.isTracked(id - 1), "not tracked"); }
public void Sent() { // reset everything id = 1; o = new OrderImpl(); ot = new OrderTracker(); ot.SendDebugEvent += new DebugDelegate(ot_SendDebugEvent); ot.VerboseDebugging = true; // verify no size/pending/cancel Assert.AreEqual(0, ot.Sent(id), "sent but not sent"); Assert.IsFalse(ot.isCompleted(id), "completed but not sent"); Assert.IsFalse(ot.isCanceled(id), "wrongly canceled"); Assert.IsFalse(ot.isPending(id), "wrongly pending"); Assert.IsFalse(ot.isTracked(id), "wrongly tracked"); // send a buy order ot.GotOrder(new BuyLimit(sym, 100, 100, id++)); // verify order is there Assert.IsTrue(ot.SentOrder(id - 1).isValid, "no valid order"); // verify size/pending/cancel Assert.AreEqual(100, ot.Sent(id - 1), "not sent"); Assert.AreEqual(0, ot.Filled(id - 1), "incorrect fill size"); Assert.IsFalse(ot.isCompleted(id - 1), "completed but not filled"); Assert.IsFalse(ot.isCanceled(id - 1), "wrongly canceled"); Assert.IsTrue(ot.isPending(id - 1), "not pending"); Assert.IsTrue(ot.isTracked(id - 1), "not tracked"); Assert.IsTrue(ot.GetOrderId(0) == 1, "no id at idx"); // do sell order // verify no size/pending/cancel Assert.AreEqual(0, ot.Sent(id), "sent but not sent"); Assert.IsFalse(ot.isCompleted(id), "completed but not sent"); Assert.IsFalse(ot.isCanceled(id), "wrongly canceled"); Assert.IsFalse(ot.isPending(id), "wrongly pending"); Assert.IsFalse(ot.isTracked(id), "wrongly tracked"); // send a sell order ot.GotOrder(new SellLimit(sym, 100, 100, id++)); // verify order is there Assert.IsTrue(ot.SentOrder(id - 1).isValid, "no valid order"); // verify size/pending/cancel Assert.AreEqual(-100, ot.Sent(id - 1), "not sent"); Assert.AreEqual(0, ot.Filled(id - 1), "incorrect fill size"); Assert.IsFalse(ot.isCompleted(id - 1), "completed but not filled"); Assert.IsFalse(ot.isCanceled(id - 1), "wrongly canceled"); Assert.IsTrue(ot.isPending(id - 1), "not pending"); Assert.IsTrue(ot.isTracked(id - 1), "not tracked"); }
void tl_gotOrder(Order o) { ord.GotOrder(o); if (orderidx(o.id) == -1) // if we don't have this order, add it { ordergrid.Rows.Add(new object[] { o.id, o.symbol, (o.side ? "BUY" : "SELL"), o.UnsignedSize, (o.price == 0 ? "Market" : o.price.ToString(_dispdecpointformat)), (o.stopp == 0 ? "" : o.stopp.ToString(_dispdecpointformat)), o.Account }); } }
private void ClientGotOrder(Order o) { int pos = OrderTable.Select(row => row.OrderId).ToList().IndexOf(o.Id); System.Windows.Application.Current.Dispatcher.Invoke(() => { if (pos == -1) // not found { OnDebug("Order id " + o.Id.ToString() + " is not found in order table; possibly new order."); // it must be previous open order, or placed by tws // add to _ordertracker _ordertracker.GotOrder(o); // update status OrderTable.Add(new OrderEntry(o.Id, o.Account, o.FullSymbol, o.OrderType, o.Price, o.OrderSize, o.OrderTime, EnumDescConverter.GetEnumDescription(o.OrderStatus))); } else { OrderTable[pos].Status = EnumDescConverter.GetEnumDescription(o.OrderStatus); } }); }
public void GotOrder(Order o) { ord.GotOrder(o); ShowItems(AccountActivity.NewOrder(o)); }