public void Constructor() { Strategy strategy = new Strategy(); performance = new PerformanceInner(strategy); Assert.IsNotNull(performance, "MoneyManagerSupport constructor"); }
public void TradeTesting() { PerformanceInner manager = TradeTickProcessing(0, 0, 30000); TransactionPairBinary expected = TransactionPairBinary.Create(); expected.Enter(1, 105.660, new TimeStamp(2005, 2, 8, 11, 57, 22, 429), emptyTime, 1, 0, 0); expected.Exit(105.670, new TimeStamp(2005, 2, 8, 11, 57, 51, 479), emptyTime, 1, 0, 0); TransactionPairs rts = manager.ComboTrades; Assert.AreEqual(-.034, Math.Round(rts.CalcProfitLoss(0), 3), "First Trade PnL"); }
public TradingSignalTest(PerformanceInner test, ModelInterface formula) : base(formula) { this.test = test; }
public PerformanceInner TradeTickProcessing(int stop, int target, int count) { // Creation. RandomCommon random = new RandomCommon(); PerformanceInner performance = new PerformanceInner(random); var symbol = Factory.Symbol.LookupSymbol("USD_JPY_YEARS"); ProfitLossDefault profitLossLogic = new ProfitLossDefault(symbol); profitLossLogic.Slippage = 0.0140; profitLossLogic.Commission = 0.010; random.Performance = performance; random.Performance.Equity.EnableMonthlyStats = true; random.Performance.Equity.EnableWeeklyStats = true; // Stops random.ExitStrategy.StopLoss = stop; Starter starter = new HistoricalStarter(); starter.StartCount = 0; starter.EndCount = starter.StartCount + count + 1; starter.ProjectProperties.Starter.SetSymbols("USD_JPY_YEARS"); starter.ProjectProperties.Starter.SymbolProperties[0].ProfitLoss = profitLossLogic; starter.DataFolder = "Test"; starter.Run(random); Assert.AreEqual(performance, random.Performance); Assert.AreEqual(performance.tradingSignalTest, random.Performance.Position); // Signal Times BEFORE applying stops or target // 0: 1: time: 2004-07-22 08:02:08.757 bid: 109440 ask: 109440 // 1: 0: time: 2004-07-22 08:17:22.292 bid: 109500 ask: 109500 // 2: 1: time: 2004-07-22 08:53:46.250 bid: 109500 ask: 109500 // 3: 0: time: 2004-07-22 09:13:55.649 bid: 109440 ask: 109440 // 4: 1: time: 2004-07-22 09:52:09.466 bid: 109510 ask: 109510 // 5: 0: time: 2004-07-22 10:15:41.148 bid: 109480 ask: 109480 // 6: 1: time: 2004-07-22 10:17:15.545 bid: 109460 ask: 109460 // 7: 0: time: 2004-07-22 10:25:51.115 bid: 109430 ask: 109430 // 8: -1: time: 2004-07-22 10:39:44.278 bid: 109300 ask: 109300 // 9: 0: time: 2004-07-22 10:50:38.874 bid: 109440 ask: 109440 // 10: -1: time: 2004-07-22 11:56:52.119 bid: 109650 ask: 109650 // 11: 0: time: 2004-07-22 12:00:06.510 bid: 109640 ask: 109640 // 12: -1: time: 2004-07-23 08:01:04.984 bid: 110140 ask: 110140 // 13: 0: time: 2004-07-23 08:59:47.208 bid: 110060 ask: 110060 // 14: 1: time: 2004-07-23 09:15:11.005 bid: 110040 ask: 110040 // 15: -1: time: 2004-07-23 09:27:48.083 bid: 110030 ask: 110030 // 16: 1: time: 2004-07-23 09:50:06.263 bid: 110040 ask: 110040 // 17: -1: time: 2004-07-23 10:06:45.265 bid: 110030 ask: 110030 // 18: 1: time: 2004-07-23 10:12:18.754 bid: 110010 ask: 110010 // 19: 0: time: 2004-07-23 10:13:04.936 bid: 109980 ask: 109980 // 20: -1: time: 2004-07-23 10:22:03.758 bid: 110030 ask: 110030 // 21: 1: time: 2004-07-23 10:27:12.674 bid: 110020 ask: 110020 // 22: 0: time: 2004-07-23 10:40:50.220 bid: 109990 ask: 109990 // 23: 1: time: 2004-07-23 10:46:57.644 bid: 109990 ask: 109990 // 24: -1: time: 2004-07-23 11:34:50.614 bid: 110060 ask: 110060 // 25: 1: time: 2004-07-23 11:40:56.003 bid: 109970 ask: 109970 // 26: -1: time: 2004-07-23 11:57:13.950 bid: 110050 ask: 110050 // 27: 1: time: 2004-07-23 11:59:46.275 bid: 110080 ask: 110080 // 28: 0: time: 2004-07-23 12:00:06.336 bid: 110100 ask: 110100 // 29: -1: time: 2004-07-27 08:14:04.988 bid: 109800 ask: 109800 // 30: 1: time: 2004-07-27 08:17:55.551 bid: 109820 ask: 109820 // 31: -1: time: 2004-07-27 08:30:10.289 bid: 109860 ask: 109860 // 32: 1: time: 2004-07-27 08:33:25.932 bid: 109930 ask: 109930 // 33: -1: time: 2004-07-27 08:48:41.252 bid: 109940 ask: 109940 // 34: 1: time: 2004-07-27 08:58:40.535 bid: 109960 ask: 109960 // 35: 0: time: 2004-07-27 09:19:58.806 bid: 110240 ask: 110240 // 36: -1: time: 2004-07-27 09:48:02.851 bid: 110310 ask: 110310 // 37: 1: time: 2004-07-27 09:53:33.746 bid: 110330 ask: 110330 // 38: -1: time: 2004-07-27 10:10:49.768 bid: 110600 ask: 110600 // 39: 0: time: 2004-07-27 10:23:21.270 bid: 110660 ask: 110660 // 40: -1: time: 2004-07-27 10:31:54.263 bid: 110700 ask: 110700 // 41: 1: time: 2004-07-27 10:36:49.036 bid: 110810 ask: 110810 // 42: -1: time: 2004-07-27 10:44:22.552 bid: 110850 ask: 110850 // 43: 1: time: 2004-07-27 11:16:57.432 bid: 110910 ask: 110910 // 44: -1: time: 2004-07-27 11:26:19.378 bid: 110930 ask: 110930 // 45: 1: time: 2004-07-27 11:38:49.009 bid: 110970 ask: 110970 // 46: 0: time: 2004-07-27 11:48:44.955 bid: 111040 ask: 111040 // 47: -1: time: 2004-07-28 08:01:47.851 bid: 111410 ask: 111410 // 48: 1: time: 2004-07-28 08:28:33.049 bid: 111610 ask: 111610 // 49: -1: time: 2004-07-28 08:29:08.191 bid: 111600 ask: 111600 // 50: 1: time: 2004-07-28 08:45:35.197 bid: 111200 ask: 111200 // 51: -1: time: 2004-07-28 08:49:55.338 bid: 111270 ask: 111270 // 52: 1: time: 2004-07-28 09:23:09.808 bid: 111350 ask: 111350 // 53: -1: time: 2004-07-28 09:41:02.790 bid: 111330 ask: 111330 // 54: 1: time: 2004-07-28 09:52:19.965 bid: 111460 ask: 111460 // 55: -1: time: 2004-07-28 11:05:27.532 bid: 111650 ask: 111650 // 56: 1: time: 2004-07-28 11:13:15.674 bid: 111870 ask: 111870 // 57: 0: time: 2004-07-28 12:00:00.645 bid: 111740 ask: 111740 // 58: -1: time: 2004-07-29 08:05:02.825 bid: 112200 ask: 112200 // 59: 0: time: 2004-07-29 08:17:55.727 bid: 112230 ask: 112230 // 60: -1: time: 2004-07-29 08:56:59.034 bid: 112110 ask: 112110 // 61: 0: time: 2004-07-29 08:57:16.116 bid: 112130 ask: 112130 // 62: 1: time: 2004-07-29 09:05:49.077 bid: 112210 ask: 112210 // 63: -1: time: 2004-07-29 09:19:57.343 bid: 112270 ask: 112270 // 64: 1: time: 2004-07-29 09:43:32.387 bid: 112220 ask: 112220 // 65: 0: time: 2004-07-29 09:46:14.921 bid: 112220 ask: 112220 // performance.TickConsoleWrite(); // // for( int i = 0; i< manager.Trades.Count; i++) { // TickConsole.WriteLine(i + ": " + manager.Trades[i]); // } // for( int i=0; i< random.Ticks.Count; i++) { // log.Info(random.Ticks[i]); // } return((PerformanceInner)random.Performance); }