public override TimeBaseValue Calculate(int forIndex)
        {
            CheckCreateMaIndicator();

            DateTime dt = GetTime(forIndex);

            if (forIndex < Length)
            {
                IndicatorValue nullValue = new IndicatorValue()
                {
                    Time = dt, Value = double.NaN, Source = GetValueBySource(forIndex)
                };
                ResultCore.Add(nullValue);
                IndicatorValue val = (IndicatorValue)MaIndicator.Calculate(forIndex);
                MaIndicator.Result.Add(val);
                return(nullValue);
            }

            double         tr    = CalculateCore(forIndex);
            IndicatorValue value = new IndicatorValue()
            {
                Time = dt, Value = tr, Source = GetValueBySource(forIndex)
            };

            ResultCore.Add(value);
            IndicatorValue signal = (IndicatorValue)MaIndicator.Calculate(forIndex);

            MaIndicator.Result.Add(signal);
            return(signal);
        }
 void CheckCreateMaIndicator()
 {
     if (MaIndicator == null)
     {
         MaIndicator = new MaIndicator()
         {
             InputData = ResultCore, Length = Length, SuppressUpdateOnDataChanged = true
         }
     }
     ;
 }
        public override void OnUpdateValue(int index)
        {
            base.OnUpdateValue(index);
            if (index < Length)
            {
                return;
            }
            double value = CalculateCore(index);

            ((IndicatorValue)ResultCore[index]).Value = value;
            IndicatorValue signal = (IndicatorValue)MaIndicator.Calculate(index);

            ((IndicatorValue)MaIndicator.Result[index]).Value = signal.Value;
            Result[index].Value = signal.Value;
        }
Example #4
0
        public override void Calculate()
        {
            Result.Clear();
            HistorySig.Clear();
            if (Ticker == null)
            {
                return;
            }
            EmaIndicator emaFast = new EmaIndicator()
            {
                Ticker = Ticker, Length = FastLength, SuppressUpdateOnDataChanged = true
            };
            EmaIndicator emaSlow = new EmaIndicator()
            {
                Ticker = Ticker, Length = SlowLength, SuppressUpdateOnDataChanged = true
            };

            emaFast.Calculate();
            emaSlow.Calculate();

            for (int i = 0; i < Ticker.CandleStickData.Count; i++)
            {
                DateTime time = Ticker.CandleStickData[i].Time;
                if (i < SlowLength)
                {
                    Result.Add(new IndicatorValue()
                    {
                        Time = time, Value = double.NaN, Source = GetValueBySource(i)
                    });
                    continue;
                }
                Result.Add(new IndicatorValue()
                {
                    Time = time, Value = ((IndicatorValue)emaFast.Result[i]).Value - ((IndicatorValue)emaSlow.Result[i]).Value, Source = GetValueBySource(i)
                });
            }

            MaIndicator ma = new MaIndicator()
            {
                Length = Length, InputData = Result, SuppressUpdateOnDataChanged = true
            };

            ma.Calculate();

            FastEmaIndicator  = emaFast;
            SlowEmaIndicator  = emaSlow;
            SignalMaIndicator = ma;
        }
Example #5
0
        public override void Calculate()
        {
            MinIndicator = new MinMaxIndicator()
            {
                Ticker = Ticker, Length = Length, Mode = MinMaxIndicatorMode.Min, SuppressUpdateOnDataChanged = true
            };
            MaxIndicator = new MinMaxIndicator()
            {
                Ticker = Ticker, Length = Length, Mode = MinMaxIndicatorMode.Max, SuppressUpdateOnDataChanged = true
            };
            MaIndicator = new MaIndicator()
            {
                InputData = Result, Length = Length, Source = IndicatorSource.StochK, SuppressUpdateOnDataChanged = true
            };

            base.Calculate();
        }
Example #6
0
        protected void CheckCreateInnerIndicators()
        {
            if (FastEmaIndicator != null)
            {
                return;
            }
            EmaIndicator emaFast = new EmaIndicator()
            {
                Ticker = Ticker, Length = FastLength, SuppressUpdateOnDataChanged = true
            };
            EmaIndicator emaSlow = new EmaIndicator()
            {
                Ticker = Ticker, Length = SlowLength, SuppressUpdateOnDataChanged = true
            };
            MaIndicator ma = new MaIndicator()
            {
                Length = Length, InputData = Result, SuppressUpdateOnDataChanged = true
            };

            FastEmaIndicator  = emaFast;
            SlowEmaIndicator  = emaSlow;
            SignalMaIndicator = ma;
        }