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); }
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); }
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); } }
public VwapSignal(VolumeWeightedAveragePriceIndicator vwap, SecurityHolding securityHolding) { _vwap = vwap; _securityHolding = securityHolding; }