public void CompareAgainstExternalData()
        {
            var ind = new VolumeWeightedAveragePriceIndicator(50);

            TestHelper.TestIndicator(ind, "spy_with_vwap.txt", "Moving VWAP 50",
                                     (x, expected) => Assert.AreEqual(expected, (double)((VolumeWeightedAveragePriceIndicator)x).Current.Value, 1e-3));
        }
        public void CompareAgainstExternalData()
        {
            var ind = new VolumeWeightedAveragePriceIndicator(50);

            TestHelper.TestIndicator(ind, "spy_with_vwap.txt", "Moving VWAP 50",
                                     (x, expected) => ((double)((VolumeWeightedAveragePriceIndicator)x).Current.Price).Should()
                                     .BeApproximately(expected, 1e-3));
        }
        public void IsReadyAfterPeriodUpdates()
        {
            var ind = new VolumeWeightedAveragePriceIndicator(3);

            ind.Update(DateTime.UtcNow, new TradeBarValue(1d, 1d, 1d, 1d, 1));
            ind.Update(DateTime.UtcNow, new TradeBarValue(1d, 1d, 1d, 1d, 1));
            Assert.IsFalse(ind.IsReady);
            ind.Update(DateTime.UtcNow, new TradeBarValue(1d, 1d, 1d, 1d, 1));
            Assert.IsTrue(ind.IsReady);
        }
        public void IsReadyAfterPeriodUpdates()
        {
            var ind = new VolumeWeightedAveragePriceIndicator(3);

            ind.Update(new TradeBar(DateTime.UtcNow, TimeZone.Utc, Props.TickerSymbol, 1m, 1m, 1m, 1m, 1));
            ind.Update(new TradeBar(DateTime.UtcNow, TimeZone.Utc, Props.TickerSymbol, 1m, 1m, 1m, 1m, 1));
            Assert.False(ind.IsReady);
            ind.Update(new TradeBar(DateTime.UtcNow, TimeZone.Utc, Props.TickerSymbol, 1m, 1m, 1m, 1m, 1));
            Assert.True(ind.IsReady);
        }
Пример #5
0
        public TrendSelectionData(Symbol symbol)
        {
            _symbol = symbol;

            _ich = new IchimokuKinkoHyo(symbol, 7, 22, 22, 44, 22, 22);

            _adx = new AverageDirectionalIndex(symbol, 22);

            _vwap = new VolumeWeightedAveragePriceIndicator(symbol, 22);

            _consolidation = new IchimokuKinkoHyoConsolidated(null, null);
        }
        public void ResetsProperly()
        {
            var ind = new VolumeWeightedAveragePriceIndicator(50);

            foreach (var data in TestHelper.GetTradeBarStream("spy_with_vwap.txt"))
            {
                ind.Update(data);
            }
            Assert.IsTrue(ind.IsReady);

            ind.Reset();

            TestHelper.AssertIndicatorIsInDefaultState(ind);
            ind.Update(new TradeBar(DateTime.UtcNow, Symbols.SPY, 2m, 2m, 2m, 2m, 1));
            Assert.AreEqual(ind.Current.Value, 2m);
        }
Пример #7
0
        public void WarmUpPythonIndicatorProperly()
        {
            var algo = new AlgorithmStub
            {
                HistoryProvider = new SubscriptionDataReaderHistoryProvider()
            };
            var zipCacheProvider = new ZipDataCacheProvider(TestGlobals.DataProvider);

            algo.HistoryProvider.Initialize(new HistoryProviderInitializeParameters(
                                                null,
                                                null,
                                                TestGlobals.DataProvider,
                                                zipCacheProvider,
                                                TestGlobals.MapFileProvider,
                                                TestGlobals.FactorFileProvider,
                                                null,
                                                false,
                                                new DataPermissionManager()));
            algo.SetStartDate(2013, 10, 08);
            algo.AddEquity("SPY", Resolution.Minute);

            // Different types of indicators
            var indicatorDataPoint = new SimpleMovingAverage("SPY", 10);
            var indicatorDataBar   = new AverageTrueRange("SPY", 10);
            var indicatorTradeBar  = new VolumeWeightedAveragePriceIndicator("SPY", 10);

            using (Py.GIL())
            {
                var sma   = indicatorDataPoint.ToPython();
                var atr   = indicatorTradeBar.ToPython();
                var vwapi = indicatorDataBar.ToPython();

                Assert.DoesNotThrow(() => algo.WarmUpIndicator("SPY", sma, Resolution.Minute));
                Assert.DoesNotThrow(() => algo.WarmUpIndicator("SPY", atr, Resolution.Minute));
                Assert.DoesNotThrow(() => algo.WarmUpIndicator("SPY", vwapi, Resolution.Minute));

                var smaIsReady   = ((dynamic)sma).IsReady;
                var atrIsReady   = ((dynamic)atr).IsReady;
                var vwapiIsReady = ((dynamic)vwapi).IsReady;

                Assert.IsTrue(smaIsReady.IsTrue());
                Assert.IsTrue(atrIsReady.IsTrue());
                Assert.IsTrue(vwapiIsReady.IsTrue());
            }

            zipCacheProvider.DisposeSafely();
        }
        public void VwapComputesCorrectly()
        {
            const int period = 4;
            const int volume = 100;
            var       ind    = new VolumeWeightedAveragePriceIndicator(period);
            var       data   = new[] { 1d, 10d, 100d, 1000d, 10000d, 1234d, 56789d };

            var seen = new List <double>();

            for (var i = 0; i < data.Length; i++)
            {
                var datum = data[i];
                seen.Add(datum);
                ind.Update(DateTime.Now.AddSeconds(i), new TradeBarValue(datum, datum, datum, datum, volume));
                // When volume is constant, VWAP is a simple moving average
                Assert.AreEqual(Enumerable.Reverse(seen).Take(period).Average(), ind.Current.Value);
            }
        }
        public void VWAPComputesCorrectly()
        {
            const int period = 4;
            const int volume = 100;
            var       ind    = new VolumeWeightedAveragePriceIndicator(period);
            var       data   = new[] { 1m, 10m, 100m, 1000m, 10000m, 1234m, 56789m };

            var seen = new List <decimal>();

            for (int i = 0; i < data.Length; i++)
            {
                var datum = data[i];
                seen.Add(datum);
                ind.Update(new TradeBar(DateTime.Now.AddSeconds(i), TimeZone.Utc, Props.TickerSymbol, datum, datum, datum, datum, volume));
                // When volume is constant, VWAP is a simple moving average
                Assert.Equal(Enumerable.Reverse(seen).Take(period).Average(), ind.Current.Price);
            }
        }
Пример #10
0
 public VwapSignal(VolumeWeightedAveragePriceIndicator vwap, SecurityHolding securityHolding)
 {
     _vwap            = vwap;
     _securityHolding = securityHolding;
 }