Source code for tradeexecutor.strategy.description
"""Strategy execution description.
Describe core parameters for the strategy execution for the main loop.
"""
from dataclasses import dataclass
from typing import Optional
from tradingstrategy.chain import ChainId
from tradeexecutor.strategy.cycle import CycleDuration
from tradeexecutor.strategy.universe_model import UniverseModel
from tradeexecutor.strategy.runner import StrategyRunner
from tradingstrategy.timebucket import TimeBucket
[docs]@dataclass
class StrategyExecutionDescription:
    """Describe how a strategy will be execuetd.
    -universe_model: What currencies, candles, etc. to use and how to refresh this
    -runner: Alpha model, communicating with the external environment, executing trades
    This data class is returned from the strategy_factory through :py:func:`tradeexecutor.strategy.bootstrap.import_strategy_file`.
    """
    #: How to refresh the trading universe for the each tick
    universe_model: UniverseModel
    #: What kind of a strategy runner this strategy is using
    runner: StrategyRunner
    #: As read from the strategy
    trading_strategy_engine_version: Optional[str] = None
    #: How long is the strategy execution cycle
    cycle_duration: Optional[CycleDuration] = None
    # TODO: Deprecate?
    #: What candles this strategy uses: 1d, 1h, etc.
    time_bucket: Optional[TimeBucket] = None
    #: Blockchain id for this strategy.
    #:
    #: Necessary for single chain strategies to know
    #: on which chain we operate.
    #:
    chain_id: Optional[ChainId] = None
    #: Source code of the strategy.
    #:
    #: Only applicable for strategies that were read as a strategy module,
    #: not applicable to backtesting notebooks.
    source_code: Optional[str] = None