public void CompareAgainstExternalData() { var logr = new LogReturn(14); double epsilon = 1e-3; TestHelper.TestIndicator(logr, "spy_logr14.txt", "LOGR14", (ind, expected) => Assert.AreEqual(expected, (double)ind.Current.Value, epsilon)); }
public void LOGRComputesCorrectly() { var period = 4; var logr = new LogReturn(period); var data = new[] { 1, 10, 100, 1000, 10000, 1234, 56789 }; var seen = new List <int>(); var time = DateTime.Now; for (var i = 0; i < data.Length; i++) { var datum = data[i]; var value0 = 0.0; if (seen.Count >= 0 && seen.Count < period) { value0 = data[0]; } else if (seen.Count >= period) { value0 = data[i - period]; } var expected = (decimal)Math.Log(datum / value0); seen.Add(datum); logr.Update(time.AddSeconds(i), datum); Assert.AreEqual(expected, logr.Current.Value); } }
public void LOGRComputesCorrectly() { int period = 4; var logr = new LogReturn(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]; var value0 = 0m; if (seen.Count >= 0 && seen.Count < period) { value0 = data[0]; } else if (seen.Count >= period) { value0 = data[i - period]; } var expected = (decimal)Math.Log((double)datum / (double)value0); seen.Add(datum); logr.Update(new IndicatorDataPoint(DateTime.Now.AddSeconds(i), datum)); Assert.AreEqual(expected, logr.Current.Value); } }
public void CompareAgainstExternalData() { var logr = new LogReturn(14); double epsilon = 1e-3; TestHelper.TestIndicator(logr, "spy_logr14.txt", "LOGR14", (ind, expected) => ((double)ind.Current.Price).Should().BeApproximately(expected, epsilon)); }
/// <summary> /// Creates a new LogReturn indicator. /// </summary> /// <param name="symbol">The symbol whose log return we seek</param> /// <param name="period">The period of the log return.</param> /// <param name="resolution">The resolution.</param> /// <returns>log return indicator for the requested symbol.</returns> public LogReturn LOGR(string symbol, int period, Resolution?resolution = null) { string name = CreateIndicatorName(symbol, "LOGR", resolution); var logr = new LogReturn(name, period); RegisterIndicator(symbol, logr, resolution); return(logr); }
public LogReturnSignal(LogReturn logr_Fast, LogReturn logr_Slow, LeastSquaresMovingAverage logrFast, LeastSquaresMovingAverage logrSlow, TickConsolidator ticks, SecurityHolding securityHolding) { _logr_Fast = logr_Fast; _logr_Slow = logr_Slow; _logrFast = logrFast; _logrSlow = logrSlow; _ticks = ticks; _securityHolding = securityHolding; }
//RegisterIndicator(symbol, logr, null); //Initialize the data and resolution you require for your strategy: public override void Initialize() { //Start and End Date range for the backtest: SetStartDate(2009, 3, 1); SetEndDate(DateTime.Now); //Cash allocation SetCash(25000); //Add as many securities as you like. All the data will be passed into the event handler: AddSecurity(SecurityType.Equity, symbol, Resolution.Hour); logr_14 = LOGR(symbol, 14, Resolution.Hour); logr_30 = LOGR(symbol, 2, Resolution.Hour); logr14 = new LeastSquaresMovingAverage(14).Of(logr_14); logr30 = new LeastSquaresMovingAverage(30).Of(logr_30); }
public void LOGRComputesCorrectly() { int period = 4; var logr = new LogReturn(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]; var value0 = 0m; if (seen.Count >= 0 && seen.Count < period) value0 = data[0]; else if (seen.Count >= period) value0 = data[i - period]; var expected = (decimal)Math.Log((double)datum / (double)value0); seen.Add(datum); logr.Update(new IndicatorDataPoint(DateTime.Now.AddSeconds(i), datum)); Assert.AreEqual(expected, logr.Current.Value); } }
public void ResetsProperly() { var logr = new LogReturn(14); TestHelper.TestIndicatorReset(logr, "spy_logr14.txt"); }