Skip to main content

AdvancedZigZagEngine

Struct AdvancedZigZagEngine 

Source
pub struct AdvancedZigZagEngine { /* private fields */ }
Expand description

Advanced ZigZag engine with backstep, ATR-mode deviation, and explicit confirmation status.

Over the last 2 · depth + 1 bars the middle bar is a pivot high when no other high is above its own and a pivot low when no other low is below its own; ties count, and one bar can be both. A pivot of the same kind as the running (unconfirmed) node — or the very first pivot — extends the leg: the running node moves to it if it is more extreme, and a first pivot starts one. A pivot of the other kind confirms the running node and starts a new running node at its own price, once its change from the running node reaches the deviation threshold and the pivot bar lies at least backstep bars after the pivot bar of the last confirmation (checked once per bar, before either pivot is applied). Each confirmation raises a zigzag_pivot_confirmed alert.

In ZigZagDeviationMode::Percent the relative change |price - running| / |running| must reach pct / 100. In ZigZagDeviationMode::AtrMultiple the price distance |price - running| must reach mult · ATR, a Wilder ATR of the true range over atr_len as of the current bar; nothing confirms before the ATR exists.

value: the price of the newest node, or the middle bar’s close before any; state: "running" while the newest node is unconfirmed, "confirmed" otherwise. First output with bar 2 · depth + 1.

Implementations§

Source§

impl AdvancedZigZagEngine

Source

pub fn new( depth: usize, backstep: usize, deviation: ZigZagDeviationMode, atr_len: usize, ) -> Self

Source

pub fn with_defaults() -> Self

Source

pub fn nodes(&self) -> &[ZigZagNode]

Confirmed swing history, oldest first.

Source

pub fn current_leg(&self) -> Option<&ZigZagNode>

The still-forming leg’s current extreme, if any (may not yet be in Self::nodes or may be the unconfirmed last entry there).

Source

pub fn reduce(nodes: &[ZigZagNode], deviation_pct: f64) -> Vec<ZigZagNode>

Recursively re-simplifies an already-reduced node sequence at a coarser deviation threshold, the “dual-/recursive levels” swing-degree technique: apply the same alternating-extreme simplification to the higher-degree input instead of raw bars.

Source

pub fn project_to_timeframe( nodes: &[ZigZagNode], target_tf: Timeframe, utc_offset_seconds: i32, ) -> Vec<ZigZagNode>

Projects a node sequence onto a higher timeframe’s bucket grid, keeping only the most extreme high/low node per bucket per side — the confirmed HTF-equivalent swing points an LTF zigzag implies.

Trait Implementations§

Source§

impl Indicator for AdvancedZigZagEngine

Source§

fn name(&self) -> &str

Source§

fn warmup_period(&self) -> usize

Source§

fn reset(&mut self)

Source§

fn on_bar(&mut self, bar: &Bar) -> Option<IndicatorOutput>

Source§

fn alerts(&self) -> Vec<IndicatorAlert>

Source§

fn on_checked_bar( &mut self, bar: &Bar, ) -> Result<Option<IndicatorOutput>, BarValidationError>

Validates a bar before forwarding it to Indicator::on_bar.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.