Esempio n. 1
0
        /// <summary>
        /// прогрузить с самого начала
        /// </summary>
        private void ProcessAll(List <Candle> candles)
        {
            if (candles == null)
            {
                return;
            }
            ValuesUp   = new List <decimal>();
            ValuesDown = new List <decimal>();

            _t1 = new List <decimal>();
            _t2 = new List <decimal>();

            _tM1        = new MovingAverage(false);
            _tM1.Lenght = P2;
            _tM1.TypeCalculationAverage = TypeCalculationAverage;

            _tM2        = new MovingAverage(false);
            _tM2.Lenght = P2;
            _tM2.TypeCalculationAverage = TypeCalculationAverage;

            _k = new List <decimal>();

            _kM        = new MovingAverage(false);
            _kM.Lenght = P3;
            _kM.TypeCalculationAverage = TypeCalculationAverage;

            for (int i = 0; i < candles.Count; i++)
            {
                _t1.Add(GetT1(candles, i));
                _t2.Add(GetT2(candles, i));

                _tM1.Process(_t1);
                _tM2.Process(_t2);

                _k.Add(GetK(i));
                _kM.Process(_k);

                ValuesUp.Add(Math.Round(_k[_k.Count - 1], 2));
                ValuesDown.Add(Math.Round(_kM.Values[_kM.Values.Count - 1], 2));
            }
        }
Esempio n. 2
0
        /// <summary>
        /// рассчитать индикатор
        /// </summary>
        /// <param name="candles">свечи</param>
        public void Process(List <Candle> candles)
        {
            _myCandles = candles;

            if (_trixMa1 == null || _trixMa2 == null)
            {
                _vtrixMa1 = new List <decimal>();
                _vtrixMa2 = new List <decimal>();
                _vtrixMa3 = new List <decimal>();

                _trixMa1                        = new MovingAverage(false);
                _trixMa1.Lenght                 = Period;
                _trixMa1.TypePointsToSearch     = TypePoint;
                _trixMa1.TypeCalculationAverage = TypeCalculationAverage;

                _trixMa2                        = new MovingAverage(false);
                _trixMa2.Lenght                 = Period;
                _trixMa2.TypePointsToSearch     = TypePoint;
                _trixMa2.TypeCalculationAverage = TypeCalculationAverage;

                _trixMa3                        = new MovingAverage(false);
                _trixMa3.Lenght                 = Period;
                _trixMa3.TypePointsToSearch     = TypePoint;
                _trixMa3.TypeCalculationAverage = TypeCalculationAverage;
            }

            if (Values != null &&
                Values.Count + 1 == candles.Count)
            {
                ProcessOne(candles);
            }
            else if (Values != null &&
                     Values.Count == candles.Count)
            {
                ProcessLast(candles);
            }
            else
            {
                ProcessAll(candles);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// take lower value
        /// взять значение нижнее
        /// </summary>
        /// <param name="candles">candles/свечи</param>
        /// <param name="index">index/индекс</param>
        /// <returns>alligator bottom line/нижняя линия аллигатора по индексу</returns>
        private decimal GetValueDown(List <Candle> candles, int index)
        {
            if (index == 0)
            {
                _maDown = new MovingAverage(false)
                {
                    TypeCalculationAverage = TypeCalculationAverage,
                    Lenght             = LenghtDown,
                    TypePointsToSearch = PriceTypePoints.Median
                };
            }

            _maDown.Process(candles);

            if (_maDown.Values.Count - 1 <= ShiftDown)
            {
                return(0);
            }

            return(_maDown.Values[_maDown.Values.Count - 1 - ShiftDown]);
        }
Esempio n. 4
0
        /// <summary>
        /// прогрузить с самого начала
        /// </summary>
        private void ProcessAll(List <Candle> candles)
        {
            if (candles == null)
            {
                return;
            }
            Values = new List <decimal>();
            _fi    = new List <decimal>();

            _movingAverage                        = new MovingAverage(false);
            _movingAverage.Lenght                 = Period;
            _movingAverage.TypePointsToSearch     = TypePoint;
            _movingAverage.TypeCalculationAverage = TypeCalculationAverage;


            for (int i = 0; i < candles.Count; i++)
            {
                _fi.Add(GetRange(candles, i));
                _movingAverage.Process(_fi);
                Values.Add(GetValue(candles, i));
            }
        }
Esempio n. 5
0
        /// <summary>
        /// конструктор без параметров. Индикатор не будет сохраняться
        /// используется ТОЛЬКО для создания составных индикаторов
        /// не используйте его из слоя создания роботов!
        /// </summary>
        /// <param name="canDelete">можно ли пользователю удалить индикатор с графика вручную</param>
        public MacdLine(bool canDelete)
        {
            Name = Guid.NewGuid().ToString();

            TypeIndicator = IndicatorOneCandleChartType.Line;
            ColorUp       = Color.DodgerBlue;
            ColorDown     = Color.DarkRed;
            PaintOn       = true;
            _maShort      = new MovingAverage(false)
            {
                Lenght = 12, TypeCalculationAverage = MovingAverageTypeCalculation.Exponential
            };
            _maLong = new MovingAverage(false)
            {
                Lenght = 26, TypeCalculationAverage = MovingAverageTypeCalculation.Exponential
            };
            _maSignal = new MovingAverage(false)
            {
                Lenght = 9, TypeCalculationAverage = MovingAverageTypeCalculation.Simple
            };
            CanDelete = canDelete;
        }
Esempio n. 6
0
        /// <summary>
        /// прогрузить с самого начала
        /// </summary>
        private void ProcessAll(List <Candle> candles)
        {
            if (candles == null)
            {
                return;
            }
            Values = new List <decimal>();

            _vtrixMa1 = new List <decimal>();
            _vtrixMa2 = new List <decimal>();
            _vtrixMa3 = new List <decimal>();

            _trixMa1                        = new MovingAverage(false);
            _trixMa1.Lenght                 = Period;
            _trixMa1.TypePointsToSearch     = TypePoint;
            _trixMa1.TypeCalculationAverage = TypeCalculationAverage;

            _trixMa2                        = new MovingAverage(false);
            _trixMa2.Lenght                 = Period;
            _trixMa2.TypePointsToSearch     = TypePoint;
            _trixMa2.TypeCalculationAverage = TypeCalculationAverage;

            _trixMa3                        = new MovingAverage(false);
            _trixMa3.Lenght                 = Period;
            _trixMa3.TypePointsToSearch     = TypePoint;
            _trixMa3.TypeCalculationAverage = TypeCalculationAverage;

            _trixMa1.Process(candles);

            for (int i = 0; i < candles.Count; i++)
            {
                _vtrixMa1.Add(GetMa(i));
                _trixMa2.Process(_vtrixMa1);
                _vtrixMa2.Add(GetMa2(i));
                _trixMa3.Process(_vtrixMa2);
                _vtrixMa3.Add(GetMa3(i));
                Values.Add(GetValue(i));
            }
        }
Esempio n. 7
0
        /// <summary>
        /// reload indicator
        /// перезагрузить индикатор
        /// </summary>
        public void Reload()
        {
            if (_myCandles == null)
            {
                return;
            }
            _longSma = new MovingAverage(false)
            {
                Lenght = LenghtLong, TypeCalculationAverage = TypeCalculationAverage, TypePointsToSearch = PriceTypePoints.Median
            };
            _shortSma = new MovingAverage(false)
            {
                Lenght = LenghtShort, TypeCalculationAverage = TypeCalculationAverage, TypePointsToSearch = PriceTypePoints.Median
            };
            Values = null;
            ProcessAll(_myCandles);

            if (NeadToReloadEvent != null)
            {
                NeadToReloadEvent(this);
            }
        }
Esempio n. 8
0
        /// <summary>
        /// конструктор с уникальным именем. Индикатор будет сохраняться
        /// </summary>
        /// <param name="uniqName">уникальное имя</param>
        /// <param name="canDelete">можно ли пользователю удалить индикатор с графика вручную</param>
        public Envelops(string uniqName, bool canDelete)
        {
            Name          = uniqName;
            TypeIndicator = IndicatorOneCandleChartType.Line;
            ColorUp       = Color.DodgerBlue;
            ColorDown     = Color.DarkRed;
            PaintOn       = true;
            Deviation     = 2;

            if (!File.Exists(@"Engine\" + Name + @".txt"))
            {// если у нас первая загрузка
                _maSignal = new MovingAverage(uniqName + "maSignal", false)
                {
                    Lenght = 9, TypeCalculationAverage = MovingAverageTypeCalculation.Simple
                };
            }
            else
            {
                _maSignal = new MovingAverage(uniqName + "maSignal", false);
            }
            CanDelete = canDelete;
            Load();
        }
Esempio n. 9
0
        /// <summary>
        /// прогрузить с самого начала
        /// </summary>
        private void ProcessAll(List <Candle> candles)
        {
            if (candles == null)
            {
                return;
            }
            Values = new List <decimal>();

            _ao             = new AwesomeOscillator(false);
            _ao.LenghtLong  = LenghtLong;
            _ao.LenghtShort = LenghtShort;

            _ao.Process(candles);

            _movingAverage        = new MovingAverage(false);
            _movingAverage.Lenght = LenghtShort;
            _movingAverage.Process(_ao.Values);

            for (int i = 0; i < candles.Count; i++)
            {
                Values.Add(GetValue(i));
            }
        }
Esempio n. 10
0
        /// <summary>
        /// to upload from the beginning
        /// прогрузить с самого начала
        /// </summary>
        private void ProcessAll(List <Candle> candles)
        {
            if (candles == null)
            {
                return;
            }
            Values = new List <decimal>();
            _range = new List <decimal>();

            _movingCandle        = new MovingAverage(false);
            _movingCandle.Lenght = LenghtMa;
            _movingCandle.Process(candles);

            _movingAverage        = new MovingAverage(false);
            _movingAverage.Lenght = LenghtAverage;

            for (int i = 0; i < candles.Count; i++)
            {
                _range.Add(GetRange(candles, _movingCandle.Values, i));
                _movingAverage.Process(_range);
                Values.Add(GetValue(candles, i));
            }
        }
Esempio n. 11
0
        /// <summary>
        /// прогрузить с самого начала
        /// </summary>
        private void ProcessAll(List <Candle> candles)
        {
            if (candles == null)
            {
                return;
            }
            Values = new List <decimal>();

            if (_shortSma == null)
            {
                _longSma = new MovingAverage(false)
                {
                    Lenght = LenghtLong, TypeCalculationAverage = TypeCalculationAverage, TypePointsToSearch = PriceTypePoints.Median
                };
                _shortSma = new MovingAverage(false)
                {
                    Lenght = LenghtShort, TypeCalculationAverage = TypeCalculationAverage, TypePointsToSearch = PriceTypePoints.Median
                };
            }
            else
            {
                if (_shortSma.Values != null)
                {
                    _shortSma.Values.Clear();
                    _longSma.Values.Clear();
                }
            }

            List <Candle> newCandles = new List <Candle>();

            for (int i = 0; i < candles.Count; i++)
            {
                newCandles.Add(candles[i]);
                Values.Add(GetValueSimple(newCandles, newCandles.Count - 1));
            }
        }
Esempio n. 12
0
        /// <summary>
        /// конструктор с уникальным именем. Индикатор будет сохраняться
        /// </summary>
        /// <param name="uniqName">уникальное имя</param>
        /// <param name="canDelete">можно ли пользователю удалить индикатор с графика вручную</param>
        public MacdLine(string uniqName, bool canDelete)
        {
            Name          = uniqName;
            TypeIndicator = IndicatorOneCandleChartType.Line;
            ColorUp       = Color.DodgerBlue;
            ColorDown     = Color.DarkRed;

            PaintOn = true;

            if (!File.Exists(@"Engine\" + Name + @".txt"))
            {// если у нас первая загрузка
                _maShort = new MovingAverage(uniqName + "ma1", false)
                {
                    Lenght = 12, TypeCalculationAverage = MovingAverageTypeCalculation.Exponential
                };
                _maLong = new MovingAverage(uniqName + "ma2", false)
                {
                    Lenght = 26, TypeCalculationAverage = MovingAverageTypeCalculation.Exponential
                };
                _maSignal = new MovingAverage(uniqName + "maSignal", false)
                {
                    Lenght = 9, TypeCalculationAverage = MovingAverageTypeCalculation.Simple
                };
                _maShort.Save();
                _maLong.Save();
                _maSignal.Save();
            }
            else
            {
                _maShort  = new MovingAverage(uniqName + "ma1", false);
                _maLong   = new MovingAverage(uniqName + "ma2", false);
                _maSignal = new MovingAverage(uniqName + "maSignal", false);
            }
            CanDelete = canDelete;
            Load();
        }
Esempio n. 13
0
        /// <summary>
        /// constructor without parameters.Indicator will not saved/конструктор без параметров. Индикатор не будет сохраняться
        /// used ONLY to create composite indicators/используется ТОЛЬКО для создания составных индикаторов
        /// Don't use it from robot creation layer/не используйте его из слоя создания роботов!
        /// </summary>
        /// <param name="canDelete">whether user can remove indicator from chart manually/можно ли пользователю удалить индикатор с графика вручную</param>
        public MovingChanel(bool canDelete)
        {
            Name = Guid.NewGuid().ToString();

            TypeIndicator    = IndicatorChartPaintType.Line;
            ColorUp          = Color.DodgerBlue;
            ColorDown        = Color.DarkRed;
            PaintOn          = true;
            Deviation        = 100;
            MaLenth          = 9;
            MovingShadowBody = new MovingAverage(false)
            {
                Lenght = 9, TypeCalculationAverage = MovingAverageTypeCalculation.Simple, TypePointsToSearch = PriceTypePoints.ShadowBody
            };
            MovingUp = new MovingAverage(false)
            {
                Lenght = 9, TypeCalculationAverage = MovingAverageTypeCalculation.Simple, TypePointsToSearch = PriceTypePoints.High
            };
            MovingDown = new MovingAverage(false)
            {
                Lenght = 9, TypeCalculationAverage = MovingAverageTypeCalculation.Simple, TypePointsToSearch = PriceTypePoints.Low
            };
            CanDelete = canDelete;
        }
Esempio n. 14
0
        /// <summary>
        /// конструктор с уникальным именем. Индикатор будет сохраняться
        /// </summary>
        /// <param name="uniqName">уникальное имя</param>
        /// <param name="movingShort">короткий мувинг</param>
        /// <param name="movingLong">длинный мувинг</param>
        /// <param name="movingSignal">сигнальный мувинг</param>
        /// <param name="canDelete">можно ли пользователю удалить индикатор с графика вручную</param>
        public MacdHistogram(string uniqName, MovingAverage movingShort, MovingAverage movingLong, MovingAverage movingSignal, bool canDelete)
        {
            Name          = uniqName;
            TypeIndicator = IndicatorOneCandleChartType.Column;
            ColorUp       = Color.DodgerBlue;
            ColorDown     = Color.DarkRed;
            PaintOn       = true;

            _maShort  = movingShort;
            _maLong   = movingLong;
            _maSignal = movingSignal;

            _maShort.Name  = uniqName + "ma1";
            _maLong.Name   = uniqName + "ma12";
            _maSignal.Name = uniqName + "maSignal";
            CanDelete      = canDelete;
            Load();
        }