Skip to main content

tvscreener/core/
futures.rs

1// Copyright 2026 tvscreener-rs contributors
2// SPDX-License-Identifier: Apache-2.0
3
4//! [`FuturesScreener`] (`TradingView` subtype `futures`).
5//!
6//! Default futures fields and volume sort.
7
8use super::Screener;
9use crate::field::{default_futures_fields, futures_volume};
10
11/// Futures screener with asset-class defaults
12#[derive(Debug, Clone)]
13pub struct FuturesScreener {
14    inner: Screener,
15}
16
17impl FuturesScreener {
18    /// Creates a screener with default futures fields and descending volume sort.
19    pub fn new() -> Self {
20        let mut inner = Screener::new("futures");
21        inner.set_url(crate::util::get_url("futures"));
22        inner.set_all_fields_fn(default_futures_fields);
23        inner.select(default_futures_fields());
24        inner.sort_by(futures_volume().field_name, false);
25        Self { inner }
26    }
27}
28
29impl_typed_screener_common!(FuturesScreener);