ExecutionContext#

API documentation for tradeexecutor.strategy.execution_context.ExecutionContext Python class in Trading Strategy framework.

class ExecutionContext[source]#

Bases: object

Information about the strategy execution environment.

Execution context helps the strategy to decide different code paths, whether we are doing backtesting, live trading and what is the target Trading Strategy engine version.

  • This is passed to create_trading_universe and other functions. they can determine and take action based the mode of strategy execution. For example, we may load pair and candle data differently in live trading. See mode.

  • Some function signatures have been made better, but we still need to maintain backwards compatibility, see engine_version.

  • We also pass the Python profiler hook timed_task_context_manager.

Example how to create for backtests:

from tradeexecutor.strategy.execution_context import ExecutionContext, ExecutionMode

execution_context = ExecutionContext(
    mode=ExecutionMode.backtesting,
)

See also

  • unit_test_execution_context

  • notebook_execution_context

__init__(mode, timed_task_context_manager=<function timed_task>, engine_version=None, parameters=None, grid_search=False, optimiser=False, jupyter=False, progress_bars=True, force_visualisation=False)#
Parameters:
Return type:

None

Methods

__init__(mode[, timed_task_context_manager, ...])

has_visualisation()

Should backtest spend time to draw custom visualisations.

is_version_greater_or_equal_than(major, ...)

Check that we are runing engine as the minimum required version.

Attributes

mode

What is the current mode of the execution.

timed_task_context_manager

Python context manager for timed tasks.

engine_version

What TS engine the strategy is using.

parameters

Strategy parameters

grid_search

Is this backtest run part of a grid search group

optimiser

Is this backtest run part of a optimiser

jupyter

Are we running inside Jupyter notebook.

progress_bars

Render tqdm progress bars when running

force_visualisation

Force collection of visualisation and draw data during grid search and optimisation.

live_trading

Are we doing live trading.

unit_test

mode: ExecutionMode#

What is the current mode of the execution.

timed_task_context_manager: Callable#

Python context manager for timed tasks.

Functions can use this context manager to add them to the tracing. Used for profiling the strategy code run-time performance.

Set default to tradeexecutor.utils.timer.timed_task(). which logs task duration using logging.INFO level.

engine_version: str#

What TS engine the strategy is using.

None means 0.1.

See tradeexecutor.strategy.engine_version.

parameters: tradeexecutor.strategy.parameters.StrategyParameters | None#

Strategy parameters

For backtesting/grid search cycle.

v0.4 only

Is this backtest run part of a grid search group

optimiser: bool#

Is this backtest run part of a optimiser

jupyter: bool#

Are we running inside Jupyter notebook.

  • We might have HTML widgets available like HTML progress bar

  • We have interactive prompts available

progress_bars: bool#

Render tqdm progress bars when running

Disabled in child worker process context.

force_visualisation: bool#

Force collection of visualisation and draw data during grid search and optimisation.

Slows down the process a bit. Note that changing this parameter means that you need to manually deleted previous cached results, as this is stored as the part of the backtest state.

See perform_optimisation(draw_visualisation) argument.

is_version_greater_or_equal_than(major, minor, patch)[source]#

Check that we are runing engine as the minimum required version.

Parameters:
  • major (int) –

  • minor (int) –

  • patch (int) –

Return type:

bool

has_visualisation()[source]#

Should backtest spend time to draw custom visualisations.

  • By default, disabled for the grid search/optimiser for the speed

Return type:

bool

property live_trading: bool#

Are we doing live trading.

See :py:method:`ExecutionMode.is_live_trading`.

__init__(mode, timed_task_context_manager=<function timed_task>, engine_version=None, parameters=None, grid_search=False, optimiser=False, jupyter=False, progress_bars=True, force_visualisation=False)#
Parameters:
Return type:

None