Skip to content

Condition — Strategy Condition Module

This module defines the various condition classes used to create complex entry and exit logic in trading strategies. These conditions are categorized into logical, threshold-based, trend-following, Fibonacci retracement and parameterized (time/value-based) mechanisms.

All condition classes inherit from the base Condition class, which provides a common interface for evaluating conditions against time series data.

Abstract Condition class has the following methods:

class Condition(ABC):

    @abstractmethod
    def evaluate(self, data: pd.DataFrame) -> pd.Series:
        pass

    @abstractmethod
    def get_graphs(self, downloader: DownloadModule, df: pd.DataFrame) -> [TradingPlot]:
        pass

    @abstractmethod
    def to_string(self) -> str:
        pass

    @abstractmethod
    def to_dict(self) -> dict:
        pass

As a condition is evaluated over a time series, it returns a boolean series indicating whether the condition is satisfied at each point in time. These boolean series can be combined using logical conditions to create complex strategies and are stored in the pd.DataFrame.


Module Structure

1. Logical Conditions

Located in trading_strategy_tester/conditions/logical_conditions/

  • AND — Combines multiple conditions using logical AND
  • OR — Combines multiple conditions using logical OR

2. Threshold Conditions

Located in trading_strategy_tester/conditions/threshold_conditions/


3. Trend Conditions

Located in trading_strategy_tester/conditions/trend_conditions/


4. Fibonacci Retracement Conditions

Located in trading_strategy_tester/conditions/fibonacci_retracement_levels_conditions/


5. Parameterized Conditions

Located in trading_strategy_tester/conditions/parameterized_conditions/


Integration

Each condition class is typically used inside a Strategy object as a buy_condition or sell_condition. Conditions can be nested using logical conditions for complex rule-based strategies.