示例#1
0
        public void testCanGoLiveWithoutCloseTime()
        {
            var liveSystem = LIVE_SYSTEM;

            liveSystem.setQClassName(typeof(ExampleSymbolSystem).FullName);
            liveSystem.populateDetailsIfNeeded(false);
            liveSystem.insertParameter("lookback", "2");
            liveSystem.insertParameter("LeadBars", "0");

            MarketSessionTable.SESSION.update(SYMBOL.name, Session.DAY, "NO_CLOSE", 0);
            ExchangeSessionTable.EXCHANGE_SESSION.update(new Market(SYMBOL.name).exchange(), Session.DAY, "NO_CLOSE", 0);
            var args = new SystemArguments(SYMBOL, new Parameters {
                { "systemId", liveSystem.id() },
                { "RunMode", (double)RunMode.LIVE }
            });
            var simulator = makeSimulator(args);

            simulator.processBars(300);
            while (O.hasContent(simulator.allPositions()))
            {
                simulator.nextBar();
            }
            simulator.goLive();
            var time = simulator.currentDate().AddDays(1);

            O.freezeNow(time);
            noPosition(simulator);
            var current = new Bar(120, 120, 120, 120, time);

            tick(simulator, current, SYMBOL);
            hasPosition(simulator);
            time    = time.AddSeconds(1);
            current = current.update(new Tick(118, 1, time));
            tick(simulator, current, SYMBOL);
        }
示例#2
0
        public void testCanRunSystem()
        {
            var className  = "Q.Systems.NDayBreak";
            var parameters = new Parameters(className)
            {
                { "ATRLen", 10 },
                { "ATRlong", 100 },
                { "BreakDays", 30 },
                { "FirstDayATR", 1 },
                { "FixEquity", 1 },
                { "InitEquity", 6000000 },
                { "LeadBars", 50 },
                { "MaxPyramid", 1 },
                { "Risk", 0.02 },
                { "nATR", 2 },
                { "upATR", 2 },
                { "systemId", 39 }
            };
            var markets   = O.list(new Symbol(new Market("RE.TEST.TY.1C")));
            var arguments = new SystemArguments(markets, parameters);
            var simulator = new Simulator(arguments, "NOSENDMESSAGES");

            simulator.processBars(300);
            AlmostEqual(293099.30, simulator.pnl(), 0.01);
        }
示例#3
0
        [Test] public void fullRun()
        {
            O.freezeNow("2009/01/15"); // so that params don't change out from under us
            var args = new SystemArguments(
                symbol(),
                new Parameters {
                { "systemId", 188387 },
                { "RunMode", (double)RunMode.RIGHTEDGE },
                { "maType", 2 },
                { "maLength", 8 },
                { "stDevLength", 10 },
                { "regressionProjectionBars", 5 },
                { "regressionBars", 8 },
                { "ZEntry", 2 },
                { "minPnLMultTC", 5 },
                { "stopMultiple", 3 },
                { "RiskDollars", 100000000 },
                { "ZExit", 1 },
                { "MaxBarsHeld", 999 },
                { "LeadBars", leadBars() }
            });
            BarLoader barLoader = new SystemDbBarLoader(Interval.DAILY, O.list(symbol()), date("2004/11/26"));
            var       simulator = new Simulator.Simulator(args, barLoader, OrderTable.prefix);

            simulator.processBars();
            // using slippage for RE.TEST.TY.1C: 0.015625
            // Date range: 11/26/04 - 4/18/08
            // Parameter set from the parameters() method below.
            AlmostEqual(-149665265.63, simulator.pnl(), 0.01);
        }
示例#4
0
        public static void Main(string[] args)
        {
            var arguments = Arguments.arguments(args, jStrings("system", "prefix"));
            var system    = arguments.get("system");
            var prefix    = arguments.get("prefix", PREFIX_DEFAULT);

            LogC.setOut("Tomahawk", Systematic.logsDir().file("Tomahawk." + system + ".log").path(), true);
            LogC.useJavaLog = true;
            LogC.info("running system " + system + ", process " + processId());
            var liveSystems = accept(list <LiveSystem>(MsivLiveHistory.LIVE.liveSystems()), ls => ls.siv().system().Equals(system));

            each(liveSystems, liveSystem => {
                Bomb.when(liveSystem.details().runInNativeCurrency(), () => "not allowed to run live systems in native currency");
                var markets    = list <Market>(liveSystem.markets());
                var symbols    = convert(markets, market => new Symbol(market.name(), market.bigPointValue()));
                var systemId   = liveSystem.id();
                var parameters = new Parameters {
                    { "systemId", systemId },
                    { "RunMode", (double)RunMode.LIVE }
                };
                Bomb.when(isEmpty(symbols), () => "No markets for " + systemId);
                var systemArguments = new SystemArguments(symbols, parameters);

                var start = date(systemArguments.interval().isDaily() ? BloombergSecurity.BBG_START_HISTORICAL : BloombergSecurity.BBG_START_INTRADAY);
                if (parameters.has("DaysBack"))
                {
                    start = now().AddDays(-parameters.get <int>("DaysBack"));
                }
                var loader    = new SystemDbBarLoader(liveSystem.details().interval(), symbols, start);
                var simulator = new Simulator(systemArguments, loader, prefix);
                simulator.processBars();
                simulator.goLive();
            });
            sleep(Int32.MaxValue);
        }
示例#5
0
        public Simulator simulator(SystemArguments args, string prefix)
        {
            var simulator = new Simulator(args, this, prefix);

            setSpudManager(simulator.bridge.manager);
            return(simulator);
        }
示例#6
0
        public Simulator.Simulator newSimulator(Action <Collectible, PlotDefinition> addPlot)
        {
            var args = new SystemArguments(symbols(), parameters)
            {
                runInNativeCurrency = runInNativeCurrency
            };

            args.newPlotRequest += addPlot;
            return(new Simulator.Simulator(args, loader(args.interval()), "UNUSEDHOPEFULLY"));
        }
示例#7
0
 public Simulator(SystemArguments args, BarLoader data, string topicPrefix)
 {
     newBarListeners     = new LazyDictionary <Symbol, Action <Bar> >(symbol => doNothing);
     this.data           = data;
     symbols             = args.symbols;
     bridge              = args.bridgeBase(topicPrefix);
     dateIndex           = 0;
     processBarComplete += doNothing;
     interval            = args.interval();
 }
示例#8
0
 public StatisticsManager(System system, SystemArguments arguments)
 {
     this.system    = system;
     this.arguments = arguments;
     system.addCollectorsTo(arguments, collectors);
     each(arguments.portfolios, p => p.addCollectorsTo(arguments, collectors));
     allPortfolio = new Portfolio("ALL", arguments.siv());
     each(arguments.symbols, symbol => allPortfolio.Add(symbol, 1.0));
     allPortfolio.addCollectorsTo(arguments, collectors);
     onNewTrade += doNothing;
 }
示例#9
0
 public StatisticsCollector(SystemArguments arguments)
 {
     this.arguments = arguments;
     trackers.Add("ALL", new TradeTracker((position, pnl) => true));
     trackers.Add("WINNING", new TradeTracker((position, pnl) => isWin(pnl)));
     trackers.Add("LOSING", new TradeTracker((position, pnl) => isLoser(pnl)));
     trackers.Add("NEUTRAL", new TradeTracker((position, pnl) => pnl == 0));
     trackers.Add("LONG_WINNING", new TradeTracker((position, pnl) => isWin(pnl) && position.entry().isLong()));
     trackers.Add("LONG_LOSING", new TradeTracker((position, pnl) => isLoser(pnl) && position.entry().isLong()));
     trackers.Add("SHORT_WINNING", new TradeTracker((position, pnl) => isWin(pnl) && position.entry().isShort()));
     trackers.Add("SHORT_LOSING", new TradeTracker((position, pnl) => isLoser(pnl) && position.entry().isShort()));
 }
示例#10
0
        public void testOnClose()
        {
            var args = new SystemArguments(SYMBOL, new Parameters {
                { "systemId", 6172 },
                { "LeadBars", 0 },
                { "RunMode", (double)RunMode.RIGHTEDGE }
            });
            var simulator = makeSimulator(args);

            simulator.processBars(300);
            // simulator.processBars();
            // full date range: AlmostEqual(54890.63 - 164000, simulator.pnl(), 0.01);
            AlmostEqual(-8109.38, simulator.pnl(), 0.01);
        }
示例#11
0
        [Test] public void fullRun()
        {
            O.freezeNow("2009/01/15"); // so that params don't change out from under us
            var args = new SystemArguments(
                symbol(),
                new Parameters {
                { "systemId", 63234 },
                { "RunMode", (double)RunMode.LIVE }
            });
            var simulator = new Simulator.Simulator(args, OrderTable.prefix);

            simulator.processBars(300);
            // using slippage for RE.TEST.TY.1C: 0.015625
            // Full run AlmostEqual(-1975093.75, simulator.pnl(), 0.01);
            AlmostEqual(-184296.88, simulator.pnl(), 0.01);
        }
示例#12
0
        public void testNDayBreak()
        {
            LogC.setOut("stop", @"U:\Knell\stop.log", true);
            O.freezeNow("2008/11/01"); // so that params don't change out from under us
            var args = new SystemArguments(SYMBOL, new Parameters {
                { "systemId", 39 },
                { "RunMode", (double)RunMode.LIVE }
            });
            var simulator = makeSimulator(args);

            simulator.processBars(300);
            // using slippage for RE.TEST.TY.1C: 0.015625
            // AlmostEqual(6266670.11, simulator.pnl(), 0.01); // InitEquity 6000000, slippage = 0
            // full date range: AlmostEqual(5683201.36, simulator.pnl(), 0.01); // InitEquity 6000000, slippage = 0.015625
            AlmostEqual(293099.30, simulator.pnl(), 0.01);// 300 bars, InitEquity 6000000, slippage = 0.015625
        }
示例#13
0
        public void testSystemSystemCurveFileGeneration()
        {
            var args = new SystemArguments(SYMBOL, new Parameters {
                { "systemId", 320978 },
                { "Risk", 10000 },
                { "RunMode", (double)RunMode.LIVE }
            });

            MsivTable.MSIVS.insert(SYMBOL.name, args.siv());
            var simulator = makeSimulator(args);

            simulator.processBars(30);
            simulator.writeCurveFiles(curvesDirectory);
            var written = curvesDirectory.file(args.liveSystem().fileName(SYMBOL.name) + ".bin");

            AreEqual(30 * 3 * 8, written.size());
        }
示例#14
0
        public void testNBarFade()
        {
            O.freezeNow("2009/03/10");
            var symbol = new Symbol("RE.TEST.TY.1C", 1000);
            var args   = new SystemArguments(symbol, new Parameters {
                { "systemId", 133486 },
                { "RunMode", (double)RunMode.RIGHTEDGE },
                { "LeadBars", 50 },
                { "ATRLen", 5 },
                { "nDays", 6 },
                { "nATRentry", 1.5 },
                { "exitATRmultiple", 1 },
                { "stopAfStep", 0.02 },
                { "stopAfMax", 0.2 },
                { "entryBarWindow", 2 },
                { "closeBetter", 1 },
                { "riskDollars", 100000000 }
            });
            var loader    = new SystemDbBarLoader(Interval.DAILY, O.list(symbol), date("2003/01/01"));
            var simulator = new Simulator(args, loader, OrderTable.prefix);

            simulator.processBars();
        }
示例#15
0
 public override void addCollectorsTo(SystemArguments arguments, Dictionary <Collectible, StatisticsCollector> collectors)
 {
     each(arguments.symbols, symbol => collectors[symbol] = new StatisticsCollector(arguments));
 }
示例#16
0
 public void addCollectorsTo(SystemArguments arguments, Dictionary <Collectible, StatisticsCollector> collectors)
 {
     collectors.Add(this, new StatisticsCollector(arguments));
 }
示例#17
0
 static Simulator makeSimulator(SystemArguments args)
 {
     return(new Simulator(args, OrderTable.prefix));
 }
示例#18
0
 public Simulator(SystemArguments args, string topicPrefix) : this(args, new SystemDbBarLoader(args.interval(), args.symbols), topicPrefix)
 {
 }
示例#19
0
 public CommodityCarryPairGenerator(SystemArguments arguments) : base(arguments)
 {
 }
示例#20
0
 public SomeCombination(SystemArguments arguments) : base(arguments)
 {
 }