def test_moving_average_calculation(self): bar = self.app_context.inst_data_mgr.get_series("bar") bar.start(self.app_context) sma = SMA(inputs=bar, input_keys='close', length=3) sma.start(self.app_context) t1 = 1 t2 = t1 + 3 t3 = t2 + 3 t4 = t3 + 3 t5 = t4 + 3 bar.add(timestamp=t1, data={"close": 2.0, "open": 0}) self.assertTrue(math.isnan(sma.now('value'))) bar.add(timestamp=t2, data={"close": 2.4, "open": 1.4}) self.assertTrue(math.isnan(sma.now('value'))) bar.add(timestamp=t3, data={"close": 2.8, "open": 1.8}) self.assertEquals(2.4, sma.now('value')) bar.add(timestamp=t4, data={"close": 3.2, "open": 2.2}) # self.assertEquals(2.8, sma.now('value')) self.assertAlmostEqual(2.8, sma.now('value'), places=3) bar.add(timestamp=t5, data={"close": 3.6, "open": 2.6}) self.assertAlmostEqual(3.2, sma.now('value'), places=3) # self.assertEquals(3.2, sma.now('value')) self.assertTrue(math.isnan(sma.get_by_idx(0, 'value'))) self.assertTrue(math.isnan(sma.get_by_idx(1, 'value'))) self.assertAlmostEqual(2.4, sma.get_by_idx(2, 'value'), places=3) self.assertAlmostEquals(2.8, sma.get_by_idx(3, 'value'), places=3) self.assertAlmostEquals(3.2, sma.get_by_idx(4, 'value'), places=3) self.assertTrue(math.isnan(sma.get_by_time(t1, 'value'))) self.assertTrue(math.isnan(sma.get_by_time(t2, 'value'))) self.assertAlmostEquals(2.4, sma.get_by_time(t3, 'value'), places=3) self.assertAlmostEquals(2.8, sma.get_by_time(t4, 'value'), places=3) self.assertAlmostEquals(3.2, sma.get_by_time(t5, 'value'), places=3)
def test_moving_average_calculation(self): bar = self.app_context.inst_data_mgr.get_series("bar") bar.start(self.app_context) sma = SMA(bar, input_key='close', length=3) sma.start(self.app_context) t1 = datetime.datetime.now() t2 = t1 + datetime.timedelta(0, 3) t3 = t2 + datetime.timedelta(0, 3) t4 = t3 + datetime.timedelta(0, 3) t5 = t4 + datetime.timedelta(0, 3) bar.add({"timestamp": t1, "close": 2.0, "open": 0}) self.assertTrue(math.isnan(sma.now('value'))) bar.add({"timestamp": t2, "close": 2.4, "open": 1.4}) self.assertTrue(math.isnan(sma.now('value'))) bar.add({"timestamp": t3, "close": 2.8, "open": 1.8}) self.assertEquals(2.4, sma.now('value')) bar.add({"timestamp": t4, "close": 3.2, "open": 2.2}) # self.assertEquals(2.8, sma.now('value')) self.assertAlmostEqual(2.8, sma.now('value'), places=3) bar.add({"timestamp": t5, "close": 3.6, "open": 2.6}) self.assertAlmostEqual(3.2, sma.now('value'), places=3) # self.assertEquals(3.2, sma.now('value')) self.assertTrue(math.isnan(sma.get_by_idx(0, 'value'))) self.assertTrue(math.isnan(sma.get_by_idx(1, 'value'))) self.assertAlmostEqual(2.4, sma.get_by_idx(2, 'value'), places=3) self.assertAlmostEquals(2.8, sma.get_by_idx(3, 'value'), places=3) self.assertAlmostEquals(3.2, sma.get_by_idx(4, 'value'), places=3) self.assertTrue(math.isnan(sma.get_by_time(t1, 'value'))) self.assertTrue(math.isnan(sma.get_by_time(t2, 'value'))) self.assertAlmostEquals(2.4, sma.get_by_time(t3, 'value'), places=3) self.assertAlmostEquals(2.8, sma.get_by_time(t4, 'value'), places=3) self.assertAlmostEquals(3.2, sma.get_by_time(t5, 'value'), places=3)