public void ShouldGroupGeneratedTimeSeriesByDate()
 {
     var userEvents = new[]
         {
             new UserEvent {At = new DateTime(2013, 07, 17), Feature = "Moose", Type = "tick"},
             new UserEvent {At = new DateTime(2013, 07, 17), Feature = "Moose", Type = "tick"},
             new UserEvent {At = new DateTime(2013, 07, 18), Feature = "Moose", Type = "tick"}
         };
     var results = new GenerateTimeSeries().Generate(userEvents);
     Assert.Equal(2, results.Count());
 }
        public void CalculateWithOneTrade()
        {
            TimeSeries series = GenerateTimeSeries.From(100d, 95d, 102d, 105d, 97d, 113d);
            var        trade  = new Trade(Order.BuyAt(0), Order.SellAt(1));

            var average = new AverageProfitableTradesCriterion();

            Assert.AreEqual(0d, average.Calculate(series, trade), TaTestsUtils.TaOffset);

            trade = new Trade(Order.BuyAt(1), Order.SellAt(2));
            Assert.AreEqual(1d, average.Calculate(series, trade), TaTestsUtils.TaOffset);
        }
Example #3
0
        public void SetUp()
        {
            IList <Tick> ticks = new List <Tick>();

            // open, close, high, low
            ticks.Add(GenerateTick.From(10, 18, 20, 10));
            ticks.Add(GenerateTick.From(17, 20, 21, 17));
            ticks.Add(GenerateTick.From(15, 15, 16, 14));
            ticks.Add(GenerateTick.From(15, 11, 15, 8));
            ticks.Add(GenerateTick.From(11, 12, 12, 10));
            _series = GenerateTimeSeries.From(ticks);
        }
        public void SetUp()
        {
            IList <Tick> ticks = new List <Tick>();

            ticks.Add(GenerateTick.From(0, 0, 16, 8));
            ticks.Add(GenerateTick.From(0, 0, 12, 6));
            ticks.Add(GenerateTick.From(0, 0, 18, 14));
            ticks.Add(GenerateTick.From(0, 0, 10, 6));
            ticks.Add(GenerateTick.From(0, 0, 8, 4));

            this._series = GenerateTimeSeries.From(ticks);
        }
Example #5
0
        public void WmaWithTimeFrameGreaterThanSeriesSize()
        {
            var series = GenerateTimeSeries.From(1d, 2d, 3d, 4d, 5d, 6d);
            IIndicator <Decimal> close        = new ClosePriceIndicator(series);
            IIndicator <Decimal> wmaIndicator = new WmaIndicator(close, 55);

            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(0), 1);
            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(1), 1.6667);
            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(2), 2.3333);
            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(3), 3);
            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(4), 3.6666);
            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(5), 4.3333);
        }
Example #6
0
        public void RunOnWholeSeriesWithAmount()
        {
            TimeSeries series = GenerateTimeSeries.From(20d, 40d, 60d, 10d, 30d, 50d, 0d, 20d, 40d);

            var allTrades = series.Run(_strategy, OrderType.Buy, Decimal.Hundred).Trades;

            Assert.Multiple(() =>
            {
                Assert.AreEqual(2, allTrades.Count);
                Assert.AreEqual(Decimal.Hundred, allTrades[0].Entry.Amount);
                Assert.AreEqual(Decimal.Hundred, allTrades[1].Entry.Amount);
            });
        }
        public void GetValueWithOldResultsRemoval()
        {
            var data = new double[20];

            TaTestsUtils.ArraysFill(data, 1);
            TimeSeries timeSeries = GenerateTimeSeries.From(data);
            var        sma        = new SmaIndicator(new ClosePriceIndicator(timeSeries), 10);

            TaTestsUtils.AssertDecimalEquals(sma.GetValue(5), 1);
            TaTestsUtils.AssertDecimalEquals(sma.GetValue(10), 1);
            timeSeries.MaximumTickCount = 12;
            TaTestsUtils.AssertDecimalEquals(sma.GetValue(19), 1);
        }
        public void ZeroDirectionalMovement3()
        {
            var          yesterdayTick = GenerateTick.From(0, 0, 6, 6);
            var          todayTick     = GenerateTick.From(0, 0, 12, 4);
            IList <Tick> ticks         = new List <Tick>();

            ticks.Add(yesterdayTick);
            ticks.Add(todayTick);
            var series = GenerateTimeSeries.From(ticks);
            var down   = new DirectionalMovementDownIndicator(series);

            TaTestsUtils.AssertDecimalEquals(down.GetValue(1), 0);
        }
Example #9
0
        [Test] // calculate()
        public void Calculate()
        {
            var series = GenerateTimeSeries.From(1d, 2d, 3d, 4d, 5d, 6d);
            IIndicator <Decimal> close        = new ClosePriceIndicator(series);
            IIndicator <Decimal> wmaIndicator = new WmaIndicator(close, 3);

            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(0), 1);
            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(1), 1.6667);
            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(2), 2.3333);
            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(3), 3.3333);
            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(4), 4.3333);
            TaTestsUtils.AssertDecimalEquals(wmaIndicator.GetValue(5), 5.3333);
        }
Example #10
0
        public void PositiveDirectionalMovement()
        {
            var          yesterdayTick = GenerateTick.From(0, 0, 6, 6);
            var          todayTick     = GenerateTick.From(0, 0, 12, 4);
            IList <Tick> ticks         = new List <Tick>();

            ticks.Add(yesterdayTick);
            ticks.Add(todayTick);
            var series = GenerateTimeSeries.From(ticks);
            var dup    = new DirectionalMovementUpIndicator(series);

            TaTestsUtils.AssertDecimalEquals(dup.GetValue(1), 6);
        }
Example #11
0
        public void CashFlowValueWithTwoTradesAndLongTimeWithoutOrders()
        {
            TimeSeries sampleTimeSeries = GenerateTimeSeries.From(1d, 2d, 4d, 8d, 16d, 32d);
            var        tradingRecord    = new TradingRecord(Order.BuyAt(1), Order.SellAt(2), Order.BuyAt(4), Order.SellAt(5));

            var cashFlow = new CashFlow(sampleTimeSeries, tradingRecord);

            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(0), 1);
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(1), 1);
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(2), 2);
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(3), 2);
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(4), 2);
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(5), 4);
        }
Example #12
0
        public void GetValueOnResultsCalculatedFromRemovedTicksShouldReturnFirstRemainingResult()
        {
            TimeSeries timeSeries = GenerateTimeSeries.From(1, 1, 1, 1, 1);

            timeSeries.MaximumTickCount = 3;
            Assert.AreEqual(2, timeSeries.RemovedTicksCount);

            var sma = new SmaIndicator(new ClosePriceIndicator(timeSeries), 2);

            for (var i = 0; i < 5; i++)
            {
                TaTestsUtils.AssertDecimalEquals(sma.GetValue(i), 1);
            }
        }
Example #13
0
        public void CashFlowShortSell()
        {
            TimeSeries sampleTimeSeries = GenerateTimeSeries.From(1, 2, 4, 8, 16, 32);
            var        tradingRecord    = new TradingRecord(Order.BuyAt(0), Order.SellAt(2), Order.SellAt(2), Order.BuyAt(4), Order.BuyAt(4), Order.SellAt(5));

            var cashFlow = new CashFlow(sampleTimeSeries, tradingRecord);

            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(0), 1);
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(1), 2);
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(2), 4);
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(3), 2);
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(4), 1);
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(5), 2);
        }
Example #14
0
        public void DynamicAddTrade()
        {
            var data = new double[] { 2, 1, 3, 5, 6, 3, 20, 20, 3 };

            // We will rely on this being correct as it duplicates tests above...
            TimeSeries confirmedSeries        = GenerateTimeSeries.From(data);
            var        confirmedTradingRecord = new TradingRecord(Order.BuyAt(0), Order.SellAt(2), Order.BuyAt(3), Order.SellAt(4), Order.BuyAt(5), Order.SellAt(6), Order.BuyAt(7), Order.SellAt(8));
            // use these results to check against the dynamically added Trades
            var confirmedCashFlow = new CashFlow(confirmedSeries, confirmedTradingRecord);

            TimeSeries sampleTimeSeries = new TimeSeries();
            var        tradingRecord    = new TradingRecord();
            var        cashFlow         = new CashFlow(sampleTimeSeries, tradingRecord);

            for (var i = 0; i < data.Length; i++)
            {
                sampleTimeSeries.AddTick(GenerateTick.From((new LocalDateTime()).WithMillisOfSecond(i), data[i]));
                switch (i)
                {
                case 0:     // buy
                case 3:     // buy
                case 5:     // buy
                case 7:     // buy
                    tradingRecord.Enter(i);
                    break;

                case 2:     // sell
                case 4:     // sell
                case 6:     // sell
                case 8:     // sell
                    tradingRecord.Exit(i);
                    cashFlow.AddTrade(tradingRecord.LastTrade);
                    break;

                default:
                    // don't do anything
                    break;
                }
            }

            // Check all the data off...
            Assert.Multiple(() =>
            {
                for (var i = 0; i < data.Length; i++)
                {
                    TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(i), confirmedCashFlow.GetValue(i).ToDouble());
                }
            });
        }
Example #15
0
        public void CashFlowWithSellAndBuyOrders()
        {
            TimeSeries sampleTimeSeries = GenerateTimeSeries.From(2, 1, 3, 5, 6, 3, 20);
            var        tradingRecord    = new TradingRecord(Order.BuyAt(0), Order.SellAt(1), Order.BuyAt(3), Order.SellAt(4), Order.SellAt(5), Order.BuyAt(6));

            var cashFlow = new CashFlow(sampleTimeSeries, tradingRecord);

            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(0), 1);
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(1), "0.5");
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(2), "0.5");
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(3), "0.5");
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(4), "0.6");
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(5), "0.6");
            TaTestsUtils.AssertDecimalEquals(cashFlow.GetValue(6), "0.09");
        }
        public void SetUp()
        {
            IList <Tick> ticks = new List <Tick>();

            // open, close, high, low
            ticks.Add(GenerateTick.From(19, 19, 22, 15));
            ticks.Add(GenerateTick.From(10, 18, 20, 8));
            ticks.Add(GenerateTick.From(17, 20, 21, 17));
            ticks.Add(GenerateTick.From(19, 17, 20, 16.9));
            ticks.Add(GenerateTick.From(17.5, 14, 18, 13.9));
            ticks.Add(GenerateTick.From(15, 11, 15, 11));
            ticks.Add(GenerateTick.From(12, 14, 15, 8));
            ticks.Add(GenerateTick.From(13, 16, 16, 11));
            _series = GenerateTimeSeries.From(ticks);
        }
Example #17
0
        public void SetUp()
        {
            IList <Tick> ticks = new List <Tick>();

            // open, close, high, low
            ticks.Add(GenerateTick.From(19, 19, 22, 15));
            ticks.Add(GenerateTick.From(10, 18, 20, 8));
            ticks.Add(GenerateTick.From(17, 16, 21, 15));
            ticks.Add(GenerateTick.From(15.6, 18, 18.1, 14));
            ticks.Add(GenerateTick.From(16, 19.9, 20, 15));
            ticks.Add(GenerateTick.From(16.8, 23, 23, 16.7));
            ticks.Add(GenerateTick.From(17, 25, 25, 17));
            ticks.Add(GenerateTick.From(23, 16.8, 24, 15));
            _series = GenerateTimeSeries.From(ticks);
        }
        public void StackOverflowError()
        {
            IList <Tick> bigListOfTicks = new List <Tick>();

            for (var i = 0; i < 10000; i++)
            {
                bigListOfTicks.Add(GenerateTick.From(i));
            }
            var bigSeries = GenerateTimeSeries.From(bigListOfTicks);
            var obv       = new OnBalanceVolumeIndicator(bigSeries);

            // If a StackOverflowError is thrown here, then the RecursiveCachedIndicator
            // does not work as intended.
            TaTestsUtils.AssertDecimalEquals(obv.GetValue(9999), 0);
        }
Example #19
0
        public void StackOverflowError()
        {
            IList <Tick> bigListOfTicks = new List <Tick>();

            for (var i = 0; i < 10000; i++)
            {
                bigListOfTicks.Add(GenerateTick.From(i));
            }
            var bigSeries  = GenerateTimeSeries.From(bigListOfTicks);
            var closePrice = new ClosePriceIndicator(bigSeries);
            var ema        = new EmaIndicator(closePrice, 10);

            // If a StackOverflowError is thrown here, then the RecursiveCachedIndicator
            // does not work as intended.
            TaTestsUtils.AssertDecimalEquals(ema.GetValue(9999), 9994.5);
        }
Example #20
0
        public void CalculateLinearCost()
        {
            var series = GenerateTimeSeries.From(100, 150, 200, 100, 50, 100);
            IAnalysisCriterion transactionCost = new LinearTransactionCostCriterion(1000, 0.005, 0.2);

            var tradingRecord = new TradingRecord(Order.BuyAt(0), Order.SellAt(1));

            Assert.AreEqual(12.861, transactionCost.Calculate(series, tradingRecord), TaTestsUtils.TaOffset);

            tradingRecord.Operate(2);
            tradingRecord.Operate(3);
            Assert.AreEqual(24.3473, transactionCost.Calculate(series, tradingRecord), TaTestsUtils.TaOffset);

            tradingRecord.Operate(5);
            Assert.AreEqual(28.2204, transactionCost.Calculate(series, tradingRecord), TaTestsUtils.TaOffset);
        }
Example #21
0
        public void CalculateFixedCost()
        {
            var series = GenerateTimeSeries.From(100, 105, 110, 100, 95, 105);
            IAnalysisCriterion transactionCost = new LinearTransactionCostCriterion(1000, 0, 1.3d);

            var tradingRecord = new TradingRecord(Order.BuyAt(0), Order.SellAt(1));

            Assert.AreEqual(2.6d, transactionCost.Calculate(series, tradingRecord), TaTestsUtils.TaOffset);

            tradingRecord.Operate(2);
            tradingRecord.Operate(3);
            Assert.AreEqual(5.2d, transactionCost.Calculate(series, tradingRecord), TaTestsUtils.TaOffset);

            tradingRecord.Operate(0);
            Assert.AreEqual(6.5d, transactionCost.Calculate(series, tradingRecord), TaTestsUtils.TaOffset);
        }
Example #22
0
        public void GetValue()
        {
            IList <Tick> ticks = new List <Tick>();

            ticks.Add(GenerateTick.From(0, 12, 15, 8));
            ticks.Add(GenerateTick.From(0, 8, 11, 6));
            ticks.Add(GenerateTick.From(0, 15, 17, 14));
            ticks.Add(GenerateTick.From(0, 15, 17, 14));
            ticks.Add(GenerateTick.From(0, 0, 0, 2));
            var atr = new AverageTrueRangeIndicator(GenerateTimeSeries.From(ticks), 3);

            TaTestsUtils.AssertDecimalEquals(atr.GetValue(0), 1);
            TaTestsUtils.AssertDecimalEquals(atr.GetValue(1), 8d / 3);
            TaTestsUtils.AssertDecimalEquals(atr.GetValue(2), 8d / 3 * 2d / 3 + 3);
            TaTestsUtils.AssertDecimalEquals(atr.GetValue(3), (8d / 3 * 2d / 3 + 3) * 2d / 3 + 1);
            TaTestsUtils.AssertDecimalEquals(atr.GetValue(4), ((8d / 3 * 2d / 3 + 3) * 2d / 3 + 1) * 2d / 3 + 15d / 3);
        }
        public void TrendSwitchTest()
        {
            IList <Tick> ticks = new List <Tick>();

            ticks.Add(GenerateTick.From(0, 10, 13, 8));
            ticks.Add(GenerateTick.From(0, 8, 11, 6));
            ticks.Add(GenerateTick.From(0, 6, 9, 4));
            ticks.Add(GenerateTick.From(0, 11, 15, 9));
            ticks.Add(GenerateTick.From(0, 13, 15, 9));
            var sar = new ParabolicSarIndicator(GenerateTimeSeries.From(ticks), 1);

            TaTestsUtils.AssertDecimalEquals(sar.GetValue(0), 10);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(1), 8);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(2), 11);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(3), 4);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(4), 4);
        }
Example #24
0
        public void GetValue()
        {
            IList <Tick> ticks = new List <Tick>();

            ticks.Add(GenerateTick.From(0, 12, 15, 8));
            ticks.Add(GenerateTick.From(0, 8, 11, 6));
            ticks.Add(GenerateTick.From(0, 15, 17, 14));
            ticks.Add(GenerateTick.From(0, 15, 17, 14));
            ticks.Add(GenerateTick.From(0, 0, 0, 2));
            var tr = new TrueRangeIndicator(GenerateTimeSeries.From(ticks));

            TaTestsUtils.AssertDecimalEquals(tr.GetValue(0), 7);
            TaTestsUtils.AssertDecimalEquals(tr.GetValue(1), 6);
            TaTestsUtils.AssertDecimalEquals(tr.GetValue(2), 9);
            TaTestsUtils.AssertDecimalEquals(tr.GetValue(3), 3);
            TaTestsUtils.AssertDecimalEquals(tr.GetValue(4), 15);
        }
        public void CoppockCurveWithRoc14Roc11Wma10()
        {
            // Example from http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:coppock_curve
            TimeSeries data = GenerateTimeSeries.From(872.81, 919.14, 919.32, 987.48, 1020.62, 1057.08, 1036.19, 1095.63, 1115.1, 1073.87, 1104.49, 1169.43, 1186.69, 1089.41, 1030.71, 1101.6, 1049.33, 1141.2, 1183.26, 1180.55, 1257.64, 1286.12, 1327.22, 1325.83, 1363.61, 1345.2, 1320.64, 1292.28, 1218.89, 1131.42, 1253.3, 1246.96, 1257.6, 1312.41, 1365.68, 1408.47, 1397.91, 1310.33, 1362.16, 1379.32);

            var cc = new CoppockCurveIndicator(new ClosePriceIndicator(data), 14, 11, 10);

            TaTestsUtils.AssertDecimalEquals(cc.GetValue(31), 23.8929);
            TaTestsUtils.AssertDecimalEquals(cc.GetValue(32), 19.3187);
            TaTestsUtils.AssertDecimalEquals(cc.GetValue(33), 16.3505);
            TaTestsUtils.AssertDecimalEquals(cc.GetValue(34), 14.12);
            TaTestsUtils.AssertDecimalEquals(cc.GetValue(35), 12.782);
            TaTestsUtils.AssertDecimalEquals(cc.GetValue(36), 11.3924);
            TaTestsUtils.AssertDecimalEquals(cc.GetValue(37), 8.3662);
            TaTestsUtils.AssertDecimalEquals(cc.GetValue(38), 7.4532);
            TaTestsUtils.AssertDecimalEquals(cc.GetValue(39), 8.79);
        }
Example #26
0
        public void CalculateFixedCostWithOneTrade()
        {
            var series = GenerateTimeSeries.From(100, 95, 100, 80, 85, 70);
            var trade  = new Trade();
            IAnalysisCriterion transactionCost = new LinearTransactionCostCriterion(1000, 0, 0.75d);

            Assert.AreEqual(0, (int)transactionCost.Calculate(series, trade));

            trade.Operate(1);
            Assert.AreEqual(0.75d, transactionCost.Calculate(series, trade), TaTestsUtils.TaOffset);

            trade.Operate(3);
            Assert.AreEqual(1.5d, transactionCost.Calculate(series, trade), TaTestsUtils.TaOffset);

            trade.Operate(4);
            Assert.AreEqual(1.5d, transactionCost.Calculate(series, trade), TaTestsUtils.TaOffset);
        }
        public void TrendSwitchTest2()
        {
            IList <Tick> ticks = new List <Tick>();

            ticks.Add(GenerateTick.From(0, 10, 13, 11));
            ticks.Add(GenerateTick.From(0, 10, 15, 13));
            ticks.Add(GenerateTick.From(0, 12, 18, 11));
            ticks.Add(GenerateTick.From(0, 10, 15, 9));
            ticks.Add(GenerateTick.From(0, 9, 15, 9));

            var sar = new ParabolicSarIndicator(GenerateTimeSeries.From(ticks), 1);

            TaTestsUtils.AssertDecimalEquals(sar.GetValue(0), 10);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(1), 10);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(2), 0.04 * (18 - 10) + 10);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(3), 18);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(4), 18);
        }
        public void SetUp()
        {
            IList <Tick> ticks = new List <Tick>();

            ticks.Add(GenerateTick.From(0, 0, 16, 8));
            ticks.Add(GenerateTick.From(0, 0, 12, 6));
            ticks.Add(GenerateTick.From(0, 0, 18, 14));
            ticks.Add(GenerateTick.From(0, 0, 10, 6));
            ticks.Add(GenerateTick.From(0, 0, 32, 6));
            ticks.Add(GenerateTick.From(0, 0, 2, 2));
            ticks.Add(GenerateTick.From(0, 0, 0, 0));
            ticks.Add(GenerateTick.From(0, 0, 8, 1));
            ticks.Add(GenerateTick.From(0, 0, 83, 32));
            ticks.Add(GenerateTick.From(0, 0, 9, 3));

            _timeSeries = GenerateTimeSeries.From(ticks);
            _average    = new MedianPriceIndicator(_timeSeries);
        }
Example #29
0
        public void CashFlowWithConstrainedSeries()
        {
            var series        = GenerateTimeSeries.From(5d, 6d, 3d, 7d, 8d, 6d, 10d, 15d, 6d);
            var constrained   = series.Subseries(4, 8);
            var tradingRecord = new TradingRecord(Order.BuyAt(4), Order.SellAt(5), Order.BuyAt(6), Order.SellAt(8));

            var flow = new CashFlow(constrained, tradingRecord);

            TaTestsUtils.AssertDecimalEquals(flow.GetValue(0), 1);
            TaTestsUtils.AssertDecimalEquals(flow.GetValue(1), 1);
            TaTestsUtils.AssertDecimalEquals(flow.GetValue(2), 1);
            TaTestsUtils.AssertDecimalEquals(flow.GetValue(3), 1);
            TaTestsUtils.AssertDecimalEquals(flow.GetValue(4), 1);
            TaTestsUtils.AssertDecimalEquals(flow.GetValue(5), "0.75");
            TaTestsUtils.AssertDecimalEquals(flow.GetValue(6), "0.75");
            TaTestsUtils.AssertDecimalEquals(flow.GetValue(7), "1.125");
            TaTestsUtils.AssertDecimalEquals(flow.GetValue(8), "0.45");
        }
        public void UpTrendTest()
        {
            IList <Tick> ticks = new List <Tick>();

            ticks.Add(GenerateTick.From(0, 10, 13, 11));
            ticks.Add(GenerateTick.From(0, 17, 15, 11.38));
            ticks.Add(GenerateTick.From(0, 18, 16, 14));
            ticks.Add(GenerateTick.From(0, 19, 17, 12));
            ticks.Add(GenerateTick.From(0, 20, 18, 9));

            var sar = new ParabolicSarIndicator(GenerateTimeSeries.From(ticks), 1);

            TaTestsUtils.AssertDecimalEquals(sar.GetValue(0), 10);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(1), 17);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(2), 11.38);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(3), 11.38);
            TaTestsUtils.AssertDecimalEquals(sar.GetValue(4), 18);
        }
Example #31
0
        public void GetValue()
        {
            IList <Tick> ticks = new List <Tick>();

            ticks.Add(GenerateTick.From(0, 0, 10, 2));
            ticks.Add(GenerateTick.From(0, 0, 12, 2));
            ticks.Add(GenerateTick.From(0, 0, 15, 2));
            ticks.Add(GenerateTick.From(0, 0, 11, 2));
            ticks.Add(GenerateTick.From(0, 0, 13, 7));

            var series = GenerateTimeSeries.From(ticks);
            var dup    = new DirectionalUpIndicator(series, 3);

            TaTestsUtils.AssertDecimalEquals(dup.GetValue(0), 1);
            TaTestsUtils.AssertDecimalEquals(dup.GetValue(1), (4d / 3) / (14d / 3));
            TaTestsUtils.AssertDecimalEquals(dup.GetValue(2), (4d / 3 * 2d / 3 + 1) / (14d / 3 * 2d / 3 + 15d / 3));
            TaTestsUtils.AssertDecimalEquals(dup.GetValue(3), ((4d / 3 * 2d / 3 + 1) * 2d / 3) / (((14d / 3 * 2d / 3 + 15d / 3) * 2d / 3) + 11d / 3));
            TaTestsUtils.AssertDecimalEquals(dup.GetValue(4), ((4d / 3 * 2d / 3 + 1) * 2d / 3 * 2d / 3 + 2d / 3) / (((((14d / 3 * 2d / 3 + 15d / 3) * 2d / 3) + 11d / 3) * 2d / 3) + 13d / 3));
        }