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 ANDOR
— Combines multiple conditions using logical OR
2. Threshold Conditions
Located in trading_strategy_tester/conditions/threshold_conditions/
CrossOverCondition
— Condition when one series crosses over anotherCrossUnderCondition
— Condition when one series crosses under anotherGreaterThanCondition
— Checks if one series is greater than anotherLessThanCondition
— Checks if one series is less than another
3. Trend Conditions
Located in trading_strategy_tester/conditions/trend_conditions/
UptrendForXDaysCondition
— Detects uptrend over X consecutive daysDowntrendForXDaysCondition
— Detects downtrend over X consecutive days
4. Fibonacci Retracement Conditions
Located in trading_strategy_tester/conditions/fibonacci_retracement_levels_conditions/
UptrendFibRetracementLevelCondition
— Uses Fibonacci levels during uptrendDowntrendFibRetracementLevelCondition
— Uses Fibonacci levels during downtrend
5. Parameterized Conditions
Located in trading_strategy_tester/conditions/parameterized_conditions/
AfterXDaysCondition
— Triggers condition after X days of another conditionChangeOfXPercentPerYDaysCondition
— Checks percentage change over Y daysIntraIntervalChangeOfXPercentCondition
— Percentage change within a single interval chosen in the strategy definition
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.