예제 #1
0
        public void AddTick()
        {
            _defaultSeries = new TimeSeries();
            Tick firstTick  = GenerateTick.From(_date.WithDate(2014, 6, 13), 1d);
            Tick secondTick = GenerateTick.From(_date.WithDate(2014, 6, 14), 2d);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(0, _defaultSeries.TickCount);
                Assert.AreEqual(-1, _defaultSeries.Begin);
                Assert.AreEqual(-1, _defaultSeries.End);
            });

            _defaultSeries.AddTick(firstTick);
            Assert.Multiple(() =>
            {
                Assert.AreEqual(1, _defaultSeries.TickCount);
                Assert.AreEqual(0, _defaultSeries.Begin);
                Assert.AreEqual(0, _defaultSeries.End);
            });

            _defaultSeries.AddTick(secondTick);
            Assert.Multiple(() =>
            {
                Assert.AreEqual(2, _defaultSeries.TickCount);
                Assert.AreEqual(0, _defaultSeries.Begin);
                Assert.AreEqual(1, _defaultSeries.End);
            });
        }
예제 #2
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());
                }
            });
        }
예제 #3
0
 public void AddNullTickShouldThrowException()
 {
     Assert.Throws <ArgumentNullException>(() => _defaultSeries.AddTick(null));
 }