finance-query 3.0.0

A Rust library for querying financial data
Documentation
// @generated by `cargo soothfast docs gen-tests`
// source: docs/library/commodities.md
#![allow(unused)]

// line 12: compile-only (no_run)
#[rustfmt::skip]
#[allow(dead_code)]
fn doc_block_line_12() {
    use finance_query::{Interval, Providers, TimeRange};

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        let providers = Providers::builder().build().await?;
        let gold = providers.commodity("GC=F");
        let quote = gold.quote().await?;
        let chart = gold.chart(Interval::OneDay, TimeRange::OneMonth).await?;
        let history = gold.history(TimeRange::OneMonth).await?;
        println!("{}: {:?} ({} candles)", quote.symbol, quote.price, chart.candles.len() + history.candles.len());
        Ok(())
    }
}

// line 44: compile-only (no_run)
#[cfg(feature = "fmp")]
#[rustfmt::skip]
#[allow(dead_code)]
fn doc_block_line_44() {
    use finance_query::{Capability, Provider, Providers};

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        let providers = Providers::builder()
            .route(Capability::COMMODITIES, [Provider::Fmp, Provider::Yahoo])
            .build()
            .await?;
        let gold = providers.commodity("GCUSD");
        let quote = gold.quote().await?;
        println!("Symbol: {}", quote.symbol);
        if let Some(price) = quote.price {
            println!("Price: {:.2}", price);
        }
        Ok(())
    }
}

// line 71: compile-only (no_run)
#[rustfmt::skip]
#[allow(dead_code)]
fn doc_block_line_71() {
    use finance_query::Providers;

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        let providers = Providers::builder().build().await?;
        let gold = providers.commodity("GC=F");
        let quote = gold.quote().await?;

        println!("Symbol: {}", quote.symbol);
        if let Some(name) = &quote.name {
            println!("Name: {}", name);
        }
        if let Some(price) = quote.price {
            println!("Price: {:.2}", price);
        }
        if let (Some(change), Some(pct)) = (quote.change, quote.change_percent) {
            println!("Change: {:+.2} ({:+.2}%)", change, pct);
        }
        Ok(())
    }
}

// line 98: compile-only (no_run)
#[rustfmt::skip]
#[allow(dead_code)]
fn doc_block_line_98() {
    use finance_query::{Interval, Providers, TimeRange};

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        let providers = Providers::builder().build().await?;
        let crude = providers.commodity("CL=F");
        let chart = crude.chart(Interval::OneDay, TimeRange::ThreeMonths).await?;

        println!("Symbol: {}", chart.symbol);
        println!("Candles: {}", chart.candles.len());
        for candle in chart.candles.iter().take(3) {
            println!("  t={} o={:.2} h={:.2} l={:.2} c={:.2}",
                candle.timestamp, candle.open, candle.high, candle.low, candle.close);
        }
        Ok(())
    }
}

// line 122: compile-only (no_run)
#[rustfmt::skip]
#[allow(dead_code)]
fn doc_block_line_122() {
    use finance_query::{Providers, TimeRange};

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        let providers = Providers::builder().build().await?;
        let silver = providers.commodity("SI=F");
        let history = silver.history(TimeRange::SixMonths).await?;

        println!("Symbol: {}", history.symbol);
        println!("Candles: {}", history.candles.len());
        Ok(())
    }
}

// line 142: compile-only (no_run)
#[cfg(feature = "risk")]
#[rustfmt::skip]
#[allow(dead_code)]
fn doc_block_line_142() {
    use finance_query::indicators::Indicator;
    use finance_query::{Interval, Providers, TimeRange};

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        let providers = Providers::builder().build().await?;
        let gold = providers.commodity("GC=F");

        let summary = gold.indicators(Interval::OneDay, TimeRange::ThreeMonths).await?;
        if let Some(rsi) = summary.rsi_14 {
            println!("RSI(14): {:.2}", rsi);
        }

        let rsi_21 = gold
            .indicator(Indicator::Rsi(21), Interval::OneDay, TimeRange::ThreeMonths)
            .await?;

        let risk = gold.risk(Interval::OneDay, TimeRange::OneYear).await?;
        println!("VaR 95%:      {:.2}%", risk.var_95 * 100.0);
        println!("Max Drawdown: {:.2}%", risk.max_drawdown * 100.0);
        Ok(())
    }
}