openalgo-charts 1.1.0 → 1.2.0

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
@@ -61,7 +61,7 @@ Import only what you use. Each tier is a separate bundle that registers into the
61
61
  | Import | Contents | Brotli |
62
62
  |---|---|---|
63
63
  | `openalgo-charts` | Engine, 13 chart types, panes & scales, primitives, registries, chart state, trading overlay, OpenAlgo feeds | 37.0 KB |
64
- | `openalgo-charts/indicators` | 86 built-in indicators + the Tier-2 (external-data) contract | 20.1 KB |
64
+ | `openalgo-charts/indicators` | 91 built-in indicators + the Tier-2 (external-data) contract | 24.7 KB |
65
65
  | `openalgo-charts/draw` | 43 drawing tools + a headless drawing controller | 11.7 KB |
66
66
  | `openalgo-charts/transform` | Heikin Ashi, Renko, Range bars, Line Break, Point & Figure, Kagi | 2.7 KB |
67
67
  | `openalgo-charts/profile` | Volume Profile, Market Profile (TPO), Footprint, order flow | 10.1 KB |
@@ -84,7 +84,7 @@ const macd = chart.addIndicator('macd', { fastPeriod: 8 }); // gets its own pa
84
84
  macd.setSettings({ 'macd:width': 2, 'macd:lineStyle': 'dashed' });
85
85
  ```
86
86
 
87
- 86 built-ins across Trend, Momentum, Volatility and Volume, from the everyday (SMA, EMA, WMA, VWAP, Bollinger Bands, RSI, MACD, Stochastic, ADX/DMI, ATR) through Supertrend, HalfTrend, Ichimoku, Keltner, Donchian and Chandelier Exit to Connors RSI, Fisher Transform, Woodies CCI, Klinger, Vortex, Chop Zone and Williams Fractals. Twenty-two of them draw shaded bands, and three emit named buy/sell markers. The full catalogue with ids and defaults is in the docs.
87
+ 91 built-ins across Trend, Momentum, Volatility and Volume, from the everyday (SMA, EMA, WMA, VWAP, Bollinger Bands, RSI, MACD, Stochastic, ADX/DMI, ATR) through Supertrend, HalfTrend, Ichimoku, Keltner, Donchian, Chandelier Exit and CPR with floor pivots to Connors RSI, Fisher Transform, Woodies CCI, Klinger, Vortex, WaveTrend Pro, Chop Zone and Williams Fractals. Twenty-five of them draw shaded bands, five emit named buy/sell markers, and Seasonality draws a monthly return heatmap as a table over the chart. The full catalogue with ids and defaults is in the docs.
88
88
 
89
89
  The chart owns the whole lifecycle — series, pane placement, reference levels, fixed ranges (RSI 0..100), recompute on data change, teardown. Every plot gets colour, opacity, thickness, and line style for free, generated from the descriptor. Write your own with `registerIndicator`, or use the **Tier-2 contract** for indicators whose data isn't derived from OHLCV (open interest, CVD, any external feed).
90
90
 
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Library version string. Matches package.json (published npm release). */
2
- declare const VERSION = "1.1.0";
2
+ declare const VERSION = "1.2.0";
3
3
  /** Returns the current library version. */
4
4
  declare function version(): string;
5
5
 
@@ -166,6 +166,19 @@ declare class PriceScale {
166
166
  /** Whether the range tracks the data (true) or has been set manually (false). */
167
167
  get autoScale(): boolean;
168
168
  setAutoScale(on: boolean): void;
169
+ /**
170
+ * Forget the measured range and go back to the placeholder.
171
+ *
172
+ * Called when a scale loses its last series: the range it holds described
173
+ * something that is no longer on the chart, and whatever arrives next may
174
+ * plot nothing at all. An indicator whose entire output is a table plots no
175
+ * values, and inheriting a departed oscillator's 0..100 left its pane
176
+ * labelled with a ladder it had no prices for.
177
+ *
178
+ * A manually scaled axis is left alone: the user set that range, and nothing
179
+ * would recompute it if it were thrown away.
180
+ */
181
+ reset(): void;
169
182
  /**
170
183
  * Manually scale the visible range around its centre. `factor` > 1 widens the
171
184
  * range (compress / zoom out), < 1 narrows it (expand / zoom in). Switches the
@@ -788,6 +801,84 @@ declare class Pane {
788
801
  yToPrice(y: number): number;
789
802
  }
790
803
 
804
+ /**
805
+ * A grid overlay pinned to a corner of the pane rather than to bars.
806
+ *
807
+ * Seasonality heatmaps, performance summaries and signal scoreboards are all
808
+ * the same shape: a small table of coloured cells that stays put while the
809
+ * chart pans underneath. That makes this a screen-space primitive like the
810
+ * watermark and the pane legend, not a series: it has no time anchor, takes no
811
+ * part in autoscale, and survives a zoom untouched.
812
+ */
813
+
814
+ type TablePosition = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'middle-center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
815
+ interface TableCell {
816
+ text: string;
817
+ /** Cell fill. Transparent when omitted, so the pane shows through. */
818
+ bgColor?: string;
819
+ /** Text colour. Derived from `bgColor` for contrast when omitted. */
820
+ textColor?: string;
821
+ align?: 'left' | 'center' | 'right';
822
+ /** Overrides the table's `fontSize` for this cell, for a heading row. */
823
+ fontSize?: number;
824
+ bold?: boolean;
825
+ }
826
+ interface ChartTableOptions {
827
+ position: TablePosition;
828
+ /** Gap from the pane edge, media px. */
829
+ margin: number;
830
+ /** Column width in media px. A per-column array sizes each one separately. */
831
+ cellWidth: number | readonly number[];
832
+ cellHeight: number;
833
+ fontSize: number;
834
+ /** Grid line colour. Omit to draw no grid. */
835
+ borderColor?: string;
836
+ borderWidth: number;
837
+ /**
838
+ * Table width as a percentage of the plot, 0 or omitted to size from
839
+ * `cellWidth` instead. Column proportions are preserved, so a per-column
840
+ * `cellWidth` array still controls the relative widths, and the percentage
841
+ * only decides the total.
842
+ */
843
+ widthPercent?: number;
844
+ /** Table height as a percentage of the plot, 0 or omitted to size from `cellHeight`. */
845
+ heightPercent?: number;
846
+ /**
847
+ * Relative row heights, one per row, defaulting to 1. A separator row is the
848
+ * reason this exists: stretched to fill a pane, an equal split makes a rule
849
+ * between two sections as tall as the sections themselves.
850
+ */
851
+ rowWeights?: readonly number[];
852
+ /** Backdrop behind the whole grid, drawn before the cells. */
853
+ background?: string;
854
+ /** Hit-test id, so a host can route clicks the way it does for other primitives. */
855
+ id?: string;
856
+ }
857
+ declare const DEFAULT_CHART_TABLE_OPTIONS: ChartTableOptions;
858
+ /** Top-left corner of the grid for a position keyword, in media px. */
859
+ declare function tableOrigin(position: TablePosition, margin: number, w: number, h: number, plotW: number, plotH: number): {
860
+ x: number;
861
+ y: number;
862
+ };
863
+ declare class ChartTable implements IPrimitive {
864
+ private _rows;
865
+ private _opts;
866
+ private _host;
867
+ /** Last drawn rect in media px, for hit-testing without recomputing layout. */
868
+ private _rect;
869
+ constructor(options?: Partial<ChartTableOptions>);
870
+ attached(host: PrimitiveHost): void;
871
+ detached(): void;
872
+ zOrder(): ZOrder;
873
+ options(): Readonly<ChartTableOptions>;
874
+ setOptions(patch: Partial<ChartTableOptions>): void;
875
+ /** Replace the grid. Rows may be ragged; each is drawn to its own length. */
876
+ setRows(rows: readonly (readonly TableCell[])[]): void;
877
+ rows(): readonly (readonly TableCell[])[];
878
+ draw(ctx: CanvasRenderingContext2D, rc: PrimitiveRenderContext): void;
879
+ hitTest(x: number, y: number): PrimitiveHit | null;
880
+ }
881
+
791
882
  /**
792
883
  * Indicator registry (ARCHITECTURE.md §6A, §8). The sibling of the chart-type
793
884
  * registry: that one answers *"how do I paint an array of bars"*, this one
@@ -1017,6 +1108,25 @@ interface IndicatorDescriptor {
1017
1108
  values: IndicatorValues;
1018
1109
  settings: Readonly<IndicatorSettings>;
1019
1110
  }): readonly SeriesMarker[];
1111
+ /**
1112
+ * Optional summary grid pinned to a corner of the pane.
1113
+ *
1114
+ * Some studies are not a value per bar at all: a seasonality heatmap is a
1115
+ * matrix of monthly returns, a scoreboard is a handful of statistics. Those
1116
+ * have no place in `calc`, whose contract is one column per plot aligned to
1117
+ * the bars, so they come back through here instead. Runs after every `calc`.
1118
+ *
1119
+ * Return `null` (or a zero-row grid) to draw nothing, which is how a
1120
+ * `showTable`-style input should switch it off.
1121
+ */
1122
+ table?(ctx: {
1123
+ bars: readonly Bar[];
1124
+ values: IndicatorValues;
1125
+ settings: Readonly<IndicatorSettings>;
1126
+ }): {
1127
+ rows: readonly (readonly TableCell[])[];
1128
+ options?: Partial<ChartTableOptions>;
1129
+ } | null;
1020
1130
  /** Optional horizontal reference levels drawn in the indicator's pane. */
1021
1131
  levels?(settings: Readonly<IndicatorSettings>): readonly IndicatorLevel[];
1022
1132
  /**
@@ -1287,6 +1397,9 @@ interface IndicatorHost {
1287
1397
  * the right pane. Removing a series does not remove its primitives, hence this.
1288
1398
  */
1289
1399
  removeIndicatorMarkers(markers: SeriesMarkers): void;
1400
+ /** Attach a corner-pinned summary grid to a pane, and detach it again. */
1401
+ addIndicatorTable(paneIndex: number): ChartTable;
1402
+ removeIndicatorTable(table: ChartTable): void;
1290
1403
  /** Bars of the primary price series — the calculation input. */
1291
1404
  sourceBars(): readonly Bar[];
1292
1405
  /** Index of a fresh pane for an indicator that wants its own. */
@@ -1977,7 +2090,6 @@ declare class Chart {
1977
2090
  private _drawingState;
1978
2091
  /** Pane currently maximized, and the weights to restore when it un-maximizes. */
1979
2092
  private _maximizedPane;
1980
- private _savedWeights;
1981
2093
  /** Legend rows per pane, so new ones stack below existing ones. */
1982
2094
  private readonly _legends;
1983
2095
  /** Pane holding the primary price series (only this pane gets magnet snapping). */
@@ -2269,6 +2381,21 @@ declare class Chart {
2269
2381
  private _relayout;
2270
2382
  /** Reserve a chart-wide left-axis column when any pane has a left price scale. */
2271
2383
  private _recomputeLeftAxis;
2384
+ /**
2385
+ * The share of the chart a pane gets. While one pane is maximized it takes
2386
+ * everything and the rest take nothing, so they lay out at zero height and
2387
+ * are hidden outright rather than collapsed to a sliver. A sliver still
2388
+ * paints a strip of squeezed candles and a separator hairline above the very
2389
+ * pane the user asked to see on its own.
2390
+ *
2391
+ * Stored weights are never touched, so restoring is exact and `getState`
2392
+ * cannot persist a placeholder.
2393
+ */
2394
+ private _layoutWeight;
2395
+ /** First pane with a share of the chart: the one that sits against the top edge. */
2396
+ private _topPaneIndex;
2397
+ /** Last pane with a share of the chart: the one that owns the time axis. */
2398
+ private _bottomPaneIndex;
2272
2399
  private _weightTotal;
2273
2400
  /** Grab tolerance around a pane boundary, in media px. */
2274
2401
  private static readonly DIVIDER_GRAB;
@@ -2299,8 +2426,9 @@ declare class Chart {
2299
2426
  */
2300
2427
  movePane(index: number, direction: -1 | 1): boolean;
2301
2428
  /**
2302
- * Expand one pane to fill the chart, collapsing the others to a sliver.
2303
- * Calling it again (or on another pane) restores the previous weights.
2429
+ * Expand one pane to fill the chart, hiding the others. Calling it again (or
2430
+ * on another pane) puts the stack back exactly as it was, since the stored
2431
+ * weights were never disturbed.
2304
2432
  */
2305
2433
  maximizePane(index: number): boolean;
2306
2434
  /** The maximized pane index, or null when none is. */
@@ -3366,6 +3494,44 @@ declare function utcSecondsToIstDateString(utcSeconds: number): string;
3366
3494
  declare function formatIstDate(utcSeconds: number): string;
3367
3495
  /** True if the two UTC-second instants fall on different IST calendar days. */
3368
3496
  declare function isNewIstDay(prevUtcSeconds: number, utcSeconds: number): boolean;
3497
+ /**
3498
+ * Bar indices that open a new trading session, read back from the timestamps.
3499
+ *
3500
+ * An exchange's overnight break is the widest recurring gap in an intraday
3501
+ * series, and it is the only thing in the bars themselves that says where one
3502
+ * trading day ends. Reading it back beats assuming a timezone: the same code
3503
+ * has to serve an exchange in Mumbai and one in New York, and a fixed midnight
3504
+ * lands mid-session for one of them. Getting it wrong splices the tail of one
3505
+ * session onto the head of the next across the overnight gap, which inflates
3506
+ * that period's high-low range and throws anything measured from it a long way
3507
+ * off.
3508
+ *
3509
+ * Returns null when the series shows no readable session break: a market that
3510
+ * never closes, bars already a day or coarser, or a feed whose only gaps are
3511
+ * weekends. The caller then falls back to a calendar rule, which is the right
3512
+ * answer in exactly those cases.
3513
+ */
3514
+ declare function sessionStartIndices(times: readonly number[]): number[] | null;
3515
+ /**
3516
+ * Per-bar flags marking the first bar of each trading session.
3517
+ *
3518
+ * Falls back to the IST calendar day when the series has no readable session
3519
+ * break, which is the only answer available for daily bars and a defensible one
3520
+ * for a market that never closes.
3521
+ */
3522
+ declare function sessionStartFlags(times: readonly number[]): boolean[];
3523
+ /**
3524
+ * Per-bar flags marking the first bar of each calendar period, where `isNew`
3525
+ * decides what "period" means for two instants.
3526
+ *
3527
+ * The test runs on session opens rather than on every bar, so a session that
3528
+ * straddles the boundary is not cut in half: the last ninety minutes of a New
3529
+ * York Friday fall on a Saturday in IST, and testing bar to bar would start the
3530
+ * next week partway through Friday's session. With no readable sessions the
3531
+ * test runs bar to bar, which is the same thing when each bar is its own
3532
+ * session.
3533
+ */
3534
+ declare function calendarPeriodFlags(times: readonly number[], isNew: (prevUtcSeconds: number, utcSeconds: number) => boolean): boolean[];
3369
3535
 
3370
3536
  /** Clamp `value` into the inclusive range [min, max]. */
3371
3537
  declare function clamp(value: number, min: number, max: number): number;
@@ -3378,4 +3544,4 @@ declare function lerp(a: number, b: number, t: number): number;
3378
3544
  */
3379
3545
  declare function roundToTick(value: number, step: number): number;
3380
3546
 
3381
- export { ALT_PRESET, type AddSeriesOptions, type AggTick, BUILTIN_COMMANDS, type Bar, type BarUpdate, type BarsRequest, BuySellButtons, type BuySellButtonsOptions, CHART_STATE_VERSION, CandleBuilder, type CandleBuilderOptions, type CandleStyle, type CandleUpdate, Chart, type ChartEvent, type ChartOptions, type ChartState, type ChartTheme, type CrosshairMoveEvent, type CustomShortcut, DEFAULT_CANDLE_BUILDER_OPTIONS, DEFAULT_CANDLE_STYLE, DEFAULT_HISTOGRAM_STYLE, DEFAULT_KEYMAP, DEFAULT_PRICE_SCALE_OPTIONS, DEFAULT_THEME, DEFAULT_TIME_NAVIGATOR_OPTIONS, DEFAULT_TIME_SCALE_OPTIONS, DEFAULT_TRADING_COLORS, type DataFeed, DataLayer, type DepthLevel, type DrawItem, EventMarkers, FakeDataFeed, type FeedScheduler, type FillPoint, type HistogramStyle, INDICATOR_LINE_STYLES, INDICATOR_PLOT_STYLES, INDICATOR_SOURCES, type IPrimitive, IST_OFFSET_SECONDS, type IndexedBar, type IndicatorApi, type IndicatorAttachContext, type IndicatorDescriptor, IndicatorFill, type IndicatorFillOptions, type IndicatorFillSpec, type IndicatorHost, type IndicatorInput, type IndicatorLevel, type IndicatorPlot, type IndicatorSettings, type IndicatorSource, type IndicatorState, type IndicatorStore, type IndicatorValues, InvalidationLevel, type KeymapEntry, type LateTickPolicy, type LegendValue, type LinePoint, type LogicalRange, LogoWatermark, type LogoWatermarkOptions, type LtpEvent, type MarkerPosition, type MarkerShape, type MarkerSize, type MarketDepth, type OpenAlgoConfig, OpenAlgoDataFeed, type OpenAlgoLiveConfig, OpenAlgoLiveDataFeed, type OpenAlgoTradeConfig, OpenAlgoTradeFeed, type OpenAlgoWsConfig, OpenAlgoWsFeed, type OrderSide$1 as OrderSide, type OrderType$1 as OrderType, type OriginalTime, Pane, type PaneInvalidation, PaneLegend, type PaneLegendAction, type PaneLegendOptions, type PaneState, type PlaceOrder, type PositionSide, PriceLine, type PriceLineOptions, type PriceRange, PriceScale, type PriceScaleId, type PriceScaleMode, type PriceScaleOptions, type PriceScaleState, type PrimitiveHit, type PrimitiveHost, type PrimitiveRenderContext, type RendererEntry, type RestoreReport, type SeriesApi, type SeriesDataItem, type SeriesId, type SeriesMarker, SeriesMarkers, type SeriesRenderContext, type SeriesState, type SeriesStyle, type SeriesType, type ShortcutListItem, ShortcutManager, type ShortcutManagerOptions, type ShortcutPreset, type ShortcutScope, type ShortcutTriggerEvent, type Size, type SocketFactory, type SocketLike, type SupertrendPoint, type Tick, TickBarAggregator, type TickMarkType, type TickTimeframe, TimeNavigator, type TimeNavigatorAction, type TimeNavigatorOptions, TimeScale, type TimeScaleOp, type TimeScaleOptions, type TradeFeed, type TradeMarkerVariant, TradeMarkersPrimitive, type TradingColors, TradingController, type TradingHost, type TradingLineStyle, type TradingLineVariant, type TradingOrder, type TradingOrderSide, type TradingOrderType, type TradingPosition, type TradingSettings, type TradingSyncPayload, type TradingTrade, type UTCSeconds, type UnsubscribeFn, VERSION, type VolumeMode, type WatermarkPosition, type Whitespace, type WsControlMessage, type WsMode, type WsState, type ZOrder, atr, autoscaleRange, bestHit, bitmapSize, clamp, compactVolume, conflateBars, conflateItems, conflationGroupSize, createChart, darkTheme, drawLabel, drawShape, effectiveMarkerPx, ema, emaSeries, epochMsToUtcSeconds, eventToCombo, formatCombo, formatIstDate, formatIstTime, formatIstTimeSeconds, formatSubscribe, formatUnsubscribe, generateBars, getChartType, getIndicator, hasIndicator, indicatorDefaults, indicatorStyleInputs, intervalToSeconds, isNewIstDay, isReservedCombo, isValidCombo, isWhitespace, istStringToUtcSeconds, lerp, lightTheme, mapHistoryResponse, mapOrder, mapPosition, markerSizePx, mergeBars, niceTicks, normalizeCombo, optimalBarWidth, parseCombo, parseMessage, plotStyleKeys, precisionForStep, registerChartType, registerIndicator, registeredChartTypes, registeredIndicators, roundToTick, rowTimeToUtcSeconds, rsi, rsiSeries, snapToDevicePixel, sourceValue, sourceValues, supertrend, supertrendSeries, toBar, trueRange, utcSecondsToIstDateString, utcSecondsToIstParts, version, verticalGradient, watermarkRect };
3547
+ export { ALT_PRESET, type AddSeriesOptions, type AggTick, BUILTIN_COMMANDS, type Bar, type BarUpdate, type BarsRequest, BuySellButtons, type BuySellButtonsOptions, CHART_STATE_VERSION, CandleBuilder, type CandleBuilderOptions, type CandleStyle, type CandleUpdate, Chart, type ChartEvent, type ChartOptions, type ChartState, ChartTable, type ChartTableOptions, type ChartTheme, type CrosshairMoveEvent, type CustomShortcut, DEFAULT_CANDLE_BUILDER_OPTIONS, DEFAULT_CANDLE_STYLE, DEFAULT_CHART_TABLE_OPTIONS, DEFAULT_HISTOGRAM_STYLE, DEFAULT_KEYMAP, DEFAULT_PRICE_SCALE_OPTIONS, DEFAULT_THEME, DEFAULT_TIME_NAVIGATOR_OPTIONS, DEFAULT_TIME_SCALE_OPTIONS, DEFAULT_TRADING_COLORS, type DataFeed, DataLayer, type DepthLevel, type DrawItem, EventMarkers, FakeDataFeed, type FeedScheduler, type FillPoint, type HistogramStyle, INDICATOR_LINE_STYLES, INDICATOR_PLOT_STYLES, INDICATOR_SOURCES, type IPrimitive, IST_OFFSET_SECONDS, type IndexedBar, type IndicatorApi, type IndicatorAttachContext, type IndicatorDescriptor, IndicatorFill, type IndicatorFillOptions, type IndicatorFillSpec, type IndicatorHost, type IndicatorInput, type IndicatorLevel, type IndicatorPlot, type IndicatorSettings, type IndicatorSource, type IndicatorState, type IndicatorStore, type IndicatorValues, InvalidationLevel, type KeymapEntry, type LateTickPolicy, type LegendValue, type LinePoint, type LogicalRange, LogoWatermark, type LogoWatermarkOptions, type LtpEvent, type MarkerPosition, type MarkerShape, type MarkerSize, type MarketDepth, type OpenAlgoConfig, OpenAlgoDataFeed, type OpenAlgoLiveConfig, OpenAlgoLiveDataFeed, type OpenAlgoTradeConfig, OpenAlgoTradeFeed, type OpenAlgoWsConfig, OpenAlgoWsFeed, type OrderSide$1 as OrderSide, type OrderType$1 as OrderType, type OriginalTime, Pane, type PaneInvalidation, PaneLegend, type PaneLegendAction, type PaneLegendOptions, type PaneState, type PlaceOrder, type PositionSide, PriceLine, type PriceLineOptions, type PriceRange, PriceScale, type PriceScaleId, type PriceScaleMode, type PriceScaleOptions, type PriceScaleState, type PrimitiveHit, type PrimitiveHost, type PrimitiveRenderContext, type RendererEntry, type RestoreReport, type SeriesApi, type SeriesDataItem, type SeriesId, type SeriesMarker, SeriesMarkers, type SeriesRenderContext, type SeriesState, type SeriesStyle, type SeriesType, type ShortcutListItem, ShortcutManager, type ShortcutManagerOptions, type ShortcutPreset, type ShortcutScope, type ShortcutTriggerEvent, type Size, type SocketFactory, type SocketLike, type SupertrendPoint, type TableCell, type TablePosition, type Tick, TickBarAggregator, type TickMarkType, type TickTimeframe, TimeNavigator, type TimeNavigatorAction, type TimeNavigatorOptions, TimeScale, type TimeScaleOp, type TimeScaleOptions, type TradeFeed, type TradeMarkerVariant, TradeMarkersPrimitive, type TradingColors, TradingController, type TradingHost, type TradingLineStyle, type TradingLineVariant, type TradingOrder, type TradingOrderSide, type TradingOrderType, type TradingPosition, type TradingSettings, type TradingSyncPayload, type TradingTrade, type UTCSeconds, type UnsubscribeFn, VERSION, type VolumeMode, type WatermarkPosition, type Whitespace, type WsControlMessage, type WsMode, type WsState, type ZOrder, atr, autoscaleRange, bestHit, bitmapSize, calendarPeriodFlags, clamp, compactVolume, conflateBars, conflateItems, conflationGroupSize, createChart, darkTheme, drawLabel, drawShape, effectiveMarkerPx, ema, emaSeries, epochMsToUtcSeconds, eventToCombo, formatCombo, formatIstDate, formatIstTime, formatIstTimeSeconds, formatSubscribe, formatUnsubscribe, generateBars, getChartType, getIndicator, hasIndicator, indicatorDefaults, indicatorStyleInputs, intervalToSeconds, isNewIstDay, isReservedCombo, isValidCombo, isWhitespace, istStringToUtcSeconds, lerp, lightTheme, mapHistoryResponse, mapOrder, mapPosition, markerSizePx, mergeBars, niceTicks, normalizeCombo, optimalBarWidth, parseCombo, parseMessage, plotStyleKeys, precisionForStep, registerChartType, registerIndicator, registeredChartTypes, registeredIndicators, roundToTick, rowTimeToUtcSeconds, rsi, rsiSeries, sessionStartFlags, sessionStartIndices, snapToDevicePixel, sourceValue, sourceValues, supertrend, supertrendSeries, tableOrigin, toBar, trueRange, utcSecondsToIstDateString, utcSecondsToIstParts, version, verticalGradient, watermarkRect };
@@ -789,6 +789,17 @@ declare const WILLIAMS_FRACTALS: IndicatorDescriptor;
789
789
  declare const RSI_DIVERGENCE: IndicatorDescriptor;
790
790
  declare const SIGNAL_INDICATORS: readonly IndicatorDescriptor[];
791
791
 
792
+ declare const CPR: IndicatorDescriptor;
793
+ declare const ALPHATREND: IndicatorDescriptor;
794
+ declare const RANGE_ANALYSIS: IndicatorDescriptor;
795
+ declare const STUDY_INDICATORS: readonly IndicatorDescriptor[];
796
+
797
+ declare const WAVETREND: IndicatorDescriptor;
798
+ declare const WAVETREND_INDICATORS: readonly IndicatorDescriptor[];
799
+
800
+ declare const SEASONALITY: IndicatorDescriptor;
801
+ declare const SEASONALITY_INDICATORS: readonly IndicatorDescriptor[];
802
+
792
803
  /**
793
804
  * Pure calculation helpers shared by the Tier-1 indicator descriptors
794
805
  * (`openalgo-charts/indicators`). Every function returns an array the same
@@ -899,4 +910,4 @@ declare const BUILTIN_INDICATORS: readonly IndicatorDescriptor[];
899
910
  */
900
911
  declare function registerBuiltinIndicators(): void;
901
912
 
902
- export { ADAPTIVE_INDICATORS, ADL, ADX, ALLIGATOR, ALMA, AROON, AROON_OSCILLATOR, ATR, AVERAGE_DAILY_RANGE, AVERAGE_INDICATORS, AWESOME_OSCILLATOR, BALANCE_OF_POWER, BB_TREND, BOLLINGER, BOLLINGER_BANDWIDTH, BOLLINGER_PERCENT_B, BUILTIN_INDICATORS, CCI, CHAIKIN_MONEY_FLOW, CHAIKIN_OSCILLATOR, CHANDELIER_EXIT, CHANDE_KROLL_STOP, CHANDE_MOMENTUM, CHOPPINESS_INDEX, CHOP_ZONE, CONNORS_RSI, COPPOCK_CURVE, DEMA, DONCHIAN, DPO, EASE_OF_MOVEMENT, ELDER_FORCE_INDEX, EMA, ENVELOPE, FISHER_TRANSFORM, FLOW_INDICATORS, HALFTREND, HISTORICAL_VOLATILITY, HMA, ICHIMOKU, INDEX_INDICATORS, INDICATORS_TIER, KAMA, KELTNER_CHANNEL, KLINGER_OSCILLATOR, KNOW_SURE_THING, LSMA, MACD, MASS_INDEX, MA_CROSS, MA_RIBBON, MCGINLEY_DYNAMIC, MEDIAN, MFI, MOMENTUM, NVI, OBV, OSCILLATOR_INDICATORS, OVERLAY_INDICATORS, PARABOLIC_SAR, PPO, PVI, PVO, PVT, RANGE_INDICATORS, RELATIVE_VIGOR_INDEX, RELATIVE_VOLATILITY_INDEX, ROC, RSI, RSI_DIVERGENCE, SIGNAL_INDICATORS, SMA, SMI, SMI_ERGODIC_INDICATOR, SMI_ERGODIC_OSCILLATOR, SPECIAL_K, STOCHASTIC, STOCHASTIC_RSI, STRENGTH_INDICATORS, SUPERTREND, TEMA, TREND_STRENGTH_INDEX, TRIX, TSI, TWAP, type Tier2Context, type Tier2Descriptor, type Tier2Point, ULCER_INDEX, ULTIMATE_OSCILLATOR, VOLATILITY_INDICATORS, VOLATILITY_STOP, VOLUME, VORTEX, VWAP, VWMA, WILLIAMS_FRACTALS, WILLIAMS_PERCENT_R, WILLIAMS_VIX_FIX, WMA, WOODIES_CCI, connorsStreak, createTier2Indicator, highest, lowest, nulls, registerBuiltinIndicators, rma, sma, stdev, wma };
913
+ export { ADAPTIVE_INDICATORS, ADL, ADX, ALLIGATOR, ALMA, ALPHATREND, AROON, AROON_OSCILLATOR, ATR, AVERAGE_DAILY_RANGE, AVERAGE_INDICATORS, AWESOME_OSCILLATOR, BALANCE_OF_POWER, BB_TREND, BOLLINGER, BOLLINGER_BANDWIDTH, BOLLINGER_PERCENT_B, BUILTIN_INDICATORS, CCI, CHAIKIN_MONEY_FLOW, CHAIKIN_OSCILLATOR, CHANDELIER_EXIT, CHANDE_KROLL_STOP, CHANDE_MOMENTUM, CHOPPINESS_INDEX, CHOP_ZONE, CONNORS_RSI, COPPOCK_CURVE, CPR, DEMA, DONCHIAN, DPO, EASE_OF_MOVEMENT, ELDER_FORCE_INDEX, EMA, ENVELOPE, FISHER_TRANSFORM, FLOW_INDICATORS, HALFTREND, HISTORICAL_VOLATILITY, HMA, ICHIMOKU, INDEX_INDICATORS, INDICATORS_TIER, KAMA, KELTNER_CHANNEL, KLINGER_OSCILLATOR, KNOW_SURE_THING, LSMA, MACD, MASS_INDEX, MA_CROSS, MA_RIBBON, MCGINLEY_DYNAMIC, MEDIAN, MFI, MOMENTUM, NVI, OBV, OSCILLATOR_INDICATORS, OVERLAY_INDICATORS, PARABOLIC_SAR, PPO, PVI, PVO, PVT, RANGE_ANALYSIS, RANGE_INDICATORS, RELATIVE_VIGOR_INDEX, RELATIVE_VOLATILITY_INDEX, ROC, RSI, RSI_DIVERGENCE, SEASONALITY, SEASONALITY_INDICATORS, SIGNAL_INDICATORS, SMA, SMI, SMI_ERGODIC_INDICATOR, SMI_ERGODIC_OSCILLATOR, SPECIAL_K, STOCHASTIC, STOCHASTIC_RSI, STRENGTH_INDICATORS, STUDY_INDICATORS, SUPERTREND, TEMA, TREND_STRENGTH_INDEX, TRIX, TSI, TWAP, type Tier2Context, type Tier2Descriptor, type Tier2Point, ULCER_INDEX, ULTIMATE_OSCILLATOR, VOLATILITY_INDICATORS, VOLATILITY_STOP, VOLUME, VORTEX, VWAP, VWMA, WAVETREND, WAVETREND_INDICATORS, WILLIAMS_FRACTALS, WILLIAMS_PERCENT_R, WILLIAMS_VIX_FIX, WMA, WOODIES_CCI, connorsStreak, createTier2Indicator, highest, lowest, nulls, registerBuiltinIndicators, rma, sma, stdev, wma };