Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_tinkoff-trading-bot-develop/app/strategies/strategy_fabric.py
5935 views
1
from typing import Dict
2
3
from app.strategies.interval.IntervalStrategy import IntervalStrategy
4
from app.strategies.base import BaseStrategy
5
from app.strategies.errors import UnsupportedStrategyError
6
from app.strategies.models import StrategyName
7
8
strategies: Dict[StrategyName, BaseStrategy.__class__] = {
9
StrategyName.INTERVAL: IntervalStrategy,
10
}
11
12
13
def resolve_strategy(strategy_name: StrategyName, figi: str, *args, **kwargs) -> BaseStrategy:
14
"""
15
Creates strategy instance by strategy name. Passes all arguments to strategy constructor.
16
17
:param strategy_name: the name of strategy. See :class:`app.strategies.models.StrategyName`
18
:param figi: the figi of the instrument strategy applied to
19
:return: strategy instance. See :class:`app.strategies.base.BaseStrategy`
20
:raises: :class:`app.strategies.errors.UnsupportedStrategyError` if the name is not supported
21
"""
22
if strategy_name not in strategies:
23
raise UnsupportedStrategyError(strategy_name)
24
return strategies[strategy_name](figi=figi, *args, **kwargs)
25
26