示例#1
0
 public void testMetrics()
 {
     bar(1, 2, 10, 4);
     fill(A, 0, 2);
     fill(B, 0, 2);
     fill(C, 0, 2);
     fill(D, 0, 2);
     bar(2, 4, 6, 8);
     bar(0, 0, 0, 0);
     bar(3, 6, 9, 2);
     bar(2, 3, 4, 5);
     O.each(O.copy(system().allPositions()), p => system().systems_[p.symbol].placeOrder(p.exit("f-in a", market(), fillOrKill())));
     fill(A, 0, 0);
     fill(B, 0, 0);
     fill(C, 0, 0);
     fill(D, 0, 0);
     bar(5, 7, 9, 11);
     bridge().statistics().writeSTOFiles(true);
     checkMetrics(A.name, "QNetProfit", -2);
     checkMetrics("ALL", "QNetProfit", -8);
     checkMetrics(A.name, "QMaxDrawdown", -3);
     checkMetrics("ALL", "QMaxDrawdown", -20);
     checkMetrics("P1", "QMaxDrawdown", -15);
     checkMetrics("P2", "QMaxDrawdown", -30);
 }
示例#2
0
        public void testSystem()
        {
            var rc = 0.0;

            O.each(symbols, symbol => system().richCheap[symbol].enterTestMode());
            O.each(symbols, symbol => system().richCheap[symbol].add(time, rc++));
            bridge().processBar(bars(time));
            hasOrders(symbols[0], symbols[0].buy("enter long", market(), 1, oneBar()));
            hasOrders(symbols[1], symbols[1].buy("enter long", market(), 1, oneBar()));
            hasOrders(symbols[2], symbols[2].buy("enter long", market(), 1, oneBar()));
            hasOrders(symbols[49], symbols[49].sell("enter short", market(), 1, oneBar()));
            hasOrders(symbols[48], symbols[48].sell("enter short", market(), 1, oneBar()));
            hasOrders(symbols[47], symbols[47].sell("enter short", market(), 1, oneBar()));
            var i = 1;

            system().richCheap[O.first(symbols)].add(time.AddDays(i++), 100);
            processBar(bars(time.AddDays(1)));
            hasOrders(symbols[3], symbols[3].buy("enter long", market(), 1, oneBar()));
            hasOrders(symbols[1], symbols[1].buy("enter long", market(), 1, oneBar()));
            hasOrders(symbols[2], symbols[2].buy("enter long", market(), 1, oneBar()));
            hasOrders(symbols[49], symbols[49].sell("enter short", market(), 1, oneBar()));
            hasOrders(symbols[48], symbols[48].sell("enter short", market(), 1, oneBar()));
            hasOrders(symbols[0], symbols[0].sell("enter short", market(), 1, oneBar()));
            O.each(orders(), order => fill(order, 0));
            processBar(bars(time.AddDays(i++)));
            noOrders();
            processBar(bars(time.AddDays(i++)));
            noOrders();
            processBar(bars(time.AddDays(i++)));
            noOrders();
            system().richCheap[O.first(symbols)].add(time.AddDays(i), 0);
            processBar(bars(time.AddDays(i++)));
            hasOrders(symbols[3], symbols[3].sell("exit long", market(), 1, oneBar()));
            hasOrders(symbols[47], symbols[47].sell("enter short", market(), 1, oneBar()));
            hasOrders(symbols[0], symbols[0].buy("enter long", market(), 1, oneBar()), symbols[0].buy("exit short", market(), 1, oneBar()));
            O.each(O.copy(orders()), order => fill(order, 0));
            system().richCheap[O.first(symbols)].add(time.AddDays(i), 100);
            processBar(bars(time.AddDays(i)));
            noOrders(); // holding period
        }