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

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

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

Добрый день! Это индикатор (ТАС ATAS) - SMA, которая рассчитывается по ценам максимального объема в баре. Задача в том, чтобы передать определенное значение (int)candle.MaxVolumePriceInfo.Price для расчета. Выдает ошибку CS0021: Не удается применить индексирование через [] к int. Где косяк? Помогите, люди добрые, пожалуйста - никак не могу разобраться... Вот код:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Text;
  5. using System.Drawing;
  6. using ATAS.Indicators;
  7. namespace MeIndicatorSet
  8. {
  9. [DisplayName("New SMA")]
  10. [Description("Пользовательская скользящая средняя")]
  11. public class SMA : Indicator
  12. {
  13. #region Период
  14. private int _period;
  15.  
  16. public int Period
  17. {
  18. get { return _period; }
  19. set
  20. {
  21. _period = value;
  22. RecalculateValues();
  23. }
  24. }
  25. #endregion
  26. public SMA()
  27. {
  28. Period = 10;
  29. }
  30. protected override void OnCalculate(int bar, decimal value)
  31. {
  32. var candle = GetCandle(bar);
  33. var currentVol = (int)candle.MaxVolumePriceInfo.Price;
  34.  
  35. var start = Math.Max(0, bar - Period + 1);
  36. var count = Math.Min(bar + 1, Period);
  37. var sum = 0m;
  38. for (var i = start; i < start + count; i++)
  39. sum += (int)currentVol[i];// CS0021 - не могу понять, как обойти. C# это нечто ужасное...
  40. this[bar] = sum / count;
  41. }
  42. }
  43. }

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

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Text;
  5. using System.Drawing;
  6. using ATAS.Indicators;
  7.  
  8. namespace CustomIndicatorSet
  9. {
  10.     [DisplayName("POCSMA")]
  11.     [Description("Пользовательская скользящая средняя по ценам POC бара")]
  12.     public class SMA : Indicator
  13.     {
  14.        
  15.         #region  Период
  16.         private int _period;
  17.         public int Period
  18.         {
  19.             get { return _period; }
  20.             set
  21.             {
  22.                 _period = value;
  23.                 RecalculateValues();
  24.             }
  25.         }
  26.         #endregion
  27.  
  28.         public SMA()
  29.         {
  30.             Period = 10;
  31.         }
  32.  
  33.              protected override void OnCalculate(int bar, decimal value)
  34.         {
  35.             // Определяем ценовой уровень с максимальным объемом в баре
  36.             var candle = GetCandle(bar);
  37.             var currentVol = (int)candle.MaxVolumePriceInfo.Price;
  38.             // Организуем список и записываем в него полученное значение на последнее место
  39.             List<int> numbers = new List<int>();
  40.             numbers.Add(currentVol);
  41.             // Рассчитываем значения простой средней по нужным ценам, которые берем из списка
  42.             var start = Math.Max(0, bar - Period + 1);
  43.             var count = Math.Min(bar + 1, Period);
  44.  
  45.             var sum = 0;
  46.  
  47.             for (var i = start; i < start + count; i++)
  48.             sum += numbers[i];
  49.  
  50.             this[bar] = sum / count;
  51.         }
  52.     }
  53.  
  54. }

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


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

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

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы