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); }
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); }
[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); }
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); }
public Simulator simulator(SystemArguments args, string prefix) { var simulator = new Simulator(args, this, prefix); setSpudManager(simulator.bridge.manager); return(simulator); }
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")); }
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(); }
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; }
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())); }
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); }
[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); }
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 }
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()); }
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(); }
public override void addCollectorsTo(SystemArguments arguments, Dictionary <Collectible, StatisticsCollector> collectors) { each(arguments.symbols, symbol => collectors[symbol] = new StatisticsCollector(arguments)); }
public void addCollectorsTo(SystemArguments arguments, Dictionary <Collectible, StatisticsCollector> collectors) { collectors.Add(this, new StatisticsCollector(arguments)); }
static Simulator makeSimulator(SystemArguments args) { return(new Simulator(args, OrderTable.prefix)); }
public Simulator(SystemArguments args, string topicPrefix) : this(args, new SystemDbBarLoader(args.interval(), args.symbols), topicPrefix) { }
public CommodityCarryPairGenerator(SystemArguments arguments) : base(arguments) { }
public SomeCombination(SystemArguments arguments) : base(arguments) { }