pub struct Rsi { /* private fields */ }Expand description
Relative Strength Index with a smoothed line, a signal line and a slower context line.
The raw RSI averages the up and down moves of the close over rsi_len changes — Wilder’s way
by default, exponentially under RsiSmoothing::Ema — and is 100 - 100 / (1 + up / down),
with 50 when nothing moved, 100 without down moves and 0 without up moves.
value is not that raw RSI. It is the line: an Ema(avg_len) over the raw RSI with the
first-sample seed of the shared Ema, clamped to 0..=100. With the registry default
avg_len = 3 the published RSI lags and deviates from the raw figure; avg_len = 1 gives the
raw RSI itself.
extra["signal"]: Ema(sig_len) over the line. extra["ctx"]: the same construction over
ctx_len changes (default 100), present once that many changes exist; divergences are judged
between line and context. Alerts fire on line/signal crosses (inside the extreme zones when
require_extreme_zone is set), on crosses of mid_line and on divergences.
First output: once rsi_len changes exist, i.e. with the rsi_len + 1-th bar.
Indicator::reset clears all averages.
Implementations§
Source§impl Rsi
impl Rsi
pub fn new( rsi_len: usize, avg_len: usize, sig_len: usize, mid_line: f64, overbought: f64, oversold: f64, lookback_extreme: usize, require_extreme_zone: bool, ctx_len: usize, div_len: usize, div_min: f64, ) -> Self
pub fn with_defaults() -> Self
pub fn with_period(rsi_len: usize) -> Self
Sourcepub fn with_smoothing(self, method: RsiSmoothing) -> Self
pub fn with_smoothing(self, method: RsiSmoothing) -> Self
Selects how the up/down moves are smoothed; see RsiSmoothing.
Additive to the existing constructors, which keep the Wilder default. The choice applies
to the main line and the context line — each with its own period (rsi_len/ctx_len) —
so the divergence comparison is never between two differently smoothed series.
Resets the smoothing state, so this belongs before the first bar, not mid-series.
pub fn smoothing(&self) -> RsiSmoothing
Trait Implementations§
Source§impl Indicator for Rsi
impl Indicator for Rsi
fn name(&self) -> &str
fn warmup_period(&self) -> usize
fn on_bar(&mut self, bar: &Bar) -> Option<IndicatorOutput>
fn reset(&mut self)
fn alerts(&self) -> Vec<IndicatorAlert>
Source§fn on_checked_bar(
&mut self,
bar: &Bar,
) -> Result<Option<IndicatorOutput>, BarValidationError>
fn on_checked_bar( &mut self, bar: &Bar, ) -> Result<Option<IndicatorOutput>, BarValidationError>
Indicator::on_bar.