// data access methods / методы доступа к данным /// <summary> /// find cluster with maximum volume / /// найти кластер с максимальным объёмом /// </summary> /// <param name="startIndex">start index / стартовый индекс</param> /// <param name="endIndex">end index / конечный индекс</param> /// <param name="typeCluster">type cluster / тип объёма в кластере</param> public HorizontalVolumeCluster FindMaxVolumeCluster(int startIndex, int endIndex, ClusterType typeCluster) { return(_horizontalVolume.FindMaxVolumeCluster(startIndex, endIndex, typeCluster)); }
private decimal GetMaxVolume(ClusterType clusterType) { decimal result = 0; if (clusterType == ClusterType.SummVolume) { if (double.IsNaN(_chart.ChartAreas[0].AxisY.ScaleView.Size) || double.IsNaN(_chart.ChartAreas[0].AxisY.ScaleView.Position)) { result = _volume.MaxSummVolumeCluster.MaxSummVolumeLine.VolumeSumm; } else { int values = (int)_chart.ChartAreas[0].AxisY.ScaleView.Size; int firstPos = (int)_chart.ChartAreas[0].AxisY.ScaleView.Position; result = _volume.FindMaxVolumeCluster(firstPos, firstPos + values, clusterType).MaxSummVolumeLine.VolumeSumm; } } if (clusterType == ClusterType.BuyVolume) { if (double.IsNaN(_chart.ChartAreas[0].AxisY.ScaleView.Size)) { result = _volume.MaxBuyVolumeCluster.MaxBuyVolumeLine.VolumeBuy; } else { int values = (int)_chart.ChartAreas[0].AxisY.ScaleView.Size; int firstPos = (int)_chart.ChartAreas[0].AxisY.ScaleView.Position; result = _volume.FindMaxVolumeCluster(firstPos, firstPos + values, clusterType).MaxBuyVolumeLine.VolumeBuy; } } if (clusterType == ClusterType.SellVolume) { if (double.IsNaN(_chart.ChartAreas[0].AxisY.ScaleView.Size)) { result = _volume.MaxSellVolumeCluster.MaxSellVolumeLine.VolumeSell; } else { int values = (int)_chart.ChartAreas[0].AxisY.ScaleView.Size; int firstPos = (int)_chart.ChartAreas[0].AxisY.ScaleView.Position; result = _volume.FindMaxVolumeCluster(firstPos, firstPos + values, clusterType).MaxSellVolumeLine.VolumeSell; } } if (clusterType == ClusterType.DeltaVolume) { if (double.IsNaN(_chart.ChartAreas[0].AxisY.ScaleView.Size)) { result = _volume.MaxDeltaVolumeCluster.MaxDeltaVolumeLine.VolumeDelta; if (-_volume.MaxDeltaVolumeCluster.MinDeltaVolumeLine.VolumeDelta > result) { result = -_volume.MaxDeltaVolumeCluster.MinDeltaVolumeLine.VolumeDelta; } } else { int values = (int)_chart.ChartAreas[0].AxisY.ScaleView.Size; int firstPos = (int)_chart.ChartAreas[0].AxisY.ScaleView.Position; decimal max = _volume.FindMaxVolumeCluster(firstPos, firstPos + values, clusterType).MaxDeltaVolumeLine.VolumeDelta; decimal min = -_volume.FindMaxVolumeCluster(firstPos, firstPos + values, clusterType).MaxDeltaVolumeLine.VolumeDelta; if (max > min) { result = max; } else { result = min; } } } return(result); }