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