Beispiel #1
0
        public void testShowHidden()
        {
            O.freezeNow("07/01/2009");
            WatcherExclusionsTable.EXCLUSIONS.insert("QF.NDayBreak");
            MarketTickersTable.TICKERS.C_BLOOMBERG.updateOne(MarketTickersTable.TICKERS.C_MARKET.@is("TU.1C"), "TOE");
            var tuTopic = LiveWatcher.tickerTopic("QF.NDayBreak", "TOE", "Comdty");
            var fakeGui = new FakeWatcherGui();
            var watcher = new LiveWatcher(fakeGui);

            watcher.initialize();
            watcher.requireVisible(0);
            publishAim(tuTopic, "QF.NDayBreak", "TOE", "COMDTY", 5, "2009/07/01 14:00:03");
            fakeGui.waitMatches(0, watcher.visible);
            watcher.setShowHidden(true);
            fakeGui.waitMatches(1, watcher.visible);
            var visible = O.first(watcher.visibleRows());

            watcher.setShowHidden(false);
            fakeGui.waitMatches(0, watcher.visible);

            watcher.removeExclusion(visible);
            fakeGui.waitMatches(1, watcher.visible);

            watcher.addExclusion(visible);
            fakeGui.waitMatches(0, watcher.visible);
        }
Beispiel #2
0
        public void testCanPopulateDataTable()
        {
            var now = "2008/07/05 12:31:45";

            Dates.freezeNow(now);

            addOrders();
            var gui        = new FakeOrderTrackerGUI();
            var orderTable = gui.tracker.orderTable();

            gui.setMarket("RE.TEST.TY.1C");
            gui.doAllWork();
            var row = O.first(orderTable.rows());

            AreEqual("NDayBreak-daily-1.0", row["system"]);
            AreEqual("BFBD30", row["pv"]);
            AreEqual("RE.TEST.TY.1C", row["symbol"]);
            AreEqual(now, row["simFillTime"]);
            AreEqual("Enter short", row["enterExit"]);
            AreEqual("10,000", row["size"]);
            AreEqual("99.501235", row["simFillPrice"]);
            AreEqual("STOP(99.50)", row["details"]);
            AreEqual("an order", row["description"]);
            AreEqual("my pc", row["hostname"]);
        }
Beispiel #3
0
        public void testFerretMessages()
        {
            O.freezeNow("2008/08/08 08:08:08");
            ExecutionConfigurationTable.CONFIG.insert("Future", "CurrentPlatform", "CurrentRoute");
            var order1 = buy("order 1", stop(99.50), 100, oneBar());

            symbolSystem.order(order1);
            processTick(2.5);
            requireFerretHasOrders(order1);
            order1.cancel();
            O.wait(() => ferret.hasMessages(2));
            var orderMessage  = O.first(ferret.get());
            var cancelMessage = O.last(ferret.get());
            var orderId       = order1.ferretSubmission.id;

            AreEqual(orderId, orderMessage.text("USERORDERID"));
            AreEqual("BLACKBOX", orderMessage.text("CLIENTUSERID"));
            AreEqual("TOMAHAWK", orderMessage.text("CLIENTAPPNAME"));
            AreEqual("2008-08-08", orderMessage.text("ORDERDATE"));
            AreEqual("CurrentRoute", orderMessage.text("ROUTE"));
            AreEqual("CurrentPlatform", orderMessage.text("PLATFORM"));

            AreEqual(orderId, cancelMessage.text("ORIGINALUSERORDERID"));
            AreEqual(orderId.Replace('T', 'C'), cancelMessage.text("USERORDERID"));
            AreEqual("CancelOrder", cancelMessage.text("MESSAGETYPE"));
            AreEqual("2008-08-08", cancelMessage.text("ORDERDATE"));
            AreEqual(O.hostname(), cancelMessage.text("CLIENTHOSTNAME"));
            AreEqual("BLACKBOX", cancelMessage.text("CLIENTUSERID"));
            AreEqual("TOMAHAWK", cancelMessage.text("CLIENTAPPNAME"));
        }
Beispiel #4
0
 protected virtual void processBar(Dictionary <Symbol, Bar> symbolBars)
 {
     if (!barsLoadedThisBar)
     {
         loader.add(symbolBars);
         barsLoadedThisBar = false;
     }
     bridge().setCurrentSlippage(loader.currentSlippages(O.first(symbolBars.Values).time));
     bridge().processBar(symbolBars);
 }
Beispiel #5
0
        public DataTable table()
        {
            var result = new QDataTable();

            result.addTypedColumn("Metric", typeof(string));
            O.each(O.sort(Keys, (a, b) => {
                if (a.Equals(b))
                {
                    return(0);
                }
                if (a.Equals("ALL"))
                {
                    return(-1);
                }
                return(b.Equals("ALL") ? 1 : a.CompareTo(b));
            }), symbol => result.addTypedColumn(symbol.Replace(".", "_"), typeof(double)));
            var example = O.first(Values);

            O.each(O.sort(example.Keys), metric => addRow(metric, result));
            return(result);
        }
Beispiel #6
0
        public void testOrderSubmission()
        {
            O.freezeNow("2008/08/08 08:08:08");
            var order1 = buy("order 1", stop(99.50), 100, oneBar());

            symbolSystem.order(order1);
            processBar(1, 3, 1, 2);
            hasOrders(order1);
            requireFerretHasOrders();
            processTick(2.5);
            requireFerretHasOrders(order1);
            emailer.allowMessages();
            var submitted = O.the <LiveOrders.LiveOrder>(LiveOrders.ORDERS.ordersSubmitted(systemId, symbol().name));

            AreEqual("Enter", submitted.entryExit());
            fill(order1, 123);
            submitted = O.the <LiveOrders.LiveOrder>(LiveOrders.ORDERS.ordersSubmitted(systemId, symbol().name));
            var filled = O.the(O.list <LiveOrders.LiveOrder>(LiveOrders.ORDERS.ordersFilled(systemId, symbol().name)));

            AreEqual(123.0, filled.price().doubleValue());
            AreEqual(submitted, filled);
            var order2 = sell("order 2", stop(97.50), 10, oneBar());

            symbolSystem.order(order2);
            processTick(3.0);
            requireFerretHasOrders(order1, order2);
            var order3 = sell("market", market(), 50, oneBar());

            symbolSystem.order(order3);
            processTick(3.0);
            requireFerretHasOrders(order1, order2);
            symbolSystem.order(symbolSystem.position().exit("exit 1", market(), onTheClose()));
            processTick(4.0);
            submitted = O.first(O.list <LiveOrders.LiveOrder>(LiveOrders.ORDERS.ordersSubmitted(systemId, symbol().name)));
            AreEqual("Exit", submitted.entryExit());
        }
Beispiel #7
0
        public void testEmails()
        {
            var abc      = new Symbol("RE.TEST.TY.1C");
            var slippage = MarketTable.MARKET.fixedSlippage(abc.name);
            var monitor  = new PositionMonitor(LIVE_SYSTEM, O.list(abc, new Symbol("DEF")), "A_TOPIC");
            var counter  = new PublishCounter("OrderTracker.orderAdded");
            var order    = abc.buy("Go LONG", new Stop(50), 10, FillOrKill.FILL_KILL).placed();
            var trade    = new Trade(order, 52, 10, slippage, 1);
            var position = order.fill(trade);

            monitor.positionUpdate(position, trade, PositionMonitor.basicTradeEmail);
            monitor.goLive(O.list(position), abc);
            O.freezeNow("2008/09/22 14:47:04");
            LiveOrderEmailsTable.ORDER_EMAILS.insert("S-I-V", "PV", "ALL", "team");
            emailer.allowMessages();
            monitor.positionUpdate(position, trade, PositionMonitor.basicTradeEmail);
            var message = emailer.sent();

            message.hasSubject(@"S\(PV\) Filled Order for RE.TEST.TY.1C - " + O.hostname());
            message.hasContent(@"Order.*: Enter long 10 RE.TEST.TY.1C @ 52 STOP\(50.0000000\)");
            message.hasContent("Timestamp: 2008/09/22 14:47:04");
            message.hasContent("Description: Go LONG");
            emailer.clear();

            var liveOrders = O.list <LiveOrders.LiveOrder>(LiveOrders.ORDERS.ordersFilled(LIVE_SYSTEM.id(), abc.name));

            HasCount(1, liveOrders);
            var liveOrder = O.the(liveOrders);

            AreEqual(10, liveOrder.size());
            AreEqual("Enter", liveOrder.entryExit());
            AreEqual("long", liveOrder.positionDirection());
            AreEqual(liveOrder.id(), counter.getOneAndClear <int>("liveOrderId"));

            order = position.scaleUpLong("gimme more", new StopLimit(50, 60), 25, FillOrKill.FILL_KILL).placed();
            trade = new Trade(order, 55, 25, slippage, 1);
            order.fill(trade);
            monitor.positionUpdate(position, trade, PositionMonitor.basicTradeEmail);
            emailer.sent().hasContent(@"Order.*: Scale up long 25 RE.TEST.TY.1C @ 55 STOP_LIMIT\(50.0000000, 60.0000000\)");
            emailer.clear();
            liveOrders = O.list <LiveOrders.LiveOrder>(LiveOrders.ORDERS.ordersFilled(LIVE_SYSTEM.id(), abc.name));
            HasCount(2, liveOrders);
            liveOrder = O.first(liveOrders);
            AreEqual(25, liveOrder.size());
            AreEqual("Scale up", liveOrder.entryExit());
            AreEqual("long", liveOrder.positionDirection());

            order = position.scaleDownLong("gimme more", new Limit(55), 20, FillOrKill.FILL_KILL).placed();
            trade = new Trade(order, 55, 20, slippage, 1);
            order.fill(trade);
            monitor.positionUpdate(position, trade, PositionMonitor.basicTradeEmail);
            emailer.sent().hasContent(@"Order.*: Scale down long 20 RE.TEST.TY.1C @ 55 LIMIT\(55.0000000\)");
            emailer.clear();

            order = position.exitLong("Get out", new Market(), OneBar.ONE).placed();
            trade = new Trade(order, 40, 15, slippage, 1);
            order.fill(trade);
            monitor.positionUpdate(position, trade, PositionMonitor.basicTradeEmail);
            emailer.sent().hasContent(@"Order.*: Exit long 15 RE.TEST.TY.1C @ 40 MARKET");

            emailer.disallowMessages();
            LiveOrderEmailsTable.ORDER_EMAILS.deleteAll(Clause.TRUE);
            monitor.positionUpdate(position, trade, PositionMonitor.basicTradeEmail);
        }
Beispiel #8
0
 static DataRow latestRow(FakeOrderTrackerGUI gui)
 {
     return(O.first(gui.tracker.orderTable().rows()));
 }