Example #1
0
    def test_compare_against_oneoff_calculation(self):
        rw = np.cumsum(np.random.normal(0, 2, 1000)) + 100
        close = DataSeries(time_series=ModelFactory.build_time_series(
            series_id="close"))
        close.start(self.app_context)

        t = 1
        sma = SMA(inputs=close, input_keys='close', length=50)
        sma.start(self.app_context)

        result = []

        for x in rw:
            close.add(timestamp=t, data={"close": x})
            result.append(sma.now('value'))
            t = t + 3

        result = np.array(result)

        # either apply or direct call is equivalent
        target = close.apply('close',
                             start=None,
                             end=None,
                             func=talib.SMA,
                             timeperiod=50)
        # target = talib.SMA(np.array(close.get_series('close')), timeperiod=50)

        result[np.isnan(result)] = 0
        target[np.isnan(target)] = 0

        try:
            np.testing.assert_almost_equal(target, result, 5)
        except AssertionError as e:
            self.fail(e.message)
    def test_compare_against_oneoff_calculation(self):
        rw = np.cumsum(np.random.normal(0, 2, 1000)) + 100
        close = DataSeries("close")
        close.start(self.app_context)

        t = datetime.datetime.now()
        sma = SMA(close, input_key='close', length=50)
        sma.start(self.app_context)

        result = []

        for x in rw:
            close.add({"timestamp": t, "close": x})
            result.append(sma.now('value'))
            t = t + datetime.timedelta(0, 3)

        result = np.array(result)

        # either apply or direct call is equivalent
        target = close.apply('close', start=None, end=None, func=talib.SMA, timeperiod=50)
        # target = talib.SMA(np.array(close.get_series('close')), timeperiod=50)

        result[np.isnan(result)] = 0
        target[np.isnan(target)] = 0

        try:
            np.testing.assert_almost_equal(target, result, 5)
        except AssertionError as e:
            self.fail(e.message)
Example #3
0
    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)
Example #4
0
    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)