investfly.models.strategy.SecurityFilterExpression

class SecurityFilterExpression:
SecurityFilterExpression(expression: str = '')
dataParams: Dict[str, investfly.models.strategy.DataParam]
filterGroups: List[Dict[str, Any]]
def addDataParam( self, key: str, dataParam: investfly.models.strategy.DataParam) -> None:
@staticmethod
def createSimpleExpression( leftCondition: str, op: investfly.models.strategy.ComparisonOperator, rightCondition: str) -> SecurityFilterExpression:
@staticmethod
def fromDict( json_dict: Dict[str, Any]) -> SecurityFilterExpression:
@staticmethod
def filterGroupToString(fg: Dict[str, Any]):
@staticmethod
def filterConditionToString(fc: Dict[str, Any]) -> str:
def toDict(self) -> Dict[str, Any]:
def validate(self) -> None:
def toExpressionString(self) -> str:
def toMySQLExpression(self) -> str:
def toEvalExpression(self) -> str:
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 newFilterGroup( self) -> FilterGroupBuilder:
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)
filter_group
parent
def newFilterCondition( self) -> FilterConditionBuilder:
def done( self) -> SecurityFilterExpression:
class FilterConditionBuilder:
FilterConditionBuilder( filter_condition: Dict[str, Any], parent: FilterGroupBuilder)
filter_condition
parent
def addToLeftCondition( self, expr: str) -> FilterConditionBuilder:
def addToRightCondition( self, expr: str) -> FilterConditionBuilder:
def done( self) -> FilterGroupBuilder: