qs-strategy 0.4.1

Synchronous reusable configured strategy core
Documentation
//! Synchronous configured strategy compilation and evaluation.
//!
//! The crate accepts strict, bounded, unversioned configuration and compiles it
//! into a deterministic material graph and finite state machine. Callers own
//! input adaptation, material libraries, command execution, and persistence.

mod bar_primitives;
mod config;
mod descriptor;
mod error;
mod expression;
mod material;
mod momentum_primitives;
mod normalization_primitives;
mod numeric;
mod recursive_primitives;
mod runtime;
mod series_primitives;
mod statistical_primitives;
mod structure_primitives;
mod template;
mod temporal_primitives;
mod value;

pub use bar_primitives::{
    MATERIAL_BAR_OVERLAP, MATERIAL_BODY_DIRECTION_FRACTION, MATERIAL_BODY_ENGULFING,
    MATERIAL_BODY_FRACTION, MATERIAL_CLOSE_LOCATION_VALUE, MATERIAL_CLOSE_POSITION,
    MATERIAL_ENGULF_SIZE_RATIO, MATERIAL_INSIDE_BAR, MATERIAL_LOWER_WICK_FRACTION,
    MATERIAL_NARROW_RANGE, MATERIAL_OUTSIDE_BAR, MATERIAL_RELATIVE_RANGE, MATERIAL_RETURN_LOG,
    MATERIAL_ROC, MATERIAL_THREE_BAR_GAP_DOWN, MATERIAL_THREE_BAR_GAP_UP,
    MATERIAL_UPPER_WICK_FRACTION, MATERIAL_WIDE_RANGE,
};
pub use config::{
    ActionTemplate, AssignmentConfig, BarField, ConfiguredActionKind, DecisionKind,
    DecisionTemplate, Expr, FeedbackField, MAX_ACTIONS, MAX_ASSIGNMENTS, MAX_COMPLETED_BARS,
    MAX_ENTRY_TARGETS, MAX_EXPR_DEPTH, MAX_EXPR_NODES, MAX_LEGS, MAX_MATERIAL_ARGS,
    MAX_MATERIAL_INPUTS, MAX_MATERIAL_LOOKBACK, MAX_MATERIAL_STATE_BYTES, MAX_MATERIALS,
    MAX_NAMED_VALUES, MAX_NOTES, MAX_OUTPUT_COMMANDS, MAX_OUTPUT_NOTES, MAX_PARAMETER_OPTIONS,
    MAX_PARAMETERS, MAX_PENDING_FEEDBACK, MAX_SOURCES, MAX_STATES, MAX_TRANSITIONS, MAX_VARIABLES,
    MaterialArg, MaterialArgs, MaterialConfig, MaterialParams, NamedExpr, NoteKind, NoteTemplate,
    ParameterBinding, ParameterConfig, ParameterKind, ParameterValue, PositionField, SourceId,
    StateConfig, StrategyConfig, TransitionConfig, VariableConfig,
};
pub use descriptor::{
    BarShapeCalculation, BarStructureCalculation, MaDerivativeCalculation, MomentumCalculation,
    MovingAverageCalculation, NormalizedCalculation, NumericCalculation, NumericDescriptor,
    NumericInputs, NumericMissingPolicy, NumericRange, NumericUnit, PriceChangeCalculation,
    PriceInputCalculation, RecursiveCalculation, StatisticalCalculation,
};
pub use error::{CompileError, EvaluationError};
pub use material::{
    CommandFact, CommandFeedback, CommandTerminalStatus, CompletedBar, CompletedBarRequirement,
    CompletedBarUpdate, ConfiguredStrategyRequirements, EntryRequirement, MATERIAL_ATR,
    MATERIAL_BAR_FIELD, MATERIAL_BARS_SINCE_OPEN, MATERIAL_CANCELLATION_APPLIED,
    MATERIAL_CANCELLATION_REJECTED, MATERIAL_CROSS_ABOVE, MATERIAL_CROSS_BELOW, MATERIAL_EMA,
    MATERIAL_ENTRY_FILLED, MATERIAL_ENTRY_REJECTED, MATERIAL_INPUT_TIME, MATERIAL_LAG,
    MATERIAL_POSITION_ADVERSE_EXCURSION, MATERIAL_POSITION_CLOSED, MATERIAL_POSITION_ENTRY_PRICE,
    MATERIAL_POSITION_EXISTS, MATERIAL_POSITION_FAVORABLE_EXCURSION,
    MATERIAL_POSITION_INITIAL_RISK, MATERIAL_POSITION_OPEN, MATERIAL_POSITION_OPENED_AT,
    MATERIAL_POSITION_PENDING, MATERIAL_POSITION_REMAINING_SIZE, MATERIAL_POSITION_SIDE,
    MATERIAL_POSITION_STOPLOSS, MATERIAL_READINESS, MATERIAL_ROLLING_MAX, MATERIAL_ROLLING_MIN,
    MATERIAL_RSI, MATERIAL_SECONDS_OF_DAY, MATERIAL_SMA, MATERIAL_STDDEV, MATERIAL_STRICT_EMA,
    MATERIAL_STRICT_SMA, MATERIAL_WEEKDAY, MaterialBuild, MaterialEvalContext, MaterialEvaluator,
    MaterialFactory, MaterialLibrary, MaterialLookback, MaterialUpdateTrigger,
    NamedInputRequirement, NamedValue, ParamKind, ParamSpec, StrategyInput, TradeSlotFacts,
    TradeSlotState,
};
pub use momentum_primitives::{
    MATERIAL_ADX, MATERIAL_CCI, MATERIAL_DI_DIFFERENCE, MATERIAL_DX, MATERIAL_MACD,
    MATERIAL_MACD_HISTOGRAM, MATERIAL_MACD_SIGNAL, MATERIAL_MINUS_DI, MATERIAL_PLUS_DI,
    MATERIAL_RSI_CHANGE, MATERIAL_STOCHASTIC_FAST_K, MATERIAL_STOCHASTIC_SLOW_D,
    MATERIAL_STOCHASTIC_SLOW_K, MATERIAL_STRICT_RSI,
};
pub use normalization_primitives::{
    MATERIAL_MA_ACCELERATION_ATR, MATERIAL_MA_DISTANCE_ATR, MATERIAL_MA_GAP_ATR,
    MATERIAL_MA_SLOPE_ATR, MATERIAL_MACD_ATR, MATERIAL_MACD_HISTOGRAM_ATR,
    MATERIAL_MACD_SIGNAL_ATR,
};
pub use recursive_primitives::{
    MATERIAL_BB_KC_SQUEEZE, MATERIAL_BODY_ABS_ATR, MATERIAL_BODY_ABS_CURRENT_ATR,
    MATERIAL_BODY_SIGNED_ATR, MATERIAL_BODY_SIGNED_CURRENT_ATR,
    MATERIAL_DONCHIAN_LOWER_DISTANCE_ATR, MATERIAL_DONCHIAN_LOWER_DISTANCE_CURRENT_ATR,
    MATERIAL_DONCHIAN_UPPER_DISTANCE_ATR, MATERIAL_DONCHIAN_UPPER_DISTANCE_CURRENT_ATR,
    MATERIAL_GAP_ATR, MATERIAL_GAP_CURRENT_ATR, MATERIAL_HEIKIN_ASHI_CLOSE,
    MATERIAL_HEIKIN_ASHI_HIGH, MATERIAL_HEIKIN_ASHI_LOW, MATERIAL_HEIKIN_ASHI_OPEN,
    MATERIAL_HIGH_CHANGE_ATR, MATERIAL_HIGH_CHANGE_CURRENT_ATR, MATERIAL_HMA, MATERIAL_KAMA,
    MATERIAL_KAMA_SMOOTHING_CONSTANT, MATERIAL_KELTNER_LOWER, MATERIAL_KELTNER_MIDDLE,
    MATERIAL_KELTNER_UPPER, MATERIAL_LOW_CHANGE_ATR, MATERIAL_LOW_CHANGE_CURRENT_ATR,
    MATERIAL_MOVE_ATR, MATERIAL_MOVE_CURRENT_ATR, MATERIAL_RANGE_ATR, MATERIAL_RANGE_CURRENT_ATR,
    MATERIAL_SUPERTREND_DIRECTION, MATERIAL_SUPERTREND_LEVEL,
};
pub use series_primitives::{
    MATERIAL_CLOSE_PRICE, MATERIAL_HL2, MATERIAL_HLC3, MATERIAL_MA_ACCELERATION,
    MATERIAL_MA_ALIGNMENT, MATERIAL_MA_DISTANCE, MATERIAL_MA_GAP, MATERIAL_MA_SLOPE,
    MATERIAL_OHLC4, MATERIAL_STRICT_ATR, MATERIAL_STRICT_RMA, MATERIAL_STRICT_WMA,
    MATERIAL_TRUE_RANGE,
};
pub use statistical_primitives::{
    MATERIAL_AROON_DOWN, MATERIAL_AROON_UP, MATERIAL_ATR_CHANGE, MATERIAL_ATR_PERCENT,
    MATERIAL_ATR_RATIO, MATERIAL_BOLLINGER_LOWER, MATERIAL_BOLLINGER_PERCENT_B,
    MATERIAL_BOLLINGER_UPPER, MATERIAL_BOLLINGER_WIDTH, MATERIAL_CHANNEL_MID_DISTANCE,
    MATERIAL_CHANNEL_WIDTH, MATERIAL_CHOPPINESS, MATERIAL_DONCHIAN_LOWER, MATERIAL_DONCHIAN_UPPER,
    MATERIAL_EFFICIENCY_RATIO, MATERIAL_EWMA_VOLATILITY, MATERIAL_HISTORICAL_PERCENTILE,
    MATERIAL_MEDIAN_DEVIATION, MATERIAL_NEGATIVE_SEMIVARIANCE, MATERIAL_POSITIVE_SEMIVARIANCE,
    MATERIAL_PREVIOUS_RANGE_POSITION, MATERIAL_RANGE_EXPANSION, MATERIAL_RANGE_POSITION,
    MATERIAL_REALIZED_VARIANCE, MATERIAL_REALIZED_VOLATILITY, MATERIAL_REGRESSION_DEVIATION,
    MATERIAL_REGRESSION_R2, MATERIAL_REGRESSION_RESIDUAL_RMS, MATERIAL_REGRESSION_SLOPE,
    MATERIAL_RETURN_AUTOCORRELATION, MATERIAL_RETURN_RMS, MATERIAL_RETURN_STDDEV,
    MATERIAL_ROLLING_HIGH_AGE, MATERIAL_ROLLING_LOW_AGE, MATERIAL_ROLLING_MEDIAN,
    MATERIAL_VOLATILITY_ASYMMETRY, MATERIAL_ZSCORE,
};

pub use runtime::{
    ConfiguredCommand, ConfiguredStrategy, Decision, NamedOutput, Note, OutputScalar, RelatedTrade,
    StrategyOutput,
};
pub use template::{
    StrategyTemplate, bind_expr, evaluate_parameter_expression, parameter_scalar_type,
    parameter_value_label, require_boolean,
};

pub use structure_primitives::{
    MATERIAL_CONFIRMED_LEVEL, MATERIAL_CONFIRMED_LINE_VALUE, MATERIAL_DIVERGENCE,
    MATERIAL_LEG_AMPLITUDE, MATERIAL_LEG_DURATION, MATERIAL_LEVEL_AGE, MATERIAL_LEVEL_DISTANCE,
    MATERIAL_RETRACEMENT, MATERIAL_SWING_CHANGE, MATERIAL_SWING_HIGHER, MATERIAL_SWING_LOWER,
};
pub use temporal_primitives::{
    MATERIAL_BARS_SINCE_TRUE, MATERIAL_COUNT_TRUE, MATERIAL_DELTA, MATERIAL_FALL,
    MATERIAL_HOLD_ALL, MATERIAL_RISE, MATERIAL_SEQUENCE_AB, MATERIAL_SETUP_LONG_BOUNDED_QUEUE,
    MATERIAL_SETUP_LONG_REPLACE_LATEST, MATERIAL_SETUP_LONG_SINGLE_KEEP_FIRST,
    MATERIAL_SETUP_SHORT_BOUNDED_QUEUE, MATERIAL_SETUP_SHORT_REPLACE_LATEST,
    MATERIAL_SETUP_SHORT_SINGLE_KEEP_FIRST, MATERIAL_SHARE_TRUE, MATERIAL_STREAK_TRUE,
    MATERIAL_STRICT_CROSS_ABOVE, MATERIAL_STRICT_CROSS_BELOW,
};
pub use value::{
    Literal, MAX_GENERATED_ID_BYTES, MAX_ID_BYTES, MAX_TEXT_BYTES, ScalarType, Value, ValueType,
};

pub(crate) use config::{MAX_COMMAND_CORRELATIONS, bar_field_type};
pub(crate) use value::{validate_id, validate_text};