示例#1
0
    def test_epic_market_open(self, market_open):
        fs = FrameSetFactory()
        epic = EpicFactory()
        epic.market_open = market_open
        fs.epic = epic

        assert fs.epic_market_open == market_open
示例#2
0
    def test_response(self, mocker):
        trade_provider_mock = mocker.Mock()

        epic = EpicFactory(trade_provider=trade_provider_mock)

        response = epic.open_trade(test="test")

        assert response == "my_new_trade"
示例#3
0
    def test_add_to_frame_sets(self, mocker):
        frame_set_mock = mocker.Mock()
        frame_set_mock.ref = "fs_ref"

        epic = EpicFactory()
        epic.add_frame_set(frame_set_mock)

        assert epic.frame_sets["fs_ref"] == frame_set_mock
示例#4
0
    def test_call_trade_provider(self, mocker):
        trade_provider_mock = mocker.Mock()

        epic = EpicFactory(trade_provider=trade_provider_mock)

        epic.open_trade(test="test")

        assert trade_provider_mock.open_trade.call_args_list == [call("my_new_trade")]
示例#5
0
    def test_nominal(self, mocker):
        mocker.patch(
            f"{CLASS_DEFINITION_PATH}.get_frame",
            return_value={"my_indicator": "indicator_value"},
        )
        epic = EpicFactory()

        assert epic.get_indicator_value("my_fs", "my_indicator") == "indicator_value"
示例#6
0
    def test_update_frameset_epic(self, mocker):
        frame_set_mock = mocker.Mock()
        frame_set_mock.ref = "fs_ref"

        epic = EpicFactory()
        epic.add_frame_set(frame_set_mock)

        assert frame_set_mock.epic == epic
示例#7
0
    def test_update_strategy(self, mocker):
        strategy_mock = mocker.Mock()
        strategy_mock.ref = "strategy_ref"
        strategy_mock.epics = {}

        epic = EpicFactory()
        epic.add_strategy(strategy_mock)

        assert strategy_mock.epics[epic.ref] == epic
示例#8
0
    def test_get_frame_call(self, mocker):
        get_frame_mock = mocker.patch(
            f"{CLASS_DEFINITION_PATH}.get_frame", return_value=None
        )
        epic = EpicFactory()

        epic.get_indicator_value("my_fs", "my_indicator", 55)

        assert get_frame_mock.call_args_list == [call(frame_set_ref="my_fs", offset=55)]
示例#9
0
    def test_add_existing_ref(self, mocker):
        epic = EpicFactory()
        epic.frame_sets = {"MY_REF": "my_frame_set"}

        frame_set_mock = mocker.Mock()
        frame_set_mock.ref = "MY_REF"

        with pytest.raises(EpicException):
            epic.add_frame_set(frame_set_mock)
示例#10
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)
示例#11
0
    def test_add_existing_ref(self, mocker):
        epic = EpicFactory()
        epic.strategies = {"MY_REF": "my_strategy"}

        strategy_mock = mocker.Mock()
        strategy_mock.ref = "MY_REF"

        with pytest.raises(EpicException):
            epic.add_strategy(strategy_mock)
示例#12
0
    def test_add_strategy(self, mocker):
        strategy_mock = mocker.Mock()
        strategy_mock.ref = "strategy_ref"
        strategy_mock.epics = {}

        epic = EpicFactory()
        epic.add_strategy(strategy_mock)

        assert epic.strategies["strategy_ref"] == strategy_mock
示例#13
0
    def test_call_open_trade(self, mocker, trade_open_from_epic_mock):
        trade_provider_mock = mocker.Mock()

        epic = EpicFactory(trade_provider=trade_provider_mock)

        epic.open_trade(test="test")

        assert trade_open_from_epic_mock.call_args_list == [
            call(epic=epic, test="test")
        ]
示例#14
0
    def test_call_open_trade(self, mocker):
        trade_provider_mock = mocker.Mock()
        trade_mock = mocker.Mock()
        trade_mock.close_from_epic.return_value = "my_trade_close"

        epic = EpicFactory(trade_provider=trade_provider_mock)

        epic.close_trade(trade=trade_mock, test="test")

        assert trade_mock.close_from_epic.call_args_list == [call(test="test")]
示例#15
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)]
示例#16
0
    def test_response(self, mocker):
        trade_provider_mock = mocker.Mock()
        trade_mock = mocker.Mock()
        trade_mock.close_from_epic.return_value = "my_trade_close"

        epic = EpicFactory(trade_provider=trade_provider_mock)

        response = epic.close_trade(trade=trade_mock, test="test")

        assert response == "my_trade_close"
示例#17
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)
示例#18
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)]
示例#19
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)]
示例#20
0
    def test_update_strategies_call_on_every_tick__inactive_strategy(self, mocker):
        epic = EpicFactory()

        strategy_mock = mocker.Mock(spec=BaseStrategy)
        strategy_mock.is_active.return_value = False
        epic.strategies["test"] = strategy_mock

        new_tick = TickFactory()

        epic.on_new_tick(new_tick)

        assert strategy_mock.on_every_tick.call_args_list == []
示例#21
0
    def test_nominal(self):
        epic = EpicFactory(ref="MY_EPIC_REF")
        strategy = StrategyFactory(ref="MY_STRATEGY")
        trade = TradeFactory(
            ref="MY_TRADE",
            epic=epic,
            direction=TradeDirection.BUY,
            open_datetime=arrow.get("2020-01-01 12:34:56"),
            quantity=5,
            status=TransactionStatus.REFUSED,
            strategy=strategy,
        )

        assert trade.asdict() == {
            "closed_quantities": 0,
            "direction": TradeDirection.BUY,
            "epic": "MY_EPIC_REF",
            "open_date": "2020-01-01 12:34:56",
            "open_quantity": 5,
            "open_value": 101,
            "ref": "MY_TRADE",
            "result": -10,
            "status": TransactionStatus.REFUSED,
            "strategy": "MY_STRATEGY",
        }
示例#22
0
        def test_return(self, mocker):
            mocker.patch(
                f"{CLASS_TRADE_DEFINITION_PATH}.close_from_tick",
                return_value="test_close",
            )
            trade = TradeFactory(epic=EpicFactory())

            result = trade.close_from_epic()

            assert result == "test_close"
示例#23
0
        def test_valid_epic(self, mock_trade_open_from_tick):
            epic = EpicFactory()

            default_trade_args, _ = TradeFactory.get_default_args()
            default_trade_args["epic"] = epic

            Trade.open_from_epic(**default_trade_args)

            assert mock_trade_open_from_tick.call_args_list == [
                call(tick=epic.last_tick, **default_trade_args)
            ]
示例#24
0
class TradeFactory(Factory):
    class Meta:
        model = Trade

    epic = EpicFactory()
    direction = TradeDirection.BUY
    quantity = 1
    open_value = 101
    current_close_value = 99

    def open_datetime():
        return arrow.utcnow()
示例#25
0
        def test_trade_provider__custom(self):
            class MyCustomTradeProvider(BaseTradeProvider):
                def open_trade_request(self, trade):
                    pass

                def close_trade_request(self, trade_close):
                    pass

            custom_trade_provider = MyCustomTradeProvider(ref="MY_PROVIDER")
            epic = EpicFactory(trade_provider=custom_trade_provider)

            assert isinstance(epic.trade_provider, MyCustomTradeProvider)
示例#26
0
    def test_update_strategies_call_on_market_open__nominal(self, mocker):
        mocker.patch(f"{CLASS_DEFINITION_PATH}.is_market_open", return_value=True)
        epic = EpicFactory()
        epic.market_open = False

        strategy_mock = mocker.Mock(spec=BaseStrategy)
        strategy_mock.is_active.return_value = True
        epic.strategies["test"] = strategy_mock

        new_tick = TickFactory()

        epic.on_new_tick(new_tick)

        assert strategy_mock.on_market_open.call_args_list == [call(epic)]
示例#27
0
    def test_update_strategies_call_on_market_open__no_call_expected(
        self,
        mocker,
        market_open_before_tick,
        market_open_after_tick,
        strategy_is_active,
    ):
        mocker.patch(
            f"{CLASS_DEFINITION_PATH}.is_market_open",
            return_value=market_open_after_tick,
        )
        epic = EpicFactory()
        epic.market_open = market_open_before_tick

        strategy_mock = mocker.Mock(spec=BaseStrategy)
        strategy_mock.is_active.return_value = strategy_is_active
        epic.strategies["test"] = strategy_mock

        new_tick = TickFactory()

        epic.on_new_tick(new_tick)

        assert strategy_mock.on_market_open.call_args_list == []
示例#28
0
    def test_epic(self):
        epic = EpicFactory()
        tick_provider = TickProviderFactory(epics=[epic])

        assert tick_provider.epics == {epic.ref: epic}
示例#29
0
    def test_nominal(self):
        epic1 = EpicFactory()
        epic2 = EpicFactory()
        tick_provider = TickProviderFactory(epics=[epic1, epic2])

        assert tick_provider.get_epic_by_ref(epic2.ref) == epic2
示例#30
0
class TickProviderFactory(Factory):
    class Meta:
        model = BaseTickProvider

    epics = [EpicFactory()]