⎇ d1ce4c89706fc7c9456d7b28e4b9f98d85a5921a
crates/modules/ui_engine/widgets/lapaloma-financial/src/lib.rs
Historia
Quién tocó qué
crudo
feat(lapaloma-financial): OHLC + candlesticks con preserva-volatilidad
1//! `lapaloma-financial` — OHLC y candlesticks.
2//!
3//! Layout del buffer: 6 floats por bar `[t, o, h, l, c, v]` (time,
4//! open, high, low, close, volume). Mismo principio P1 del doc
5//! canónico: array plano, sin objetos por bar.
6//!
7//! Aggregation (sección 3.2 del ARCHITECTURE.md):
8//! - **Time bucketing** (no index bucketing) para que weekends /
9//! holidays no colapsen la rate.
10//! - `open` = primero del bucket, `close` = último, `high` = max,
11//! `low` = min, `volume` = sum.
12//! - **Preserva volatilidad** — LTTB caería los wicks; estos los
13//! conserva por construcción.
14//!
15//! Render: dos batches separados — barras alcistas (close > open,
16//! verdes) y bajistas (close < open, rojas). v0.1 emite un quad
17//! por body + un line por wick (≈ 2 draw calls por bar; aceptable
18//! hasta ~500 bars on-screen). Optimización futura: agrupar
19//! N bodies en un solo PathBuilder fill.
20
21#![forbid(unsafe_code)]
22#![allow(dead_code)]
23
24pub mod ohlc_buffer;
25pub mod aggregate;
26
27#[cfg(feature = "gpui")]
28pub mod candlestick;
29
30#[cfg(feature = "gpui")]
31pub mod element;
32
33pub use ohlc_buffer::{Bar, OhlcBuffer};
34pub use aggregate::aggregate_time_bucketed;
35
36#[cfg(feature = "gpui")]
37pub use candlestick::{paint_candlesticks, CandlestickStyle};
38
39#[cfg(feature = "gpui")]
40pub use element::{lapaloma_candlestick, LapalomaCandlestickElement};