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 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 GetIndexNumberForLevelForTrough_IfThereAreBothQuotationsAndLevelLowerThanMasterLowPrice_ReturnsSlaveQuotationIndexNumber() { //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.09015, Close = 1.09067, Volume = 1519 }; Extremum master = new Extremum(price5, ExtremumType.TroughByClose); DataSet ds6 = utf.getDataSet(6); Price price6 = utf.getPrice(ds6); Quotation quotation6 = new Quotation(ds6) { Id = 6, Open = 1.09067, High = 1.09102, Low = 1.08947, Close = 1.09087, Volume = 1819 }; Extremum slave = new Extremum(price6, ExtremumType.TroughByLow); ExtremumGroup extremumGroup = new ExtremumGroup(master, slave); //Act int indexNumber = extremumGroup.GetIndexNumberForLevel(1.0900); //Assert int expectedIndex = 6; Assert.AreEqual(expectedIndex, indexNumber); }
public void ExtremumGroup_Constructor_IfTroughMasterAndPeakSlaveIsGiven_ExceptionIsThrown() { //Arrange Price p = utf.getPrice(10); Extremum ex1 = new Extremum(p, ExtremumType.TroughByClose); Extremum ex2 = new Extremum(p, ExtremumType.PeakByHigh); //Act ExtremumGroup eg = new ExtremumGroup(ex1, ex2); }
private Dictionary <int, ExtremumGroup> GetExtremumGroupsMap(int assetId, int timeframeId) { _repository = new EFTrendlineRepository(); Dictionary <int, ExtremumGroup> map = new Dictionary <int, ExtremumGroup>(); foreach (var dto in _repository.GetExtremumGroups(assetId, timeframeId)) { var eg = ExtremumGroup.FromDto(dto); map.Add(eg.ExtremumGroupId, eg); } return(map); }
public void ExtremumGroup_Constructor_IfPeakMasterAndTroughSlaveIsGiven_ExceptionIsThrown() { //Arrange Price p = utf.getPrice(10); Extremum ex1 = new Extremum(p, ExtremumType.PeakByClose); Extremum ex2 = new Extremum(p, ExtremumType.TroughByLow); //Act ExtremumGroup eg = new ExtremumGroup(ex1, ex2); //Assert Assert.AreEqual(false, eg.IsPeak); }
public void ExtremumGroup_Constructor_ForTroughExtremum_IsPeakPropertyIsCorrectlySet() { //Arrange Price p = utf.getPrice(10); Extremum ex1 = new Extremum(p, ExtremumType.TroughByClose); Extremum ex2 = new Extremum(p, ExtremumType.TroughByLow); //Act ExtremumGroup eg = new ExtremumGroup(ex1, ex2); //Assert Assert.AreEqual(false, eg.IsPeak); }
public void ExtremumGroup_Constructor_IfOnlySlavePassed_ProperObjectIsCreated() { //Arrange Price p = utf.getPrice(10); Extremum ex = new Extremum(p, ExtremumType.PeakByHigh); //Act ExtremumGroup eg = new ExtremumGroup(null, ex); //Assert Assert.IsNotNull(eg); Assert.AreEqual(ex, eg.MasterExtremum); Assert.AreEqual(ex, eg.SecondExtremum); }
public void ExtremumGroup_Constructor_IfMasterAndSlavedPassed_ProperObjectIsCreated() { //Arrange Price p = utf.getPrice(10); Extremum ex1 = new Extremum(p, ExtremumType.PeakByClose); Extremum ex2 = new Extremum(p, ExtremumType.PeakByHigh); //Act ExtremumGroup eg = new ExtremumGroup(ex1, ex2); //Assert Assert.IsNotNull(eg); Assert.AreEqual(ex1, eg.MasterExtremum); Assert.AreEqual(ex2, eg.SecondExtremum); }
public void GetIndexNumberForLevelForTrough_ThrowsArgumentException_IfQuotationLevelAboveRange() { //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.09157, Volume = 1519 }; Extremum slave = new Extremum(price5, ExtremumType.TroughByLow); ExtremumGroup extremumGroup = new ExtremumGroup(null, slave); //Act int indexNumber = extremumGroup.GetIndexNumberForLevel(1.0916); }
public void GetIndexNumberForLevelForPeak_ThrowsArgumentException_IfQuotationLevelAboveRange() { //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); ExtremumGroup extremumGroup = new ExtremumGroup(master, null); //Act int indexNumber = extremumGroup.GetIndexNumberForLevel(1.0941); }
public void GetLateIndexNumber_IfThereIsOnlyMasterExtremum_MasterExtremumIndexIsReturned() { //Arrange DataSet ds = utf.getDataSet(50); Price price = utf.getPrice(ds); Quotation quotation = new Quotation(ds); Extremum master = new Extremum(price, ExtremumType.PeakByClose); ExtremumGroup group = new ExtremumGroup(master, null); //Assert int lateIndexNumber = group.GetLateIndexNumber(); //Act int expected = 50; Assert.AreEqual(expected, lateIndexNumber); }
public void GetLateIndexNumber_IfThereIsOnlySlaveExtremum_SlaveExtremumIndexIsReturned() { //Arrange DataSet ds = utf.getDataSet(51); Price price = utf.getPrice(ds); Quotation quotation = new Quotation(ds); Extremum slave = new Extremum(price, ExtremumType.PeakByHigh); ExtremumGroup group = new ExtremumGroup(null, slave); //Assert int lateIndexNumber = group.GetLateIndexNumber(); //Act int expected = 51; Assert.AreEqual(expected, lateIndexNumber); }
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 GetLateIndexNumber_IfMasterExtremumIsEarlier_SlaveExtremumIndexIsReturned() { //Arrange Price price50 = utf.getPrice(50); Price price51 = utf.getPrice(51); Extremum master = new Extremum(price50, ExtremumType.PeakByClose); Extremum slave = new Extremum(price51, ExtremumType.PeakByHigh); ExtremumGroup group = new ExtremumGroup(master, slave); //Assert int lateIndexNumber = group.GetLateIndexNumber(); //Act int expected = 51; Assert.AreEqual(expected, lateIndexNumber); }
public void GetIndexNumberForLevelForTrough_IfThereIsOnlySlaveQuotation_ReturnsSlaveQuotationIndexNumber() { //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.09065, Close = 1.09107, Volume = 1519 }; Extremum slave = new Extremum(price5, ExtremumType.TroughByLow); ExtremumGroup extremumGroup = new ExtremumGroup(null, slave); //Act int indexNumber = extremumGroup.GetIndexNumberForLevel(1.09075); //Assert int expectedIndex = 5; Assert.AreEqual(expectedIndex, indexNumber); }
public void GetIndexNumberForLevelForPeak_IfThereIsOnlyMasterQuotation_ReturnsMasterQuotationIndexNumber() { //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); ExtremumGroup extremumGroup = new ExtremumGroup(master, null); //Act int indexNumber = extremumGroup.GetIndexNumberForLevel(1.09208); //Assert int expectedIndex = 5; Assert.AreEqual(expectedIndex, indexNumber); }
private Dictionary <int, TrendHit> GetTrendHitsMap(int assetId, int timeframeId) { _repository = new EFTrendlineRepository(); IEnumerable <TrendHitDto> dtos = _repository.GetTrendHits(); IEnumerable <TrendHit> trendHits = dtos.Select(th => TrendHit.FromDto(th)); Dictionary <int, TrendHit> trendHitsMap = new Dictionary <int, TrendHit>(); Dictionary <int, ExtremumGroup> extremumGroupsMap = GetExtremumGroupsMap(assetId, timeframeId); foreach (var trendHit in trendHits) { ExtremumGroup eg = null; extremumGroupsMap.TryGetValue(trendHit.ExtremumGroupId, out eg); if (eg != null) { trendHit.ExtremumGroup = eg; } trendHitsMap.Add(trendHit.TrendHitId, trendHit); } return(trendHitsMap); }
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); }
private Trendline getDefaultTrendline() { AtsSettings settings = new AtsSettings(DEFAULT_ASSET_ID, DEFAULT_TIMEFRAME_ID, DEFAULT_SIMULATION_ID); Price basePrice = getPrice(DEFAULT_START_INDEX); Extremum baseMaster = new Extremum(basePrice, ExtremumType.PeakByClose); ExtremumGroup baseGroup = new ExtremumGroup(baseMaster, null); TrendlinePoint basePoint = new TrendlinePoint(baseGroup, DEFAULT_START_LEVEL); Price secondPrice = getPrice(DEFAULT_FOOTHOLD_INDEX); Extremum secondMaster = new Extremum(secondPrice, ExtremumType.PeakByClose); ExtremumGroup secondGroup = new ExtremumGroup(secondMaster, null); TrendlinePoint footholdPoint = new TrendlinePoint(secondGroup, DEFAULT_FOOTHOLD_LEVEL); Trendline trendline = new Trendline(settings, basePoint, footholdPoint); trendline.Id = DEFAULT_ID; trendline.Value = DEFAULT_VALUE; trendline.LastUpdateIndex = DEFAULT_LAST_UPDATE_INDEX; trendline.FootholdSlaveIndex = DEFAULT_FOOTHOLD_SLAVE_INDEX; trendline.CurrentIsPeak = DEFAULT_CURRENT_IS_PEAK; return(trendline); }
public IEnumerable <ExtremumGroup> GetExtremumGroups(int assetId, int timeframeId) { _repository = new EFTrendlineRepository(); return(_repository.GetExtremumGroups(assetId, timeframeId).Select(dto => ExtremumGroup.FromDto(dto))); }
public void ExtremumGroup_Constructor_IfNoneExtremumIsGiven_ExceptionIsThrown() { //Act ExtremumGroup eg = new ExtremumGroup(null, null); }