//! Built-in technical indicators implementing the [`crate::signals::Signal`] trait.
//!
//! All indicators return [`crate::signals::SignalValue::Unavailable`] until they have
//! accumulated enough bars to produce a meaningful value.

pub mod adx;
pub mod apo;
pub mod aroon;
pub mod atr;
pub mod cmf;
pub mod cmo;
pub mod obv;
pub mod ppo;
pub mod bollinger;
pub mod bollinger_width;
pub mod cci;
pub mod chandelier;
pub mod dema;
pub mod donchian;
pub mod dmi;
pub mod dpo;
pub mod elder;
pub mod ema;
pub mod keltner;
pub mod hullma;
pub mod ichimoku;
pub mod macd;
pub mod mfi;
pub mod momentum;
pub mod roc;
pub mod rsi;
pub mod sma;
pub mod stddev;
pub mod stochastic;
pub mod stochastic_d;
pub mod tema;
pub mod tsi;
pub mod vwap;
pub mod vwma;
pub mod psar;
pub mod trix;
pub mod trima;
pub mod ultimate;
pub mod williams_r;
pub mod wma;
pub mod zlema;
pub mod kvo;
pub mod rvi;
pub mod vortex;
pub mod williams_ad;
pub mod choppiness;
pub mod coppock;
pub mod fisher;
pub mod kama;
pub mod lsma;
pub mod mass_index;
pub mod pgo;
pub mod vidya;
pub mod percent_rank;
pub mod stc;
pub mod alma;
pub mod smma;
pub mod price_channel;
pub mod t3;
pub mod pvo;
pub mod emv;
pub mod vpt;
pub mod nvi;
pub mod donchian_width;
pub mod rmi;
pub mod supertrend;
pub mod pivots;
pub mod swma;
pub mod stoch_rsi;
pub mod force_index;
pub mod cog;
pub mod env;
pub mod pfe;
pub mod rsx;
pub mod mcginley;
pub mod vhf;
pub mod chaikin_osc;
pub mod bop;
pub mod atrp;
pub mod kst;
pub mod natr;
pub mod psychological_line;
pub mod linreg_slope;
pub mod kaufman_er;
pub mod zscore;
pub mod pmo;
pub mod smi;
pub mod rwi;
pub mod roc_ratio;
pub mod awesome_oscillator;
pub mod aroon_oscillator;
pub mod deviation_from_ma;
pub mod volume_oscillator;
pub mod dsp;
pub mod stoch_rsi_smoothed;
pub mod ctm;
pub mod tii;
pub mod historical_volatility;
pub mod vix_fix;
/// Chaikin Volatility indicator module.
pub mod chaikin_volatility;
pub mod normalized_price;
pub mod price_velocity;
pub mod candle_body_size;
pub mod laguerre;
pub mod linreg_channel;
pub mod trend_angle;
pub mod alligator;
pub mod disparity;
pub mod price_acceleration;
pub mod high_low_spread;
pub mod gann_hilo;
pub mod frama;
pub mod vroc;
pub mod ema_cross;
pub mod climax_volume;
pub mod rsi_divergence;
pub mod heikin_ashi;
pub mod price_range_pct;
pub mod std_dev_channel;
pub mod rsi_ma;
pub mod vzo;
pub mod inertia;
pub mod usm;
pub mod dual_rsi;
pub mod volume_imbalance;
pub mod vam;
pub mod bull_bear_power;
pub mod momentum_streak;
pub mod candle_color;
pub mod price_position;
pub mod qqe;
pub mod bars_since;
pub mod candle_pattern;
pub mod vw_momentum;
pub mod elder_impulse;
pub mod change_from_high;
pub mod obv_momentum;
pub mod trend_strength;
pub mod linear_deviation;
pub mod volume_weighted_close;
pub mod price_envelope;
pub mod anchored_vwap;
pub mod atr_stop;
pub mod bw_mfi;
pub mod linear_regression_r2;
pub mod volume_spike;
pub mod price_compression;
pub mod price_distance_ma;
pub mod range_filter;
pub mod trend_following_filter;
pub mod chande_kroll;
pub mod connors_rsi;
pub mod consecutive_bars;
pub mod gap_detector;
pub mod hl_ratio;
pub mod open_close_ratio;
pub mod pivot_distance;
pub mod price_above_ma;
pub mod volatility_bands;
pub mod volume_rsi;
pub mod price_density;
pub mod swing_index;
pub mod volatility_ratio;
pub mod dema_cross;
pub mod relative_volatility;
pub mod stiffness;
pub mod ttm_squeeze;
pub mod support_resistance_distance;
pub mod ulcer_index;
pub mod efficiency_ratio;
pub mod median_price;
pub mod typical_price;
pub mod dema_ratio;
pub mod volume_trend;
pub mod range_ratio;
pub mod close_location_value;
pub mod true_range_ema;
pub mod price_gap;
pub mod weighted_close;
pub mod price_intensity;
pub mod smoothed_rsi;
pub mod volume_weighted_rsi;
pub mod ema_slope;
pub mod net_volume;
pub mod high_low_pct;
pub mod close_to_open;
pub mod volatility_adjusted_momentum;
pub mod mean_reversion_score;
pub mod adaptive_rsi;
pub mod rsi_stochastic;
pub mod price_oscillator;
pub mod volume_breadth;
pub mod max_drawdown_window;
pub mod ema_convergence;
pub mod candle_momentum;
pub mod wick_ratio;
pub mod volume_acceleration;
pub mod price_reversal;
pub mod trend_score;
pub mod volatility_skew;
pub mod williams_fractal;
pub mod camarilla;
pub mod cyber_cycle;

pub use adx::Adx;
pub use apo::Apo;
pub use aroon::Aroon;
pub use atr::Atr;
pub use cmf::Cmf;
pub use cmo::Cmo;
pub use obv::Obv;
pub use ppo::Ppo;
pub use bollinger::BollingerB;
pub use bollinger_width::BollingerWidth;
pub use cci::Cci;
pub use chandelier::ChandelierExit;
pub use dema::Dema;
pub use donchian::DonchianMidpoint;
pub use dmi::Dmi;
pub use dpo::Dpo;
pub use elder::ElderRay;
pub use ema::Ema;
pub use keltner::KeltnerChannel;
pub use hullma::HullMa;
pub use ichimoku::{Ichimoku, IchimokuLines};
pub use macd::Macd;
pub use mfi::Mfi;
pub use momentum::Momentum;
pub use roc::Roc;
pub use rsi::Rsi;
pub use sma::Sma;
pub use stddev::StdDev;
pub use stochastic::StochasticK;
pub use stochastic_d::StochasticD;
pub use tema::Tema;
pub use psar::ParabolicSar;
pub use trix::Trix;
pub use trima::Trima;
pub use ultimate::UltimateOscillator;
pub use tsi::Tsi;
pub use vwap::Vwap;
pub use vwma::Vwma;
pub use williams_r::WilliamsR;
pub use wma::Wma;
pub use zlema::Zlema;
pub use kvo::Kvo;
pub use rvi::Rvi;
pub use vortex::Vortex;
pub use williams_ad::WilliamsAD;
pub use choppiness::ChoppinessIndex;
pub use coppock::Coppock;
pub use fisher::Fisher;
pub use kama::Kama;
pub use lsma::Lsma;
pub use mass_index::MassIndex;
pub use percent_rank::PercentRank;
pub use pgo::Pgo;
pub use stc::Stc;
pub use vidya::Vidya;
pub use alma::Alma;
pub use smma::Smma;
pub use price_channel::PriceChannel;
pub use t3::T3;
pub use pvo::Pvo;
pub use emv::Emv;
pub use vpt::Vpt;
pub use nvi::Nvi;
pub use donchian_width::DonchianWidth;
pub use rmi::Rmi;
pub use supertrend::SuperTrend;
pub use pivots::Pivots;
pub use swma::Swma;
pub use force_index::ForceIndex;
pub use stoch_rsi::StochRsi;
pub use cog::Cog;
pub use env::Envelope;
pub use pfe::Pfe;
pub use rsx::Rsx;
pub use mcginley::McGinley;
pub use vhf::Vhf;
pub use chaikin_osc::ChaikinOsc;
pub use bop::Bop;
pub use atrp::Atrp;
pub use kst::Kst;
pub use natr::Natr;
pub use psychological_line::PsychologicalLine;
pub use linreg_slope::LinRegSlope;
pub use kaufman_er::KaufmanEr;
pub use zscore::Zscore;
pub use pmo::Pmo;
pub use smi::Smi;
pub use rwi::Rwi;
pub use roc_ratio::RocRatio;
pub use awesome_oscillator::AwesomeOscillator;
pub use aroon_oscillator::AroonOscillator;
pub use deviation_from_ma::DeviationFromMa;
pub use volume_oscillator::VolumeOscillator;
pub use dsp::Dsp;
pub use stoch_rsi_smoothed::StochRsiSmoothed;
pub use ctm::Ctm;
pub use tii::Tii;
pub use historical_volatility::HistoricalVolatility;
pub use vix_fix::VixFix;
pub use chaikin_volatility::ChaikinVolatility;
pub use normalized_price::NormalizedPrice;
pub use price_velocity::PriceVelocity;
pub use candle_body_size::CandleBodySize;
pub use laguerre::LaguerreRsi;
pub use linreg_channel::LinRegChannel;
pub use trend_angle::TrendAngle;
pub use alligator::Alligator;
pub use disparity::DisparityIndex;
pub use price_acceleration::PriceAcceleration;
pub use high_low_spread::HighLowSpread;
pub use gann_hilo::GannHiLo;
pub use frama::Frama;
pub use vroc::Vroc;
pub use ema_cross::EmaCross;
pub use climax_volume::ClimaxVolume;
pub use rsi_divergence::RsiDivergence;
pub use heikin_ashi::HeikinAshi;
pub use price_range_pct::PriceRangePct;
pub use std_dev_channel::StdDevChannel;
pub use rsi_ma::RsiMa;
pub use vzo::Vzo;
pub use inertia::Inertia;
pub use usm::Usm;
pub use dual_rsi::DualRsi;
pub use volume_imbalance::VolumeImbalance;
pub use vam::Vam;
pub use bull_bear_power::BullBearPower;
pub use momentum_streak::MomentumStreak;
pub use candle_color::CandleColor;
pub use price_position::PricePosition;
pub use qqe::Qqe;
pub use bars_since::BarsSince;
pub use candle_pattern::CandlePattern;
pub use vw_momentum::VwMomentum;
pub use elder_impulse::ElderImpulse;
pub use change_from_high::ChangeFromHigh;
pub use obv_momentum::ObvMomentum;
pub use trend_strength::TrendStrength;
pub use linear_deviation::LinearDeviation;
pub use volume_weighted_close::VolumeWeightedClose;
pub use price_envelope::PriceEnvelope;
pub use anchored_vwap::AnchoredVwap;
pub use atr_stop::AtrStop;
pub use bw_mfi::BwMfi;
pub use linear_regression_r2::LinRegR2;
pub use volume_spike::VolumeSpike;
pub use price_compression::PriceCompression;
pub use price_distance_ma::PriceDistanceMa;
pub use range_filter::RangeFilter;
pub use trend_following_filter::TrendFollowingFilter;
pub use chande_kroll::ChandeKrollStop;
pub use connors_rsi::ConnorsRsi;
pub use consecutive_bars::ConsecutiveBars;
pub use gap_detector::GapDetector;
pub use hl_ratio::HlRatio;
pub use open_close_ratio::OpenCloseRatio;
pub use pivot_distance::PivotDistance;
pub use price_above_ma::PriceAboveMa;
pub use volatility_bands::VolatilityBands;
pub use volume_rsi::VolumeRsi;
pub use price_density::PriceDensity;
pub use swing_index::SwingIndex;
pub use volatility_ratio::VolatilityRatio;
pub use dema_cross::DemaCross;
pub use relative_volatility::RelativeVolatility;
pub use stiffness::Stiffness;
pub use ttm_squeeze::TtmSqueeze;
pub use support_resistance_distance::SupportResistanceDistance;
pub use ulcer_index::UlcerIndex;
pub use efficiency_ratio::EfficiencyRatio;
pub use median_price::MedianPrice;
pub use typical_price::TypicalPriceMa;
pub use dema_ratio::DemaRatio;
pub use volume_trend::VolumeTrend;
pub use range_ratio::RangeRatio;
pub use close_location_value::CloseLocationValue;
pub use true_range_ema::TrueRangeEma;
pub use price_gap::PriceGap;
pub use weighted_close::WeightedClose;
pub use price_intensity::PriceIntensity;
pub use smoothed_rsi::SmoothedRsi;
pub use volume_weighted_rsi::VolumeWeightedRsi;
pub use ema_slope::EmaSlope;
pub use net_volume::NetVolume;
pub use high_low_pct::HighLowPct;
pub use close_to_open::CloseToOpen;
pub use volatility_adjusted_momentum::VolatilityAdjustedMomentum;
pub use mean_reversion_score::MeanReversionScore;
pub use adaptive_rsi::AdaptiveRsi;
pub use rsi_stochastic::RsiStochastic;
pub use price_oscillator::PriceOscillator;
pub use volume_breadth::VolumeBreadth;
pub use max_drawdown_window::MaxDrawdownWindow;
pub use ema_convergence::EmaConvergence;
pub use candle_momentum::CandleMomentum;
pub use wick_ratio::WickRatio;
pub use volume_acceleration::VolumeAcceleration;
pub use price_reversal::PriceReversal;
pub use trend_score::TrendScore;
pub use volatility_skew::VolatilitySkew;
pub mod half_trend;
pub mod dynamic_momentum_index;
pub mod linreg_forecast;
pub mod normalized_volume;
pub mod slope_oscillator;
pub mod chande_momentum_smoothed;
pub use half_trend::HalfTrend;
pub use dynamic_momentum_index::DynamicMomentumIndex;
pub use linreg_forecast::LinRegForecast;
pub use normalized_volume::NormalizedVolume;
pub use slope_oscillator::SlopeOscillator;
pub use chande_momentum_smoothed::ChandeMomentumSmoothed;
pub use williams_fractal::WilliamsFractal;
pub use camarilla::CamarillaP;
pub use cyber_cycle::EhlersCyberCycle;
pub mod fibonacci_retrace;
pub mod market_regime;
pub mod mesa_adaptive_ma;
pub use fibonacci_retrace::FibonacciRetrace;
pub use market_regime::MarketRegimeFilter;
pub use mesa_adaptive_ma::MesaAdaptiveMa;
pub mod acceleration_bands;
pub mod delta_volume;
pub mod close_above_open;
pub use acceleration_bands::AccelerationBands;
pub use delta_volume::DeltaVolume;
pub use close_above_open::CloseAboveOpen;
pub mod momentum_divergence;
pub use momentum_divergence::MomentumDivergence;
pub mod candle_efficiency;
pub mod trend_persistence;
pub mod rsi_slope;
pub mod volatility_break;
pub mod atr_normalized_close;
pub use candle_efficiency::CandleEfficiency;
pub use trend_persistence::TrendPersistence;
pub use rsi_slope::RsiSlope;
pub use volatility_break::VolatilityBreak;
pub use atr_normalized_close::AtrNormalizedClose;
pub mod rolling_open_bias;
pub mod true_range_ratio;
pub mod breakout_signal;
pub mod volume_price_impact;
pub mod bar_momentum_index;
pub mod pivot_strength;
pub use rolling_open_bias::RollingOpenBias;
pub use true_range_ratio::TrueRangeRatio;
pub use breakout_signal::BreakoutSignal;
pub use volume_price_impact::VolumePriceImpact;
pub use bar_momentum_index::BarMomentumIndex;
pub use pivot_strength::PivotStrength;
pub mod zigzag;
pub mod volatility_stop;
pub use zigzag::ZigZag;
pub use volatility_stop::VolatilityStop;
pub mod inside_bar_counter;
pub mod log_return_volatility;
pub mod price_channel_width;
pub mod volume_climax_ratio;
pub use inside_bar_counter::InsideBarCounter;
pub use log_return_volatility::LogReturnVolatility;
pub use price_channel_width::PriceChannelWidth;
pub use volume_climax_ratio::VolumeClimaxRatio;
pub mod ema_ratio;
pub mod return_percent_rank;
pub use ema_ratio::EmaRatio;
pub use return_percent_rank::ReturnPercentRank;
pub mod jurik_ma;
pub use jurik_ma::JurikMa;
pub mod open_gap_pct;
pub mod candle_range_ma;
pub mod relative_close;
pub mod cumulative_volume;
pub use open_gap_pct::OpenGapPct;
pub use candle_range_ma::CandleRangeMa;
pub use relative_close::RelativeClose;
pub use cumulative_volume::CumulativeVolume;
pub mod price_to_sma_ratio;
pub mod high_of_period;
pub mod low_of_period;
pub mod bar_close_rank;
pub use price_to_sma_ratio::PriceToSmaRatio;
pub use high_of_period::HighOfPeriod;
pub use low_of_period::LowOfPeriod;
pub use bar_close_rank::BarCloseRank;
pub mod adaptive_supertrend;
pub mod td_sequential;
pub use adaptive_supertrend::AdaptiveSupertrend;
pub use td_sequential::TdSequential;
pub mod ema_band_width;
pub mod consecutive_new_highs;
pub mod volume_direction_ratio;
pub mod price_change_pct;
pub use ema_band_width::EmaBandWidth;
pub use consecutive_new_highs::ConsecutiveNewHighs;
pub use volume_direction_ratio::VolumeDirectionRatio;
pub use price_change_pct::PriceChangePct;
pub mod coral_trend;
pub mod trend_magic;
pub use coral_trend::CoralTrend;
pub use trend_magic::TrendMagic;
pub mod atr_ratio;
pub mod price_channel_position;
pub mod close_minus_open_ma;
pub use atr_ratio::AtrRatio;
pub use price_channel_position::PriceChannelPosition;
pub use close_minus_open_ma::CloseMinusOpenMa;
pub mod body_to_range_ratio;
pub mod up_down_volume_ratio;
pub mod close_midpoint_diff;
pub mod atr_percent;
pub mod rolling_high_low_position;
pub mod momentum_oscillator;
pub use body_to_range_ratio::BodyToRangeRatio;
pub use up_down_volume_ratio::UpDownVolumeRatio;
pub use close_midpoint_diff::CloseMidpointDiff;
pub use atr_percent::AtrPercent;
pub use rolling_high_low_position::RollingHighLowPosition;
pub use momentum_oscillator::MomentumOscillator;
pub mod price_zscore;
pub mod up_bar_ratio;
pub mod range_expansion_index;
pub mod overnight_return;
pub use price_zscore::PriceZScore;
pub use up_bar_ratio::UpBarRatio;
pub use range_expansion_index::RangeExpansionIndex;
pub use overnight_return::OvernightReturn;
pub mod wick_imbalance;
pub mod volume_momentum;
pub mod sma_distance_pct;
pub mod trend_consistency;
pub mod volatility_momentum;
pub use wick_imbalance::WickImbalance;
pub use volume_momentum::VolumeMomentum;
pub use sma_distance_pct::SmaDistancePct;
pub use trend_consistency::TrendConsistency;
pub use volatility_momentum::VolatilityMomentum;
pub mod autocorrelation_1;
pub mod price_entropy;
pub mod max_adverse_excursion;
pub use autocorrelation_1::Autocorrelation1;
pub use price_entropy::PriceEntropy;
pub use max_adverse_excursion::MaxAdverseExcursion;

pub mod average_bar_range;
pub mod fair_value_gap;
pub use average_bar_range::AverageBarRange;
pub use fair_value_gap::FairValueGap;
pub mod rolling_skewness;
pub mod close_above_ema;
pub mod volume_surge2;
pub use rolling_skewness::RollingSkewness;
pub use close_above_ema::CloseAboveEma;
pub use volume_surge2::VolumeSurge2;
pub mod cumulative_log_return;
pub mod volume_weighted_atr;
pub mod price_compression_breakout;
pub use cumulative_log_return::CumulativeLogReturn;
pub use volume_weighted_atr::VolumeWeightedAtr;
pub use price_compression_breakout::PriceCompressionBreakout;
pub mod doji_detector;
pub use doji_detector::DojiDetector;
pub mod rolling_max_return;
pub mod rolling_min_return;
pub mod close_vs_prior_high;
pub mod intraday_spread_pct;
pub mod delta_momentum;
pub mod regime_volatility;
pub mod trend_age;
pub use rolling_max_return::RollingMaxReturn;
pub use rolling_min_return::RollingMinReturn;
pub use close_vs_prior_high::CloseVsPriorHigh;
pub use intraday_spread_pct::IntradaySpreadPct;
pub use delta_momentum::DeltaMomentum;
pub use regime_volatility::RegimeVolatility;
pub use trend_age::TrendAge;

pub mod hurst_exponent;
pub mod volume_weighted_std_dev;
pub use hurst_exponent::HurstExponent;
pub use volume_weighted_std_dev::VolumeWeightedStdDev;
pub mod close_above_midpoint;
pub mod volume_up_down_ratio;
pub use close_above_midpoint::CloseAboveMidpoint;
pub use volume_up_down_ratio::VolumeUpDownRatio;
pub mod hammer_detector;
pub mod price_path_efficiency;
pub mod close_to_high_ratio;
pub mod relative_bar_range;
pub use hammer_detector::HammerDetector;
pub use price_path_efficiency::PricePathEfficiency;
pub use close_to_high_ratio::CloseToHighRatio;
pub use relative_bar_range::RelativeBarRange;
pub mod cumulative_delta;
pub mod close_retrace_pct;
pub mod median_volume;
pub mod outside_bar_count;
pub use cumulative_delta::CumulativeDelta;
pub use close_retrace_pct::CloseRetracePct;
pub use median_volume::MedianVolume;
pub use outside_bar_count::OutsideBarCount;
pub mod open_to_close_return;
pub mod bull_bear_balance;
pub mod rolling_volume_cv;
pub mod bar_range_consistency;
pub mod gap_momentum;
pub mod wick_to_body_ratio;
pub use open_to_close_return::OpenToCloseReturn;
pub use bull_bear_balance::BullBearBalance;
pub use rolling_volume_cv::RollingVolumeCV;
pub use bar_range_consistency::BarRangeConsistency;
pub use gap_momentum::GapMomentum;
pub use wick_to_body_ratio::WickToBodyRatio;

pub mod chande_forecast_osc;
pub mod body_streak;
pub mod signed_gap_sum;
pub mod body_height_ratio;
pub mod bar_type;
pub use chande_forecast_osc::ChandeForecastOsc;
pub use body_streak::BodyStreak;
pub use signed_gap_sum::SignedGapSum;
pub use body_height_ratio::BodyHeightRatio;
pub use bar_type::BarType;
pub mod price_level_pct;
pub mod volume_open_bias;
pub mod range_momentum;
pub mod close_above_prev_close;
pub use price_level_pct::PriceLevelPct;
pub use volume_open_bias::VolumeOpenBias;
pub use range_momentum::RangeMomentum;
pub use close_above_prev_close::CloseAbovePrevClose;
pub mod upper_wick_pct;
pub mod lower_wick_pct;
pub mod volume_per_range;
pub mod return_over_volatility;
pub mod close_above_prior_close;
pub use upper_wick_pct::UpperWickPct;
pub use lower_wick_pct::LowerWickPct;
pub use volume_per_range::VolumePerRange;
pub use return_over_volatility::ReturnOverVolatility;
pub use close_above_prior_close::CloseAbovePriorClose;
pub mod value_at_risk5;
pub mod volume_price_corr;
pub mod net_high_low_count;
pub mod rolling_skew_returns;
pub use value_at_risk5::ValueAtRisk5;
pub use volume_price_corr::VolumePriceCorr;
pub use net_high_low_count::NetHighLowCount;
pub use rolling_skew_returns::RollingSkewReturns;

pub mod price_impulse;
pub use price_impulse::PriceImpulse;
pub mod bar_overlap_ratio;
pub mod direction_changes;
pub mod bar_open_position;
pub mod higher_high_lower_low;
pub mod average_gap;
pub use bar_overlap_ratio::BarOverlapRatio;
pub use direction_changes::DirectionChanges;
pub use bar_open_position::BarOpenPosition;
pub use higher_high_lower_low::HigherHighLowerLow;
pub use average_gap::AverageGap;
pub mod consecutive_volume_growth;
pub mod volume_density;
pub mod open_high_ratio;
pub mod price_oscillator2;
pub use consecutive_volume_growth::ConsecutiveVolumeGrowth;
pub use volume_density::VolumeDensity;
pub use open_high_ratio::OpenHighRatio;
pub use price_oscillator2::PriceOscillator2;
pub mod engulfing_detector;
pub mod volume_weighted_range;
pub mod higher_low_streak;
pub mod rolling_mad;
pub mod tail_ratio_pct;
pub mod price_range_rank;
pub use engulfing_detector::EngulfingDetector;
pub use volume_weighted_range::VolumeWeightedRange;
pub use higher_low_streak::HigherLowStreak;
pub use rolling_mad::RollingMAD;
pub use tail_ratio_pct::TailRatioPct;
pub use price_range_rank::PriceRangeRank;
pub mod conditional_var5;
pub mod abs_return_mean;
pub mod flat_bar_pct;
pub mod upper_to_lower_wick;
pub use conditional_var5::ConditionalVar5;
pub use abs_return_mean::AbsReturnMean;
pub use flat_bar_pct::FlatBarPct;
pub use upper_to_lower_wick::UpperToLowerWick;
pub mod lower_high_streak;
pub mod relative_volume_rank;
pub mod open_gap_direction;
pub mod net_bar_bias;
pub mod gap_range_ratio;
pub use lower_high_streak::LowerHighStreak;
pub use relative_volume_rank::RelativeVolumeRank;
pub use open_gap_direction::OpenGapDirection;
pub use net_bar_bias::NetBarBias;
pub use gap_range_ratio::GapRangeRatio;

pub mod volume_energy;
pub mod gap_signal;
pub mod median_close_dev;
pub mod ema_alignment;
pub mod volatility_percentile;
pub use volume_energy::VolumeEnergy;
pub use gap_signal::GapSignal;
pub use median_close_dev::MedianCloseDev;
pub use ema_alignment::EmaAlignment;
pub use volatility_percentile::VolatilityPercentile;
pub mod momentum_quality;
pub mod rolling_max_dd;
pub mod high_low_crossover;
pub mod body_direction_ratio;
pub use momentum_quality::MomentumQuality;
pub use rolling_max_dd::RollingMaxDd;
pub use high_low_crossover::HighLowCrossover;
pub use body_direction_ratio::BodyDirectionRatio;

pub mod body_momentum;
pub mod close_midpoint_strength;
pub mod volume_deviation;
pub use body_momentum::BodyMomentum;
pub use close_midpoint_strength::CloseMidpointStrength;
pub use volume_deviation::VolumeDeviation;
pub mod price_reversal_strength;
pub mod gap_fill_detector;
pub mod return_persistence;
pub use price_reversal_strength::PriceReversalStrength;
pub use gap_fill_detector::GapFillDetector;
pub use return_persistence::ReturnPersistence;
pub mod price_velocity_ratio;
pub mod rolling_correlation;
pub mod close_return_z;
pub use price_velocity_ratio::PriceVelocityRatio;
pub use rolling_correlation::RollingCorrelation;
pub use close_return_z::CloseReturnZ;

pub mod engulfing_pattern;
pub mod three_bar_pattern;
pub mod consolidation_score;
pub mod close_vs_vwap;
pub mod price_velocity_score;
pub use engulfing_pattern::EngulfingPattern;
pub use three_bar_pattern::ThreeBarPattern;
pub use consolidation_score::ConsolidationScore;
pub use close_vs_vwap::CloseVsVwap;
pub use price_velocity_score::PriceVelocityScore;
/// Bar efficiency indicator module.
pub mod bar_efficiency;
/// Close-to-open return indicator module.
pub mod close_to_open_return;
pub use bar_efficiency::BarEfficiency;
pub use close_to_open_return::CloseToOpenReturn;
pub mod range_pct_of_close;
pub mod narrow_range_bar;
pub mod rolling_kurtosis;
pub use range_pct_of_close::RangePctOfClose;
pub use narrow_range_bar::NarrowRangeBar;
pub use rolling_kurtosis::RollingKurtosis;
pub mod return_dispersion;
pub mod wick_rejection_score;
pub mod high_low_midpoint;
pub use return_dispersion::ReturnDispersion;
pub use wick_rejection_score::WickRejectionScore;
pub use high_low_midpoint::HighLowMidpoint;
pub mod close_above_high_prev;
pub use close_above_high_prev::CloseAboveHighPrev;
pub mod dual_atr_ratio;
pub use dual_atr_ratio::DualATRRatio;
pub mod bollinger_pct_b;
pub use bollinger_pct_b::BollingerPctB;
pub mod pivot_point;
pub use pivot_point::PivotPoint;
pub mod price_efficiency_ratio;
pub mod up_volume_ratio;
pub mod true_range_percentile;
pub use price_efficiency_ratio::PriceEfficiencyRatio;
pub use up_volume_ratio::UpVolumeRatio;
pub use true_range_percentile::TrueRangePercentile;
pub mod candle_symmetry;
pub mod support_test_count;
pub mod return_autocorrelation;
pub use candle_symmetry::CandleSymmetry;
pub use support_test_count::SupportTestCount;
pub use return_autocorrelation::ReturnAutoCorrelation;
pub mod ease_of_movement;
pub use ease_of_movement::EaseOfMovement;
pub mod linear_regression_slope;
pub use linear_regression_slope::LinearRegressionSlope;
pub mod negative_volume_index;
pub use negative_volume_index::NegativeVolumeIndex;
pub mod price_range_expansion;
pub mod higher_high_count;
pub mod volume_spike_score;
pub mod close_relative_to_ema;
pub use price_range_expansion::PriceRangeExpansion;
pub use higher_high_count::HigherHighCount;
pub use volume_spike_score::VolumeSpikeScore;
pub use close_relative_to_ema::CloseRelativeToEma;
pub mod open_gap_size;
pub mod range_z_score;
pub mod bearish_bar_ratio;
pub mod close_below_low_prev;
pub use open_gap_size::OpenGapSize;
pub use range_z_score::RangeZScore;
pub use bearish_bar_ratio::BearishBarRatio;
pub use close_below_low_prev::CloseBelowLowPrev;
pub mod positive_volume_index;
pub use positive_volume_index::PositiveVolumeIndex;
pub mod variance_ratio;
pub use variance_ratio::VarianceRatio;
pub mod price_above_ma_pct;
pub use price_above_ma_pct::PriceAboveMaPct;

pub mod hammer_pattern;
pub use hammer_pattern::HammerPattern;
pub mod max_drawup_window;
pub use max_drawup_window::MaxDrawupWindow;
pub mod close_open_ema;
pub use close_open_ema::CloseOpenEma;
pub mod wick_to_atr_ratio;
pub use wick_to_atr_ratio::WickToAtrRatio;
pub mod upper_shadow_ratio;
pub use upper_shadow_ratio::UpperShadowRatio;
pub mod lower_shadow_ratio;
pub use lower_shadow_ratio::LowerShadowRatio;
pub mod higher_close_streak;
pub use higher_close_streak::HigherCloseStreak;
pub mod ohlc_spread;
pub use ohlc_spread::OhlcSpread;
pub mod bar_momentum_score;
pub use bar_momentum_score::BarMomentumScore;
pub mod lower_low_count;
pub mod typical_price_deviation;
pub mod volume_weighted_momentum;
pub mod inside_bar_ratio;
pub use lower_low_count::LowerLowCount;
pub use typical_price_deviation::TypicalPriceDeviation;
pub use volume_weighted_momentum::VolumeWeightedMomentum;
pub use inside_bar_ratio::InsideBarRatio;
pub mod new_high_pct;
pub use new_high_pct::NewHighPct;
pub mod body_size_rank;
pub use body_size_rank::BodySizeRank;
pub mod key_reversal;
pub use key_reversal::KeyReversal;
pub mod new_low_pct;
pub use new_low_pct::NewLowPct;
pub mod range_midpoint_position;
pub use range_midpoint_position::RangeMidpointPosition;
pub mod volume_flow_ratio;
pub use volume_flow_ratio::VolumeFlowRatio;
pub mod close_vs_open_range;
pub mod volatility_regime_detector;
pub mod return_sign_sum;
pub mod close_to_range_top;
pub use close_vs_open_range::CloseVsOpenRange;
pub use volatility_regime_detector::VolatilityRegimeDetector;
pub use return_sign_sum::ReturnSignSum;
pub use close_to_range_top::CloseToRangeTop;
pub mod midpoint_oscillator;
pub use midpoint_oscillator::MidpointOscillator;
pub mod close_position_in_range;
pub use close_position_in_range::ClosePositionInRange;
pub mod range_contraction_count;
pub use range_contraction_count::RangeContractionCount;
pub mod open_to_close_ratio;
pub use open_to_close_ratio::OpenToCloseRatio;
pub mod volume_ratio_signal;
pub use volume_ratio_signal::VolumeRatioSignal;
pub mod weighted_close_volatility;
pub mod volume_streak_count;
pub mod momentum_reversal;
pub mod close_to_mid_range;
pub use weighted_close_volatility::WeightedCloseVolatility;
pub use volume_streak_count::VolumeStreakCount;
pub use momentum_reversal::MomentumReversal;
pub use close_to_mid_range::CloseToMidRange;
pub mod bar_follow_through;
pub use bar_follow_through::BarFollowThrough;
pub mod open_above_prev_close;
pub use open_above_prev_close::OpenAbovePrevClose;
pub mod cusum_price_change;
pub use cusum_price_change::CusumPriceChange;
pub mod shadow_imbalance;
pub use shadow_imbalance::ShadowImbalance;
pub mod body_fill_ratio;
pub use body_fill_ratio::BodyFillRatio;
pub mod price_symmetry;
pub use price_symmetry::PriceSymmetry;
pub mod true_range_expansion;
pub use true_range_expansion::TrueRangeExpansion;
pub mod open_range_strength;
pub use open_range_strength::OpenRangeStrength;
pub mod price_compression_index;
pub use price_compression_index::PriceCompressionIndex;
pub mod volume_surge;
pub use volume_surge::VolumeSurge;
pub mod normalized_momentum;
pub use normalized_momentum::NormalizedMomentum;
pub mod close_above_prev_close_pct;
pub use close_above_prev_close_pct::CloseAbovePrevClosePct;
pub mod downside_deviation;
pub mod close_acceleration;
pub mod high_low_divergence;
pub use downside_deviation::DownsideDeviation;
pub use close_acceleration::CloseAcceleration;
pub use high_low_divergence::HighLowDivergence;
pub mod up_momentum_pct;
pub use up_momentum_pct::UpMomentumPct;
pub mod range_compression_ratio;
pub use range_compression_ratio::RangeCompressionRatio;
pub mod new_high_streak;
pub use new_high_streak::NewHighStreak;
pub mod intrabar_return;
pub use intrabar_return::IntrabarReturn;
pub mod relative_volume_score;
pub use relative_volume_score::RelativeVolumeScore;
pub mod rolling_low_break;
pub use rolling_low_break::RollingLowBreak;
pub mod daily_return_skew;
pub use daily_return_skew::DailyReturnSkew;
pub mod high_break_count;
pub use high_break_count::HighBreakCount;
pub mod price_gap_frequency;
pub use price_gap_frequency::PriceGapFrequency;
pub mod cum_return_momentum;
pub use cum_return_momentum::CumReturnMomentum;
pub mod high_low_oscillator;
pub use high_low_oscillator::HighLowOscillator;
pub mod bar_strength_index;
pub use bar_strength_index::BarStrengthIndex;
pub mod close_return_acceleration;
pub use close_return_acceleration::CloseReturnAcceleration;
pub mod open_close_momentum;
pub use open_close_momentum::OpenCloseMomentum;
pub mod high_low_pct_range;
pub use high_low_pct_range::HighLowPctRange;
pub mod close_to_low_distance;
pub use close_to_low_distance::CloseToLowDistance;
pub mod return_mean_deviation;
pub use return_mean_deviation::ReturnMeanDeviation;
pub mod price_above_rolling_high;
pub use price_above_rolling_high::PriceAboveRollingHigh;
pub mod open_close_spread;
pub use open_close_spread::OpenCloseSpread;
pub mod volume_momentum_divergence;
pub use volume_momentum_divergence::VolumeMomentumDivergence;
pub mod price_position_rank;
pub use price_position_rank::PricePositionRank;
pub mod tail_ratio;
pub use tail_ratio::TailRatio;
pub mod price_bandwidth;
pub use price_bandwidth::PriceBandwidth;
pub mod bar_range_std_dev;
pub use bar_range_std_dev::BarRangeStdDev;
pub mod return_above_zero_pct;
pub use return_above_zero_pct::ReturnAboveZeroPct;
pub mod close_above_prev_high;
pub use close_above_prev_high::CloseAbovePrevHigh;
pub mod range_persistence;
pub use range_persistence::RangePersistence;
pub mod gap_fill_ratio;
pub use gap_fill_ratio::GapFillRatio;
pub mod price_compression_ratio;
pub use price_compression_ratio::PriceCompressionRatio;
pub mod volume_trend_slope;
pub use volume_trend_slope::VolumeTrendSlope;
pub mod rolling_high_low_ratio;
pub use rolling_high_low_ratio::RollingHighLowRatio;
pub mod price_gravity;
pub use price_gravity::PriceGravity;
pub mod return_sign_changes;
pub use return_sign_changes::ReturnSignChanges;
pub mod close_to_open_gap;
pub use close_to_open_gap::CloseToOpenGap;
pub mod high_low_return_correlation;
pub use high_low_return_correlation::HighLowReturnCorrelation;
pub mod bar_range_expansion_pct;
pub use bar_range_expansion_pct::BarRangeExpansionPct;
pub mod volume_return_correlation;
pub use volume_return_correlation::VolumeReturnCorrelation;
pub mod median_return_deviation;
pub use median_return_deviation::MedianReturnDeviation;
pub mod volume_delta_oscillator;
pub use volume_delta_oscillator::VolumeDeltaOscillator;
pub mod rolling_return_kurtosis;
pub use rolling_return_kurtosis::RollingReturnKurtosis;
pub mod volume_to_range_ratio;
pub use volume_to_range_ratio::VolumeToRangeRatio;
pub mod price_momentum_oscillator;
pub use price_momentum_oscillator::PriceMomentumOscillator;
pub mod volume_rate_of_change;
pub use volume_rate_of_change::VolumeRateOfChange;
pub mod average_gain;
pub use average_gain::AverageGain;
pub mod average_loss;
pub use average_loss::AverageLoss;
pub mod true_strength_index;
pub use true_strength_index::TrueStrengthIndex;
pub mod wilder_smoothed_range;
pub use wilder_smoothed_range::WilderSmoothedRange;
pub mod price_oscillator_pct;
pub use price_oscillator_pct::PriceOscillatorPct;
pub mod price_entropy_score;
pub use price_entropy_score::PriceEntropyScore;
pub mod bull_power_bear_power;
pub use bull_power_bear_power::BullPowerBearPower;
pub mod open_high_low_close_avg;
pub use open_high_low_close_avg::OpenHighLowCloseAvg;
pub mod close_above_sma_streak;
pub use close_above_sma_streak::CloseAboveSmaStreak;
pub mod range_trend_slope;
pub use range_trend_slope::RangeTrendSlope;
pub mod true_range_zscore;
pub use true_range_zscore::TrueRangeZScore;
pub mod trend_consistency_score;
pub use trend_consistency_score::TrendConsistencyScore;
pub mod volatility_spike;
pub use volatility_spike::VolatilitySpike;
pub mod close_pct_from_high;
pub use close_pct_from_high::ClosePctFromHigh;
pub mod close_pct_from_low;
pub use close_pct_from_low::ClosePctFromLow;
pub mod return_iqr;
pub use return_iqr::ReturnIqr;
pub mod profit_factor;
pub use profit_factor::ProfitFactor;
pub mod payoff_ratio;
pub use payoff_ratio::PayoffRatio;
pub mod amplitude_ratio;
pub use amplitude_ratio::AmplitudeRatio;
pub mod trend_purity;
pub use trend_purity::TrendPurity;
pub mod volume_exhaustion;
pub use volume_exhaustion::VolumeExhaustion;
pub mod price_change_count;
pub use price_change_count::PriceChangeCount;
pub mod open_to_high_ratio;
pub use open_to_high_ratio::OpenToHighRatio;
pub mod higher_low_count;
pub use higher_low_count::HigherLowCount;
pub mod lower_high_count;
pub use lower_high_count::LowerHighCount;
pub mod close_relative_to_range;
pub use close_relative_to_range::CloseRelativeToRange;
pub mod volatility_of_volatility;
pub use volatility_of_volatility::VolatilityOfVolatility;
pub mod body_atr_ratio;
pub use body_atr_ratio::BodyAtrRatio;
pub mod gap_streak;
pub use gap_streak::GapStreak;
pub mod shadow_ratio;
pub use shadow_ratio::ShadowRatio;
pub mod price_mean_deviation;
pub use price_mean_deviation::PriceMeanDeviation;
pub mod abs_return_sum;
pub use abs_return_sum::AbsReturnSum;
pub mod rolling_max_drawdown;
pub use rolling_max_drawdown::RollingMaxDrawdown;
pub mod volume_accumulation;
pub use volume_accumulation::VolumeAccumulation;
pub mod close_distance_from_ema;
pub use close_distance_from_ema::CloseDistanceFromEma;
pub mod up_volume_fraction;
pub use up_volume_fraction::UpVolumeFraction;
pub mod close_acceleration_sign;
pub use close_acceleration_sign::CloseAccelerationSign;
pub mod price_relative_strength;
pub use price_relative_strength::PriceRelativeStrength;
pub mod open_low_range;
pub use open_low_range::OpenLowRange;
pub mod high_open_range;
pub use high_open_range::HighOpenRange;

pub mod volume_price_efficiency;
pub use volume_price_efficiency::VolumePriceEfficiency;
pub mod volume_spike_ratio;
pub use volume_spike_ratio::VolumeSpikeRatio;
pub mod momentum_consistency;
pub use momentum_consistency::MomentumConsistency;
pub mod rolling_vwap;
pub use rolling_vwap::RollingVwap;
pub mod median_body_size;
pub use median_body_size::MedianBodySize;
pub mod wick_asymmetry_streak;
pub use wick_asymmetry_streak::WickAsymmetryStreak;
pub mod price_oscillator_sign;
pub use price_oscillator_sign::PriceOscillatorSign;
pub mod open_close_symmetry;
pub use open_close_symmetry::OpenCloseSymmetry;
pub mod range_return_ratio;
pub use range_return_ratio::RangeReturnRatio;


pub mod body_to_shadow_ratio;
pub use body_to_shadow_ratio::BodyToShadowRatio;

pub mod atr_percentile;
pub use atr_percentile::AtrPercentile;

pub mod close_high_frequency;
pub use close_high_frequency::CloseHighFrequency;

pub mod open_midpoint_deviation;
pub use open_midpoint_deviation::OpenMidpointDeviation;

pub mod rolling_shadow_balance;
pub use rolling_shadow_balance::RollingShadowBalance;

pub mod range_breakout_count;
pub use range_breakout_count::RangeBreakoutCount;

pub mod high_volume_bar_ratio;
pub use high_volume_bar_ratio::HighVolumeBarRatio;

pub mod body_position;
pub use body_position::BodyPosition;

pub mod directional_efficiency;
pub use directional_efficiency::DirectionalEfficiency;

pub mod open_drive;
pub use open_drive::OpenDrive;

pub mod close_distance_from_open;
pub use close_distance_from_open::CloseDistanceFromOpen;

pub mod range_efficiency;
pub use range_efficiency::RangeEfficiency;
pub mod close_rank_momentum;
pub use close_rank_momentum::CloseRankMomentum;
pub mod price_excursion;
pub use price_excursion::PriceExcursion;
pub mod volatility_compression;
pub use volatility_compression::VolatilityCompression;
pub mod sharpe_ratio;
pub use sharpe_ratio::SharpeRatio;
pub mod sortino_ratio;
pub use sortino_ratio::SortinoRatio;
pub mod max_favorable_excursion;
pub use max_favorable_excursion::MaxFavorableExcursion;
pub mod percent_rank_range;
pub use percent_rank_range::PercentRankRange;
pub mod volume_zscore;
pub use volume_zscore::VolumeZScore;
pub mod body_volume_ratio;
pub use body_volume_ratio::BodyVolumeRatio;
pub mod gap_body_ratio;
pub use gap_body_ratio::GapBodyRatio;
pub mod elastic_volume_weighted_ma;
pub use elastic_volume_weighted_ma::Evwma;
pub mod fractal_dimension_index;
pub use fractal_dimension_index::FractalDimensionIndex;
pub mod garman_klass_volatility;
pub use garman_klass_volatility::GarmanKlassVolatility;
pub mod parkinson_volatility;
pub use parkinson_volatility::ParkinsonVolatility;
pub mod rogers_satchell_volatility;
pub use rogers_satchell_volatility::RogersSatchellVolatility;
pub mod yang_zhang_volatility;
pub use yang_zhang_volatility::YangZhangVolatility;
pub mod calmar_ratio;
pub use calmar_ratio::CalmarRatio;
pub mod rolling_beta;
pub use rolling_beta::RollingBeta;
pub mod open_close_gap;
pub use open_close_gap::OpenCloseGap;
pub mod volume_weighted_volatility;
pub use volume_weighted_volatility::VolumeWeightedVolatility;
pub mod close_to_vwap_pct;
pub use close_to_vwap_pct::CloseToVwapPct;
pub mod open_close_pressure;
pub use open_close_pressure::OpenClosePressure;
pub mod volume_at_close;
pub use volume_at_close::VolumeAtClose;
pub mod marubozu_detector;
pub use marubozu_detector::MarubozuDetector;
pub mod range_volatility_ratio;
pub use range_volatility_ratio::RangeVolatilityRatio;
pub mod trend_strength_index;
pub use trend_strength_index::TrendStrengthIndex;
pub mod volume_price_rank;
pub use volume_price_rank::VolumePriceRank;
pub mod price_volatility_ratio;
pub use price_volatility_ratio::PriceVolatilityRatio;

pub mod didi_index;
pub use didi_index::DidiIndex;
pub mod vol_normalized_return;
pub use vol_normalized_return::VolNormalizedReturn;
pub mod price_range_momentum;
pub use price_range_momentum::PriceRangeMomentum;
pub mod avg_true_range_pct;
pub use avg_true_range_pct::AvgTrueRangePct;
pub mod price_momentum_rank;
pub use price_momentum_rank::PriceMomentumRank;
pub mod wicks_vs_body_ratio;
pub use wicks_vs_body_ratio::WicksVsBodyRatio;
pub mod high_low_ratio_ma;
pub use high_low_ratio_ma::HighLowRatioMa;
pub mod intrabar_momentum;
pub use intrabar_momentum::IntrabarMomentum;
pub mod body_acceleration;
pub use body_acceleration::BodyAcceleration;
pub mod high_low_squeeze;
pub use high_low_squeeze::HighLowSqueeze;
pub mod volume_consistency;
pub use volume_consistency::VolumeConsistency;
pub mod return_consistency;
pub use return_consistency::ReturnConsistency;
pub mod close_open_momentum;
pub use close_open_momentum::CloseOpenMomentum;
pub mod median_high_low;
pub use median_high_low::MedianHighLow;
pub mod volume_swing;
pub use volume_swing::VolumeSwing;
pub mod close_range_position;
pub use close_range_position::CloseRangePosition;
pub mod bar_quality_score;
pub use bar_quality_score::BarQualityScore;
pub mod three_black_crows;
pub use three_black_crows::ThreeBlackCrows;
pub mod three_white_soldiers;
pub use three_white_soldiers::ThreeWhiteSoldiers;
pub mod tweezer_bottom;
pub use tweezer_bottom::TweezerBottom;
pub mod tweezer_top;
pub use tweezer_top::TweezerTop;
pub mod open_close_velocity;
pub use open_close_velocity::OpenCloseVelocity;
pub mod bar_range_percentile;
pub use bar_range_percentile::BarRangePercentile;
pub mod volume_momentum_ratio;
pub use volume_momentum_ratio::VolumeMomentumRatio;
pub mod price_return_skew;
pub use price_return_skew::PriceReturnSkew;
pub mod range_pressure_index;
pub use range_pressure_index::RangePressureIndex;
pub mod roc_acceleration;
pub use roc_acceleration::RocAcceleration;
pub mod harami_detector;
pub use harami_detector::HaramiDetector;
pub mod morning_star;
pub use morning_star::MorningStar;
pub mod evening_star;
pub use evening_star::EveningStar;
pub mod piercing_line;
pub use piercing_line::PiercingLine;
pub mod dark_cloud_cover;
pub use dark_cloud_cover::DarkCloudCover;
pub mod spinning_top;
pub use spinning_top::SpinningTop;
pub mod trend_acceleration;
pub use trend_acceleration::TrendAcceleration;
pub mod volume_pressure_ratio;
pub use volume_pressure_ratio::VolumePressureRatio;
pub mod open_vs_prev_close;
pub use open_vs_prev_close::OpenVsPrevClose;
pub mod close_momentum_rank;
pub use close_momentum_rank::CloseMomentumRank;
pub mod close_above_pivot;
pub use close_above_pivot::CloseAbovePivot;
pub mod up_close_streak;
pub use up_close_streak::UpCloseStreak;
pub mod price_compression_streak;
pub use price_compression_streak::PriceCompressionStreak;
pub mod body_width_ratio;
pub use body_width_ratio::BodyWidthRatio;
pub mod return_kurtosis;
pub use return_kurtosis::ReturnKurtosis;
pub mod volume_weighted_hl;
pub use volume_weighted_hl::VolumeWeightedHl;
pub mod close_strength_ratio;
pub use close_strength_ratio::CloseStrengthRatio;
pub mod hl_midpoint_deviation;
pub use hl_midpoint_deviation::HlMidpointDeviation;
pub mod body_to_range_ema;
pub use body_to_range_ema::BodyToRangeEma;
pub mod volume_return_corr;
pub use volume_return_corr::VolumeReturnCorr;
pub mod upper_wick_ratio;
pub use upper_wick_ratio::UpperWickRatio;
pub mod lower_wick_ratio;
pub use lower_wick_ratio::LowerWickRatio;
pub mod volume_trend_strength;
pub use volume_trend_strength::VolumeTrendStrength;
pub mod range_expansion_rate;
pub use range_expansion_rate::RangeExpansionRate;
pub mod range_to_atr_ratio;
pub use range_to_atr_ratio::RangeToAtrRatio;
pub mod tick_move_ratio;
pub use tick_move_ratio::TickMoveRatio;
pub mod body_trend_strength;
pub use body_trend_strength::BodyTrendStrength;
pub mod directional_candle_ratio;
pub use directional_candle_ratio::DirectionalCandleRatio;
pub mod kicking_pattern;
pub use kicking_pattern::KickingPattern;
pub mod momentum_regime;
pub use momentum_regime::MomentumRegime;
pub mod price_action_index;
pub use price_action_index::PriceActionIndex;
pub mod relative_range_rank;
pub use relative_range_rank::RelativeRangeRank;
pub mod return_concentration;
pub use return_concentration::ReturnConcentration;
pub mod shadow_pressure;
pub use shadow_pressure::ShadowPressure;
pub mod volatility_adjusted_range;
pub use volatility_adjusted_range::VolatilityAdjustedRange;
pub mod trend_bias_index;
pub use trend_bias_index::TrendBiasIndex;
pub mod body_center_position;
pub use body_center_position::BodyCenterPosition;
pub mod price_change_mad;
pub use price_change_mad::PriceChangeMad;
pub mod gap_continuation_ratio;
pub use gap_continuation_ratio::GapContinuationRatio;
pub mod high_low_momentum;
pub use high_low_momentum::HighLowMomentum;
pub mod close_pct_rank;
pub use close_pct_rank::ClosePctRank;
pub mod volume_delta_ratio;
pub use volume_delta_ratio::VolumeDeltaRatio;
pub mod open_interest_proxy;
pub use open_interest_proxy::OpenInterestProxy;
pub mod bar_polarity_streak;
pub use bar_polarity_streak::BarPolarityStreak;
pub mod volume_weighted_return;
pub use volume_weighted_return::VolumeWeightedReturn;
pub mod open_midpoint_bias;
pub use open_midpoint_bias::OpenMidpointBias;
pub mod typical_price_roc;
pub use typical_price_roc::TypicalPriceRoc;
pub mod volume_momentum_oscillator;
pub use volume_momentum_oscillator::VolumeMomentumOscillator;

pub mod swing_point_detector;
pub use swing_point_detector::SwingPointDetector;
pub mod close_above_open_streak;
pub use close_above_open_streak::CloseAboveOpenStreak;
pub mod volume_surge_detector;
pub use volume_surge_detector::VolumeSurgeDetector;
pub mod candle_momentum_score;
pub use candle_momentum_score::CandleMomentumScore;
pub mod consecutive_higher_highs;
pub use consecutive_higher_highs::ConsecutiveHigherHighs;
pub mod range_percentile;
pub use range_percentile::RangePercentile;
pub mod trend_exhaustion;
pub use trend_exhaustion::TrendExhaustion;
pub mod price_reversal_index;
pub use price_reversal_index::PriceReversalIndex;
pub mod price_gap_momentum;
pub use price_gap_momentum::PriceGapMomentum;
pub mod close_location_ema;
pub use close_location_ema::CloseLocationEma;
pub mod high_low_persistence;
pub use high_low_persistence::HighLowPersistence;
pub mod range_contraction_index;
pub use range_contraction_index::RangeContractionIndex;
pub mod open_close_balance;
pub use open_close_balance::OpenCloseBalance;
pub mod range_position_oscillator;
pub use range_position_oscillator::RangePositionOscillator;
pub mod close_high_low_spread;
pub use close_high_low_spread::CloseHighLowSpread;
pub mod volume_price_correlation;
pub use volume_price_correlation::VolumePriceCorrelation;
pub mod weighted_close_roc;
pub use weighted_close_roc::WeightedCloseRoc;
pub mod open_range_position;
pub use open_range_position::OpenRangePosition;
pub mod price_volume_ratio;
pub use price_volume_ratio::PriceVolumeRatio;
pub mod net_body_accumulation;
pub use net_body_accumulation::NetBodyAccumulation;

pub mod normalized_atr;
pub use normalized_atr::NormalizedAtr;
pub mod dual_momentum;
pub use dual_momentum::DualMomentum;
pub mod golden_cross_signal;
pub use golden_cross_signal::GoldenCrossSignal;
pub mod weighted_momentum;
pub use weighted_momentum::WeightedMomentum;
pub mod rate_of_change_pct;
pub use rate_of_change_pct::RateOfChangePct;
pub mod price_level_oscillator;
pub use price_level_oscillator::PriceLevelOscillator;

pub mod gap_volatility;
pub use gap_volatility::GapVolatility;
pub mod signed_body_ratio;
pub use signed_body_ratio::SignedBodyRatio;
pub mod upper_wick_streak;
pub use upper_wick_streak::UpperWickStreak;
pub mod volume_delta_ema;
pub use volume_delta_ema::VolumeDeltaEma;
pub mod close_minus_prev_high;
pub use close_minus_prev_high::CloseMinusPrevHigh;
pub mod high_minus_prev_close;
pub use high_minus_prev_close::HighMinusPrevClose;

pub mod higher_timeframe_trend;
pub use higher_timeframe_trend::HigherTimeframeTrend;
pub mod price_spread_ratio;
pub use price_spread_ratio::PriceSpreadRatio;
pub mod volume_price_trend;
pub use volume_price_trend::VolumePriceTrend;
pub mod on_balance_volume_ma;
pub use on_balance_volume_ma::OnBalanceVolumeMA;
pub mod close_to_midrange;
pub use close_to_midrange::CloseToMidrange;
pub mod low_minus_prev_close;
pub use low_minus_prev_close::LowMinusPrevClose;
pub mod close_above_prev_low;
pub use close_above_prev_low::CloseAbovePrevLow;
pub mod close_session_bias;
pub use close_session_bias::CloseSessionBias;
pub mod close_in_range_pct;
pub use close_in_range_pct::CloseInRangePct;
pub mod gap_direction_streak;
pub use gap_direction_streak::GapDirectionStreak;
pub mod volume_cv;
pub use volume_cv::VolumeCv;
pub mod body_to_wick_ratio;
pub use body_to_wick_ratio::BodyToWickRatio;

pub mod bearish_engulfing;
pub use bearish_engulfing::BearishEngulfing;
pub mod bullish_engulfing;
pub use bullish_engulfing::BullishEngulfing;
pub mod closing_strength;
pub use closing_strength::ClosingStrength;
pub mod volume_ratio_trend;
pub use volume_ratio_trend::VolumeRatioTrend;
pub mod body_high_ratio;
pub use body_high_ratio::BodyHighRatio;
pub mod volatility_bias;
pub use volatility_bias::VolatilityBias;
pub mod body_color_streak;
pub use body_color_streak::BodyColorStreak;
pub mod high_low_symmetry;
pub use high_low_symmetry::HighLowSymmetry;
pub mod close_drawdown_from_high;
pub use close_drawdown_from_high::CloseDrawdownFromHigh;

pub mod volume_acceleration_index;
pub use volume_acceleration_index::VolumeAccelerationIndex;
