PINE LIBRARY
업데이트됨 CyberVisLib

# CyberVisLib v5
CyberVisLib provides rendering and visualization utilities for multi-oscillator indicators: color blending, sub-pane management, diagnostic tables, and tooltip formatting. Pure visualization layer—no market logic.
## What it does
Delivers four capabilities: color utilities (RGB blending, diverging/sequential gradients, confidence-to-transparency), sub-pane management (vertical space allocation for multiple oscillators), diagnostic tables (key-value pairs, dynamic coloring), and tooltip formatting. Stack RSI, MACD, Stochastic in non-overlapping vertical bands.
Outputs color values, MiniSubPane structs (band coordinates), table objects, formatted strings. All stateless, rendering-focused.
## How it works
Color blending: `RGB_out = (1-t)×RGB_a + t×RGB_b`. Diverging gradients split at zero (negative→red-yellow, positive→yellow-green). Transparency: `90 - 60×confidence`.
Sub-pane management:
1. Register oscillators (MiniOscMeta)
2. Finalize layout (STACK_TOP/BOTTOM/EQUAL_SPLIT policies)
3. Map values: `pane.band_y(unit_val)` converts [0,1] to vertical coordinate
Diagnostic tables: key-value pairs, multi-column grids, conditional formatting.
## Why this is original
Only TradingView library with complete rendering toolkit. Existing libraries mix rendering with market logic.
Unique features:
- Sub-pane vertical allocation (automatic band calculation)
- Lightweight UDT variants (co-import with OscLib)
- Diverging gradients with zero-centering
- Confidence-to-transparency mapping
- Regime color enum (consistent color mapping)
Separation of concerns: VisLib (rendering), NumLib (math), SignalLib (signals).
## How to use it
```pine
//version=6
indicator("CyberVisLib Demo", overlay=false)
import cybermediaboy/CyberVisLib/5 as VL
// Diverging gradient
rsi = ta.rsi(close, 14)
z_rsi = (rsi - 50.0) / 25.0
color rsi_color = VL.f_diverging_rgyg(z_rsi)
plot(rsi, "RSI", color=rsi_color)
// Sub-pane management
var spm = VL.f_subpane_manager_new(VL.SubPanePolicy.EQUAL_SPLIT, 5.0)
if barstate.isfirst
spm.register(VL.f_meta_unipolar0100("rsi", "RSI", color.blue))
spm.register(VL.f_meta_bipolar("macd", "MACD", color.orange))
spm.finalize()
var pane_rsi = array.get(spm.panes, 0)
rsi_y = pane_rsi.band_y(pane_rsi.meta.to_unit(rsi))
plot(rsi_y, "RSI Pane", color.blue)
// Confidence transparency
conf = math.abs(rsi - 50.0) / 50.0
bgcolor(color.new(color.green, VL.f_transp(conf)))
```
## Key functions
- `f_blend()` - RGB color blending
- `f_diverging_rgyg()` - Diverging gradient (zero-centered)
- `f_transp()` - Confidence-to-transparency mapping
- `f_subpane_manager_new()` - Sub-pane allocation
- `f_regime_color()` - Regime color enum
- `f_kv_tooltip()` - Tooltip formatting
## Limitations
- Sub-pane allocation static after finalize
- RGB-only blending (no HSL/HSV)
- No automatic label/line cleanup
- Tables require manual cell updates
- Assumes `overlay=false` (separate pane indicators only)
CyberVisLib provides rendering and visualization utilities for multi-oscillator indicators: color blending, sub-pane management, diagnostic tables, and tooltip formatting. Pure visualization layer—no market logic.
## What it does
Delivers four capabilities: color utilities (RGB blending, diverging/sequential gradients, confidence-to-transparency), sub-pane management (vertical space allocation for multiple oscillators), diagnostic tables (key-value pairs, dynamic coloring), and tooltip formatting. Stack RSI, MACD, Stochastic in non-overlapping vertical bands.
Outputs color values, MiniSubPane structs (band coordinates), table objects, formatted strings. All stateless, rendering-focused.
## How it works
Color blending: `RGB_out = (1-t)×RGB_a + t×RGB_b`. Diverging gradients split at zero (negative→red-yellow, positive→yellow-green). Transparency: `90 - 60×confidence`.
Sub-pane management:
1. Register oscillators (MiniOscMeta)
2. Finalize layout (STACK_TOP/BOTTOM/EQUAL_SPLIT policies)
3. Map values: `pane.band_y(unit_val)` converts [0,1] to vertical coordinate
Diagnostic tables: key-value pairs, multi-column grids, conditional formatting.
## Why this is original
Only TradingView library with complete rendering toolkit. Existing libraries mix rendering with market logic.
Unique features:
- Sub-pane vertical allocation (automatic band calculation)
- Lightweight UDT variants (co-import with OscLib)
- Diverging gradients with zero-centering
- Confidence-to-transparency mapping
- Regime color enum (consistent color mapping)
Separation of concerns: VisLib (rendering), NumLib (math), SignalLib (signals).
## How to use it
```pine
//version=6
indicator("CyberVisLib Demo", overlay=false)
import cybermediaboy/CyberVisLib/5 as VL
// Diverging gradient
rsi = ta.rsi(close, 14)
z_rsi = (rsi - 50.0) / 25.0
color rsi_color = VL.f_diverging_rgyg(z_rsi)
plot(rsi, "RSI", color=rsi_color)
// Sub-pane management
var spm = VL.f_subpane_manager_new(VL.SubPanePolicy.EQUAL_SPLIT, 5.0)
if barstate.isfirst
spm.register(VL.f_meta_unipolar0100("rsi", "RSI", color.blue))
spm.register(VL.f_meta_bipolar("macd", "MACD", color.orange))
spm.finalize()
var pane_rsi = array.get(spm.panes, 0)
rsi_y = pane_rsi.band_y(pane_rsi.meta.to_unit(rsi))
plot(rsi_y, "RSI Pane", color.blue)
// Confidence transparency
conf = math.abs(rsi - 50.0) / 50.0
bgcolor(color.new(color.green, VL.f_transp(conf)))
```
## Key functions
- `f_blend()` - RGB color blending
- `f_diverging_rgyg()` - Diverging gradient (zero-centered)
- `f_transp()` - Confidence-to-transparency mapping
- `f_subpane_manager_new()` - Sub-pane allocation
- `f_regime_color()` - Regime color enum
- `f_kv_tooltip()` - Tooltip formatting
## Limitations
- Sub-pane allocation static after finalize
- RGB-only blending (no HSL/HSV)
- No automatic label/line cleanup
- Tables require manual cell updates
- Assumes `overlay=false` (separate pane indicators only)
릴리즈 노트
v2Added:
f_feat_importance_new(pos_str, n_feat, n_quality, n_meta, show_lower)
Create new Feature Importance Table
Parameters:
pos_str (string): position string: "top_left", "top_right", "bottom_left", "bottom_right"
n_feat (int): number of feature rows (e.g., 6 for WickID, 8 for CMD)
n_quality (int): number of quality metric rows (e.g., 3 for WickQ/EffQ/BE%, 5 for +Stop%+MedR)
n_meta (int): number of metadata rows (e.g., 4 for Mode/Rows/RowSz/Upd)
show_lower (bool): true for dual-model (U/L), false for single-model
method header(fit)
Render header row — parametric based on show_lower
Namespace types: FeatureImportanceTable
Parameters:
fit (FeatureImportanceTable)
method quality_row(fit, row_idx, name, val_u, val_l, thresholds, higher_is_better)
Render quality metric row with color-coded value — parametric
Namespace types: FeatureImportanceTable
Parameters:
fit (FeatureImportanceTable)
row_idx (int): row index (0-based, within quality section, 0..n_quality-1)
name (string): metric name (e.g., "WickQ", "EffQ")
val_u (float): upper model value (na if show_lower=false and single-model)
val_l (float): lower model value (ignored if show_lower=false)
thresholds (array<float>): array of 4 threshold values for color bands [excellent, good, fair, poor]
higher_is_better (bool): if true, higher values get better colors (lime/green)
method feature_row(fit, feat_idx, name, w_u, w_l, is_g6)
Render feature weight row — parametric
Namespace types: FeatureImportanceTable
Parameters:
fit (FeatureImportanceTable)
feat_idx (int): feature index (0-based, 0..n_feat-1)
name (string): feature name/abbreviation
w_u (float): upper model weight
w_l (float): lower model weight (ignored if show_lower=false)
is_g6 (bool): if true, invert color logic (G6: negative=good for upper)
method metadata_row(fit, meta_idx, label, val_u, val_l)
Render metadata row — parametric
Namespace types: FeatureImportanceTable
Parameters:
fit (FeatureImportanceTable)
meta_idx (int): metadata row index (0-based, 0..n_meta-1)
label (string): label text
val_u (string): upper model value
val_l (string): lower model value (na for single-value rows, ignored if show_lower=false)
method feature_row_single(fit, feat_idx, name, weight, is_g6)
Render single-model feature row (convenience wrapper for single-model indicators)
Namespace types: FeatureImportanceTable
Parameters:
fit (FeatureImportanceTable)
feat_idx (int): feature index
name (string): feature name
weight (float): model weight
is_g6 (bool): invert color logic
method quality_row_single(fit, row_idx, name, val, thresholds, higher_is_better)
Render single-model quality row (convenience wrapper)
Namespace types: FeatureImportanceTable
Parameters:
fit (FeatureImportanceTable)
row_idx (int)
name (string)
val (float)
thresholds (array<float>)
higher_is_better (bool)
FeatureImportanceTable
FeatureImportanceTable — renders feature weights with heatmap coloring
Fields:
tbl (series table): Pine Script table object
n_feat (series int): number of feature rows to display
n_quality (series int): number of quality metric rows before features
n_meta (series int): number of metadata rows after features
show_lower (series bool): if false, hides lower-model columns (single-model mode)
cols (series int): column count (2=single-model, 3=dual-model)
릴리즈 노트
v3Updated:
method quality_row(fit, row_idx, name, val_u, val_l, thresholds, higher_is_better, tooltip)
Render quality metric row with color-coded value — parametric
Namespace types: FeatureImportanceTable
Parameters:
fit (FeatureImportanceTable)
row_idx (int): row index (0-based, within quality section, 0..n_quality-1)
name (string): metric name (e.g., "WickQ", "EffQ")
val_u (float): upper model value (na if show_lower=false and single-model)
val_l (float): lower model value (ignored if show_lower=false)
thresholds (array<float>): array of 4 threshold values for color bands [excellent, good, fair, poor]
higher_is_better (bool): if true, higher values get better colors (lime/green)
tooltip (string): optional tooltip text for the row label cell (default "")
파인 라이브러리
트레이딩뷰의 진정한 정신에 따라, 작성자는 이 파인 코드를 오픈소스 라이브러리로 게시하여 커뮤니티의 다른 파인 프로그래머들이 재사용할 수 있도록 했습니다. 작성자에게 경의를 표합니다! 이 라이브러리는 개인적으로 사용하거나 다른 오픈소스 게시물에서 사용할 수 있지만, 이 코드의 게시물 내 재사용은 하우스 룰에 따라 규제됩니다.
면책사항
해당 정보와 게시물은 금융, 투자, 트레이딩 또는 기타 유형의 조언이나 권장 사항으로 간주되지 않으며, 트레이딩뷰에서 제공하거나 보증하는 것이 아닙니다. 자세한 내용은 이용 약관을 참조하세요.
파인 라이브러리
트레이딩뷰의 진정한 정신에 따라, 작성자는 이 파인 코드를 오픈소스 라이브러리로 게시하여 커뮤니티의 다른 파인 프로그래머들이 재사용할 수 있도록 했습니다. 작성자에게 경의를 표합니다! 이 라이브러리는 개인적으로 사용하거나 다른 오픈소스 게시물에서 사용할 수 있지만, 이 코드의 게시물 내 재사용은 하우스 룰에 따라 규제됩니다.
면책사항
해당 정보와 게시물은 금융, 투자, 트레이딩 또는 기타 유형의 조언이나 권장 사항으로 간주되지 않으며, 트레이딩뷰에서 제공하거나 보증하는 것이 아닙니다. 자세한 내용은 이용 약관을 참조하세요.