Crate indicator[][src]

Expand description

Abstractions for stream aggregation that we call “Indicator” s.

This crate provides abstractions of different levels to build indicators:

Example

use indicator::*;
use rust_decimal::Decimal;
use rust_decimal_macros::dec;
use time::macros::offset;
use arrayvec::ArrayVec;

/// Return an indicator that calculates `hl2` and `ohlc4` simultaneously.
fn hl2_ohlc4(period: Period) -> impl Operator<TickValue<Decimal>, Output = (Decimal, Decimal)> {
    tumbling(
        period,
        |_w: &ArrayVec<[Decimal; 4], 0>, y: &mut Option<[Decimal; 4]>, x| match y {
            Some(ohlc) => {
                ohlc[1] = ohlc[1].max(x);
                ohlc[2] = ohlc[2].min(x);
                ohlc[3] = x;
                *ohlc
            }
            None => {
                let ohlc = [x; 4];
                *y = Some(ohlc);
                ohlc
            }
        },
    )
    .then(facet_t(
        map_t(|ohlc: [Decimal; 4]| (ohlc[1] + ohlc[2]) / dec!(2)),
        map_t(|ohlc: [Decimal; 4]| (ohlc[0] + ohlc[1] + ohlc[2] + ohlc[3]) / dec!(4)),
    ))
    .map(|v| v.value)
}

Re-exports

pub use iter::IndicatorIteratorExt;
pub use operator::facet;
pub use operator::facet;
pub use operator::map;
pub use operator::map;
pub use operator::Operator;
pub use operator::OperatorExt;
pub use ticked::facet_t;
pub use ticked::map_t;
pub use ticked::tumbling::cached;
pub use ticked::tumbling::cached;
pub use ticked::tumbling::tumbling;
pub use ticked::tumbling::Cached;
pub use ticked::tumbling::CachedOperation;
pub use ticked::tumbling::QueueCapAtLeast;
pub use ticked::tumbling::TumblingOperation;
pub use ticked::tumbling::TumblingOperator;
pub use ticked::tumbling::TumblingQueue;
pub use ticked::TickedOperatorExt;
pub use window::Period;
pub use window::Tick;
pub use window::TickValue;
pub use window::Tickable;
pub use window::TumblingWindow;
pub use ticked::shared;
pub use ticked::SharedMap;
pub use stream::IndicatorStreamExt;

Modules

Iterator extension trait.

Operator.

Stream extension trait.

Ticked operators.

Time window.

Functions

Create an operator that apply different operators to the same input, and return the collections of outputs as its output.

Create an operator that apply different operators to the same input, and return the collections of outputs as its output.