public void Setup() { starter = new HistoricalStarter(); random = new RandomCommon(); ProfitLossDefault profitLossLogic = new ProfitLossDefault(); profitLossLogic.Slippage = 0.0140; profitLossLogic.Commission = 0.010; // if( trace) log.Trace("RandomTest engine.Formula.Chain="+starter.Model.Chain.ToString()); exits = random.ExitStrategy; exits.StopLoss = 0.050; exits.TargetProfit = 0; starter.EndCount = maxCount; starter.DataFolder = "Test\\DataCache"; starter.ProjectProperties.Starter.SetSymbols("USD_JPY"); starter.ProjectProperties.Starter.SymbolProperties[0].ProfitLoss = profitLossLogic; starter.Run(random); Constructor(random.Performance.ComboTrades); Assert.IsNotNull(baseStats, "MoneyManagerSupport constructor"); Assert.Greater(random.Performance.ComboTrades.Count, 0, "Need some trades to do this."); // Uncomment this loop to log the trades and compare to below // as to what they're supposed to be. TransactionPairs trades = random.Performance.ComboTrades; if (log.IsDebugEnabled) { for (int i = 0; i < trades.Count; i++) { log.Debug(i + ": " + trades[i]); } } // 0: 1,105320,2005-05-02 07:03:15.780,105340,2005-05-02 07:17:13.252,-4 // 1: 1,105290,2005-05-02 07:54:03.050,105350,2005-05-02 08:14:14.963,36 // 2: 1,105360,2005-05-02 08:52:45.785,105310,2005-05-02 09:09:21.169,-74 // 3: 1,105290,2005-05-02 09:17:29.899,105240,2005-05-02 09:20:28.225,-74 // 4: -1,105150,2005-05-02 09:39:43.181,105100,2005-05-02 09:50:51.729,26 // 5: -1,105030,2005-05-02 10:56:39.451,105080,2005-05-02 11:03:35.995,-74 // 6: 1,105200,2005-05-03 08:15:15.668,105150,2005-05-03 08:27:06.849,-74 // 7: -1,105140,2005-05-03 08:28:17.901,105150,2005-05-03 08:50:41.761,-34 // 8: 1,105150,2005-05-03 08:50:41.761,105130,2005-05-03 09:06:53.403,-44 // 9: -1,105130,2005-05-03 09:06:53.403,105130,2005-05-03 09:13:21.062,-24 // 10: 1,105130,2005-05-03 09:13:21.062,105120,2005-05-03 09:13:23.069,-34 // 11: -1,105090,2005-05-03 09:22:26.334,105090,2005-05-03 09:27:19.877,-24 // 12: 1,105090,2005-05-03 09:27:19.877,105130,2005-05-03 09:41:10.694,16 // 13: 1,105170,2005-05-03 09:46:34.495,105120,2005-05-03 10:00:54.735,-74 // 14: -1,105030,2005-05-03 10:35:11.274,105080,2005-05-03 10:40:38.072,-74 // 15: 1,105080,2005-05-03 10:41:02.126,105030,2005-05-03 10:45:26.821,-74 // 16: -1,105020,2005-05-03 10:57:16.127,105020,2005-05-03 10:59:47.711,-24 // 17: 1,105020,2005-05-03 10:59:47.711,104560,2005-05-04 07:00:08.015,-484 // 18: -1,104580,2005-05-04 07:14:00.252,104550,2005-05-04 07:35:09.332,6 // 19: -1,104570,2005-05-04 07:36:17.436,104360,2005-05-04 08:37:57.786,186 // 20: 1,104350,2005-05-04 08:55:14.192,104380,2005-05-04 08:57:09.379,6 // 21: 1,104390,2005-05-04 08:58:04.483,104360,2005-05-04 09:14:58.643,-54 // 22: -1,104360,2005-05-04 09:14:58.643,104410,2005-05-04 10:04:56.162,-74 // 23: 1,104370,2005-05-04 10:05:56.490,104350,2005-05-04 10:09:10.388,-44 // 24: -1,104330,2005-05-04 10:16:46.307,104380,2005-05-04 10:19:28.029,-74 // 25: 1,104370,2005-05-04 10:39:09.740,104320,2005-05-04 11:31:52.298,-74 // 26: -1,104310,2005-05-05 07:15:37.270,104320,2005-05-05 07:17:28.372,-34 // 27: 1,104320,2005-05-05 07:17:28.372,104300,2005-05-05 07:30:10.182,-44 // 28: -1,104300,2005-05-05 07:30:10.182,104280,2005-05-05 07:33:38.448,-4 // 29: 1,104280,2005-05-05 07:33:38.448,104350,2005-05-05 07:49:07.816,46 // 30: -1,104350,2005-05-05 07:49:07.816,104380,2005-05-05 07:58:18.351,-54 // 31: 1,104380,2005-05-05 07:58:18.351,104400,2005-05-05 08:20:17.920,-4 // 32: -1,104440,2005-05-05 08:48:45.249,104480,2005-05-05 08:53:22.514,-64 // 33: 1,104480,2005-05-05 08:53:22.514,104430,2005-05-05 08:58:35.105,-74 // 34: -1,104390,2005-05-05 09:11:35.199,104310,2005-05-05 09:23:22.693,56 // 35: -1,104350,2005-05-05 09:31:55.188,104310,2005-05-05 09:36:50.454,16 // 36: 1,104310,2005-05-05 09:36:50.454,104260,2005-05-05 09:39:34.270,-74 // 37: -1,104330,2005-05-05 09:44:25.264,104380,2005-05-05 10:12:27.183,-74 // 38: 1,104380,2005-05-05 10:17:07.033,104400,2005-05-05 10:25:06.165,-4 // 39: -1,104400,2005-05-05 10:25:06.165,104380,2005-05-05 10:38:55.157,-4 // 40: 1,104380,2005-05-05 10:38:55.157,104400,2005-05-05 10:48:58.981,-4 // 41: -1,104650,2005-05-06 07:01:39.259,104570,2005-05-06 07:28:32.159,56 // 42: 1,104570,2005-05-06 07:28:32.159,104560,2005-05-06 07:29:17.237,-34 // 43: -1,104560,2005-05-06 07:29:17.237,104610,2005-05-06 07:37:44.939,-74 // 44: 1,104630,2005-05-06 07:45:41.450,104640,2005-05-06 07:50:24.819,-14 // 45: -1,104640,2005-05-06 07:50:24.819,104690,2005-05-06 08:20:10.236,-74 // 46: 1,104650,2005-05-06 08:23:44.508,104600,2005-05-06 08:25:20.657,-74 // 47: -1,104670,2005-05-06 08:41:00.760,104670,2005-05-06 08:52:22.779,-24 // 48: 1,104670,2005-05-06 08:52:22.779,104880,2005-05-06 10:05:32.889,186 // 49: -1,104880,2005-05-06 10:05:32.889,104930,2005-05-06 10:07:50.758,-74 // 50: 1,104880,2005-05-06 10:13:17.204,104830,2005-05-06 10:17:29.806,-74 // 51: -1,105340,2005-05-09 07:05:17.394,105330,2005-05-09 07:17:59.670,-14 // 52: -1,105440,2005-05-09 07:57:01.620,105430,2005-05-09 07:58:14.761,-14 // 53: 1,105500,2005-05-09 08:05:47.007,105550,2005-05-09 08:19:47.822,26 // 54: -1,105550,2005-05-09 08:19:47.822,105550,2005-05-09 08:44:05.031,-24 // 55: 1,105550,2005-05-09 08:44:05.031,105560,2005-05-09 08:46:13.252,-14 // 56: -1,105640,2005-05-09 09:40:07.041,105650,2005-05-09 09:42:20.374,-34 // 57: 1,105640,2005-05-09 09:51:28.282,105590,2005-05-09 10:23:27.903,-74 // 58: -1,105580,2005-05-09 10:31:25.122,105450,2005-05-09 10:50:01.571,106 // 59: 1,105500,2005-05-09 10:56:53.779,105450,2005-05-09 11:01:38.771,-74 // 60: -1,105740,2005-05-10 07:11:21.000,105790,2005-05-10 07:15:37.285,-74 // 61: 1,105800,2005-05-10 07:34:23.674,105780,2005-05-10 07:39:13.942,-44 // 62: -1,105750,2005-05-10 07:46:10.319,105680,2005-05-10 07:56:54.954,46 // 63: 1,105670,2005-05-10 08:00:31.695,105650,2005-05-10 08:21:01.701,-44 // 64: -1,105650,2005-05-10 08:21:01.701,105700,2005-05-10 08:24:49.989,-74 // 65: 1,105630,2005-05-10 09:05:32.461,105640,2005-05-10 09:08:21.796,-14 // 66: -1,105690,2005-05-10 09:36:12.151,105680,2005-05-10 09:36:14.159,-14 // 67: 1,105650,2005-05-10 09:40:32.881,105600,2005-05-10 10:20:21.059,-74 // 68: -1,105320,2005-05-11 07:08:37.727,105370,2005-05-11 07:18:52.385,-74 // 69: -1,105340,2005-05-11 07:42:10.367,105390,2005-05-11 08:00:00.540,-74 // 70: -1,105310,2005-05-11 08:55:55.425,105360,2005-05-11 09:04:32.125,-74 // 71: -1,105730,2005-05-11 10:30:08.455,105780,2005-05-11 10:39:14.956,-74 // 72: 1,105790,2005-05-11 10:54:20.286,105780,2005-05-11 10:55:14.459,-34 // 73: -1,106170,2005-05-12 07:42:12.249,106170,2005-05-12 07:43:54.354,-24 // 74: 1,106170,2005-05-12 07:43:54.354,106190,2005-05-12 07:54:52.477,-4 // 75: -1,106190,2005-05-12 07:54:52.477,106240,2005-05-12 08:05:43.074,-74 // 76: 1,106200,2005-05-12 08:58:00.634,106330,2005-05-12 09:25:46.966,106 // 77: -1,106350,2005-05-12 09:25:50.990,106400,2005-05-12 09:30:06.405,-74 // 78: 1,106560,2005-05-12 09:34:38.202,106510,2005-05-12 09:37:45.404,-74 // 79: -1,106540,2005-05-12 09:41:18.723,106590,2005-05-12 09:41:35.848,-74 // 80: 1,106810,2005-05-12 09:51:16.964,106760,2005-05-12 10:00:18.694,-74 // 81: 1,106760,2005-05-12 10:18:24.240,106710,2005-05-12 10:22:12.811,-74 // 82: -1,106710,2005-05-12 10:30:24.395,106660,2005-05-12 10:45:29.119,26 // 83: -1,107150,2005-05-13 07:04:27.764,107110,2005-05-13 07:29:20.582,16 // 84: -1,107140,2005-05-13 07:41:59.288,107130,2005-05-13 07:52:12.783,-14 // 85: -1,107160,2005-05-13 08:19:21.248,107170,2005-05-13 08:22:04.536,-34 // 86: -1,107190,2005-05-13 08:27:09.344,106990,2005-05-13 09:12:49.761,176 // 87: 1,107010,2005-05-13 09:13:18.828,107050,2005-05-13 09:42:06.278,16 // 88: 1,107060,2005-05-13 10:11:03.404,107010,2005-05-13 10:16:29.550,-74 // 89: -1,107000,2005-05-13 10:19:57.488,107000,2005-05-13 10:20:08.546,-24 // 90: 1,107030,2005-05-13 10:29:35.827,106980,2005-05-13 10:48:34.986,-74 // 91: -1,107600,2005-05-16 07:15:10.967,107610,2005-05-16 07:21:01.890,-34 // 92: 1,107610,2005-05-16 07:21:01.890,107650,2005-05-16 07:28:22.086,16 // 93: 1,107690,2005-05-16 07:44:35.337,107640,2005-05-16 08:24:16.973,-74 // 94: 1,107670,2005-05-16 08:43:05.620,107620,2005-05-16 08:48:17.126,-74 // 95: 1,107570,2005-05-16 08:58:13.199,107520,2005-05-16 09:04:11.077,-74 // 96: 1,107500,2005-05-16 09:40:47.135,107550,2005-05-16 09:47:59.110,26 // 97: -1,107550,2005-05-16 09:47:59.110,107580,2005-05-16 09:53:58.018,-54 // 98: -1,107360,2005-05-16 10:27:58.643,107260,2005-05-16 10:53:31.461,76 // 99: -1,107090,2005-05-17 07:12:45.688,107140,2005-05-17 07:40:22.556,-74 // 100: 1,107160,2005-05-17 07:43:11.816,107320,2005-05-17 08:01:22.581,136 // 101: 1,107290,2005-05-17 08:14:02.953,107290,2005-05-17 08:16:20.162,-24 // 102: 1,107220,2005-05-17 08:28:27.371,107280,2005-05-17 08:40:03.957,36 // 103: -1,107280,2005-05-17 08:40:03.957,107330,2005-05-17 08:40:53.166,-74 // 104: 1,107310,2005-05-17 08:58:08.957,107260,2005-05-17 09:08:43.168,-74 // 105: -1,107220,2005-05-17 09:09:25.268,107270,2005-05-17 09:17:34.236,-74 // 106: 1,107330,2005-05-17 09:46:01.885,107280,2005-05-17 09:54:44.600,-74 // 107: -1,107310,2005-05-17 10:05:58.137,107250,2005-05-17 10:30:07.419,36 // 108: 1,107420,2005-05-18 07:07:26.938,107420,2005-05-18 07:16:12.837,-24 // 109: -1,107420,2005-05-18 07:16:12.837,107470,2005-05-18 07:27:53.753,-74 }
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); }