.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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д