Пример #1
0
        public void RateOfChangeNegative()
        {
            var data = Candles.Skip(2).Take(3);
            var roc  = data.RateOfChange();

            Assert.Equal(-0.151061173533083645443196005M, roc);
        }
Пример #2
0
        public Trend CandleTrend(int candleCount)
        {
            if (Candles.Count < candleCount)
            {
                return(Trend.Unknown);
            }

            var candles          = Candles.Skip(Candles.Count - candleCount);
            var upCandlesCount   = candles.Count(c => c.IsGreen);
            var downCandlesCount = candles.Count(c => c.IsRed);

            var firstCandle = candles.First();
            var lastCandle  = candles.Last();

            if (firstCandle.IsGreen)
            {
                if (lastCandle.Close > firstCandle.Close && upCandlesCount > downCandlesCount)
                {
                    return(Trend.Up);
                }
                if (lastCandle.Close < firstCandle.Open && upCandlesCount < downCandlesCount)
                {
                    return(Trend.Down);
                }
            }
            if (firstCandle.IsRed)
            {
                if (lastCandle.Close > firstCandle.Open && upCandlesCount > downCandlesCount)
                {
                    return(Trend.Up);
                }
                if (lastCandle.Close < firstCandle.Close && upCandlesCount < downCandlesCount)
                {
                    return(Trend.Down);
                }
            }

            return(Trend.Sideways);
        }
Пример #3
0
 public ulong AverageVolumeForPeriod(int period)
 {
     return((ulong)Candles.Skip(Candles.Count - period).Take(period).Average(x => (decimal)x.Volume));
 }