Skip to main content

tvscreener/core/
coin.rs

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