acttrader-charts 1.4.0-beta.6 → 1.4.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -206,6 +206,9 @@ const chart = new ChartEngine({
206
206
  await chart.addCompare('MSFT');
207
207
  chart.removeCompare('MSFT');
208
208
  chart.clearCompares();
209
+ // Open the built-in picker from your own header (the engine's Compare button
210
+ // lives in the advanced header only):
211
+ chart.openComparePicker();
209
212
  chart.getCompares(); // [{ symbol, color, status }]
210
213
 
211
214
  // Events
@@ -1384,6 +1387,7 @@ chart.on('dataLoaded', ({ timeframe, interval, start, end, priceSource }) =>
1384
1387
  chart.on('newBar', ({ completedBar, openingBar, intervalMs }) => {});
1385
1388
  chart.on('indicatorAdded', ({ instanceId, shortName, params }) => {}); // a study instance was added — keep instanceId to remove it later
1386
1389
  chart.on('indicatorRemoved', ({ instanceId, shortName }) => {});
1390
+ chart.on('indicatorLimitReached', ({ shortName, maxSubPanes }) => {});
1387
1391
  chart.on('stateChange', ({ symbol, state }) => {
1388
1392
  // Fires after every user-driven config change (timeframe, series, theme,
1389
1393
  // indicators, drawings, volume). `state` is a full serializable snapshot.
@@ -1888,9 +1892,33 @@ The existing `anchoredVP` *drawing tool* is a different thing: its bar heights
1888
1892
  come from a hardcoded bell curve, not from the feed.
1889
1893
 
1890
1894
  **`maxSubPanes` caps concurrent sub-pane indicators.** Most of these 78 live in
1891
- their own pane, so adding many at once silently stops at the cap. Raise
1895
+ their own pane, so adding one past the cap is refused: the chart shows a short
1896
+ notice and emits `indicatorLimitReached` `{ shortName, maxSubPanes }`. Raise
1892
1897
  `maxSubPanes` if you need more on screen together.
1893
1898
 
1899
+ ```ts
1900
+ chart.on('indicatorLimitReached', ({ shortName, maxSubPanes }) => {
1901
+ console.warn(`${shortName} not added: ${maxSubPanes} sub-panes in use`);
1902
+ });
1903
+ ```
1904
+
1905
+ **Compare-based studies say what they need.** Correlation Coefficient,
1906
+ Correlation - Log, Ratio and Spread need one Compare symbol and Advance/Decline
1907
+ needs two. Until then their pane shows *"Click Compare in the chart header to add a symbol for this
1908
+ indicator"* instead of staying blank, and they fill in as soon as the compare
1909
+ loads.
1910
+
1911
+ **Bars without volume become gaps.** Volume studies (Volume, OBV, A/D, MFI, CMF,
1912
+ VWAP, EOM, EFI, Klinger, Volume Oscillator, Net Volume, PVT, Chaikin Oscillator)
1913
+ draw nothing on bars whose feed sent no volume (missing or 0). The line ends at
1914
+ the last bar with volume instead of going flat or reading MFI 100, and a pane with
1915
+ no volume in view says *"No volume data from the feed for these bars"*.
1916
+
1917
+ **52 Week High/Low** covers 52 weeks of time on every timeframe, or all the
1918
+ loaded history when that is shorter. **Zig Zag** always draws its latest leg,
1919
+ even when no swing has reached the deviation yet. Large sub-pane axis values are
1920
+ shortened (1.83M, -45.6B).
1921
+
1894
1922
  ### Native wrapper parity
1895
1923
 
1896
1924
  All 78 are reachable through the existing `addIndicator` bridge command by short
@@ -2280,8 +2308,10 @@ Two details worth knowing:
2280
2308
  | Long press | Shows the crosshair |
2281
2309
 
2282
2310
  Once the view has moved away from its default, a round **Reset view** button
2283
- appears just above the time axis. It is shown even when `showUI: false`, so a
2284
- bare chart with no toolbar always has a way back. No configuration is needed.
2311
+ appears just above the time axis. It is part of the built-in UI, so it is not
2312
+ shown when `showUI: false` (the usual iOS / Android setup, where the app draws
2313
+ its own controls). On a bare chart, double tap the price axis or call
2314
+ `resetView()` to bring the view back.
2285
2315
 
2286
2316
  ### Value tooltip on long press
2287
2317
 
@@ -2325,6 +2325,13 @@ interface IIndicator {
2325
2325
  readonly pane?: "main" | "sub";
2326
2326
  readonly paneHeight?: number;
2327
2327
  compute(data: OHLCVBar[], context?: IndicatorComputeContext): IndicatorResult[];
2328
+ /**
2329
+ * True for studies built on bar volume (Volume, OBV, MFI, …). The engine
2330
+ * blanks their output on bars whose feed sent no volume (missing or 0), so
2331
+ * a feed that stops sending volume ends the line there instead of drawing a
2332
+ * flat line or a meaningless reading such as MFI 100.
2333
+ */
2334
+ readonly usesVolume?: boolean;
2328
2335
  /**
2329
2336
  * Returns the natural value range for the given results.
2330
2337
  * Used to render a price axis on the right side of sub-panes and to support draggable Y-scale.
@@ -3076,6 +3083,14 @@ type ChartEventMap = {
3076
3083
  shortName: string;
3077
3084
  params: IndicatorParams;
3078
3085
  };
3086
+ /**
3087
+ * Emitted when an indicator is refused because every sub-pane slot is in
3088
+ * use (`maxSubPanes`, default 3). The chart also shows a short notice.
3089
+ */
3090
+ indicatorLimitReached: {
3091
+ shortName: string;
3092
+ maxSubPanes: number;
3093
+ };
3079
3094
  /** Emitted after an indicator instance is removed (pill ×, settings dialog, or `removeIndicator`). */
3080
3095
  indicatorRemoved: {
3081
3096
  instanceId: string;
@@ -3617,6 +3632,15 @@ declare function mapSeries(a: Series, fn: (x: number, i: number) => number | nul
3617
3632
  /** Cumulative running sum, null-propagating from the first defined value. */
3618
3633
  declare function cumulative(values: Series): Series;
3619
3634
 
3635
+ /**
3636
+ * Writes a one-line notice in the middle of a pane that has nothing to draw.
3637
+ *
3638
+ * An empty pane with only a label looks like a bug; saying why it is empty
3639
+ * (no compare symbol, no volume from the feed) tells the user what to do.
3640
+ */
3641
+ declare function drawPaneHint(ctx: CanvasRenderingContext2D, text: string, chartHeight: number, color?: string): void;
3642
+ /** True when no result carries a value in `field` — the study drew nothing. */
3643
+ declare function allEmpty(results: readonly IndicatorResult[], field?: 'value'): boolean;
3620
3644
  /** One plotted line: where to read it from a result, and how to draw it. */
3621
3645
  interface LineSpec {
3622
3646
  /** Which field of `IndicatorResult` carries this line. */
@@ -3683,6 +3707,13 @@ declare abstract class HistogramIndicatorBase extends LineIndicatorBase {
3683
3707
  protected baseline(): number;
3684
3708
  /** Which field drives the bars. */
3685
3709
  protected barField(): 'value' | 'histogram';
3710
+ /**
3711
+ * The bars must count toward the range. Subclasses that draw only bars
3712
+ * declare no lines, so the line-only range collapsed to the baseline guide
3713
+ * and fell back to a fixed −1…1 axis, flattening the Accelerator and
3714
+ * clipping Net Volume.
3715
+ */
3716
+ getValueRange(results: IndicatorResult[]): PriceRange;
3686
3717
  render(ctx: CanvasRenderingContext2D, results: IndicatorResult[], scale: ScaleManager, viewport: Viewport, chartHeight: number, rangeOverride?: PriceRange): void;
3687
3718
  }
3688
3719
  /** Packs aligned series into the `IndicatorResult[]` shape the engine renders. */
@@ -3813,6 +3844,13 @@ interface IndicatorDef {
3813
3844
  /** Only one instance makes sense (e.g. a single volume pane). */
3814
3845
  singleInstance?: boolean;
3815
3846
  }
3847
+ /**
3848
+ * Indicator short names that need bar volume. The indicator menus disable
3849
+ * them when the loaded bars carry none, since they would draw nothing.
3850
+ */
3851
+ declare const VOLUME_STUDIES: ReadonlySet<string>;
3852
+ /** Tooltip on a volume study the menu has disabled. */
3853
+ declare const NO_VOLUME_TITLE = "Not available: this symbol's chart data has no volume";
3816
3854
  /** A period field. Shared so every indicator agrees on sane bounds. */
3817
3855
  declare const periodField: (def: number, key?: string, label?: string, max?: number) => ParamFieldDef;
3818
3856
  /** A colour field. */
@@ -3903,4 +3941,4 @@ declare class MACD implements IIndicator {
3903
3941
  render(ctx: CanvasRenderingContext2D, results: IndicatorResult[], scale: ScaleManager, viewport: Viewport, paneHeight: number, rangeOverride?: PriceRange): void;
3904
3942
  }
3905
3943
 
3906
- export { type ChartMiscLabels as $, type AccountSpec as A, type BarColorSource as B, type ChartTheme as C, type Duration as D, type PositionLevel as E, type AnyLevel as F, type DrawingPoint as G, type DrawingHandle as H, type IIndicator as I, type DrawingRenderContext as J, type Tick as K, type LayoutSyncState as L, type StreamStatus as M, type ActiveIndicatorState as N, type OHLCVBar as O, type PriceScaleMode as P, BollingerBands as Q, type ResolvedInstrument as R, type SeriesType as S, type Timeframe as T, type BottomBarColors as U, type Viewport as V, type BottomBarLabels as W, type BottomBarUiConfig as X, type BoxSizeMode as Y, type CanvasColorSettings as Z, type ChartLabels as _, type ChartConfig as a, type TransformedBarMeta as a$, type ChartThemeUi as a0, type CrosshairUiConfig as a1, DARK_THEME as a2, DEFAULT_BOTTOM_BAR_CONFIG as a3, DEFAULT_CROSSHAIR_CONFIG as a4, DEFAULT_DRAWING_TOOLBAR_CONFIG as a5, DEFAULT_INDICATOR_OVERLAY_CONFIG as a6, DEFAULT_LABELS as a7, DEFAULT_LAYOUT_SYNC as a8, DEFAULT_PRICE_AXIS_CONFIG as a9, PRESET_COUNTS as aA, PRESET_LABEL as aB, PRICE_TRANSFORM_SERIES as aC, type Padding as aD, type PendingOrderLevel as aE, type PnlPillConfig as aF, type PnlPillLabels as aG, type PointFigureOptions as aH, type PositionRenderStyle as aI, type PriceAxisUiConfig as aJ, RSI as aK, type RenkoOptions as aL, SMA as aM, type SavedLayoutPane as aN, type Series as aO, type Source as aP, type Theme as aQ, type ThemeOverrides as aR, type TimeAxisUiConfig as aS, type TopBarColors as aT, type TopBarUiConfig as aU, type TradeButtonUiConfig as aV, type TradeDisplayFilter as aW, type TradeLabels as aX, type TradeLevel as aY, type TradeLevelColors as aZ, type TradePanelColors as a_, DEFAULT_TIME_AXIS_CONFIG as aa, DEFAULT_TOP_BAR_CONFIG as ab, DEFAULT_TRADE_BUTTON_CONFIG as ac, DEFAULT_UI_CONFIG as ad, type DataLoaderParams as ae, type DeepPartial$1 as af, type DeepPartialChartTheme as ag, type DialogLabels as ah, type DrawingToolbarColors as ai, type DrawingToolbarLabels as aj, type DrawingToolbarUiConfig as ak, EMA as al, EXTRA_INDICATORS as am, type IndicatorComputeContext as an, type IndicatorDef as ao, type IndicatorOverlayColors as ap, type IndicatorOverlayUiConfig as aq, type IndicatorStateEntry as ar, type KagiOptions as as, LAYOUT_PRESETS as at, LIGHT_THEME as au, type LayoutPreset as av, type LineBreakOptions as aw, MACD as ax, type OrderSubmit as ay, PRESETS_BY_COUNT as az, type IndicatorParams as b, stdev as b$, type TransformedSeries as b0, type UiConfig as b1, alma as b2, atr as b3, atrValue as b4, captureIndicatorTemplate as b5, captureLayout as b6, captureSettingsTemplate as b7, change as b8, cloneSettings as b9, lsma as bA, makeLayoutId as bB, makeSettingsTemplateId as bC, makeTemplateId as bD, mcginley as bE, methodField as bF, numField as bG, periodField as bH, registerCustomPreset as bI, removeLayout as bJ, removeSettingsTemplate as bK, removeTemplate as bL, resolveBoxSize as bM, resolveCssVarsInTheme as bN, resolveInstrument as bO, resolveLabels as bP, resolveUiConfig as bQ, rma as bR, rocPct as bS, sanitizeLayouts as bT, sanitizeSettingsTemplates as bU, sanitizeTemplates as bV, sma as bW, sourceField as bX, sourceSeries as bY, sourceValue as bZ, standardError as b_, colorField as ba, correlation as bb, cumulative as bc, deepMergeTheme as bd, dema as be, ema as bf, extraIndicatorOptions as bg, extraIndicatorPresets as bh, extraIndicatorSchemas as bi, extraSingleInstance as bj, findLayout as bk, findSettingsTemplate as bl, findTemplate as bm, formatDuration as bn, formatVolume as bo, getAllPresets as bp, getCustomPresets as bq, getPreset as br, hammingMa as bs, highest as bt, hma as bu, inferPipSize as bv, isPriceTransformSeries as bw, linregAt as bx, linregSlope as by, lowest as bz, type IndicatorTemplate as c, tema as c0, toKagi as c1, toLineBreak as c2, toMoney as c3, toPips as c4, toPointFigure as c5, toRenko as c6, trueRange as c7, unregisterCustomPreset as c8, upsertLayout as c9, upsertSettingsTemplate as ca, upsertTemplate as cb, vwma as cc, wma as cd, type PriceSource as ce, HistogramIndicatorBase as cf, type LineSpec as cg, type GuideLevel as ch, LineIndicatorBase as ci, type MaMethod as cj, BandIndicatorBase as ck, AdaptiveMA as cl, MaChannel as cm, MovingAverage as cn, MultiMA as co, applyMa as cp, combine as cq, mapSeries as cr, toResults as cs, type ChartEventMap as d, type CursorMode as e, type ChartState as f, type InstrumentSpec as g, type StatusLineSettings as h, type ScalesSettings as i, type CanvasOptions as j, type DrawingToolType as k, type SerializedDrawing as l, type IDrawing as m, type AnyDrawingStyle as n, type IWebSocketAdapter as o, type TradeLevelType as p, type SavedLayout as q, type ChartSettingsSnapshot as r, type ChartSettingsTemplate as s, type TopBarLabels as t, type OhlcLabels as u, type CrosshairPosition as v, type PriceRange as w, ScaleManager as x, type SidePanelLabels as y, type IndicatorResult as z };
3944
+ export { type ChartMiscLabels as $, type AccountSpec as A, type BarColorSource as B, type ChartTheme as C, type Duration as D, type PositionLevel as E, type AnyLevel as F, type DrawingPoint as G, type DrawingHandle as H, type IIndicator as I, type DrawingRenderContext as J, type Tick as K, type LayoutSyncState as L, type StreamStatus as M, type ActiveIndicatorState as N, type OHLCVBar as O, type PriceScaleMode as P, BollingerBands as Q, type ResolvedInstrument as R, type SeriesType as S, type Timeframe as T, type BottomBarColors as U, type Viewport as V, type BottomBarLabels as W, type BottomBarUiConfig as X, type BoxSizeMode as Y, type CanvasColorSettings as Z, type ChartLabels as _, type ChartConfig as a, type TradePanelColors as a$, type ChartThemeUi as a0, type CrosshairUiConfig as a1, DARK_THEME as a2, DEFAULT_BOTTOM_BAR_CONFIG as a3, DEFAULT_CROSSHAIR_CONFIG as a4, DEFAULT_DRAWING_TOOLBAR_CONFIG as a5, DEFAULT_INDICATOR_OVERLAY_CONFIG as a6, DEFAULT_LABELS as a7, DEFAULT_LAYOUT_SYNC as a8, DEFAULT_PRICE_AXIS_CONFIG as a9, PRESETS_BY_COUNT as aA, PRESET_COUNTS as aB, PRESET_LABEL as aC, PRICE_TRANSFORM_SERIES as aD, type Padding as aE, type PendingOrderLevel as aF, type PnlPillConfig as aG, type PnlPillLabels as aH, type PointFigureOptions as aI, type PositionRenderStyle as aJ, type PriceAxisUiConfig as aK, RSI as aL, type RenkoOptions as aM, SMA as aN, type SavedLayoutPane as aO, type Series as aP, type Source as aQ, type Theme as aR, type ThemeOverrides as aS, type TimeAxisUiConfig as aT, type TopBarColors as aU, type TopBarUiConfig as aV, type TradeButtonUiConfig as aW, type TradeDisplayFilter as aX, type TradeLabels as aY, type TradeLevel as aZ, type TradeLevelColors as a_, DEFAULT_TIME_AXIS_CONFIG as aa, DEFAULT_TOP_BAR_CONFIG as ab, DEFAULT_TRADE_BUTTON_CONFIG as ac, DEFAULT_UI_CONFIG as ad, type DataLoaderParams as ae, type DeepPartial$1 as af, type DeepPartialChartTheme as ag, type DialogLabels as ah, type DrawingToolbarColors as ai, type DrawingToolbarLabels as aj, type DrawingToolbarUiConfig as ak, EMA as al, EXTRA_INDICATORS as am, type IndicatorComputeContext as an, type IndicatorDef as ao, type IndicatorOverlayColors as ap, type IndicatorOverlayUiConfig as aq, type IndicatorStateEntry as ar, type KagiOptions as as, LAYOUT_PRESETS as at, LIGHT_THEME as au, type LayoutPreset as av, type LineBreakOptions as aw, MACD as ax, NO_VOLUME_TITLE as ay, type OrderSubmit as az, type IndicatorParams as b, sourceValue as b$, type TransformedBarMeta as b0, type TransformedSeries as b1, type UiConfig as b2, VOLUME_STUDIES as b3, alma as b4, atr as b5, atrValue as b6, captureIndicatorTemplate as b7, captureLayout as b8, captureSettingsTemplate as b9, linregSlope as bA, lowest as bB, lsma as bC, makeLayoutId as bD, makeSettingsTemplateId as bE, makeTemplateId as bF, mcginley as bG, methodField as bH, numField as bI, periodField as bJ, registerCustomPreset as bK, removeLayout as bL, removeSettingsTemplate as bM, removeTemplate as bN, resolveBoxSize as bO, resolveCssVarsInTheme as bP, resolveInstrument as bQ, resolveLabels as bR, resolveUiConfig as bS, rma as bT, rocPct as bU, sanitizeLayouts as bV, sanitizeSettingsTemplates as bW, sanitizeTemplates as bX, sma as bY, sourceField as bZ, sourceSeries as b_, change as ba, cloneSettings as bb, colorField as bc, correlation as bd, cumulative as be, deepMergeTheme as bf, dema as bg, ema as bh, extraIndicatorOptions as bi, extraIndicatorPresets as bj, extraIndicatorSchemas as bk, extraSingleInstance as bl, findLayout as bm, findSettingsTemplate as bn, findTemplate as bo, formatDuration as bp, formatVolume as bq, getAllPresets as br, getCustomPresets as bs, getPreset as bt, hammingMa as bu, highest as bv, hma as bw, inferPipSize as bx, isPriceTransformSeries as by, linregAt as bz, type IndicatorTemplate as c, standardError as c0, stdev as c1, tema as c2, toKagi as c3, toLineBreak as c4, toMoney as c5, toPips as c6, toPointFigure as c7, toRenko as c8, trueRange as c9, unregisterCustomPreset as ca, upsertLayout as cb, upsertSettingsTemplate as cc, upsertTemplate as cd, vwma as ce, wma as cf, type PriceSource as cg, HistogramIndicatorBase as ch, type LineSpec as ci, type GuideLevel as cj, LineIndicatorBase as ck, type MaMethod as cl, BandIndicatorBase as cm, AdaptiveMA as cn, MaChannel as co, MovingAverage as cp, MultiMA as cq, allEmpty as cr, applyMa as cs, combine as ct, drawPaneHint as cu, mapSeries as cv, toResults as cw, type ChartEventMap as d, type CursorMode as e, type ChartState as f, type InstrumentSpec as g, type StatusLineSettings as h, type ScalesSettings as i, type CanvasOptions as j, type DrawingToolType as k, type SerializedDrawing as l, type IDrawing as m, type AnyDrawingStyle as n, type IWebSocketAdapter as o, type TradeLevelType as p, type SavedLayout as q, type ChartSettingsSnapshot as r, type ChartSettingsTemplate as s, type TopBarLabels as t, type OhlcLabels as u, type CrosshairPosition as v, type PriceRange as w, ScaleManager as x, type SidePanelLabels as y, type IndicatorResult as z };
@@ -2325,6 +2325,13 @@ interface IIndicator {
2325
2325
  readonly pane?: "main" | "sub";
2326
2326
  readonly paneHeight?: number;
2327
2327
  compute(data: OHLCVBar[], context?: IndicatorComputeContext): IndicatorResult[];
2328
+ /**
2329
+ * True for studies built on bar volume (Volume, OBV, MFI, …). The engine
2330
+ * blanks their output on bars whose feed sent no volume (missing or 0), so
2331
+ * a feed that stops sending volume ends the line there instead of drawing a
2332
+ * flat line or a meaningless reading such as MFI 100.
2333
+ */
2334
+ readonly usesVolume?: boolean;
2328
2335
  /**
2329
2336
  * Returns the natural value range for the given results.
2330
2337
  * Used to render a price axis on the right side of sub-panes and to support draggable Y-scale.
@@ -3076,6 +3083,14 @@ type ChartEventMap = {
3076
3083
  shortName: string;
3077
3084
  params: IndicatorParams;
3078
3085
  };
3086
+ /**
3087
+ * Emitted when an indicator is refused because every sub-pane slot is in
3088
+ * use (`maxSubPanes`, default 3). The chart also shows a short notice.
3089
+ */
3090
+ indicatorLimitReached: {
3091
+ shortName: string;
3092
+ maxSubPanes: number;
3093
+ };
3079
3094
  /** Emitted after an indicator instance is removed (pill ×, settings dialog, or `removeIndicator`). */
3080
3095
  indicatorRemoved: {
3081
3096
  instanceId: string;
@@ -3617,6 +3632,15 @@ declare function mapSeries(a: Series, fn: (x: number, i: number) => number | nul
3617
3632
  /** Cumulative running sum, null-propagating from the first defined value. */
3618
3633
  declare function cumulative(values: Series): Series;
3619
3634
 
3635
+ /**
3636
+ * Writes a one-line notice in the middle of a pane that has nothing to draw.
3637
+ *
3638
+ * An empty pane with only a label looks like a bug; saying why it is empty
3639
+ * (no compare symbol, no volume from the feed) tells the user what to do.
3640
+ */
3641
+ declare function drawPaneHint(ctx: CanvasRenderingContext2D, text: string, chartHeight: number, color?: string): void;
3642
+ /** True when no result carries a value in `field` — the study drew nothing. */
3643
+ declare function allEmpty(results: readonly IndicatorResult[], field?: 'value'): boolean;
3620
3644
  /** One plotted line: where to read it from a result, and how to draw it. */
3621
3645
  interface LineSpec {
3622
3646
  /** Which field of `IndicatorResult` carries this line. */
@@ -3683,6 +3707,13 @@ declare abstract class HistogramIndicatorBase extends LineIndicatorBase {
3683
3707
  protected baseline(): number;
3684
3708
  /** Which field drives the bars. */
3685
3709
  protected barField(): 'value' | 'histogram';
3710
+ /**
3711
+ * The bars must count toward the range. Subclasses that draw only bars
3712
+ * declare no lines, so the line-only range collapsed to the baseline guide
3713
+ * and fell back to a fixed −1…1 axis, flattening the Accelerator and
3714
+ * clipping Net Volume.
3715
+ */
3716
+ getValueRange(results: IndicatorResult[]): PriceRange;
3686
3717
  render(ctx: CanvasRenderingContext2D, results: IndicatorResult[], scale: ScaleManager, viewport: Viewport, chartHeight: number, rangeOverride?: PriceRange): void;
3687
3718
  }
3688
3719
  /** Packs aligned series into the `IndicatorResult[]` shape the engine renders. */
@@ -3813,6 +3844,13 @@ interface IndicatorDef {
3813
3844
  /** Only one instance makes sense (e.g. a single volume pane). */
3814
3845
  singleInstance?: boolean;
3815
3846
  }
3847
+ /**
3848
+ * Indicator short names that need bar volume. The indicator menus disable
3849
+ * them when the loaded bars carry none, since they would draw nothing.
3850
+ */
3851
+ declare const VOLUME_STUDIES: ReadonlySet<string>;
3852
+ /** Tooltip on a volume study the menu has disabled. */
3853
+ declare const NO_VOLUME_TITLE = "Not available: this symbol's chart data has no volume";
3816
3854
  /** A period field. Shared so every indicator agrees on sane bounds. */
3817
3855
  declare const periodField: (def: number, key?: string, label?: string, max?: number) => ParamFieldDef;
3818
3856
  /** A colour field. */
@@ -3903,4 +3941,4 @@ declare class MACD implements IIndicator {
3903
3941
  render(ctx: CanvasRenderingContext2D, results: IndicatorResult[], scale: ScaleManager, viewport: Viewport, paneHeight: number, rangeOverride?: PriceRange): void;
3904
3942
  }
3905
3943
 
3906
- export { type ChartMiscLabels as $, type AccountSpec as A, type BarColorSource as B, type ChartTheme as C, type Duration as D, type PositionLevel as E, type AnyLevel as F, type DrawingPoint as G, type DrawingHandle as H, type IIndicator as I, type DrawingRenderContext as J, type Tick as K, type LayoutSyncState as L, type StreamStatus as M, type ActiveIndicatorState as N, type OHLCVBar as O, type PriceScaleMode as P, BollingerBands as Q, type ResolvedInstrument as R, type SeriesType as S, type Timeframe as T, type BottomBarColors as U, type Viewport as V, type BottomBarLabels as W, type BottomBarUiConfig as X, type BoxSizeMode as Y, type CanvasColorSettings as Z, type ChartLabels as _, type ChartConfig as a, type TransformedBarMeta as a$, type ChartThemeUi as a0, type CrosshairUiConfig as a1, DARK_THEME as a2, DEFAULT_BOTTOM_BAR_CONFIG as a3, DEFAULT_CROSSHAIR_CONFIG as a4, DEFAULT_DRAWING_TOOLBAR_CONFIG as a5, DEFAULT_INDICATOR_OVERLAY_CONFIG as a6, DEFAULT_LABELS as a7, DEFAULT_LAYOUT_SYNC as a8, DEFAULT_PRICE_AXIS_CONFIG as a9, PRESET_COUNTS as aA, PRESET_LABEL as aB, PRICE_TRANSFORM_SERIES as aC, type Padding as aD, type PendingOrderLevel as aE, type PnlPillConfig as aF, type PnlPillLabels as aG, type PointFigureOptions as aH, type PositionRenderStyle as aI, type PriceAxisUiConfig as aJ, RSI as aK, type RenkoOptions as aL, SMA as aM, type SavedLayoutPane as aN, type Series as aO, type Source as aP, type Theme as aQ, type ThemeOverrides as aR, type TimeAxisUiConfig as aS, type TopBarColors as aT, type TopBarUiConfig as aU, type TradeButtonUiConfig as aV, type TradeDisplayFilter as aW, type TradeLabels as aX, type TradeLevel as aY, type TradeLevelColors as aZ, type TradePanelColors as a_, DEFAULT_TIME_AXIS_CONFIG as aa, DEFAULT_TOP_BAR_CONFIG as ab, DEFAULT_TRADE_BUTTON_CONFIG as ac, DEFAULT_UI_CONFIG as ad, type DataLoaderParams as ae, type DeepPartial$1 as af, type DeepPartialChartTheme as ag, type DialogLabels as ah, type DrawingToolbarColors as ai, type DrawingToolbarLabels as aj, type DrawingToolbarUiConfig as ak, EMA as al, EXTRA_INDICATORS as am, type IndicatorComputeContext as an, type IndicatorDef as ao, type IndicatorOverlayColors as ap, type IndicatorOverlayUiConfig as aq, type IndicatorStateEntry as ar, type KagiOptions as as, LAYOUT_PRESETS as at, LIGHT_THEME as au, type LayoutPreset as av, type LineBreakOptions as aw, MACD as ax, type OrderSubmit as ay, PRESETS_BY_COUNT as az, type IndicatorParams as b, stdev as b$, type TransformedSeries as b0, type UiConfig as b1, alma as b2, atr as b3, atrValue as b4, captureIndicatorTemplate as b5, captureLayout as b6, captureSettingsTemplate as b7, change as b8, cloneSettings as b9, lsma as bA, makeLayoutId as bB, makeSettingsTemplateId as bC, makeTemplateId as bD, mcginley as bE, methodField as bF, numField as bG, periodField as bH, registerCustomPreset as bI, removeLayout as bJ, removeSettingsTemplate as bK, removeTemplate as bL, resolveBoxSize as bM, resolveCssVarsInTheme as bN, resolveInstrument as bO, resolveLabels as bP, resolveUiConfig as bQ, rma as bR, rocPct as bS, sanitizeLayouts as bT, sanitizeSettingsTemplates as bU, sanitizeTemplates as bV, sma as bW, sourceField as bX, sourceSeries as bY, sourceValue as bZ, standardError as b_, colorField as ba, correlation as bb, cumulative as bc, deepMergeTheme as bd, dema as be, ema as bf, extraIndicatorOptions as bg, extraIndicatorPresets as bh, extraIndicatorSchemas as bi, extraSingleInstance as bj, findLayout as bk, findSettingsTemplate as bl, findTemplate as bm, formatDuration as bn, formatVolume as bo, getAllPresets as bp, getCustomPresets as bq, getPreset as br, hammingMa as bs, highest as bt, hma as bu, inferPipSize as bv, isPriceTransformSeries as bw, linregAt as bx, linregSlope as by, lowest as bz, type IndicatorTemplate as c, tema as c0, toKagi as c1, toLineBreak as c2, toMoney as c3, toPips as c4, toPointFigure as c5, toRenko as c6, trueRange as c7, unregisterCustomPreset as c8, upsertLayout as c9, upsertSettingsTemplate as ca, upsertTemplate as cb, vwma as cc, wma as cd, type PriceSource as ce, HistogramIndicatorBase as cf, type LineSpec as cg, type GuideLevel as ch, LineIndicatorBase as ci, type MaMethod as cj, BandIndicatorBase as ck, AdaptiveMA as cl, MaChannel as cm, MovingAverage as cn, MultiMA as co, applyMa as cp, combine as cq, mapSeries as cr, toResults as cs, type ChartEventMap as d, type CursorMode as e, type ChartState as f, type InstrumentSpec as g, type StatusLineSettings as h, type ScalesSettings as i, type CanvasOptions as j, type DrawingToolType as k, type SerializedDrawing as l, type IDrawing as m, type AnyDrawingStyle as n, type IWebSocketAdapter as o, type TradeLevelType as p, type SavedLayout as q, type ChartSettingsSnapshot as r, type ChartSettingsTemplate as s, type TopBarLabels as t, type OhlcLabels as u, type CrosshairPosition as v, type PriceRange as w, ScaleManager as x, type SidePanelLabels as y, type IndicatorResult as z };
3944
+ export { type ChartMiscLabels as $, type AccountSpec as A, type BarColorSource as B, type ChartTheme as C, type Duration as D, type PositionLevel as E, type AnyLevel as F, type DrawingPoint as G, type DrawingHandle as H, type IIndicator as I, type DrawingRenderContext as J, type Tick as K, type LayoutSyncState as L, type StreamStatus as M, type ActiveIndicatorState as N, type OHLCVBar as O, type PriceScaleMode as P, BollingerBands as Q, type ResolvedInstrument as R, type SeriesType as S, type Timeframe as T, type BottomBarColors as U, type Viewport as V, type BottomBarLabels as W, type BottomBarUiConfig as X, type BoxSizeMode as Y, type CanvasColorSettings as Z, type ChartLabels as _, type ChartConfig as a, type TradePanelColors as a$, type ChartThemeUi as a0, type CrosshairUiConfig as a1, DARK_THEME as a2, DEFAULT_BOTTOM_BAR_CONFIG as a3, DEFAULT_CROSSHAIR_CONFIG as a4, DEFAULT_DRAWING_TOOLBAR_CONFIG as a5, DEFAULT_INDICATOR_OVERLAY_CONFIG as a6, DEFAULT_LABELS as a7, DEFAULT_LAYOUT_SYNC as a8, DEFAULT_PRICE_AXIS_CONFIG as a9, PRESETS_BY_COUNT as aA, PRESET_COUNTS as aB, PRESET_LABEL as aC, PRICE_TRANSFORM_SERIES as aD, type Padding as aE, type PendingOrderLevel as aF, type PnlPillConfig as aG, type PnlPillLabels as aH, type PointFigureOptions as aI, type PositionRenderStyle as aJ, type PriceAxisUiConfig as aK, RSI as aL, type RenkoOptions as aM, SMA as aN, type SavedLayoutPane as aO, type Series as aP, type Source as aQ, type Theme as aR, type ThemeOverrides as aS, type TimeAxisUiConfig as aT, type TopBarColors as aU, type TopBarUiConfig as aV, type TradeButtonUiConfig as aW, type TradeDisplayFilter as aX, type TradeLabels as aY, type TradeLevel as aZ, type TradeLevelColors as a_, DEFAULT_TIME_AXIS_CONFIG as aa, DEFAULT_TOP_BAR_CONFIG as ab, DEFAULT_TRADE_BUTTON_CONFIG as ac, DEFAULT_UI_CONFIG as ad, type DataLoaderParams as ae, type DeepPartial$1 as af, type DeepPartialChartTheme as ag, type DialogLabels as ah, type DrawingToolbarColors as ai, type DrawingToolbarLabels as aj, type DrawingToolbarUiConfig as ak, EMA as al, EXTRA_INDICATORS as am, type IndicatorComputeContext as an, type IndicatorDef as ao, type IndicatorOverlayColors as ap, type IndicatorOverlayUiConfig as aq, type IndicatorStateEntry as ar, type KagiOptions as as, LAYOUT_PRESETS as at, LIGHT_THEME as au, type LayoutPreset as av, type LineBreakOptions as aw, MACD as ax, NO_VOLUME_TITLE as ay, type OrderSubmit as az, type IndicatorParams as b, sourceValue as b$, type TransformedBarMeta as b0, type TransformedSeries as b1, type UiConfig as b2, VOLUME_STUDIES as b3, alma as b4, atr as b5, atrValue as b6, captureIndicatorTemplate as b7, captureLayout as b8, captureSettingsTemplate as b9, linregSlope as bA, lowest as bB, lsma as bC, makeLayoutId as bD, makeSettingsTemplateId as bE, makeTemplateId as bF, mcginley as bG, methodField as bH, numField as bI, periodField as bJ, registerCustomPreset as bK, removeLayout as bL, removeSettingsTemplate as bM, removeTemplate as bN, resolveBoxSize as bO, resolveCssVarsInTheme as bP, resolveInstrument as bQ, resolveLabels as bR, resolveUiConfig as bS, rma as bT, rocPct as bU, sanitizeLayouts as bV, sanitizeSettingsTemplates as bW, sanitizeTemplates as bX, sma as bY, sourceField as bZ, sourceSeries as b_, change as ba, cloneSettings as bb, colorField as bc, correlation as bd, cumulative as be, deepMergeTheme as bf, dema as bg, ema as bh, extraIndicatorOptions as bi, extraIndicatorPresets as bj, extraIndicatorSchemas as bk, extraSingleInstance as bl, findLayout as bm, findSettingsTemplate as bn, findTemplate as bo, formatDuration as bp, formatVolume as bq, getAllPresets as br, getCustomPresets as bs, getPreset as bt, hammingMa as bu, highest as bv, hma as bw, inferPipSize as bx, isPriceTransformSeries as by, linregAt as bz, type IndicatorTemplate as c, standardError as c0, stdev as c1, tema as c2, toKagi as c3, toLineBreak as c4, toMoney as c5, toPips as c6, toPointFigure as c7, toRenko as c8, trueRange as c9, unregisterCustomPreset as ca, upsertLayout as cb, upsertSettingsTemplate as cc, upsertTemplate as cd, vwma as ce, wma as cf, type PriceSource as cg, HistogramIndicatorBase as ch, type LineSpec as ci, type GuideLevel as cj, LineIndicatorBase as ck, type MaMethod as cl, BandIndicatorBase as cm, AdaptiveMA as cn, MaChannel as co, MovingAverage as cp, MultiMA as cq, allEmpty as cr, applyMa as cs, combine as ct, drawPaneHint as cu, mapSeries as cv, toResults as cw, type ChartEventMap as d, type CursorMode as e, type ChartState as f, type InstrumentSpec as g, type StatusLineSettings as h, type ScalesSettings as i, type CanvasOptions as j, type DrawingToolType as k, type SerializedDrawing as l, type IDrawing as m, type AnyDrawingStyle as n, type IWebSocketAdapter as o, type TradeLevelType as p, type SavedLayout as q, type ChartSettingsSnapshot as r, type ChartSettingsTemplate as s, type TopBarLabels as t, type OhlcLabels as u, type CrosshairPosition as v, type PriceRange as w, ScaleManager as x, type SidePanelLabels as y, type IndicatorResult as z };