MovingAverage

Тема в разделе "Примеры источников", создана пользователем Support, 8 авг 2019.

  1. Support

    Support Администратор
    Команда форума

    Регистрация:
    5 сен 2015
    Сообщения:
    1 084
    Симпатии:
    219
    Пример источника MovingAverage
    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Runtime.Serialization;
    5. using TigerTrade.Chart.Indicators.Common;
    6. using TigerTrade.Chart.Indicators.Enums;
    7. using TigerTrade.Chart.Indicators.Sources;
    8.  
    9. namespace TigerTrade.Chart.Indicators.Custom.Sources
    10. {
    11.     [DataContract(Name = "MASourceDemo",
    12.         Namespace = "http://schemas.datacontract.org/2004/07/TigerTrade.Chart.Indicators.Custom.Sources")]
    13.     [IndicatorSource("MADemo", Type = typeof(MASourceDemo))]
    14.     public sealed class MASourceDemo : IndicatorSourceBase
    15.     {
    16.         private int _period;
    17.  
    18.         [DataMember(Name = "Period")]
    19.         [Category("Параметры"), DisplayName("Период")]
    20.         public int Period
    21.         {
    22.             get => _period;
    23.             set
    24.             {
    25.                 value = Math.Max(1, value);
    26.  
    27.                 if (value == _period)
    28.                 {
    29.                     return;
    30.                 }
    31.  
    32.                 _period = value;
    33.  
    34.                 OnPropertyChanged();
    35.             }
    36.         }
    37.  
    38.         private IndicatorMaType _maType;
    39.  
    40.         [DataMember(Name = "MaType")]
    41.         [Category("Параметры"), DisplayName("Тип MA")]
    42.         public IndicatorMaType MaType
    43.         {
    44.             get => _maType;
    45.             set
    46.             {
    47.                 if (value == _maType)
    48.                 {
    49.                     return;
    50.                 }
    51.  
    52.                 _maType = value;
    53.  
    54.                 OnPropertyChanged();
    55.             }
    56.         }
    57.  
    58.         private IndicatorSourceBase _source;
    59.  
    60.         [DataMember(Name = "Source")]
    61.         [Category("Параметры"), DisplayName("Источник")]
    62.         public IndicatorSourceBase Source
    63.         {
    64.             get => _source ?? (_source = new StockSource());
    65.             set
    66.             {
    67.                 if (value == _source)
    68.                 {
    69.                     return;
    70.                 }
    71.  
    72.                 _source = value;
    73.  
    74.                 OnPropertyChanged();
    75.             }
    76.         }
    77.  
    78.         public MASourceDemo()
    79.         {
    80.             Period = 14;
    81.             MaType = IndicatorMaType.EMA;
    82.  
    83.             SelectedSeries = "MA";
    84.         }
    85.  
    86.         public override IEnumerable<string> GetSeriesList()
    87.         {
    88.             return new List<string> { "MA" };
    89.         }
    90.  
    91.         public override double[] GetSeries(IndicatorsHelper helper)
    92.         {
    93.             var source = _source.GetSeries(helper);
    94.  
    95.             return source == null ? null : helper.MovingAverage(_maType, source, _period);
    96.         }
    97.  
    98.         public override void CopySettings(IndicatorSourceBase source)
    99.         {
    100.             if (!(source is MASourceDemo s))
    101.             {
    102.                 return;
    103.             }
    104.  
    105.             SelectedSeries = s.SelectedSeries;
    106.  
    107.             Period = s.Period;
    108.             MaType = s.MaType;
    109.  
    110.             Source = s.Source.CloneSource();
    111.         }
    112.  
    113.         public override string ToString()
    114.         {
    115.             return $"{MaType}({Source}, {Period})";
    116.         }
    117.     }
    118. }