← Zurück

Помогите, пожалуйста, исправить ошибку

Доброго времени суток! Пытаюсь вставить собственный индикатор - скользящую среднюю, но выдаёт ошибку!


using System;
using System.Text;
using System.ICloneable;
using System.IIndicator;
using System.Collections.Generic;
using System.Linq;
using Ecng.Collections;
using Ecng.Xaml;
using StockSharp.Algo;
using StockSharp.BusinessEntities;
using StockSharp.Algo.Strategies;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Indicators.BaseIndicator;
using StockSharp.Algo.Indicators.LengthIndicator;
using StockSharp.Algo.Indicators.Trend.SampleCandles;
using StockSharp.Quik;

namespace SampleCandles
{
     public class Indicator
    {
         public class CandleIndicatorValue : SingleIndicatorValue<Candle>
         {
             public interface IIndicator : IPersistable,
                   ICloneable<IIndicator>, ICloneable
             {
                 /// <summary>
                 /// Простая скользящая средняя
                 /// </summary>
                 [DisplayName("SMA")]
                 [Description("Простая скользящая средняя")]
               public class SampleCandles : LengthIndicator<decimal>
                 {
                     /// <summary> 
                     /// Создать <see cref="SimpleMovingAverage"/>. 
                     /// </summary> 
                     public SampleCandles()
                         : base(typeof(decimal))
                     {
                     }

                     /// <summary> 
                     /// Обработать входное значение. 
                     /// </summary> 
                     /// <param name="input">Входное значение.</param> 
                     /// <returns>Результирующее значение.</returns> 
                     public override decimal OnProcess(IIndicatorValue input)
                     {
                         var lastValue = LastValue;
                         var newValue = input.GetValue<decimal>();

                         // добавляем новое начало
                         lastValue += newValue / Length;

                         // если буффер стал достаточно большим (стал больше длины) 
                         if (IsFormed)
                         {
                             // удаляем хвостовое значение
                             lastValue -= Buffer[0] / Length;
                             Buffer.RemoveAt(0);
                         }

                         Buffer.Add(newValue);
                         return lastValue;

                     }

                 }

             }
         }  
}
}

Выдает ошибку следующую(В коде программы 32 строка) Ошибка 1 "SampleCandles": в интерфейсах невозможно объявлять типы

Помогите, как исправить? Спасибо)

War dieses Thema hilfreich?

Thema teilen

Kommentare (1)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

VassilSanych
VassilSanych

Shaly: Помогите, как исправить? Спасибо) Как написано, не объявлять SampleCandles внутри IIndicator. И что это вообще за цирк: класс внутри интерфейса внутри другого класса, внутри третьего класса? Вам надо почитать о разнице между декларированием и использованием интерфейсов и классов.