Beispiel #1
0
    def test_update_high_tick(self):
        fr = FrameFactory()
        fr.high_tick = TickFactory(bid=99, ask=101)

        new_high = TickFactory(bid=100, ask=102)
        fr.on_new_tick(new_high)

        assert fr.high_tick == new_high
Beispiel #2
0
    def test_update_low_tick(self):
        fr = FrameFactory()
        fr.low_tick = TickFactory(bid=99, ask=101)

        new_low = TickFactory(bid=98, ask=100)
        fr.on_new_tick(new_low)

        assert fr.low_tick == new_low
Beispiel #3
0
    def test_anterior_tick(self):
        epic = EpicFactory()
        last_tick = TickFactory(datetime=arrow.get("2020-01-01 12:34:56"))
        epic.last_tick = last_tick

        new_tick = TickFactory(datetime=arrow.get("2020-01-01 12:34:55"))

        with pytest.raises(EpicException):
            epic.on_new_tick(new_tick)
Beispiel #4
0
def test_convert_to_dict():
    tick = TickFactory()
    tick_dict = tick.asdict()
    assert tick_dict == {
        "datetime": tick.datetime,
        "bid": tick.bid,
        "ask": tick.ask,
        "spread": tick.spread,
        "value": tick.value,
    }
    def test_update_low_tick(self, mocker):
        biv = BaseIndicatorValueFactory()
        parent_indicator_mock = mocker.Mock()
        parent_indicator_mock.market_open_only = False
        biv.indicator = parent_indicator_mock

        current_low_tick = TickFactory(bid=99, ask=101)
        biv.low_tick = current_low_tick

        tick = TickFactory(bid=98, ask=101)
        biv.on_new_tick(tick, True)

        assert biv.low_tick == tick
Beispiel #6
0
    def test_on_day_change(self, mocker):
        frame_mock = mocker.Mock(spec=Frame)
        frame_mock.nb_ticks = 1
        mocker.patch(
            f"{CLASS_DEFINITION_PATH}.current",
            new_callable=lambda: frame_mock,
        )

        fs = FrameSetFactory(unit_quantity=3)
        fs.epic.last_tick = TickFactory(
            datetime=arrow.get("2020-01-01 23:59:59"))

        new_tick = TickFactory(datetime=arrow.get("2020-01-02 00:00:00"))
        assert fs.is_frame_over_tick(new_tick) is True
Beispiel #7
0
    def test_nominal(self, mocker, current_nb_ticks, tick_datetime,
                     expected_response):
        frame_mock = mocker.Mock(spec=Frame)
        frame_mock.nb_ticks = current_nb_ticks
        mocker.patch(
            f"{CLASS_DEFINITION_PATH}.current",
            new_callable=lambda: frame_mock,
        )

        fs = FrameSetFactory(unit_quantity=3)
        fs.epic.last_tick = TickFactory(
            datetime=arrow.get("2020-01-01 12:34:56"))

        new_tick = TickFactory(datetime=arrow.get(tick_datetime))
        assert fs.is_frame_over_tick(new_tick) == expected_response
Beispiel #8
0
    def test_update_last_tick(self):
        tick = TickFactory()
        fr = FrameFactory()

        fr.on_new_tick(tick)

        assert fr.last_tick == tick
Beispiel #9
0
    def test_no_current(self, mocker):
        mocker.patch(f"{CLASS_DEFINITION_PATH}.current",
                     new_callable=lambda: None)
        fs = FrameSetFactory()
        tick = TickFactory()

        assert fs.is_frame_over_tick(tick) is True
Beispiel #10
0
    def test_is_frame_over_tick_call(self, mock_is_frame_over_tick):
        fs = FrameSetFactory(unit=Unit.TICK)
        tick = TickFactory()

        fs.on_new_tick(tick)

        assert mock_is_frame_over_tick.call_args_list == [call(tick)]
Beispiel #11
0
        def test_nominal(self, mock_update, direction, expected_current):
            trade: Trade = TradeFactory(direction=direction)
            tick = TickFactory(bid=99, ask=100)

            trade.update_from_tick(tick)

            mock_update.assert_called_once_with(expected_current)
Beispiel #12
0
        def test_kwargs(self, mock_init_trade):
            default_trade_args, _ = TradeFactory.get_default_args()
            Trade.open_from_tick(tick=TickFactory(),
                                 ref="test",
                                 **default_trade_args)

            assert mock_init_trade.call_count == 1
            assert mock_init_trade.call_args_list[0][1]["ref"] == "test"
Beispiel #13
0
        def test_close_value(self, mock_trade_close):
            tick = TickFactory()
            trade = TradeFactory()
            trade.current_close_value = 87.9
            trade.close_from_tick(tick)

            assert mock_trade_close.call_count == 1
            assert mock_trade_close.call_args_list[0][1]["close_value"] == 87.9
Beispiel #14
0
    def test_clean_old_frames(self, mock_clean_old_frames):
        tick = TickFactory()
        period_start = arrow.get("2020-01-01 12:35:00")

        fs = FrameSetFactory()
        fs.create_new_frame(tick=tick, period_start=period_start)

        assert mock_clean_old_frames.call_args_list == [call()]
Beispiel #15
0
        def test_kwargs(self, mock_trade_close):
            tick = TickFactory()
            trade = TradeFactory()
            trade.close_from_tick(tick, test_arg="test_value")

            assert mock_trade_close.call_count == 1
            assert mock_trade_close.call_args_list[0][1][
                "test_arg"] == "test_value"
Beispiel #16
0
        def test_datetime(self, mock_trade_close):
            dt = arrow.get("2020-01-01 12:34:56")
            tick = TickFactory(datetime=dt)
            trade = TradeFactory()
            trade.close_from_tick(tick)

            assert mock_trade_close.call_count == 1
            assert mock_trade_close.call_args_list[0][1]["datetime"] == dt
    def test_update_last_tick(
        self, mocker, market_open_only, market_open, expected_last_tick_update
    ):
        biv = BaseIndicatorValueFactory()
        parent_indicator_mock = mocker.Mock()
        parent_indicator_mock.market_open_only = market_open_only
        biv.indicator = parent_indicator_mock

        current_last_tick = TickFactory()
        biv.last_tick = current_last_tick

        tick = TickFactory()
        biv.on_new_tick(tick, market_open)

        if expected_last_tick_update:
            assert biv.last_tick == tick
        else:
            assert biv.last_tick == current_last_tick
Beispiel #18
0
        def test_epic(self, mock_init_trade):
            tick = TickFactory()
            default_trade_args, _ = TradeFactory.get_default_args()

            Trade.open_from_tick(tick=tick, **default_trade_args)

            assert mock_init_trade.call_count == 1
            assert (mock_init_trade.call_args_list[0][1]["epic"] ==
                    default_trade_args["epic"])
Beispiel #19
0
        def test_response(self, mocker):
            mocker.patch(f"{CLASS_TRADE_DEFINITION_PATH}.close",
                         return_value="test_close")

            tick = TickFactory()
            trade = TradeFactory()
            response = trade.close_from_tick(tick)

            assert response == "test_close"
Beispiel #20
0
    def test_parent__call(self, mocker):
        parent_on_new_tick = mocker.patch(
            "estrade.graph.base_indicator.BaseIndicatorValue.on_new_tick")
        bc = BaseCandleFactory()

        new_tick = TickFactory()

        bc.on_new_tick(new_tick)
        assert parent_on_new_tick.call_args_list == [call(new_tick)]
Beispiel #21
0
    def test_parent__call(self, mocker):
        parent_on_new_tick = mocker.patch(
            "estrade.graph.base_indicator.BaseIndicatorValue.on_new_tick"
        )
        rsiv = RSIValueFactory()

        new_tick = TickFactory()

        rsiv.on_new_tick(new_tick, True)
        assert parent_on_new_tick.call_args_list == [call(new_tick, True)]
Beispiel #22
0
    def test_add_to_last_tick(self, mocker, mock_is_frame_over_timed):
        mock_is_frame_over_timed.return_value = False
        add_tick_to_last_mock = mocker.patch(
            f"{CLASS_DEFINITION_PATH}.add_tick_to_last", )
        fs = FrameSetFactory(unit=Unit.SECOND)
        tick = TickFactory()

        fs.on_new_tick(tick)

        assert add_tick_to_last_mock.call_args_list == [call(tick)]
Beispiel #23
0
        def test_open_datetime(self, mock_init_trade):
            tick_datetime = arrow.get("2020-01-01 12:34:56")
            tick = TickFactory(datetime=tick_datetime)

            default_trade_args, _ = TradeFactory.get_default_args()
            Trade.open_from_tick(tick=tick, **default_trade_args)

            assert mock_init_trade.call_count == 1
            assert (mock_init_trade.call_args_list[0][1]["open_datetime"] ==
                    tick_datetime)
Beispiel #24
0
        def test_call_close_from_tick(self, mock_close_from_tick):
            epic = EpicFactory()
            trade = TradeFactory(epic=epic)

            last_tick = TickFactory()
            epic.last_tick = last_tick

            trade.close_from_epic()

            assert mock_close_from_tick.call_args_list == [call(last_tick)]
Beispiel #25
0
    def test_add_to_frames(self, mocker):
        mocker.patch(f"{CLASS_FRAME_DEFINITION_PATH}",
                     return_value="my_new_frame")

        tick = TickFactory()
        period_start = arrow.get("2020-01-01 12:35:00")
        fs = FrameSetFactory()
        fs.create_new_frame(tick=tick, period_start=period_start)

        assert fs.frames == ["my_new_frame"]
Beispiel #26
0
    def test_parent__call(self, mocker):
        parent_on_new_tick = mocker.patch(
            "estrade.graph.base_indicator.BaseIndicatorValue.on_new_tick"
        )
        smav = SimpleMovingAverageValueFactory()

        new_tick = TickFactory()

        smav.on_new_tick(new_tick, True)
        assert parent_on_new_tick.call_args_list == [call(new_tick, True)]
Beispiel #27
0
    def test_update_extended_closes(self):
        smav = SimpleMovingAverageValueFactory()
        smav.last_closes = [1, 2, 3]

        new_tick = TickFactory(bid=3, ask=5)

        smav.frame.last_tick = new_tick
        smav.on_new_tick(new_tick, True)

        assert smav.extended_closes == [1, 2, 3, 4]
Beispiel #28
0
    def test_convert_tick_datetime(self):
        epic = EpicFactory(timezone="Asia/Tokyo")

        tz_NY = pytz.timezone("America/New_York")
        datetime_NY = datetime.now(tz_NY)
        tick = TickFactory(datetime=datetime_NY)

        epic.on_new_tick(tick)

        # datetime is converted to epic timezone
        assert epic.last_tick.datetime.tzinfo == tz.gettz(epic.timezone)
Beispiel #29
0
    def test_update_trades(self, mocker):
        epic = EpicFactory()

        trade = TradeFactory(direction=TradeDirection.BUY, quantity=4, epic=epic)
        epic.trade_provider.open_trade(trade)
        trade_update_mock = mocker.patch.object(trade, "update_from_tick")

        new_tick = TickFactory()
        epic.on_new_tick(new_tick)

        assert trade_update_mock.call_args_list == [call(new_tick)]
Beispiel #30
0
    def test_update_frame_sets(self, mocker):
        epic = EpicFactory()

        frame_set_mock = mocker.Mock()
        epic.frame_sets["test"] = frame_set_mock

        new_tick = TickFactory()

        epic.on_new_tick(new_tick)

        assert frame_set_mock.on_new_tick.call_args_list == [call(new_tick)]