Ejemplo n.º 1
0
    def test_should_generate_signal_when_ticks_are_enough_for_5_10_period_ma(
            self):
        strategy = BidsMACrossoverStrategy(5, 10)

        ticks = []
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:48:02.024026Z","bid":1.12404,"ask":1.1242}}'
        )
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:08.543570Z","bid":1.12403,"ask":1.12421}}'
        )
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:08.633262Z","bid":1.12406,"ask":1.12423}}'
        )
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:08.754773Z","bid":1.12405,"ask":1.12425}}'
        )
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:10.243141Z","bid":1.12411,"ask":1.12429}}'
        )
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:10.221148Z","bid":1.12409,"ask":1.12427}}'
        )
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:25.349546Z","bid":1.12415,"ask":1.12433}}'
        )
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:48.074682Z","bid":1.12411,"ask":1.12431}}'
        )
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:51:52.351710Z","bid":1.12409,"ask":1.12428}}'
        )
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:51:52.526526Z","bid":1.12407,"ask":1.12424}}'
        )
        # ticks.append(
        # '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:51:52.721429Z","bid":1.12404,"ask":1.12423}}')

        for i in range(0, strategy.period2 - 1):
            self.assertIsNone(
                strategy.calculate_signals(
                    parse_event_str(get_time(), ticks[i])))

        tick = parse_event_str(get_time(), ticks[strategy.period2 - 1])
        self.assertIsNotNone(strategy.calculate_signals(tick))
Ejemplo n.º 2
0
    def setUp(self):
        self.strategy = BidsMACrossoverStrategy(2, 3)

        self.ticks = []
        self.ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:48:02.024026Z","bid":1.12404,"ask":1.1242}}'
        )
        self.ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:08.543570Z","bid":1.12403,"ask":1.12421}}'
        )
        self.ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:08.633262Z","bid":1.12406,"ask":1.12423}}'
        )
        self.ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:08.754773Z","bid":1.12405,"ask":1.12425}}'
        )
        self.ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:10.243141Z","bid":1.12411,"ask":1.12429}}'
        )
Ejemplo n.º 3
0
    def test_should_generate_signal_when_ticks_are_enough_for_2_3_period_ma(
            self):
        strategy = BidsMACrossoverStrategy(2, 3)

        ticks = []
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:48:02.024026Z","bid":1.12401,"ask":1.1242}}'
        )
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:08.543570Z","bid":1.12404,"ask":1.12421}}'
        )
        ticks.append(
            '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:08.633262Z","bid":1.12406,"ask":1.12423}}'
        )
        # ticks.append(
        # '{"tick":{"instrument":"EUR_USD","time":"2015-06-11T22:50:08.754773Z","bid":1.12405,"ask":1.12425}}')

        for i in range(0, strategy.period2 - 1):
            self.assertIsNone(
                strategy.calculate_signals(
                    parse_event_str(get_time(), ticks[i])))

        tick = parse_event_str(get_time(), ticks[strategy.period2 - 1])
        self.assertIsNotNone(strategy.calculate_signals(tick))
Ejemplo n.º 4
0
 def test_should_not_allow_period2_less_than_period1(self):
     try:
         BidsMACrossoverStrategy(15, 5)
         self.fail('should have failed when period1 > period2')
     except ValueError:
         pass
Ejemplo n.º 5
0
 def test_should_not_allow_period2_equal_to_period1(self):
     try:
         BidsMACrossoverStrategy(5, 5)
         self.fail('should have failed when period1 = period2')
     except ValueError:
         pass
Ejemplo n.º 6
0
 def test_should_be_instance_of_AbstractStrategy(self):
     self.assertIsInstance(BidsMACrossoverStrategy(), AbstractStrategy)
Ejemplo n.º 7
0
 def test_should_default_function_for_calculating_moving_average(self):
     self.assertEqual(BidsMACrossoverStrategy().ma_function, sma)
Ejemplo n.º 8
0
 def test_should_default_period2_greater_than_period1(self):
     strategy = BidsMACrossoverStrategy()
     self.assertTrue(strategy.period2 > strategy.period1)
Ejemplo n.º 9
0
 def test_should_default_period2(self):
     self.assertTrue(BidsMACrossoverStrategy().period2 > 0)
Ejemplo n.º 10
0
 def setUp(self):
     self.strategy = BidsMACrossoverStrategy(2, 3)