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