.NET 4.x Не удается применить индексирование через [] к int - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Это индикатор (ТАС ATAS) - SMA, которая рассчитывается по ценам максимального объема в баре. Задача в том, чтобы передать определенное значение (int)candle.MaxVolumePriceInfo.Price для расчета. Выдает ошибку CS0021: Не удается применить индексирование через [] к int. Где косяк? Помогите, люди добрые, пожалуйста - никак не могу разобраться... Вот код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Drawing;
using ATAS.Indicators;
 
namespace MeIndicatorSet
{
    [DisplayName("New SMA")]
    [Description("Пользовательская скользящая средняя")]
    public class SMA : Indicator
    {
        
        #region  Период
        private int _period;

        public int Period
        {
            get { return _period; }
            set
            {
                _period = value;
                RecalculateValues();
            }
        }
        #endregion
        public SMA()
        {
            Period = 10;
            
            }
 
             protected override void OnCalculate(int bar, decimal value)
        {
            
            var candle = GetCandle(bar);
            var currentVol = (int)candle.MaxVolumePriceInfo.Price;

            var start = Math.Max(0, bar - Period + 1);
            var count = Math.Min(bar + 1, Period);
 
            var sum = 0m;
 
            for (var i = start; i < start + count; i++)
                sum += (int)currentVol[i];// CS0021 - не могу понять, как обойти. C# это нечто ужасное...
 
            this[bar] = sum / count;
        }
    }
}

Решение задачи: «.NET 4.x Не удается применить индексирование через [] к int»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Drawing;
using ATAS.Indicators;
 
namespace CustomIndicatorSet
{
    [DisplayName("POCSMA")]
    [Description("Пользовательская скользящая средняя по ценам POC бара")]
    public class SMA : Indicator
    {
       
        #region  Период
        private int _period;
        public int Period
        {
            get { return _period; }
            set
            { 
                _period = value;
                RecalculateValues();
            }
        }
        #endregion
 
        public SMA()
        {
            Period = 10;
        }
 
             protected override void OnCalculate(int bar, decimal value)
        {
            // Определяем ценовой уровень с максимальным объемом в баре
            var candle = GetCandle(bar);
            var currentVol = (int)candle.MaxVolumePriceInfo.Price;
            // Организуем список и записываем в него полученное значение на последнее место
            List<int> numbers = new List<int>();
            numbers.Add(currentVol);
            // Рассчитываем значения простой средней по нужным ценам, которые берем из списка
            var start = Math.Max(0, bar - Period + 1);
            var count = Math.Min(bar + 1, Period);
 
            var sum = 0;
 
            for (var i = start; i < start + count; i++)
            sum += numbers[i];
 
            this[bar] = sum / count;
        }
    }
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы