public void GetChartPoints_IfOnlySlavePeakExtremumWithShortShadow_PointsFromShadowTopToHighestAdjacentShadow()
        {
            //Arrange
            DataSet   ds5        = utf.getDataSet(5);
            Price     price5     = utf.getPrice(ds5);
            Quotation quotation5 = new Quotation(ds5)
            {
                Id = 5, Open = 1.09193, High = 1.09209, Low = 1.09165, Close = 1.09207, Volume = 1819
            };
            Extremum               slave         = new Extremum(price5, ExtremumType.PeakByHigh);
            ExtremumGroup          extremumGroup = new ExtremumGroup(null, slave);
            Mock <IProcessManager> mockManager   = new Mock <IProcessManager>();

            mockManager.Setup(m => m.GetDataSet(5)).Returns(ds5);

            //Act
            TrendlineProcessor processor = new TrendlineProcessor(mockManager.Object);

            processor.MinDistanceBetweenChartPoints = 1;

            //Assert
            processor.MaxChartPointsForExtremumGroup = 6;
            processor.MinDistanceBetweenChartPoints  = 0.0001;
            var result         = processor.GetChartPoints(extremumGroup);
            var expectedResult = new List <ChartPoint>();

            expectedResult.Add(new ChartPoint(slave.GetIndexNumber(), 1.09207));
            expectedResult.Add(new ChartPoint(slave.GetIndexNumber(), 1.09209));
            var isEqual = expectedResult.HasEqualItems(result);

            Assert.IsTrue(isEqual);
        }
        public void GetChartPoints_IfOnlyMasterPeakExtremumWithLongShadow_OnlyLimitedNumberOfPointsIsCreated()
        {
            //Arrange
            DataSet   ds5        = utf.getDataSet(5);
            Price     basePrice  = utf.getPrice(ds5);
            Extremum  master     = new Extremum(basePrice, ExtremumType.PeakByClose);
            Quotation quotation5 = new Quotation(ds5)
            {
                Id = 5, Open = 1.09193, High = 1.09307, Low = 1.09165, Close = 1.09207, Volume = 1819
            };
            ExtremumGroup          extremumGroup = new ExtremumGroup(master, null);
            Mock <IProcessManager> mockManager   = new Mock <IProcessManager>();

            mockManager.Setup(m => m.GetDataSet(5)).Returns(ds5);

            //Act
            TrendlineProcessor processor = new TrendlineProcessor(mockManager.Object);

            //Assert
            processor.MaxChartPointsForExtremumGroup = 6;
            processor.MinDistanceBetweenChartPoints  = 0.0001;
            var result         = processor.GetChartPoints(extremumGroup);
            var expectedResult = new List <ChartPoint>();

            expectedResult.Add(new ChartPoint(master.GetIndexNumber(), 1.09207));
            expectedResult.Add(new ChartPoint(master.GetIndexNumber(), 1.09227));
            expectedResult.Add(new ChartPoint(master.GetIndexNumber(), 1.09247));
            expectedResult.Add(new ChartPoint(master.GetIndexNumber(), 1.09267));
            expectedResult.Add(new ChartPoint(master.GetIndexNumber(), 1.09287));
            expectedResult.Add(new ChartPoint(master.GetIndexNumber(), 1.09307));
            var isEqual = expectedResult.HasEqualItems(result);

            Assert.IsTrue(isEqual);
        }
        public void Process_IfNewTrendlineAndStartIndexLaterThanGivenItem_NothingHappens()
        {
            //Arrange
            Mock <IProcessManager> mockManager = null; // getDefaultMockManager(4);
            //Extremum baseMaster = new Extremum(getDefaultAtsSettings(), ExtremumType.PeakByClose, 4);
            //Extremum secondMaster = new Extremum(getDefaultAtsSettings(), ExtremumType.PeakByClose, 10);

            //Act
            Trendline          trendline = new Trendline(null);
            TrendlineProcessor processor = new TrendlineProcessor(mockManager.Object);

            //processor.Process(trendline,

            //Assert
            Assert.Fail("Not implemented yet");
        }
        public void GetChartPoints_IfBothPeakExtremaAndSlaveLater_PointsAreProperlyGenerated()
        {
            //Arrange
            DataSet   ds5        = utf.getDataSet(5);
            Price     price5     = utf.getPrice(ds5);
            Quotation quotation5 = new Quotation(ds5)
            {
                Id = 5, Open = 1.09127, High = 1.09235, Low = 1.09095, Close = 1.09207, Volume = 1519
            };
            Extremum master = new Extremum(price5, ExtremumType.PeakByClose);

            DataSet   ds6        = utf.getDataSet(6);
            Price     price6     = utf.getPrice(ds6);
            Quotation quotation6 = new Quotation(ds6)
            {
                Id = 6, Open = 1.09207, High = 1.09307, Low = 1.08947, Close = 1.09067, Volume = 1819
            };
            Extremum slave = new Extremum(price6, ExtremumType.PeakByHigh);


            ExtremumGroup          extremumGroup = new ExtremumGroup(master, slave);
            Mock <IProcessManager> mockManager   = new Mock <IProcessManager>();

            mockManager.Setup(m => m.GetDataSet(5)).Returns(ds5);
            mockManager.Setup(m => m.GetDataSet(6)).Returns(ds6);

            //Act
            TrendlineProcessor processor = new TrendlineProcessor(mockManager.Object);

            //Assert
            processor.MaxChartPointsForExtremumGroup = 6;
            processor.MinDistanceBetweenChartPoints  = 0.0001;
            var result         = processor.GetChartPoints(extremumGroup);
            var expectedResult = new List <ChartPoint>();

            expectedResult.Add(new ChartPoint(master.GetIndexNumber(), 1.09207));
            expectedResult.Add(new ChartPoint(master.GetIndexNumber(), 1.09227));
            expectedResult.Add(new ChartPoint(slave.GetIndexNumber(), 1.09247));
            expectedResult.Add(new ChartPoint(slave.GetIndexNumber(), 1.09267));
            expectedResult.Add(new ChartPoint(slave.GetIndexNumber(), 1.09287));
            expectedResult.Add(new ChartPoint(slave.GetIndexNumber(), 1.09307));
            var isEqual = expectedResult.HasEqualItems(result);

            Assert.IsTrue(isEqual);
        }
        public void CanCreateTrendlines_ReturnTrue_IfDistanceIsSuitable()
        {
            //Arrange
            Mock <IProcessManager> mockManager = new Mock <IProcessManager>();
            Price         basePrice            = utf.getPrice(100);
            Extremum      baseMaster           = new Extremum(basePrice, ExtremumType.PeakByClose);
            ExtremumGroup baseExtremumGroup    = new ExtremumGroup(baseMaster, null);

            Price         footholdPrice         = utf.getPrice(200);
            Extremum      footholdMaster        = new Extremum(footholdPrice, ExtremumType.PeakByClose);
            ExtremumGroup footholdExtremumGroup = new ExtremumGroup(footholdMaster, null);

            //Act
            TrendlineProcessor processor = new TrendlineProcessor(mockManager.Object);

            processor.MaxDistanceBetweenExtrema = 150;

            //Assert
            var result = processor.CanCreateTrendline(baseExtremumGroup, footholdExtremumGroup);

            Assert.IsTrue(result);
        }