Example #1
0
        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
        }
Example #2
0
        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);
        }