47fac22230
- .claude/CLAUDE.md - .claude/commands/subagentes.md - .claude/rules/INDEX.md - .mcp.json - bash/functions/cybersecurity/analyze_dns.md - bash/functions/cybersecurity/audit_http_headers.md - bash/functions/cybersecurity/audit_ssh_config.md - bash/functions/cybersecurity/check_firewall.md - bash/functions/cybersecurity/detect_suspicious_users.md - bash/functions/cybersecurity/encrypt_file.md - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
69 lines
2.9 KiB
Markdown
69 lines
2.9 KiB
Markdown
---
|
|
name: candlestick
|
|
kind: component
|
|
lang: cpp
|
|
domain: viz
|
|
version: "1.0.0"
|
|
purity: pure
|
|
signature: "void candlestick(const char* title, const double* dates, const double* opens, const double* closes, const double* lows, const double* highs, int count, float width_percent = 0.25f, bool tooltip = true)"
|
|
description: "Renderiza un grafico de velas OHLC usando ImPlot custom rendering. Verde para velas alcistas (close >= open), rojo para bajistas."
|
|
tags: [implot, chart, visualization, gpu, candlestick, ohlc, finance, pendiente-usar]
|
|
uses_functions: []
|
|
uses_types: []
|
|
returns: []
|
|
returns_optional: false
|
|
error_type: ""
|
|
imports: [implot, imgui]
|
|
tested: false
|
|
tests: []
|
|
test_file_path: ""
|
|
file_path: "cpp/functions/viz/candlestick.cpp"
|
|
framework: imgui
|
|
params:
|
|
- name: title
|
|
desc: "Titulo del grafico, se muestra como header del plot"
|
|
- name: dates
|
|
desc: "Array de timestamps Unix o indices numericos del eje X, uno por vela"
|
|
- name: opens
|
|
desc: "Array de precios de apertura, uno por vela"
|
|
- name: closes
|
|
desc: "Array de precios de cierre, uno por vela"
|
|
- name: lows
|
|
desc: "Array de precios minimos (punta inferior del wick), uno por vela"
|
|
- name: highs
|
|
desc: "Array de precios maximos (punta superior del wick), uno por vela"
|
|
- name: count
|
|
desc: "Numero de velas (longitud de todos los arrays)"
|
|
- name: width_percent
|
|
desc: "Ancho del body de cada vela como fraccion del espacio entre puntos consecutivos (0.0-1.0, default 0.25)"
|
|
- name: tooltip
|
|
desc: "Si true, muestra tooltip con valores O/H/L/C al hacer hover sobre una vela"
|
|
output: "Renderiza el grafico de velas OHLC en el frame ImGui actual, sin retornar valor"
|
|
notes: "scaffolding/demo en primitives_gallery"
|
|
---
|
|
|
|
# candlestick
|
|
|
|
Grafico de velas OHLC completo usando custom rendering de ImPlot. Dibuja body (open-close) y wicks (high-low) por vela usando `ImPlot::GetPlotDrawList()` y `ImPlot::PlotToPixels()` para conversion de coordenadas.
|
|
|
|
Debe llamarse dentro del render callback de `fn::run_app` (o cualquier contexto con un frame ImGui activo). El eje X se configura con `ImPlotScale_Time` para timestamps Unix.
|
|
|
|
Solo tiene overload `double` porque los datos financieros requieren doble precision.
|
|
|
|
## Ejemplo
|
|
|
|
```cpp
|
|
// arrays de datos financieros (timestamps Unix, precios)
|
|
candlestick("BTC/USD", dates, opens, closes, lows, highs, 90);
|
|
|
|
// sin tooltip, velas mas anchas
|
|
candlestick("ETH/USD", dates, opens, closes, lows, highs, 30, 0.6f, false);
|
|
```
|
|
|
|
## Notas
|
|
|
|
- El ancho de cada vela se calcula como `(dates[1] - dates[0]) * width_percent * 0.5` en cada lado. Asume spacing uniforme entre velas.
|
|
- Para un solo punto (`count == 1`) el spacing por defecto es 1.0.
|
|
- La deteccion de hover usa un margen de 4px alrededor del area cuerpo+wick para facilitar la interaccion.
|
|
- El eje X usa `ImPlotScale_Time` — si los datos son indices numericos simples (0, 1, 2...) en lugar de timestamps, pasar `ImPlotAxisFlags_NoDecorations` o cambiar `SetupAxisScale`.
|