示例#1
0
// 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);
        }