Ejemplo n.º 1
0
        public void CalculateScore_idealLoss()
        {
            var trades = new List <Trade>
            {
                new Trade {
                    ProfitLoss = -2, TotalFees = 1, EntryTime = new DateTime(2018, 01, 01), ExitTime = new DateTime(2018, 02, 01)
                },
                new Trade {
                    ProfitLoss = -2, TotalFees = 1, EntryTime = new DateTime(2018, 03, 01), ExitTime = new DateTime(2018, 04, 01)
                },
                new Trade {
                    ProfitLoss = -2, TotalFees = 1, EntryTime = new DateTime(2018, 05, 01), ExitTime = new DateTime(2018, 06, 01)
                },
                new Trade {
                    ProfitLoss = -2, TotalFees = 1, EntryTime = new DateTime(2018, 07, 01), ExitTime = new DateTime(2019, 01, 01)
                }
            };

            double score = TrackViewModel.CalculateScore(trades);

            Assert.IsTrue(score == -1);
        }
Ejemplo n.º 2
0
        public void CalculateScore_breakeven()
        {
            var trades = new List <Trade>
            {
                new Trade {
                    ProfitLoss = 5, EntryTime = new DateTime(2018, 01, 01), ExitTime = new DateTime(2018, 02, 01)
                },
                new Trade {
                    ProfitLoss = 3, EntryTime = new DateTime(2018, 03, 01), ExitTime = new DateTime(2018, 04, 01)
                },
                new Trade {
                    ProfitLoss = -5, EntryTime = new DateTime(2018, 05, 01), ExitTime = new DateTime(2018, 06, 01)
                },
                new Trade {
                    ProfitLoss = -3, EntryTime = new DateTime(2018, 07, 01), ExitTime = new DateTime(2019, 01, 01)
                }
            };

            double score = TrackViewModel.CalculateScore(trades);

            Assert.IsTrue(score == 0);
        }
Ejemplo n.º 3
0
        public void CalculateScore_chartpoint_profit()
        {
            List <ChartPoint> trades = new List <ChartPoint>
            {
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2018, 01, 01)), y = 10000
                },
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2018, 03, 01)), y = 11000
                },
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2018, 05, 01)), y = 13000
                },
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2019, 01, 01)), y = 16000
                },
            };

            double score = TrackViewModel.CalculateScore(trades);

            Assert.IsTrue(Math.Abs(score - 0.7698) < 0.0001);
        }
Ejemplo n.º 4
0
        public void CalculateScore_chartpoint_breakeven()
        {
            List <ChartPoint> trades = new List <ChartPoint>
            {
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2018, 01, 01)), y = 10000
                },
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2018, 03, 01)), y = 9000
                },
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2018, 05, 01)), y = 8000
                },
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2019, 01, 01)), y = 10000
                },
            };

            double score = TrackViewModel.CalculateScore(trades);

            Assert.IsTrue(score == 0);
        }
Ejemplo n.º 5
0
        public void CalculateScore_loss()
        {
            var trades = new List <Trade>
            {
                new Trade {
                    ProfitLoss = -5, MAE = -4, EntryTime = new DateTime(2018, 01, 01), ExitTime = new DateTime(2018, 02, 01)
                },
                new Trade {
                    ProfitLoss = -3, EntryTime = new DateTime(2018, 03, 01), ExitTime = new DateTime(2018, 04, 01)
                },
                new Trade {
                    ProfitLoss = -2, EntryTime = new DateTime(2018, 05, 01), ExitTime = new DateTime(2018, 06, 01)
                },
                new Trade {
                    ProfitLoss = 2, EntryTime = new DateTime(2018, 07, 01), ExitTime = new DateTime(2019, 01, 01)
                }
            };

            double score = TrackViewModel.CalculateScore(trades);

            Assert.IsTrue(Math.Abs(score + 0.2193) < 0.0001);
        }
Ejemplo n.º 6
0
        public void CalculateScore_profit()
        {
            var trades = new List <Trade>
            {
                new Trade {
                    ProfitLoss = 5, MAE = -4, TotalFees = 1, EntryTime = new DateTime(2018, 01, 01), ExitTime = new DateTime(2018, 02, 01)
                },
                new Trade {
                    ProfitLoss = 3, TotalFees = 1, EntryTime = new DateTime(2018, 03, 01), ExitTime = new DateTime(2018, 04, 01)
                },
                new Trade {
                    ProfitLoss = 2, TotalFees = 1, EntryTime = new DateTime(2018, 05, 01), ExitTime = new DateTime(2018, 06, 01)
                },
                new Trade {
                    ProfitLoss = 2, TotalFees = 1, EntryTime = new DateTime(2018, 07, 01), ExitTime = new DateTime(2019, 01, 01)
                }
            };

            double score = TrackViewModel.CalculateScore(trades);

            Assert.IsTrue(Math.Abs(score - 0.3120) < 0.0001);
        }
Ejemplo n.º 7
0
        public void CalculateScoreTest_chartpoint_idealProfit()
        {
            List <ChartPoint> trades = new List <ChartPoint>
            {
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2018, 01, 01)), y = 10000
                },
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2018, 03, 01)), y = 11000
                },
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2018, 05, 01)), y = 12000
                },
                new ChartPoint {
                    x = (long)Time.DateTimeToUnixTimeStamp(new DateTime(2019, 01, 01)), y = 13000
                },
            };

            double score = TrackViewModel.CalculateScore(trades);

            Assert.IsTrue(score == 1);
        }