e385734275
## B15 Microstructure — three new indicators (485 → 488) | Indicator | Input | Output | Notes | |-----------|-------|--------|-------| | `TradeSignAutocorrelation` | `Trade` | `f64` ∈ [-1,1] | lag-1 autocorrelation of the signed aggressor (order-flow persistence) | | `Pin` | `Trade` | `f64` ∈ [0,1] | probability of informed trading from rolling buy/sell imbalance (EKOP single-window estimator); `name()` = `"PIN"` | | `HasbrouckInformationShare` | `(f64, f64)` | `f64` ∈ [0,1] | variance-ratio proxy for each venue's share of price discovery | ### Wiring - Core structs + full unit tests (every branch). - Hand-written Python/Node/WASM bindings for the two `Trade`-input indicators (precedent `TradeImbalance`); `node_pair_indicator!` / `wasm_pair_indicator!` macro bindings + hand Python pyclass for the pairwise Hasbrouck (precedent `RollingCorrelation`). - Fuzz drives added to `indicator_update_trade.rs` and `indicator_update_pair.rs`. - Dedicated Python + Node streaming-vs-batch and reference tests; Hasbrouck in the `PAIR` registry. - README counter (3 spots) + `docs/README.md` + `FAMILIES` assert bumped to 488. ### Verify (all green, local) - `cargo test -p wickra-core --lib`: 3991 passed - `cargo test -p wickra-core --doc`: 438 passed - `cargo clippy --workspace --all-targets --all-features -- -D warnings`: clean - node: 561 passed · pytest: 926 passed
1630 lines
45 KiB
Rust
1630 lines
45 KiB
Rust
//! Built-in indicators. Every indicator implements [`crate::Indicator`].
|
|
//!
|
|
//! Modules are listed alphabetically; the canonical family taxonomy lives in
|
|
//! [`FAMILIES`]. Every public name is re-exported flat from this module and
|
|
//! from the crate root for convenience.
|
|
|
|
// Internal shared building block for the chart- and harmonic-pattern detectors.
|
|
// Declared `pub(crate)` (not `mod`) so it is excluded from the public-catalogue
|
|
// counter (`grep -c '^mod '`) and re-exported nowhere.
|
|
pub(crate) mod pattern_swing;
|
|
|
|
mod abandoned_baby;
|
|
mod abcd;
|
|
mod absolute_breadth_index;
|
|
mod acceleration_bands;
|
|
mod accelerator_oscillator;
|
|
mod ad_oscillator;
|
|
mod ad_volume_line;
|
|
mod adaptive_cci;
|
|
mod adaptive_cycle;
|
|
mod adaptive_laguerre_filter;
|
|
mod adaptive_rsi;
|
|
mod adl;
|
|
mod advance_block;
|
|
mod advance_decline;
|
|
mod advance_decline_ratio;
|
|
mod adx;
|
|
mod adxr;
|
|
mod alligator;
|
|
mod alma;
|
|
mod alpha;
|
|
mod amihud_illiquidity;
|
|
mod anchored_rsi;
|
|
mod anchored_vwap;
|
|
mod andrews_pitchfork;
|
|
mod apo;
|
|
mod aroon;
|
|
mod aroon_oscillator;
|
|
mod atr;
|
|
mod atr_bands;
|
|
mod atr_ratchet;
|
|
mod atr_trailing_stop;
|
|
mod auto_fib;
|
|
mod autocorrelation;
|
|
mod autocorrelation_periodogram;
|
|
mod average_daily_range;
|
|
mod average_drawdown;
|
|
mod avg_price;
|
|
mod awesome_oscillator;
|
|
mod awesome_oscillator_histogram;
|
|
mod balance_of_power;
|
|
mod bandpass_filter;
|
|
mod bat;
|
|
mod belt_hold;
|
|
mod beta;
|
|
mod beta_neutral_spread;
|
|
mod better_volume;
|
|
mod bipower_variation;
|
|
mod body_size_pct;
|
|
mod bollinger;
|
|
mod bollinger_bandwidth;
|
|
mod bomar_bands;
|
|
mod breadth_thrust;
|
|
mod breakaway;
|
|
mod bullish_percent_index;
|
|
mod butterfly;
|
|
mod calendar_spread;
|
|
mod calmar_ratio;
|
|
mod camarilla_pivots;
|
|
mod candle_volume;
|
|
mod cci;
|
|
mod center_of_gravity;
|
|
mod central_pivot_range;
|
|
mod cfo;
|
|
mod chaikin_oscillator;
|
|
mod chaikin_volatility;
|
|
mod chande_kroll_stop;
|
|
mod chandelier_exit;
|
|
mod choppiness_index;
|
|
mod classic_pivots;
|
|
mod close_vs_open;
|
|
mod closing_marubozu;
|
|
mod cmf;
|
|
mod cmo;
|
|
mod coefficient_of_variation;
|
|
mod cointegration;
|
|
mod concealing_baby_swallow;
|
|
mod conditional_value_at_risk;
|
|
mod connors_rsi;
|
|
mod coppock;
|
|
mod correlation_trend_indicator;
|
|
mod counterattack;
|
|
mod crab;
|
|
mod cumulative_volume_index;
|
|
mod cup_and_handle;
|
|
mod cvd;
|
|
mod cybernetic_cycle;
|
|
mod cypher;
|
|
mod day_of_week_profile;
|
|
mod decycler;
|
|
mod decycler_oscillator;
|
|
mod dema;
|
|
mod demand_index;
|
|
mod demark_pivots;
|
|
mod depth_slope;
|
|
mod derivative_oscillator;
|
|
mod detrended_std_dev;
|
|
mod disparity_index;
|
|
mod distance_ssd;
|
|
mod doji;
|
|
mod doji_star;
|
|
mod donchian;
|
|
mod donchian_stop;
|
|
mod double_bollinger;
|
|
mod double_top_bottom;
|
|
mod downside_gap_three_methods;
|
|
mod dpo;
|
|
mod dragonfly_doji;
|
|
mod drawdown_duration;
|
|
mod dumpling_top;
|
|
mod dx;
|
|
mod dynamic_momentum_index;
|
|
mod ease_of_movement;
|
|
mod effective_spread;
|
|
mod ehlers_stochastic;
|
|
mod ehma;
|
|
mod elder_impulse;
|
|
mod elder_ray;
|
|
mod elder_safezone;
|
|
mod ema;
|
|
mod empirical_mode_decomposition;
|
|
mod engulfing;
|
|
mod equivolume;
|
|
mod even_better_sinewave;
|
|
mod evening_doji_star;
|
|
mod evwma;
|
|
mod ewma_volatility;
|
|
mod expectancy;
|
|
mod falling_three_methods;
|
|
mod fama;
|
|
mod fib_arcs;
|
|
mod fib_channel;
|
|
mod fib_confluence;
|
|
mod fib_extension;
|
|
mod fib_fan;
|
|
mod fib_projection;
|
|
mod fib_retracement;
|
|
mod fib_time_zones;
|
|
mod fibonacci_pivots;
|
|
mod fisher_rsi;
|
|
mod fisher_transform;
|
|
mod flag_pennant;
|
|
mod footprint;
|
|
mod force_index;
|
|
mod fractal_chaos_bands;
|
|
mod frama;
|
|
mod fry_pan_bottom;
|
|
mod funding_basis;
|
|
mod funding_rate;
|
|
mod funding_rate_mean;
|
|
mod funding_rate_zscore;
|
|
mod gain_loss_ratio;
|
|
mod gap_side_by_side_white;
|
|
mod garch11;
|
|
mod garman_klass;
|
|
mod gartley;
|
|
mod gator_oscillator;
|
|
mod generalized_dema;
|
|
mod geometric_ma;
|
|
mod golden_pocket;
|
|
mod granger_causality;
|
|
mod gravestone_doji;
|
|
mod hammer;
|
|
mod hanging_man;
|
|
mod harami;
|
|
mod harami_cross;
|
|
mod hasbrouck_information_share;
|
|
mod head_and_shoulders;
|
|
mod heikin_ashi;
|
|
mod heikin_ashi_oscillator;
|
|
mod high_low_index;
|
|
mod high_low_range;
|
|
mod high_wave;
|
|
mod highpass_filter;
|
|
mod hikkake;
|
|
mod hikkake_modified;
|
|
mod hilbert_dominant_cycle;
|
|
mod hilo_activator;
|
|
mod historical_volatility;
|
|
mod hma;
|
|
mod holt_winters;
|
|
mod homing_pigeon;
|
|
mod ht_dcphase;
|
|
mod ht_phasor;
|
|
mod ht_trendmode;
|
|
mod hurst_channel;
|
|
mod hurst_exponent;
|
|
mod ichimoku;
|
|
mod identical_three_crows;
|
|
mod in_neck;
|
|
mod inertia;
|
|
mod information_ratio;
|
|
mod initial_balance;
|
|
mod instantaneous_trendline;
|
|
mod intraday_intensity;
|
|
mod intraday_momentum_index;
|
|
mod intraday_volatility_profile;
|
|
mod inverse_fisher_transform;
|
|
mod inverted_hammer;
|
|
mod jarque_bera;
|
|
mod jma;
|
|
mod jump_indicator;
|
|
mod kagi_bars;
|
|
mod kalman_hedge_ratio;
|
|
mod kama;
|
|
mod kase_devstop;
|
|
mod kase_permission_stochastic;
|
|
mod kelly_criterion;
|
|
mod keltner;
|
|
mod kendall_tau;
|
|
mod kicking;
|
|
mod kicking_by_length;
|
|
mod kst;
|
|
mod kurtosis;
|
|
mod kvo;
|
|
mod kyles_lambda;
|
|
mod ladder_bottom;
|
|
mod laguerre_rsi;
|
|
mod lead_lag_cross_correlation;
|
|
mod linreg;
|
|
mod linreg_angle;
|
|
mod linreg_channel;
|
|
mod linreg_intercept;
|
|
mod linreg_slope;
|
|
mod liquidation_features;
|
|
mod log_return;
|
|
mod long_legged_doji;
|
|
mod long_line;
|
|
mod long_short_ratio;
|
|
mod ma_envelope;
|
|
mod macd;
|
|
mod macd_ext;
|
|
mod macd_fix;
|
|
mod macd_histogram;
|
|
mod mama;
|
|
mod market_facilitation_index;
|
|
mod marubozu;
|
|
mod mass_index;
|
|
mod mat_hold;
|
|
mod matching_low;
|
|
mod max_drawdown;
|
|
mod mcclellan_oscillator;
|
|
mod mcclellan_summation_index;
|
|
mod mcginley_dynamic;
|
|
mod median_absolute_deviation;
|
|
mod median_channel;
|
|
mod median_ma;
|
|
mod median_price;
|
|
mod mfi;
|
|
mod microprice;
|
|
mod mid_point;
|
|
mod mid_price;
|
|
mod minus_di;
|
|
mod minus_dm;
|
|
mod modified_ma_stop;
|
|
mod mom;
|
|
mod morning_doji_star;
|
|
mod morning_evening_star;
|
|
mod murrey_math_lines;
|
|
mod natr;
|
|
mod new_highs_new_lows;
|
|
mod new_price_lines;
|
|
mod nrtr;
|
|
mod nvi;
|
|
mod ob_imbalance_full;
|
|
mod ob_imbalance_top1;
|
|
mod ob_imbalance_topn;
|
|
mod obv;
|
|
mod oi_delta;
|
|
mod oi_price_divergence;
|
|
mod oi_weighted;
|
|
mod omega_ratio;
|
|
mod on_neck;
|
|
mod opening_marubozu;
|
|
mod opening_range;
|
|
mod order_flow_imbalance;
|
|
mod ou_half_life;
|
|
mod overnight_gap;
|
|
mod overnight_intraday_return;
|
|
mod pain_index;
|
|
mod pair_spread_zscore;
|
|
mod pairwise_beta;
|
|
mod parkinson;
|
|
mod pearson_correlation;
|
|
mod percent_above_ma;
|
|
mod percent_b;
|
|
mod percentage_trailing_stop;
|
|
mod pgo;
|
|
mod piercing_dark_cloud;
|
|
mod pin;
|
|
mod pivot_reversal;
|
|
mod plus_di;
|
|
mod plus_dm;
|
|
mod pmo;
|
|
mod point_and_figure_bars;
|
|
mod polarized_fractal_efficiency;
|
|
mod ppo;
|
|
mod ppo_histogram;
|
|
mod profit_factor;
|
|
mod projection_bands;
|
|
mod projection_oscillator;
|
|
mod psar;
|
|
mod pvi;
|
|
mod qqe;
|
|
mod qstick;
|
|
mod quartile_bands;
|
|
mod quoted_spread;
|
|
mod r_squared;
|
|
mod realized_spread;
|
|
mod realized_volatility;
|
|
mod recovery_factor;
|
|
mod rectangle_range;
|
|
mod reflex;
|
|
mod regime_label;
|
|
mod relative_strength_ab;
|
|
mod renko_bars;
|
|
mod renko_trailing_stop;
|
|
mod rickshaw_man;
|
|
mod rising_three_methods;
|
|
mod rmi;
|
|
mod roc;
|
|
mod rocp;
|
|
mod rocr;
|
|
mod rocr100;
|
|
mod rogers_satchell;
|
|
mod roll_measure;
|
|
mod rolling_correlation;
|
|
mod rolling_covariance;
|
|
mod rolling_iqr;
|
|
mod rolling_min_max_scaler;
|
|
mod rolling_percentile_rank;
|
|
mod rolling_quantile;
|
|
mod roofing_filter;
|
|
mod rsi;
|
|
mod rsx;
|
|
mod rvi;
|
|
mod rvi_volatility;
|
|
mod rwi;
|
|
mod sample_entropy;
|
|
mod sar_ext;
|
|
mod seasonal_z_score;
|
|
mod separating_lines;
|
|
mod session_high_low;
|
|
mod session_range;
|
|
mod session_vwap;
|
|
mod shannon_entropy;
|
|
mod shark;
|
|
mod sharpe_ratio;
|
|
mod shooting_star;
|
|
mod short_line;
|
|
mod signed_volume;
|
|
mod sine_wave;
|
|
mod sine_weighted_ma;
|
|
mod skewness;
|
|
mod sma;
|
|
mod smi;
|
|
mod smma;
|
|
mod smoothed_heikin_ashi;
|
|
mod sortino_ratio;
|
|
mod spearman_correlation;
|
|
mod spinning_top;
|
|
mod spread_ar1_coefficient;
|
|
mod spread_bollinger_bands;
|
|
mod spread_hurst;
|
|
mod stalled_pattern;
|
|
mod standard_error;
|
|
mod standard_error_bands;
|
|
mod starc_bands;
|
|
mod stc;
|
|
mod std_dev;
|
|
mod step_trailing_stop;
|
|
mod stick_sandwich;
|
|
mod stoch_rsi;
|
|
mod stochastic;
|
|
mod stochastic_cci;
|
|
mod super_smoother;
|
|
mod super_trend;
|
|
mod t3;
|
|
mod taker_buy_sell_ratio;
|
|
mod takuri;
|
|
mod tasuki_gap;
|
|
mod td_camouflage;
|
|
mod td_clop;
|
|
mod td_clopwin;
|
|
mod td_combo;
|
|
mod td_countdown;
|
|
mod td_demarker;
|
|
mod td_differential;
|
|
mod td_dwave;
|
|
mod td_lines;
|
|
mod td_moving_average;
|
|
mod td_open;
|
|
mod td_pressure;
|
|
mod td_propulsion;
|
|
mod td_range_projection;
|
|
mod td_rei;
|
|
mod td_risk_level;
|
|
mod td_sequential;
|
|
mod td_setup;
|
|
mod td_trap;
|
|
mod tema;
|
|
mod term_structure_basis;
|
|
mod three_drives;
|
|
mod three_inside;
|
|
mod three_line_break;
|
|
mod three_line_strike;
|
|
mod three_outside;
|
|
mod three_soldiers_or_crows;
|
|
mod three_stars_in_south;
|
|
mod thrusting;
|
|
mod tick_index;
|
|
mod tii;
|
|
mod time_based_stop;
|
|
mod time_of_day_return_profile;
|
|
mod tower_top_bottom;
|
|
mod tpo_profile;
|
|
mod trade_imbalance;
|
|
mod trade_sign_autocorrelation;
|
|
mod trade_volume_index;
|
|
mod trend_label;
|
|
mod trend_strength_index;
|
|
mod trendflex;
|
|
mod treynor_ratio;
|
|
mod triangle;
|
|
mod trima;
|
|
mod trin;
|
|
mod triple_top_bottom;
|
|
mod tristar;
|
|
mod trix;
|
|
mod true_range;
|
|
mod tsf;
|
|
mod tsf_oscillator;
|
|
mod tsi;
|
|
mod tsv;
|
|
mod ttm_squeeze;
|
|
mod ttm_trend;
|
|
mod turn_of_month;
|
|
mod tweezer;
|
|
mod twiggs_money_flow;
|
|
mod two_crows;
|
|
mod typical_price;
|
|
mod ulcer_index;
|
|
mod ultimate_oscillator;
|
|
mod unique_three_river;
|
|
mod universal_oscillator;
|
|
mod up_down_volume_ratio;
|
|
mod upside_gap_three_methods;
|
|
mod upside_gap_two_crows;
|
|
mod value_area;
|
|
mod value_at_risk;
|
|
mod variance;
|
|
mod variance_ratio;
|
|
mod vertical_horizontal_filter;
|
|
mod vidya;
|
|
mod volatility_cone;
|
|
mod volatility_of_volatility;
|
|
mod volatility_ratio;
|
|
mod volty_stop;
|
|
mod volume_by_time_profile;
|
|
mod volume_oscillator;
|
|
mod volume_profile;
|
|
mod volume_rsi;
|
|
mod volume_weighted_macd;
|
|
mod volume_weighted_sr;
|
|
mod vortex;
|
|
mod vpin;
|
|
mod vpt;
|
|
mod vwap;
|
|
mod vwap_stddev_bands;
|
|
mod vwma;
|
|
mod vzo;
|
|
mod wad;
|
|
mod wave_pm;
|
|
mod wave_trend;
|
|
mod wedge;
|
|
mod weighted_close;
|
|
mod wick_ratio;
|
|
mod williams_fractals;
|
|
mod williams_r;
|
|
mod win_rate;
|
|
mod wma;
|
|
mod woodie_pivots;
|
|
mod yang_zhang;
|
|
mod yoyo_exit;
|
|
mod z_score;
|
|
mod zero_lag_macd;
|
|
mod zig_zag;
|
|
mod zlema;
|
|
|
|
pub use abandoned_baby::AbandonedBaby;
|
|
pub use abcd::Abcd;
|
|
pub use absolute_breadth_index::AbsoluteBreadthIndex;
|
|
pub use acceleration_bands::{AccelerationBands, AccelerationBandsOutput};
|
|
pub use accelerator_oscillator::AcceleratorOscillator;
|
|
pub use ad_oscillator::AdOscillator;
|
|
pub use ad_volume_line::AdVolumeLine;
|
|
pub use adaptive_cci::AdaptiveCci;
|
|
pub use adaptive_cycle::AdaptiveCycle;
|
|
pub use adaptive_laguerre_filter::AdaptiveLaguerreFilter;
|
|
pub use adaptive_rsi::AdaptiveRsi;
|
|
pub use adl::Adl;
|
|
pub use advance_block::AdvanceBlock;
|
|
pub use advance_decline::AdvanceDecline;
|
|
pub use advance_decline_ratio::AdvanceDeclineRatio;
|
|
pub use adx::{Adx, AdxOutput};
|
|
pub use adxr::Adxr;
|
|
pub use alligator::{Alligator, AlligatorOutput};
|
|
pub use alma::Alma;
|
|
pub use alpha::Alpha;
|
|
pub use amihud_illiquidity::AmihudIlliquidity;
|
|
pub use anchored_rsi::AnchoredRsi;
|
|
pub use anchored_vwap::AnchoredVwap;
|
|
pub use andrews_pitchfork::{AndrewsPitchfork, AndrewsPitchforkOutput};
|
|
pub use apo::Apo;
|
|
pub use aroon::{Aroon, AroonOutput};
|
|
pub use aroon_oscillator::AroonOscillator;
|
|
pub use atr::Atr;
|
|
pub use atr_bands::{AtrBands, AtrBandsOutput};
|
|
pub use atr_ratchet::{AtrRatchet, AtrRatchetOutput};
|
|
pub use atr_trailing_stop::AtrTrailingStop;
|
|
pub use auto_fib::{AutoFib, AutoFibOutput};
|
|
pub use autocorrelation::Autocorrelation;
|
|
pub use autocorrelation_periodogram::AutocorrelationPeriodogram;
|
|
pub use average_daily_range::AverageDailyRange;
|
|
pub use average_drawdown::AverageDrawdown;
|
|
pub use avg_price::AvgPrice;
|
|
pub use awesome_oscillator::AwesomeOscillator;
|
|
pub use awesome_oscillator_histogram::AwesomeOscillatorHistogram;
|
|
pub use balance_of_power::BalanceOfPower;
|
|
pub use bandpass_filter::BandpassFilter;
|
|
pub use bat::Bat;
|
|
pub use belt_hold::BeltHold;
|
|
pub use beta::Beta;
|
|
pub use beta_neutral_spread::BetaNeutralSpread;
|
|
pub use better_volume::BetterVolume;
|
|
pub use bipower_variation::BipowerVariation;
|
|
pub use body_size_pct::BodySizePct;
|
|
pub use bollinger::{BollingerBands, BollingerOutput};
|
|
pub use bollinger_bandwidth::BollingerBandwidth;
|
|
pub use bomar_bands::{BomarBands, BomarBandsOutput};
|
|
pub use breadth_thrust::BreadthThrust;
|
|
pub use breakaway::Breakaway;
|
|
pub use bullish_percent_index::BullishPercentIndex;
|
|
pub use butterfly::Butterfly;
|
|
pub use calendar_spread::CalendarSpread;
|
|
pub use calmar_ratio::CalmarRatio;
|
|
pub use camarilla_pivots::{Camarilla, CamarillaPivotsOutput};
|
|
pub use candle_volume::{CandleVolume, CandleVolumeOutput};
|
|
pub use cci::Cci;
|
|
pub use center_of_gravity::CenterOfGravity;
|
|
pub use central_pivot_range::{CentralPivotRange, CentralPivotRangeOutput};
|
|
pub use cfo::Cfo;
|
|
pub use chaikin_oscillator::ChaikinOscillator;
|
|
pub use chaikin_volatility::ChaikinVolatility;
|
|
pub use chande_kroll_stop::{ChandeKrollStop, ChandeKrollStopOutput};
|
|
pub use chandelier_exit::{ChandelierExit, ChandelierExitOutput};
|
|
pub use choppiness_index::ChoppinessIndex;
|
|
pub use classic_pivots::{ClassicPivots, ClassicPivotsOutput};
|
|
pub use close_vs_open::CloseVsOpen;
|
|
pub use closing_marubozu::ClosingMarubozu;
|
|
pub use cmf::ChaikinMoneyFlow;
|
|
pub use cmo::Cmo;
|
|
pub use coefficient_of_variation::CoefficientOfVariation;
|
|
pub use cointegration::{Cointegration, CointegrationOutput};
|
|
pub use concealing_baby_swallow::ConcealingBabySwallow;
|
|
pub use conditional_value_at_risk::ConditionalValueAtRisk;
|
|
pub use connors_rsi::ConnorsRsi;
|
|
pub use coppock::Coppock;
|
|
pub use correlation_trend_indicator::CorrelationTrendIndicator;
|
|
pub use counterattack::Counterattack;
|
|
pub use crab::Crab;
|
|
pub use cumulative_volume_index::CumulativeVolumeIndex;
|
|
pub use cup_and_handle::CupAndHandle;
|
|
pub use cvd::CumulativeVolumeDelta;
|
|
pub use cybernetic_cycle::CyberneticCycle;
|
|
pub use cypher::Cypher;
|
|
pub use day_of_week_profile::{DayOfWeekProfile, DayOfWeekProfileOutput};
|
|
pub use decycler::Decycler;
|
|
pub use decycler_oscillator::DecyclerOscillator;
|
|
pub use dema::Dema;
|
|
pub use demand_index::DemandIndex;
|
|
pub use demark_pivots::{DemarkPivots, DemarkPivotsOutput};
|
|
pub use depth_slope::DepthSlope;
|
|
pub use derivative_oscillator::DerivativeOscillator;
|
|
pub use detrended_std_dev::DetrendedStdDev;
|
|
pub use disparity_index::DisparityIndex;
|
|
pub use distance_ssd::DistanceSsd;
|
|
pub use doji::Doji;
|
|
pub use doji_star::DojiStar;
|
|
pub use donchian::{Donchian, DonchianOutput};
|
|
pub use donchian_stop::{DonchianStop, DonchianStopOutput};
|
|
pub use double_bollinger::{DoubleBollinger, DoubleBollingerOutput};
|
|
pub use double_top_bottom::DoubleTopBottom;
|
|
pub use downside_gap_three_methods::DownsideGapThreeMethods;
|
|
pub use dpo::Dpo;
|
|
pub use dragonfly_doji::DragonflyDoji;
|
|
pub use drawdown_duration::DrawdownDuration;
|
|
pub use dumpling_top::DumplingTop;
|
|
pub use dx::Dx;
|
|
pub use dynamic_momentum_index::DynamicMomentumIndex;
|
|
pub use ease_of_movement::EaseOfMovement;
|
|
pub use effective_spread::EffectiveSpread;
|
|
pub use ehlers_stochastic::EhlersStochastic;
|
|
pub use ehma::Ehma;
|
|
pub use elder_impulse::ElderImpulse;
|
|
pub use elder_ray::{ElderRay, ElderRayOutput};
|
|
pub use elder_safezone::{ElderSafeZone, ElderSafeZoneOutput};
|
|
pub use ema::Ema;
|
|
pub use empirical_mode_decomposition::EmpiricalModeDecomposition;
|
|
pub use engulfing::Engulfing;
|
|
pub use equivolume::{Equivolume, EquivolumeOutput};
|
|
pub use even_better_sinewave::EvenBetterSinewave;
|
|
pub use evening_doji_star::EveningDojiStar;
|
|
pub use evwma::Evwma;
|
|
pub use ewma_volatility::EwmaVolatility;
|
|
pub use expectancy::Expectancy;
|
|
pub use falling_three_methods::FallingThreeMethods;
|
|
pub use fama::Fama;
|
|
pub use fib_arcs::{FibArcs, FibArcsOutput};
|
|
pub use fib_channel::{FibChannel, FibChannelOutput};
|
|
pub use fib_confluence::{FibConfluence, FibConfluenceOutput};
|
|
pub use fib_extension::{FibExtension, FibExtensionOutput};
|
|
pub use fib_fan::{FibFan, FibFanOutput};
|
|
pub use fib_projection::{FibProjection, FibProjectionOutput};
|
|
pub use fib_retracement::{FibRetracement, FibRetracementOutput};
|
|
pub use fib_time_zones::{FibTimeZones, FibTimeZonesOutput};
|
|
pub use fibonacci_pivots::{FibonacciPivots, FibonacciPivotsOutput};
|
|
pub use fisher_rsi::FisherRsi;
|
|
pub use fisher_transform::FisherTransform;
|
|
pub use flag_pennant::FlagPennant;
|
|
pub use footprint::{Footprint, FootprintLevel, FootprintOutput};
|
|
pub use force_index::ForceIndex;
|
|
pub use fractal_chaos_bands::{FractalChaosBands, FractalChaosBandsOutput};
|
|
pub use frama::Frama;
|
|
pub use fry_pan_bottom::FryPanBottom;
|
|
pub use funding_basis::FundingBasis;
|
|
pub use funding_rate::FundingRate;
|
|
pub use funding_rate_mean::FundingRateMean;
|
|
pub use funding_rate_zscore::FundingRateZScore;
|
|
pub use gain_loss_ratio::GainLossRatio;
|
|
pub use gap_side_by_side_white::GapSideBySideWhite;
|
|
pub use garch11::Garch11;
|
|
pub use garman_klass::GarmanKlassVolatility;
|
|
pub use gartley::Gartley;
|
|
pub use gator_oscillator::{GatorOscillator, GatorOscillatorOutput};
|
|
pub use generalized_dema::GeneralizedDema;
|
|
pub use geometric_ma::GeometricMa;
|
|
pub use golden_pocket::{GoldenPocket, GoldenPocketOutput};
|
|
pub use granger_causality::GrangerCausality;
|
|
pub use gravestone_doji::GravestoneDoji;
|
|
pub use hammer::Hammer;
|
|
pub use hanging_man::HangingMan;
|
|
pub use harami::Harami;
|
|
pub use harami_cross::HaramiCross;
|
|
pub use hasbrouck_information_share::HasbrouckInformationShare;
|
|
pub use head_and_shoulders::HeadAndShoulders;
|
|
pub use heikin_ashi::{HeikinAshi, HeikinAshiOutput};
|
|
pub use heikin_ashi_oscillator::HeikinAshiOscillator;
|
|
pub use high_low_index::HighLowIndex;
|
|
pub use high_low_range::HighLowRange;
|
|
pub use high_wave::HighWave;
|
|
pub use highpass_filter::HighpassFilter;
|
|
pub use hikkake::Hikkake;
|
|
pub use hikkake_modified::HikkakeModified;
|
|
pub use hilbert_dominant_cycle::HilbertDominantCycle;
|
|
pub use hilo_activator::HiLoActivator;
|
|
pub use historical_volatility::HistoricalVolatility;
|
|
pub use hma::Hma;
|
|
pub use holt_winters::HoltWinters;
|
|
pub use homing_pigeon::HomingPigeon;
|
|
pub use ht_dcphase::HtDcPhase;
|
|
pub use ht_phasor::{HtPhasor, HtPhasorOutput};
|
|
pub use ht_trendmode::HtTrendMode;
|
|
pub use hurst_channel::{HurstChannel, HurstChannelOutput};
|
|
pub use hurst_exponent::HurstExponent;
|
|
pub use ichimoku::{Ichimoku, IchimokuOutput};
|
|
pub use identical_three_crows::IdenticalThreeCrows;
|
|
pub use in_neck::InNeck;
|
|
pub use inertia::Inertia;
|
|
pub use information_ratio::InformationRatio;
|
|
pub use initial_balance::{InitialBalance, InitialBalanceOutput};
|
|
pub use instantaneous_trendline::InstantaneousTrendline;
|
|
pub use intraday_intensity::IntradayIntensity;
|
|
pub use intraday_momentum_index::IntradayMomentumIndex;
|
|
pub use intraday_volatility_profile::{IntradayVolatilityProfile, IntradayVolatilityProfileOutput};
|
|
pub use inverse_fisher_transform::InverseFisherTransform;
|
|
pub use inverted_hammer::InvertedHammer;
|
|
pub use jarque_bera::JarqueBera;
|
|
pub use jma::Jma;
|
|
pub use jump_indicator::JumpIndicator;
|
|
pub use kagi_bars::{KagiBar, KagiBars};
|
|
pub use kalman_hedge_ratio::{KalmanHedgeRatio, KalmanHedgeRatioOutput};
|
|
pub use kama::Kama;
|
|
pub use kase_devstop::{KaseDevStop, KaseDevStopOutput};
|
|
pub use kase_permission_stochastic::{KasePermissionStochastic, KasePermissionStochasticOutput};
|
|
pub use kelly_criterion::KellyCriterion;
|
|
pub use keltner::{Keltner, KeltnerOutput};
|
|
pub use kendall_tau::KendallTau;
|
|
pub use kicking::Kicking;
|
|
pub use kicking_by_length::KickingByLength;
|
|
pub use kst::{Kst, KstOutput};
|
|
pub use kurtosis::Kurtosis;
|
|
pub use kvo::Kvo;
|
|
pub use kyles_lambda::KylesLambda;
|
|
pub use ladder_bottom::LadderBottom;
|
|
pub use laguerre_rsi::LaguerreRsi;
|
|
pub use lead_lag_cross_correlation::{LeadLagCrossCorrelation, LeadLagCrossCorrelationOutput};
|
|
pub use linreg::LinearRegression;
|
|
pub use linreg_angle::LinRegAngle;
|
|
pub use linreg_channel::{LinRegChannel, LinRegChannelOutput};
|
|
pub use linreg_intercept::LinRegIntercept;
|
|
pub use linreg_slope::LinRegSlope;
|
|
pub use liquidation_features::{LiquidationFeatures, LiquidationFeaturesOutput};
|
|
pub use log_return::LogReturn;
|
|
pub use long_legged_doji::LongLeggedDoji;
|
|
pub use long_line::LongLine;
|
|
pub use long_short_ratio::LongShortRatio;
|
|
pub use ma_envelope::{MaEnvelope, MaEnvelopeOutput};
|
|
pub use macd::{MacdIndicator, MacdOutput};
|
|
pub use macd_ext::{MaType, MacdExt};
|
|
pub use macd_fix::MacdFix;
|
|
pub use macd_histogram::MacdHistogram;
|
|
pub use mama::{Mama, MamaOutput};
|
|
pub use market_facilitation_index::MarketFacilitationIndex;
|
|
pub use marubozu::Marubozu;
|
|
pub use mass_index::MassIndex;
|
|
pub use mat_hold::MatHold;
|
|
pub use matching_low::MatchingLow;
|
|
pub use max_drawdown::MaxDrawdown;
|
|
pub use mcclellan_oscillator::McClellanOscillator;
|
|
pub use mcclellan_summation_index::McClellanSummationIndex;
|
|
pub use mcginley_dynamic::McGinleyDynamic;
|
|
pub use median_absolute_deviation::MedianAbsoluteDeviation;
|
|
pub use median_channel::{MedianChannel, MedianChannelOutput};
|
|
pub use median_ma::MedianMa;
|
|
pub use median_price::MedianPrice;
|
|
pub use mfi::Mfi;
|
|
pub use microprice::Microprice;
|
|
pub use mid_point::MidPoint;
|
|
pub use mid_price::MidPrice;
|
|
pub use minus_di::MinusDi;
|
|
pub use minus_dm::MinusDm;
|
|
pub use modified_ma_stop::{ModifiedMaStop, ModifiedMaStopOutput};
|
|
pub use mom::Mom;
|
|
pub use morning_doji_star::MorningDojiStar;
|
|
pub use morning_evening_star::MorningEveningStar;
|
|
pub use murrey_math_lines::{MurreyMathLines, MurreyMathLinesOutput};
|
|
pub use natr::Natr;
|
|
pub use new_highs_new_lows::NewHighsNewLows;
|
|
pub use new_price_lines::NewPriceLines;
|
|
pub use nrtr::{Nrtr, NrtrOutput};
|
|
pub use nvi::Nvi;
|
|
pub use ob_imbalance_full::OrderBookImbalanceFull;
|
|
pub use ob_imbalance_top1::OrderBookImbalanceTop1;
|
|
pub use ob_imbalance_topn::OrderBookImbalanceTopN;
|
|
pub use obv::Obv;
|
|
pub use oi_delta::OpenInterestDelta;
|
|
pub use oi_price_divergence::OIPriceDivergence;
|
|
pub use oi_weighted::OIWeighted;
|
|
pub use omega_ratio::OmegaRatio;
|
|
pub use on_neck::OnNeck;
|
|
pub use opening_marubozu::OpeningMarubozu;
|
|
pub use opening_range::{OpeningRange, OpeningRangeOutput};
|
|
pub use order_flow_imbalance::OrderFlowImbalance;
|
|
pub use ou_half_life::OuHalfLife;
|
|
pub use overnight_gap::OvernightGap;
|
|
pub use overnight_intraday_return::{OvernightIntradayReturn, OvernightIntradayReturnOutput};
|
|
pub use pain_index::PainIndex;
|
|
pub use pair_spread_zscore::PairSpreadZScore;
|
|
pub use pairwise_beta::PairwiseBeta;
|
|
pub use parkinson::ParkinsonVolatility;
|
|
pub use pearson_correlation::PearsonCorrelation;
|
|
pub use percent_above_ma::PercentAboveMa;
|
|
pub use percent_b::PercentB;
|
|
pub use percentage_trailing_stop::PercentageTrailingStop;
|
|
pub use pgo::Pgo;
|
|
pub use piercing_dark_cloud::PiercingDarkCloud;
|
|
pub use pin::Pin;
|
|
pub use pivot_reversal::PivotReversal;
|
|
pub use plus_di::PlusDi;
|
|
pub use plus_dm::PlusDm;
|
|
pub use pmo::Pmo;
|
|
pub use point_and_figure_bars::{PnfColumn, PointAndFigureBars};
|
|
pub use polarized_fractal_efficiency::PolarizedFractalEfficiency;
|
|
pub use ppo::Ppo;
|
|
pub use ppo_histogram::PpoHistogram;
|
|
pub use profit_factor::ProfitFactor;
|
|
pub use projection_bands::{ProjectionBands, ProjectionBandsOutput};
|
|
pub use projection_oscillator::ProjectionOscillator;
|
|
pub use psar::Psar;
|
|
pub use pvi::Pvi;
|
|
pub use qqe::{Qqe, QqeOutput};
|
|
pub use qstick::Qstick;
|
|
pub use quartile_bands::{QuartileBands, QuartileBandsOutput};
|
|
pub use quoted_spread::QuotedSpread;
|
|
pub use r_squared::RSquared;
|
|
pub use realized_spread::RealizedSpread;
|
|
pub use realized_volatility::RealizedVolatility;
|
|
pub use recovery_factor::RecoveryFactor;
|
|
pub use rectangle_range::RectangleRange;
|
|
pub use reflex::Reflex;
|
|
pub use regime_label::RegimeLabel;
|
|
pub use relative_strength_ab::{RelativeStrengthAB, RelativeStrengthOutput};
|
|
pub use renko_bars::{RenkoBars, RenkoBrick};
|
|
pub use renko_trailing_stop::RenkoTrailingStop;
|
|
pub use rickshaw_man::RickshawMan;
|
|
pub use rising_three_methods::RisingThreeMethods;
|
|
pub use rmi::Rmi;
|
|
pub use roc::Roc;
|
|
pub use rocp::Rocp;
|
|
pub use rocr::Rocr;
|
|
pub use rocr100::Rocr100;
|
|
pub use rogers_satchell::RogersSatchellVolatility;
|
|
pub use roll_measure::RollMeasure;
|
|
pub use rolling_correlation::RollingCorrelation;
|
|
pub use rolling_covariance::RollingCovariance;
|
|
pub use rolling_iqr::RollingIqr;
|
|
pub use rolling_min_max_scaler::RollingMinMaxScaler;
|
|
pub use rolling_percentile_rank::RollingPercentileRank;
|
|
pub use rolling_quantile::RollingQuantile;
|
|
pub use roofing_filter::RoofingFilter;
|
|
pub use rsi::Rsi;
|
|
pub use rsx::Rsx;
|
|
pub use rvi::Rvi;
|
|
pub use rvi_volatility::RviVolatility;
|
|
pub use rwi::{Rwi, RwiOutput};
|
|
pub use sample_entropy::SampleEntropy;
|
|
pub use sar_ext::SarExt;
|
|
pub use seasonal_z_score::SeasonalZScore;
|
|
pub use separating_lines::SeparatingLines;
|
|
pub use session_high_low::{SessionHighLow, SessionHighLowOutput};
|
|
pub use session_range::{SessionRange, SessionRangeOutput};
|
|
pub use session_vwap::SessionVwap;
|
|
pub use shannon_entropy::ShannonEntropy;
|
|
pub use shark::Shark;
|
|
pub use sharpe_ratio::SharpeRatio;
|
|
pub use shooting_star::ShootingStar;
|
|
pub use short_line::ShortLine;
|
|
pub use signed_volume::SignedVolume;
|
|
pub use sine_wave::SineWave;
|
|
pub use sine_weighted_ma::SineWeightedMa;
|
|
pub use skewness::Skewness;
|
|
pub use sma::Sma;
|
|
pub use smi::Smi;
|
|
pub use smma::Smma;
|
|
pub use smoothed_heikin_ashi::{SmoothedHeikinAshi, SmoothedHeikinAshiOutput};
|
|
pub use sortino_ratio::SortinoRatio;
|
|
pub use spearman_correlation::SpearmanCorrelation;
|
|
pub use spinning_top::SpinningTop;
|
|
pub use spread_ar1_coefficient::SpreadAr1Coefficient;
|
|
pub use spread_bollinger_bands::{SpreadBollingerBands, SpreadBollingerBandsOutput};
|
|
pub use spread_hurst::SpreadHurst;
|
|
pub use stalled_pattern::StalledPattern;
|
|
pub use standard_error::StandardError;
|
|
pub use standard_error_bands::{StandardErrorBands, StandardErrorBandsOutput};
|
|
pub use starc_bands::{StarcBands, StarcBandsOutput};
|
|
pub use stc::Stc;
|
|
pub use std_dev::StdDev;
|
|
pub use step_trailing_stop::StepTrailingStop;
|
|
pub use stick_sandwich::StickSandwich;
|
|
pub use stoch_rsi::StochRsi;
|
|
pub use stochastic::{Stochastic, StochasticOutput};
|
|
pub use stochastic_cci::StochasticCci;
|
|
pub use super_smoother::SuperSmoother;
|
|
pub use super_trend::{SuperTrend, SuperTrendOutput};
|
|
pub use t3::T3;
|
|
pub use taker_buy_sell_ratio::TakerBuySellRatio;
|
|
pub use takuri::Takuri;
|
|
pub use tasuki_gap::TasukiGap;
|
|
pub use td_camouflage::TdCamouflage;
|
|
pub use td_clop::TdClop;
|
|
pub use td_clopwin::TdClopwin;
|
|
pub use td_combo::TdCombo;
|
|
pub use td_countdown::TdCountdown;
|
|
pub use td_demarker::TdDeMarker;
|
|
pub use td_differential::TdDifferential;
|
|
pub use td_dwave::TdDWave;
|
|
pub use td_lines::{TdLines, TdLinesOutput};
|
|
pub use td_moving_average::{TdMovingAverage, TdMovingAverageOutput};
|
|
pub use td_open::TdOpen;
|
|
pub use td_pressure::TdPressure;
|
|
pub use td_propulsion::TdPropulsion;
|
|
pub use td_range_projection::{TdRangeProjection, TdRangeProjectionOutput};
|
|
pub use td_rei::TdRei;
|
|
pub use td_risk_level::{TdRiskLevel, TdRiskLevelOutput};
|
|
pub use td_sequential::{TdSequential, TdSequentialOutput};
|
|
pub use td_setup::TdSetup;
|
|
pub use td_trap::TdTrap;
|
|
pub use tema::Tema;
|
|
pub use term_structure_basis::TermStructureBasis;
|
|
pub use three_drives::ThreeDrives;
|
|
pub use three_inside::ThreeInside;
|
|
pub use three_line_break::ThreeLineBreak;
|
|
pub use three_line_strike::ThreeLineStrike;
|
|
pub use three_outside::ThreeOutside;
|
|
pub use three_soldiers_or_crows::ThreeSoldiersOrCrows;
|
|
pub use three_stars_in_south::ThreeStarsInSouth;
|
|
pub use thrusting::Thrusting;
|
|
pub use tick_index::TickIndex;
|
|
pub use tii::Tii;
|
|
pub use time_based_stop::TimeBasedStop;
|
|
pub use time_of_day_return_profile::{TimeOfDayReturnProfile, TimeOfDayReturnProfileOutput};
|
|
pub use tower_top_bottom::TowerTopBottom;
|
|
pub use tpo_profile::{TpoProfile, TpoProfileOutput};
|
|
pub use trade_imbalance::TradeImbalance;
|
|
pub use trade_sign_autocorrelation::TradeSignAutocorrelation;
|
|
pub use trade_volume_index::TradeVolumeIndex;
|
|
pub use trend_label::TrendLabel;
|
|
pub use trend_strength_index::TrendStrengthIndex;
|
|
pub use trendflex::Trendflex;
|
|
pub use treynor_ratio::TreynorRatio;
|
|
pub use triangle::Triangle;
|
|
pub use trima::Trima;
|
|
pub use trin::Trin;
|
|
pub use triple_top_bottom::TripleTopBottom;
|
|
pub use tristar::Tristar;
|
|
pub use trix::Trix;
|
|
pub use true_range::TrueRange;
|
|
pub use tsf::Tsf;
|
|
pub use tsf_oscillator::TsfOscillator;
|
|
pub use tsi::Tsi;
|
|
pub use tsv::Tsv;
|
|
pub use ttm_squeeze::{TtmSqueeze, TtmSqueezeOutput};
|
|
pub use ttm_trend::TtmTrend;
|
|
pub use turn_of_month::TurnOfMonth;
|
|
pub use tweezer::Tweezer;
|
|
pub use twiggs_money_flow::TwiggsMoneyFlow;
|
|
pub use two_crows::TwoCrows;
|
|
pub use typical_price::TypicalPrice;
|
|
pub use ulcer_index::UlcerIndex;
|
|
pub use ultimate_oscillator::UltimateOscillator;
|
|
pub use unique_three_river::UniqueThreeRiver;
|
|
pub use universal_oscillator::UniversalOscillator;
|
|
pub use up_down_volume_ratio::UpDownVolumeRatio;
|
|
pub use upside_gap_three_methods::UpsideGapThreeMethods;
|
|
pub use upside_gap_two_crows::UpsideGapTwoCrows;
|
|
pub use value_area::{ValueArea, ValueAreaOutput};
|
|
pub use value_at_risk::ValueAtRisk;
|
|
pub use variance::Variance;
|
|
pub use variance_ratio::VarianceRatio;
|
|
pub use vertical_horizontal_filter::VerticalHorizontalFilter;
|
|
pub use vidya::Vidya;
|
|
pub use volatility_cone::{VolatilityCone, VolatilityConeOutput};
|
|
pub use volatility_of_volatility::VolatilityOfVolatility;
|
|
pub use volatility_ratio::VolatilityRatio;
|
|
pub use volty_stop::VoltyStop;
|
|
pub use volume_by_time_profile::{VolumeByTimeProfile, VolumeByTimeProfileOutput};
|
|
pub use volume_oscillator::VolumeOscillator;
|
|
pub use volume_profile::{VolumeProfile, VolumeProfileOutput};
|
|
pub use volume_rsi::VolumeRsi;
|
|
pub use volume_weighted_macd::{VolumeWeightedMacd, VolumeWeightedMacdOutput};
|
|
pub use volume_weighted_sr::{VolumeWeightedSr, VolumeWeightedSrOutput};
|
|
pub use vortex::{Vortex, VortexOutput};
|
|
pub use vpin::Vpin;
|
|
pub use vpt::VolumePriceTrend;
|
|
pub use vwap::{RollingVwap, Vwap};
|
|
pub use vwap_stddev_bands::{VwapStdDevBands, VwapStdDevBandsOutput};
|
|
pub use vwma::Vwma;
|
|
pub use vzo::Vzo;
|
|
pub use wad::Wad;
|
|
pub use wave_pm::WavePm;
|
|
pub use wave_trend::{WaveTrend, WaveTrendOutput};
|
|
pub use wedge::Wedge;
|
|
pub use weighted_close::WeightedClose;
|
|
pub use wick_ratio::WickRatio;
|
|
pub use williams_fractals::{WilliamsFractals, WilliamsFractalsOutput};
|
|
pub use williams_r::WilliamsR;
|
|
pub use win_rate::WinRate;
|
|
pub use wma::Wma;
|
|
pub use woodie_pivots::{WoodiePivots, WoodiePivotsOutput};
|
|
pub use yang_zhang::YangZhangVolatility;
|
|
pub use yoyo_exit::YoyoExit;
|
|
pub use z_score::ZScore;
|
|
pub use zero_lag_macd::{ZeroLagMacd, ZeroLagMacdOutput};
|
|
pub use zig_zag::{ZigZag, ZigZagOutput};
|
|
pub use zlema::Zlema;
|
|
|
|
/// Family classification of every built-in indicator. The (family,
|
|
/// indicators) list is the single source of truth used by `family_tests`
|
|
/// below; README and Wiki taxonomy tables should be kept in sync with it.
|
|
///
|
|
/// Each indicator appears in exactly one family. Names are the public
|
|
/// struct identifiers re-exported from this module (and the crate root).
|
|
pub const FAMILIES: &[(&str, &[&str])] = &[
|
|
(
|
|
"Moving Averages",
|
|
&[
|
|
"Sma",
|
|
"Ema",
|
|
"Wma",
|
|
"Dema",
|
|
"Tema",
|
|
"Hma",
|
|
"Kama",
|
|
"Smma",
|
|
"Trima",
|
|
"Zlema",
|
|
"T3",
|
|
"Vwma",
|
|
"Alma",
|
|
"McGinleyDynamic",
|
|
"Frama",
|
|
"Vidya",
|
|
"Jma",
|
|
"Alligator",
|
|
"Evwma",
|
|
"SineWeightedMa",
|
|
"GeometricMa",
|
|
"Ehma",
|
|
"MedianMa",
|
|
"AdaptiveLaguerreFilter",
|
|
"GeneralizedDema",
|
|
"HoltWinters",
|
|
],
|
|
),
|
|
(
|
|
"Momentum Oscillators",
|
|
&[
|
|
"Rsi",
|
|
"AnchoredRsi",
|
|
"Stochastic",
|
|
"Cci",
|
|
"Roc",
|
|
"WilliamsR",
|
|
"Mfi",
|
|
"AwesomeOscillator",
|
|
"Mom",
|
|
"Cmo",
|
|
"Tsi",
|
|
"Pmo",
|
|
"StochRsi",
|
|
"UltimateOscillator",
|
|
"Rvi",
|
|
"Pgo",
|
|
"Kst",
|
|
"Smi",
|
|
"LaguerreRsi",
|
|
"ConnorsRsi",
|
|
"Inertia",
|
|
"Rocp",
|
|
"Rocr",
|
|
"Rocr100",
|
|
"DisparityIndex",
|
|
"FisherRsi",
|
|
"Rsx",
|
|
"DynamicMomentumIndex",
|
|
"StochasticCci",
|
|
"Rmi",
|
|
"DerivativeOscillator",
|
|
"ElderRay",
|
|
"IntradayMomentumIndex",
|
|
"Qqe",
|
|
],
|
|
),
|
|
(
|
|
"Trend & Directional",
|
|
&[
|
|
"MacdIndicator",
|
|
"MacdFix",
|
|
"MacdExt",
|
|
"Adx",
|
|
"Adxr",
|
|
"Aroon",
|
|
"Trix",
|
|
"AroonOscillator",
|
|
"Vortex",
|
|
"Rwi",
|
|
"Tii",
|
|
"WaveTrend",
|
|
"MassIndex",
|
|
"ChoppinessIndex",
|
|
"VerticalHorizontalFilter",
|
|
"PlusDm",
|
|
"MinusDm",
|
|
"PlusDi",
|
|
"MinusDi",
|
|
"Dx",
|
|
"TrendLabel",
|
|
"TtmTrend",
|
|
"TrendStrengthIndex",
|
|
"Qstick",
|
|
"PolarizedFractalEfficiency",
|
|
"WavePm",
|
|
"GatorOscillator",
|
|
"KasePermissionStochastic",
|
|
],
|
|
),
|
|
(
|
|
"Price Oscillators",
|
|
&[
|
|
"Ppo",
|
|
"Dpo",
|
|
"Coppock",
|
|
"AcceleratorOscillator",
|
|
"BalanceOfPower",
|
|
"Apo",
|
|
"AwesomeOscillatorHistogram",
|
|
"Cfo",
|
|
"ZeroLagMacd",
|
|
"ElderImpulse",
|
|
"Stc",
|
|
"TsfOscillator",
|
|
"MacdHistogram",
|
|
"PpoHistogram",
|
|
],
|
|
),
|
|
(
|
|
"Volatility & Bands",
|
|
&[
|
|
"Atr",
|
|
"BollingerBands",
|
|
"Keltner",
|
|
"Donchian",
|
|
"Natr",
|
|
"StdDev",
|
|
"UlcerIndex",
|
|
"HistoricalVolatility",
|
|
"BollingerBandwidth",
|
|
"PercentB",
|
|
"TrueRange",
|
|
"ChaikinVolatility",
|
|
"RviVolatility",
|
|
"ParkinsonVolatility",
|
|
"GarmanKlassVolatility",
|
|
"RogersSatchellVolatility",
|
|
"YangZhangVolatility",
|
|
"JumpIndicator",
|
|
"RegimeLabel",
|
|
"EwmaVolatility",
|
|
"Garch11",
|
|
"VolatilityOfVolatility",
|
|
"BipowerVariation",
|
|
"VolatilityRatio",
|
|
"VolatilityCone",
|
|
],
|
|
),
|
|
(
|
|
"Bands & Channels",
|
|
&[
|
|
"MaEnvelope",
|
|
"AccelerationBands",
|
|
"StarcBands",
|
|
"AtrBands",
|
|
"HurstChannel",
|
|
"LinRegChannel",
|
|
"StandardErrorBands",
|
|
"DoubleBollinger",
|
|
"TtmSqueeze",
|
|
"FractalChaosBands",
|
|
"VwapStdDevBands",
|
|
"QuartileBands",
|
|
"BomarBands",
|
|
"MedianChannel",
|
|
"ProjectionBands",
|
|
"ProjectionOscillator",
|
|
],
|
|
),
|
|
(
|
|
"Trailing Stops",
|
|
&[
|
|
"Psar",
|
|
"SuperTrend",
|
|
"ChandelierExit",
|
|
"ChandeKrollStop",
|
|
"AtrTrailingStop",
|
|
"HiLoActivator",
|
|
"VoltyStop",
|
|
"YoyoExit",
|
|
"DonchianStop",
|
|
"PercentageTrailingStop",
|
|
"StepTrailingStop",
|
|
"RenkoTrailingStop",
|
|
"SarExt",
|
|
"KaseDevStop",
|
|
"ElderSafeZone",
|
|
"AtrRatchet",
|
|
"Nrtr",
|
|
"TimeBasedStop",
|
|
"ModifiedMaStop",
|
|
],
|
|
),
|
|
(
|
|
"Volume",
|
|
&[
|
|
"Obv",
|
|
"Vwap",
|
|
"RollingVwap",
|
|
"Adl",
|
|
"VolumePriceTrend",
|
|
"ChaikinMoneyFlow",
|
|
"ChaikinOscillator",
|
|
"ForceIndex",
|
|
"EaseOfMovement",
|
|
"Kvo",
|
|
"VolumeOscillator",
|
|
"Nvi",
|
|
"Pvi",
|
|
"AdOscillator",
|
|
"AnchoredVwap",
|
|
"DemandIndex",
|
|
"Tsv",
|
|
"Vzo",
|
|
"MarketFacilitationIndex",
|
|
"VolumeRsi",
|
|
"Wad",
|
|
"TwiggsMoneyFlow",
|
|
"TradeVolumeIndex",
|
|
"IntradayIntensity",
|
|
"BetterVolume",
|
|
"VolumeWeightedMacd",
|
|
],
|
|
),
|
|
(
|
|
"Price Statistics",
|
|
&[
|
|
"TypicalPrice",
|
|
"MedianPrice",
|
|
"WeightedClose",
|
|
"LinearRegression",
|
|
"LinRegSlope",
|
|
"ZScore",
|
|
"LinRegAngle",
|
|
"Variance",
|
|
"CoefficientOfVariation",
|
|
"Skewness",
|
|
"Kurtosis",
|
|
"StandardError",
|
|
"DetrendedStdDev",
|
|
"RSquared",
|
|
"MedianAbsoluteDeviation",
|
|
"Autocorrelation",
|
|
"HurstExponent",
|
|
"PearsonCorrelation",
|
|
"Beta",
|
|
"SpearmanCorrelation",
|
|
"Cointegration",
|
|
"LeadLagCrossCorrelation",
|
|
"PairSpreadZScore",
|
|
"PairwiseBeta",
|
|
"RelativeStrengthAB",
|
|
"MidPrice",
|
|
"MidPoint",
|
|
"AvgPrice",
|
|
"LinRegIntercept",
|
|
"Tsf",
|
|
"RollingCorrelation",
|
|
"RollingCovariance",
|
|
"OuHalfLife",
|
|
"SpreadHurst",
|
|
"DistanceSsd",
|
|
"BetaNeutralSpread",
|
|
"VarianceRatio",
|
|
"GrangerCausality",
|
|
"KalmanHedgeRatio",
|
|
"SpreadBollingerBands",
|
|
"LogReturn",
|
|
"RealizedVolatility",
|
|
"RollingIqr",
|
|
"RollingPercentileRank",
|
|
"RollingQuantile",
|
|
"SpreadAr1Coefficient",
|
|
"CloseVsOpen",
|
|
"BodySizePct",
|
|
"WickRatio",
|
|
"HighLowRange",
|
|
"JarqueBera",
|
|
"RollingMinMaxScaler",
|
|
"ShannonEntropy",
|
|
"SampleEntropy",
|
|
"KendallTau",
|
|
],
|
|
),
|
|
(
|
|
"Ehlers / Cycle (DSP)",
|
|
&[
|
|
"Mama",
|
|
"Fama",
|
|
"FisherTransform",
|
|
"InverseFisherTransform",
|
|
"SuperSmoother",
|
|
"HilbertDominantCycle",
|
|
"HtDcPhase",
|
|
"HtPhasor",
|
|
"HtTrendMode",
|
|
"SineWave",
|
|
"Decycler",
|
|
"DecyclerOscillator",
|
|
"RoofingFilter",
|
|
"CenterOfGravity",
|
|
"CyberneticCycle",
|
|
"AdaptiveCycle",
|
|
"EmpiricalModeDecomposition",
|
|
"EhlersStochastic",
|
|
"InstantaneousTrendline",
|
|
"HighpassFilter",
|
|
"Reflex",
|
|
"Trendflex",
|
|
"CorrelationTrendIndicator",
|
|
"AdaptiveRsi",
|
|
"UniversalOscillator",
|
|
"AdaptiveCci",
|
|
"BandpassFilter",
|
|
"EvenBetterSinewave",
|
|
"AutocorrelationPeriodogram",
|
|
],
|
|
),
|
|
(
|
|
"Pivots & S/R",
|
|
&[
|
|
"ClassicPivots",
|
|
"FibonacciPivots",
|
|
"Camarilla",
|
|
"WoodiePivots",
|
|
"DemarkPivots",
|
|
"WilliamsFractals",
|
|
"ZigZag",
|
|
"CentralPivotRange",
|
|
"MurreyMathLines",
|
|
"AndrewsPitchfork",
|
|
"VolumeWeightedSr",
|
|
"PivotReversal",
|
|
],
|
|
),
|
|
(
|
|
"DeMark",
|
|
&[
|
|
"TdSetup",
|
|
"TdSequential",
|
|
"TdDeMarker",
|
|
"TdRei",
|
|
"TdPressure",
|
|
"TdCombo",
|
|
"TdCountdown",
|
|
"TdLines",
|
|
"TdRangeProjection",
|
|
"TdDifferential",
|
|
"TdOpen",
|
|
"TdRiskLevel",
|
|
"TdCamouflage",
|
|
"TdClop",
|
|
"TdClopwin",
|
|
"TdPropulsion",
|
|
"TdTrap",
|
|
"TdDWave",
|
|
"TdMovingAverage",
|
|
],
|
|
),
|
|
(
|
|
"Ichimoku & Charts",
|
|
&[
|
|
"Ichimoku",
|
|
"HeikinAshi",
|
|
"HeikinAshiOscillator",
|
|
"ThreeLineBreak",
|
|
"SmoothedHeikinAshi",
|
|
"Equivolume",
|
|
"CandleVolume",
|
|
],
|
|
),
|
|
(
|
|
"Candlestick Patterns",
|
|
&[
|
|
"Doji",
|
|
"Hammer",
|
|
"InvertedHammer",
|
|
"HangingMan",
|
|
"ShootingStar",
|
|
"Engulfing",
|
|
"Harami",
|
|
"MorningEveningStar",
|
|
"ThreeSoldiersOrCrows",
|
|
"PiercingDarkCloud",
|
|
"Marubozu",
|
|
"Tweezer",
|
|
"SpinningTop",
|
|
"ThreeInside",
|
|
"ThreeOutside",
|
|
"TwoCrows",
|
|
"UpsideGapTwoCrows",
|
|
"IdenticalThreeCrows",
|
|
"ThreeLineStrike",
|
|
"ThreeStarsInSouth",
|
|
"AbandonedBaby",
|
|
"AdvanceBlock",
|
|
"BeltHold",
|
|
"Breakaway",
|
|
"Counterattack",
|
|
"DojiStar",
|
|
"DragonflyDoji",
|
|
"GravestoneDoji",
|
|
"LongLeggedDoji",
|
|
"RickshawMan",
|
|
"EveningDojiStar",
|
|
"MorningDojiStar",
|
|
"GapSideBySideWhite",
|
|
"HighWave",
|
|
"Hikkake",
|
|
"HikkakeModified",
|
|
"HomingPigeon",
|
|
"OnNeck",
|
|
"InNeck",
|
|
"Thrusting",
|
|
"SeparatingLines",
|
|
"Kicking",
|
|
"KickingByLength",
|
|
"LadderBottom",
|
|
"MatHold",
|
|
"MatchingLow",
|
|
"LongLine",
|
|
"ShortLine",
|
|
"RisingThreeMethods",
|
|
"FallingThreeMethods",
|
|
"UpsideGapThreeMethods",
|
|
"DownsideGapThreeMethods",
|
|
"StalledPattern",
|
|
"StickSandwich",
|
|
"Takuri",
|
|
"ClosingMarubozu",
|
|
"OpeningMarubozu",
|
|
"TasukiGap",
|
|
"UniqueThreeRiver",
|
|
"ConcealingBabySwallow",
|
|
"Tristar",
|
|
"HaramiCross",
|
|
"TowerTopBottom",
|
|
"FryPanBottom",
|
|
"DumplingTop",
|
|
"NewPriceLines",
|
|
],
|
|
),
|
|
(
|
|
"Microstructure",
|
|
&[
|
|
"OrderBookImbalanceTop1",
|
|
"OrderBookImbalanceTopN",
|
|
"OrderBookImbalanceFull",
|
|
"Microprice",
|
|
"QuotedSpread",
|
|
"DepthSlope",
|
|
"SignedVolume",
|
|
"CumulativeVolumeDelta",
|
|
"TradeImbalance",
|
|
"EffectiveSpread",
|
|
"RealizedSpread",
|
|
"KylesLambda",
|
|
"Footprint",
|
|
"OrderFlowImbalance",
|
|
"Vpin",
|
|
"AmihudIlliquidity",
|
|
"RollMeasure",
|
|
"TradeSignAutocorrelation",
|
|
"Pin",
|
|
"HasbrouckInformationShare",
|
|
],
|
|
),
|
|
(
|
|
"Derivatives",
|
|
&[
|
|
"FundingRate",
|
|
"FundingRateMean",
|
|
"FundingRateZScore",
|
|
"FundingBasis",
|
|
"OpenInterestDelta",
|
|
"OIPriceDivergence",
|
|
"OIWeighted",
|
|
"LongShortRatio",
|
|
"TakerBuySellRatio",
|
|
"LiquidationFeatures",
|
|
"TermStructureBasis",
|
|
"CalendarSpread",
|
|
],
|
|
),
|
|
(
|
|
"Market Profile",
|
|
&[
|
|
"ValueArea",
|
|
"InitialBalance",
|
|
"OpeningRange",
|
|
"VolumeProfile",
|
|
"TpoProfile",
|
|
],
|
|
),
|
|
(
|
|
"Risk / Performance",
|
|
&[
|
|
"SharpeRatio",
|
|
"SortinoRatio",
|
|
"CalmarRatio",
|
|
"OmegaRatio",
|
|
"MaxDrawdown",
|
|
"AverageDrawdown",
|
|
"DrawdownDuration",
|
|
"PainIndex",
|
|
"ValueAtRisk",
|
|
"ConditionalValueAtRisk",
|
|
"ProfitFactor",
|
|
"GainLossRatio",
|
|
"RecoveryFactor",
|
|
"KellyCriterion",
|
|
"TreynorRatio",
|
|
"InformationRatio",
|
|
"Alpha",
|
|
"WinRate",
|
|
"Expectancy",
|
|
],
|
|
),
|
|
(
|
|
"Alt-Chart Bars",
|
|
&["RenkoBars", "KagiBars", "PointAndFigureBars"],
|
|
),
|
|
(
|
|
"Market Breadth",
|
|
&[
|
|
"AdvanceDecline",
|
|
"AdvanceDeclineRatio",
|
|
"AdVolumeLine",
|
|
"McClellanOscillator",
|
|
"McClellanSummationIndex",
|
|
"Trin",
|
|
"BreadthThrust",
|
|
"NewHighsNewLows",
|
|
"HighLowIndex",
|
|
"PercentAboveMa",
|
|
"UpDownVolumeRatio",
|
|
"BullishPercentIndex",
|
|
"CumulativeVolumeIndex",
|
|
"AbsoluteBreadthIndex",
|
|
"TickIndex",
|
|
],
|
|
),
|
|
(
|
|
"Seasonality & Session",
|
|
&[
|
|
"SessionVwap",
|
|
"SessionHighLow",
|
|
"SessionRange",
|
|
"AverageDailyRange",
|
|
"OvernightGap",
|
|
"OvernightIntradayReturn",
|
|
"TurnOfMonth",
|
|
"SeasonalZScore",
|
|
"TimeOfDayReturnProfile",
|
|
"DayOfWeekProfile",
|
|
"IntradayVolatilityProfile",
|
|
"VolumeByTimeProfile",
|
|
],
|
|
),
|
|
(
|
|
"Chart Patterns",
|
|
&[
|
|
"DoubleTopBottom",
|
|
"TripleTopBottom",
|
|
"HeadAndShoulders",
|
|
"Triangle",
|
|
"Wedge",
|
|
"FlagPennant",
|
|
"RectangleRange",
|
|
"CupAndHandle",
|
|
],
|
|
),
|
|
(
|
|
"Harmonic Patterns",
|
|
&[
|
|
"Abcd",
|
|
"Gartley",
|
|
"Butterfly",
|
|
"Bat",
|
|
"Crab",
|
|
"Shark",
|
|
"Cypher",
|
|
"ThreeDrives",
|
|
],
|
|
),
|
|
(
|
|
"Fibonacci",
|
|
&[
|
|
"FibRetracement",
|
|
"FibExtension",
|
|
"FibProjection",
|
|
"AutoFib",
|
|
"GoldenPocket",
|
|
"FibConfluence",
|
|
"FibFan",
|
|
"FibArcs",
|
|
"FibChannel",
|
|
"FibTimeZones",
|
|
],
|
|
),
|
|
];
|
|
|
|
#[cfg(test)]
|
|
mod family_tests {
|
|
use super::FAMILIES;
|
|
|
|
#[test]
|
|
fn no_duplicates_across_families() {
|
|
let mut names: Vec<&str> = FAMILIES
|
|
.iter()
|
|
.flat_map(|(_, ns)| ns.iter().copied())
|
|
.collect();
|
|
let len_before = names.len();
|
|
names.sort_unstable();
|
|
names.dedup();
|
|
assert_eq!(
|
|
names.len(),
|
|
len_before,
|
|
"duplicate indicator across families"
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn total_count_matches_expected() {
|
|
// Bump together with new indicators. Drift between this number and
|
|
// the actual indicator count is the early-warning signal that an
|
|
// indicator was added without being assigned a family.
|
|
let total: usize = FAMILIES.iter().map(|(_, ns)| ns.len()).sum();
|
|
assert_eq!(total, 488, "FAMILIES total drifted from indicator count");
|
|
}
|
|
}
|