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


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

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": в интерфейсах невозможно объявлять типы

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

Теги:


Спасибо:




1 Ответов
VassilSanych

Фотография
Дата: 11.02.2013
Ответить


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

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

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy