investfly.models.strategy.SecurityFilterExpression
class
SecurityFilterExpression:
dataParams: Dict[str, investfly.models.strategy.DataParam]
@staticmethod
def
createSimpleExpression( leftCondition: str, op: investfly.models.strategy.ComparisonOperator, rightCondition: str) -> SecurityFilterExpression:
def
breakByDataType( self) -> tuple[SecurityFilterExpression | None, SecurityFilterExpression | None, SecurityFilterExpression | None]:
Break the expression by data type. Returns: (quoteExpression, financialExpression, indicatorExpression) FilterGroups containing only financial fields and constants go to financialExpression. FilterGroups containing only quote fields and constants go to quoteExpression. All other FilterGroups (containing indicators) go to indicatorExpression.
def
replaceVarInWithField(self) -> None:
Replace variable names with field names in the expression for financial and quote queries. This allows direct computation without variable resolution.
def
addQuoteParam( self, quote_field: investfly.models.marketdata.QuoteField, alias: str | None = None) -> investfly.models.strategy.DataParam:
def
addConstParam( self, value: int | float, unit: investfly.models.strategy.ConstUnit | None = None, alias: str | None = None) -> investfly.models.strategy.DataParam:
def
addFinancialParam( self, financial_field: investfly.models.marketdata.FinancialField, alias: str | None = None) -> investfly.models.strategy.DataParam:
def
addIndicatorParam( self, indicator_id: str, bar_interval: investfly.models.marketdata.BarInterval, alias: str | None = None, **kwargs) -> investfly.models.strategy.DataParam:
def
addBarPriceParam( self, bar_interval: investfly.models.marketdata.BarInterval, bar_price: str, lookback: int, alias: str | None = None) -> investfly.models.strategy.DataParam:
class
FilterGroupBuilder:
FilterGroupBuilder( filter_group: Dict[str, Any], parent: SecurityFilterExpression)
class
FilterConditionBuilder:
FilterConditionBuilder( filter_condition: Dict[str, Any], parent: FilterGroupBuilder)