finance-query 3.2.0

A Rust library for querying financial data
Documentation
// @generated by `cargo soothfast docs gen-tests`
// source: docs/library/indicators.md line 305
#[cfg(feature = "indicators")]
fn main() {
    use finance_query::indicators::patterns;

    // Deterministic synthetic candles — `Candle` is #[non_exhaustive] outside
    // the crate, so construct via serde. With live data: chart.candles.
    fn synthetic_candles(n: usize) -> Vec<finance_query::Candle> {
        let mut prev = 100.0_f64;
        (0..n)
            .map(|i| {
                let close = 100.0 + (i as f64 / 3.0).sin() * 6.0 + (i as f64 / 17.0).cos() * 2.0;
                let open = prev;
                prev = close;
                serde_json::from_value(serde_json::json!({
                    "timestamp": 1_700_000_000_i64 + i as i64 * 86_400,
                    "open": open,
                    "high": open.max(close) + 0.5,
                    "low": open.min(close) - 0.5,
                    "close": close,
                    "volume": 1_000_000_i64,
                    "adjClose": close,
                }))
                .unwrap()
            })
            .collect()
    }

    let candles = synthetic_candles(1000);

    // Equivalent to `chart.patterns()` on a fetched chart
    let signals = patterns(&candles);

    // Output is always aligned: one Option<CandlePattern> slot per candle
    assert_eq!(signals.len(), candles.len());

    // Each slot is Some(pattern) or None; iterate with candles for context
    for (candle, pattern) in candles.iter().zip(signals.iter()).take(60) {
        if let Some(p) = pattern {
            println!(
                "timestamp={}: {:?} ({:?})",
                candle.timestamp,
                p,
                p.sentiment()
            );
        }
    }
}

#[cfg(not(feature = "indicators"))]
fn main() {}