acttrader-charts 1.4.0-beta.1 → 1.4.0-beta.10
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 +98 -8
- package/dist/{MACD-qgMFBxWV.d.cts → MACD-B8LTAGUU.d.cts} +82 -2
- package/dist/{MACD-qgMFBxWV.d.ts → MACD-B8LTAGUU.d.ts} +82 -2
- package/dist/{chunk-H7VQODXR.js → chunk-BMZSNTAI.js} +4820 -4660
- package/dist/chunk-BMZSNTAI.js.map +1 -0
- package/dist/index.cjs +29410 -28613
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +172 -4
- package/dist/index.d.ts +172 -4
- package/dist/index.js +814 -173
- package/dist/index.js.map +1 -1
- package/dist/indicators/index.cjs +191 -59
- package/dist/indicators/index.cjs.map +1 -1
- package/dist/indicators/index.d.cts +22 -3
- package/dist/indicators/index.d.ts +22 -3
- package/dist/indicators/index.js +1 -1
- package/dist/webview/chart.html +97 -97
- package/package.json +1 -1
- package/dist/chunk-H7VQODXR.js.map +0 -1
package/README.md
CHANGED
|
@@ -69,7 +69,7 @@ const chart = new ChartEngine({
|
|
|
69
69
|
// changes, and (unless `reloadOnPriceSourceChange: false`) whenever the price source changes.
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
If the first fetch returns fewer than `minInitialBars` (default `10`), the engine automatically widens the lookback window and calls `dataLoader` again — up to the `maxLookbackMs` ceiling (default 365 days). This keeps the chart useful on weekends, holidays, or for instruments that just listed.
|
|
72
|
+
If the first fetch returns fewer than `minInitialBars` (default `10`), the engine automatically widens the lookback window and calls `dataLoader` again — up to the `maxLookbackMs` ceiling (default 365 days). That ceiling limits only the retries: with no duration selected, the first fetch always asks for `maxCandles` bars, so a 1W chart loads about four years rather than one. This keeps the chart useful on weekends, holidays, or for instruments that just listed. The engine keeps the retry that returned the most bars and stops widening once a wider window returns fewer, because feeds often return nothing for very large ranges (17 days of 1m). A failed retry keeps the bars already received. If no retry returned any bar, or the first request failed, the engine shows a **"No data available"** overlay (customise the text via `labels.chart.noData`). Scrolling back into older history follows the same rule.
|
|
73
73
|
|
|
74
74
|
---
|
|
75
75
|
|
|
@@ -107,6 +107,12 @@ specific instance via its pill **×** or the settings dialog's Remove button.
|
|
|
107
107
|
Each instance has a unique `instanceId` (e.g. `"EMA#3"`). Listen for it via the `indicatorAdded`
|
|
108
108
|
event and pass it to `removeIndicator` to target one instance:
|
|
109
109
|
|
|
110
|
+
`shortName` is always the menu / catalog short name (`"HammingMA"`, `"ZigZag"`,
|
|
111
|
+
`"EMACross"`), in events, `getState()`, the menu ticks and the mobile catalog,
|
|
112
|
+
even for indicators whose display name differs ("Hamming MA"). States saved
|
|
113
|
+
under the old display names still restore, and `removeIndicator` /
|
|
114
|
+
`addIndicatorByName` accept them too.
|
|
115
|
+
|
|
110
116
|
```ts
|
|
111
117
|
chart.on('indicatorAdded', ({ instanceId, shortName, params }) => { /* track it */ });
|
|
112
118
|
chart.removeIndicator('EMA#3'); // remove that one instance
|
|
@@ -206,6 +212,9 @@ const chart = new ChartEngine({
|
|
|
206
212
|
await chart.addCompare('MSFT');
|
|
207
213
|
chart.removeCompare('MSFT');
|
|
208
214
|
chart.clearCompares();
|
|
215
|
+
// Open the built-in picker from your own header (the engine's Compare button
|
|
216
|
+
// lives in the advanced header only):
|
|
217
|
+
chart.openComparePicker();
|
|
209
218
|
chart.getCompares(); // [{ symbol, color, status }]
|
|
210
219
|
|
|
211
220
|
// Events
|
|
@@ -529,7 +538,7 @@ use `{symbol}` and `{count}`. The maths behind the pill is exported as
|
|
|
529
538
|
| `tickActivityMs` | | `30000` | ms the stream dot stays green after last tick |
|
|
530
539
|
| `maxCandles` | | `200` | Max bars fetched per data-load request |
|
|
531
540
|
| `minInitialBars` | | `10` | If `dataLoader` returns fewer bars, the fetch window auto-widens and retries (handles weekends, market closures, and sparse symbols) |
|
|
532
|
-
| `maxLookbackMs` | | `31_536_000_000` | Hard ceiling on auto-widening lookback (ms). Retries stop once the window reaches this. Default: 365 days |
|
|
541
|
+
| `maxLookbackMs` | | `31_536_000_000` | Hard ceiling on auto-widening lookback (ms). Retries stop once the window reaches this. Default: 365 days. The first request (no duration selected) always covers `maxCandles` bars even when that is longer, e.g. 200 × 1W ≈ 4 years, so long-period studies (TEMA, TRIX, KVO, CRSI) draw on weekly charts |
|
|
533
542
|
| `prefetchThreshold` | | `80` | Bars from start of data at which historical fetch triggers (min 20) |
|
|
534
543
|
| `mobileBarDivisor` | | `2` | Divide desktop visible bar count on touch devices (`2`, `3`, or `4`) |
|
|
535
544
|
| `momentumScrollEnabled` | | `true` | Enable momentum (kinetic) scrolling — chart coasts after a fast flick |
|
|
@@ -983,6 +992,7 @@ chart.setVolume(show: boolean): this
|
|
|
983
992
|
|
|
984
993
|
```ts
|
|
985
994
|
chart.addIndicator(indicator: IIndicator, initialParams?: IndicatorParams): this
|
|
995
|
+
chart.addIndicatorByName(shortName: string, params?: IndicatorParams): void // params from a host are normalised to the study's schema first: "20" → 20 (clamped to min/max), "Close" → 'close', TradingView's `length` → `period` — so a native settings sheet draws the same line as the web
|
|
986
996
|
chart.addIndicatorByName(shortName: string, params?: IndicatorParams): void
|
|
987
997
|
chart.removeIndicator(idOrShortName: string): this
|
|
988
998
|
```
|
|
@@ -1202,7 +1212,7 @@ Sub-pane heights are user-resizable by dragging the separator between panes.
|
|
|
1202
1212
|
| `horizontalLine` | Horizontal Line | Single click |
|
|
1203
1213
|
| `verticalLine` | Vertical Line | Single click |
|
|
1204
1214
|
| `trendLine` | Trend Line | 2 clicks |
|
|
1205
|
-
| `trendAngle` | Trend Angle | 2 clicks
|
|
1215
|
+
| `trendAngle` | Trend Angle | 2 clicks. The angle is the drawing's own property: measured when a point is placed or dragged, kept while zooming, and saved as `angle` on the serialized drawing — so a synced drawing shows the same degrees on web, Android and iOS. The line is drawn from the first point at that angle, as far as the second point projects; the stored points are never rewritten by rendering (before 1.4.0-beta.4 the second point was re-anchored onto the line on every render, which lengthened the line on every zoom or tick until it ran off the pane). |
|
|
1206
1216
|
| `crossLine` | Cross Line | Single click (H+V) |
|
|
1207
1217
|
| `parallelChannel` | Parallel Channel | 3 clicks |
|
|
1208
1218
|
| `flatChannel` | Flat Channel | 2 clicks |
|
|
@@ -1383,6 +1393,7 @@ chart.on('dataLoaded', ({ timeframe, interval, start, end, priceSource }) =>
|
|
|
1383
1393
|
chart.on('newBar', ({ completedBar, openingBar, intervalMs }) => {});
|
|
1384
1394
|
chart.on('indicatorAdded', ({ instanceId, shortName, params }) => {}); // a study instance was added — keep instanceId to remove it later
|
|
1385
1395
|
chart.on('indicatorRemoved', ({ instanceId, shortName }) => {});
|
|
1396
|
+
chart.on('indicatorLimitReached', ({ shortName, maxSubPanes }) => {});
|
|
1386
1397
|
chart.on('stateChange', ({ symbol, state }) => {
|
|
1387
1398
|
// Fires after every user-driven config change (timeframe, series, theme,
|
|
1388
1399
|
// indicators, drawings, volume). `state` is a full serializable snapshot.
|
|
@@ -1887,9 +1898,45 @@ The existing `anchoredVP` *drawing tool* is a different thing: its bar heights
|
|
|
1887
1898
|
come from a hardcoded bell curve, not from the feed.
|
|
1888
1899
|
|
|
1889
1900
|
**`maxSubPanes` caps concurrent sub-pane indicators.** Most of these 78 live in
|
|
1890
|
-
their own pane, so adding
|
|
1901
|
+
their own pane, so adding one past the cap is refused: the chart shows a short
|
|
1902
|
+
notice and emits `indicatorLimitReached` `{ shortName, maxSubPanes }`. Raise
|
|
1891
1903
|
`maxSubPanes` if you need more on screen together.
|
|
1892
1904
|
|
|
1905
|
+
```ts
|
|
1906
|
+
chart.on('indicatorLimitReached', ({ shortName, maxSubPanes }) => {
|
|
1907
|
+
console.warn(`${shortName} not added: ${maxSubPanes} sub-panes in use`);
|
|
1908
|
+
});
|
|
1909
|
+
```
|
|
1910
|
+
|
|
1911
|
+
**Compare-based studies say what they need.** Correlation Coefficient,
|
|
1912
|
+
Correlation - Log, Ratio and Spread need one Compare symbol and Advance/Decline
|
|
1913
|
+
needs two. Until then their pane shows *"Click Compare in the chart header to add a symbol for this
|
|
1914
|
+
indicator"* instead of staying blank, and they fill in as soon as the compare
|
|
1915
|
+
loads.
|
|
1916
|
+
|
|
1917
|
+
**No volume, no plot.** When no loaded bar has volume, volume studies are not
|
|
1918
|
+
plotted at all — no line, no pane, no pill — and the indicator menus leave them
|
|
1919
|
+
out (the Volume heading too, when it would be empty), in search as well. One
|
|
1920
|
+
added anyway (API, bridge, saved layout) is kept and shows a short notice; it
|
|
1921
|
+
appears by itself once data with volume loads. `dataLoaded` carries `hasVolume`
|
|
1922
|
+
and `barCount`; the WebView bridge also posts `volumeAvailability { hasVolume }`
|
|
1923
|
+
and marks catalog indicators `requiresVolume`.
|
|
1924
|
+
|
|
1925
|
+
**Bars without volume become gaps.** Volume studies (Volume, OBV, A/D, MFI, CMF,
|
|
1926
|
+
VWAP, EOM, EFI, Klinger, Volume Oscillator, Net Volume, PVT, Chaikin Oscillator)
|
|
1927
|
+
draw nothing on bars whose feed sent no volume (missing or 0). The line ends at
|
|
1928
|
+
the last bar with volume instead of going flat or reading MFI 100, and a pane with
|
|
1929
|
+
no volume in view says *"No volume data from the feed for these bars"*.
|
|
1930
|
+
|
|
1931
|
+
**52 Week High/Low** covers 52 weeks of time on every timeframe, or all the
|
|
1932
|
+
loaded history when that is shorter. **Zig Zag** always draws its latest leg,
|
|
1933
|
+
even when no swing has reached the deviation yet. Large sub-pane axis values are
|
|
1934
|
+
shortened (1.83M, -45.6B).
|
|
1935
|
+
**Chande Kroll Stop** follows the standard formula (stop short = highest of the
|
|
1936
|
+
high stop, stop long = lowest of the low stop), so both lines sit near price. The
|
|
1937
|
+
main pane's auto-scale includes the upper and lower lines of band studies (52W
|
|
1938
|
+
H/L, Chande Kroll, Bollinger, …), so those lines stay on screen.
|
|
1939
|
+
|
|
1893
1940
|
### Native wrapper parity
|
|
1894
1941
|
|
|
1895
1942
|
All 78 are reachable through the existing `addIndicator` bridge command by short
|
|
@@ -2265,6 +2312,25 @@ Two details worth knowing:
|
|
|
2265
2312
|
in hand. It deletes via select-then-delete, so it shares the undo history with
|
|
2266
2313
|
every other delete.
|
|
2267
2314
|
|
|
2315
|
+
### Touch gestures (iOS / Android)
|
|
2316
|
+
|
|
2317
|
+
| Gesture | Effect |
|
|
2318
|
+
| --- | --- |
|
|
2319
|
+
| One-finger drag on the chart | Scrolls through time (with momentum) |
|
|
2320
|
+
| Pinch | Zooms the time axis |
|
|
2321
|
+
| One-finger drag along the time (x) axis | Zooms the time axis the way TradingView does: the right edge (normally the latest bar) stays put, drag right to zoom in and left to zoom out. Zooming out stops when the oldest bar reaches the left edge, so the candles always fill the full width. The mouse drag on the time axis behaves the same way |
|
|
2322
|
+
| One-finger drag on the price (y) axis | Zooms the price axis |
|
|
2323
|
+
| One-finger **double tap** on the chart | Zooms the price axis in one step around the tapped price |
|
|
2324
|
+
| One-finger **double tap** on the price (y) axis | Resets the view, the same as the Reset view button |
|
|
2325
|
+
| One-finger **double tap, then drag** up/down | Zooms the price axis continuously: up zooms in, down zooms out (the same direction as the price-axis drag) |
|
|
2326
|
+
| Long press | Shows the crosshair |
|
|
2327
|
+
|
|
2328
|
+
Once the view has moved away from its default, a round **Reset view** button
|
|
2329
|
+
appears just above the time axis. It is part of the built-in UI, so it is not
|
|
2330
|
+
shown when `showUI: false` (the usual iOS / Android setup, where the app draws
|
|
2331
|
+
its own controls). On a bare chart, double tap the price axis or call
|
|
2332
|
+
`resetView()` to bring the view back.
|
|
2333
|
+
|
|
2268
2334
|
### Value tooltip on long press
|
|
2269
2335
|
|
|
2270
2336
|
```ts
|
|
@@ -2280,6 +2346,13 @@ It flips to the other side of the touch rather than running off an edge, never
|
|
|
2280
2346
|
takes pointer events (the drag is still in progress), and omits volume rather
|
|
2281
2347
|
than printing a zero when the feed carries none. Default `false`.
|
|
2282
2348
|
|
|
2349
|
+
The long press itself (500 ms, finger still within 6 px) arms the crosshair on
|
|
2350
|
+
every touch platform. The chart claims that touch with `preventDefault()` so a
|
|
2351
|
+
WebView's own long-press gesture — WebKit's text-selection / callout recogniser
|
|
2352
|
+
on iOS, which used to cancel the touch at the same moment and left iPhones with
|
|
2353
|
+
no crosshair at all — cannot take it over; a cancel that still arrives after
|
|
2354
|
+
300 ms of holding counts as the long press.
|
|
2355
|
+
|
|
2283
2356
|
### Native wrapper parity
|
|
2284
2357
|
|
|
2285
2358
|
The four line tools are new `DrawingToolType` strings, so `setDrawingTool('ray')`
|
|
@@ -2329,6 +2402,13 @@ Three consequences worth knowing:
|
|
|
2329
2402
|
different number of elements.
|
|
2330
2403
|
- **Market price still comes off the raw feed.** Trade levels and P&L price
|
|
2331
2404
|
against the real last close, never a brick top.
|
|
2405
|
+
- **Live ticks move the element count both ways.** The forming bar completes a
|
|
2406
|
+
brick, line or column on one tick and takes it back on the next. The view
|
|
2407
|
+
keeps tracking the live edge either way — same width, same room past the
|
|
2408
|
+
last element — and a view scrolled into history stays put. Box and reversal
|
|
2409
|
+
sizes are measured over **closed** bars, so a tick never re-grids the series;
|
|
2410
|
+
an ATR box changes once per completed bar. (Before 1.4.0-beta.4 the view only
|
|
2411
|
+
ever moved forward, so these types went blank after a while on a live feed.)
|
|
2332
2412
|
|
|
2333
2413
|
### Parameters
|
|
2334
2414
|
|
|
@@ -2354,12 +2434,12 @@ Renko leaves Kagi and P&F alone.
|
|
|
2354
2434
|
|
|
2355
2435
|
| `BoxSizeMode` | Meaning |
|
|
2356
2436
|
| --- | --- |
|
|
2357
|
-
| `{ kind: 'atr', length }` | Wilder ATR over the last `length` bars. Default `14`. |
|
|
2437
|
+
| `{ kind: 'atr', length }` | Wilder ATR over the last `length` closed bars (the forming bar is excluded). Default `14`. |
|
|
2358
2438
|
| `{ kind: 'fixed', size }` | A fixed price distance. |
|
|
2359
|
-
| `{ kind: 'percent', percent }` | A percentage of the
|
|
2439
|
+
| `{ kind: 'percent', percent }` | A percentage of the last closed bar's close. |
|
|
2360
2440
|
|
|
2361
|
-
When a box cannot be sized — fewer than `length + 1` bars for the ATR, or
|
|
2362
|
-
non-positive size — the transform returns **no elements** rather than guessing. A
|
|
2441
|
+
When a box cannot be sized — fewer than `length + 1` closed bars for the ATR, or
|
|
2442
|
+
a non-positive size — the transform returns **no elements** rather than guessing. A
|
|
2363
2443
|
wrong box size does not look wrong; it looks like a different market.
|
|
2364
2444
|
|
|
2365
2445
|
### The rules each type implements
|
|
@@ -2983,6 +3063,16 @@ class MyIndicator implements IIndicator {
|
|
|
2983
3063
|
chart.addIndicator(new MyIndicator());
|
|
2984
3064
|
```
|
|
2985
3065
|
|
|
3066
|
+
**Price fields.** A main-pane (`pane: 'main'`) indicator's `value`, `upper` and
|
|
3067
|
+
`lower` count as prices when the price scale auto-fits, so band lines stay in
|
|
3068
|
+
view. If your indicator stores something else in one of them, list only its
|
|
3069
|
+
price fields, or the scale stretches to that number and flattens the candles.
|
|
3070
|
+
Supertrend and Parabolic SAR keep the trend direction (+1 / -1) in `upper`:
|
|
3071
|
+
|
|
3072
|
+
```ts
|
|
3073
|
+
readonly priceFields = ['value'] as const; // default: ['value', 'upper', 'lower']
|
|
3074
|
+
```
|
|
3075
|
+
|
|
2986
3076
|
---
|
|
2987
3077
|
|
|
2988
3078
|
## Build & Dev
|
|
@@ -1465,7 +1465,9 @@ interface ChartConfig {
|
|
|
1465
1465
|
/**
|
|
1466
1466
|
* Hard ceiling (in milliseconds) on how far back auto-widening retries
|
|
1467
1467
|
* can reach when chasing enough bars. Retries stop once the window meets
|
|
1468
|
-
* or exceeds this value. Default: 365 days.
|
|
1468
|
+
* or exceeds this value. Default: 365 days. Without a duration, the first
|
|
1469
|
+
* request always covers `maxCandles` bars, even when that is longer
|
|
1470
|
+
* (e.g. 200 × 1W ≈ 4 years), so long-period studies have bars to draw.
|
|
1469
1471
|
*/
|
|
1470
1472
|
maxLookbackMs?: number;
|
|
1471
1473
|
/**
|
|
@@ -2325,6 +2327,21 @@ interface IIndicator {
|
|
|
2325
2327
|
readonly pane?: "main" | "sub";
|
|
2326
2328
|
readonly paneHeight?: number;
|
|
2327
2329
|
compute(data: OHLCVBar[], context?: IndicatorComputeContext): IndicatorResult[];
|
|
2330
|
+
/**
|
|
2331
|
+
* True for studies built on bar volume (Volume, OBV, MFI, …). The engine
|
|
2332
|
+
* blanks their output on bars whose feed sent no volume (missing or 0), so
|
|
2333
|
+
* a feed that stops sending volume ends the line there instead of drawing a
|
|
2334
|
+
* flat line or a meaningless reading such as MFI 100.
|
|
2335
|
+
*/
|
|
2336
|
+
readonly usesVolume?: boolean;
|
|
2337
|
+
/**
|
|
2338
|
+
* Result fields that hold prices, so a main-pane study keeps them in view
|
|
2339
|
+
* when the price scale auto-fits. Default: `value`, `upper` and `lower`.
|
|
2340
|
+
* A study that stores something else in a field — Supertrend and Parabolic
|
|
2341
|
+
* SAR keep the trend direction (+1 / -1) in `upper` — lists only its price
|
|
2342
|
+
* fields, or the scale would stretch to that number and flatten the candles.
|
|
2343
|
+
*/
|
|
2344
|
+
readonly priceFields?: readonly ('value' | 'upper' | 'lower')[];
|
|
2328
2345
|
/**
|
|
2329
2346
|
* Returns the natural value range for the given results.
|
|
2330
2347
|
* Used to render a price axis on the right side of sub-panes and to support draggable Y-scale.
|
|
@@ -2492,6 +2509,12 @@ interface IDrawing {
|
|
|
2492
2509
|
visible?: boolean;
|
|
2493
2510
|
locked?: boolean;
|
|
2494
2511
|
text?: string;
|
|
2512
|
+
/**
|
|
2513
|
+
* Trend Angle only: the line's angle in degrees from the horizontal — the
|
|
2514
|
+
* drawing's defining property, kept through zooms and carried across
|
|
2515
|
+
* platforms so the label reads the same everywhere. Other tools leave it unset.
|
|
2516
|
+
*/
|
|
2517
|
+
angle?: number;
|
|
2495
2518
|
/** Optional per-instance style override; falls back to theme defaults when absent. */
|
|
2496
2519
|
style?: AnyDrawingStyle;
|
|
2497
2520
|
render(ctx: CanvasRenderingContext2D, scale: ScaleManager, viewport: Viewport, priceRange: PriceRange, chartW: number, chartH: number, isSelected: boolean, pricePrecision?: number, theme?: ChartTheme, context?: DrawingRenderContext): void;
|
|
@@ -2511,6 +2534,14 @@ interface IDrawing {
|
|
|
2511
2534
|
* a third time.
|
|
2512
2535
|
*/
|
|
2513
2536
|
onPlaced?(): void;
|
|
2537
|
+
/**
|
|
2538
|
+
* Called after the user moved this drawing's points — while placing it,
|
|
2539
|
+
* dragging the whole drawing, or dragging a handle. Not called when the
|
|
2540
|
+
* engine re-anchors points to new data (reload, scroll-back, timeframe
|
|
2541
|
+
* change), so a tool that derives a property from where the user put the
|
|
2542
|
+
* points — Trend Angle's angle — can tell the two apart.
|
|
2543
|
+
*/
|
|
2544
|
+
onPointsEdited?(): void;
|
|
2514
2545
|
/** Returns the handle under (x, y), or null if none */
|
|
2515
2546
|
getHandle(x: number, y: number, scale: ScaleManager, viewport: Viewport, priceRange: PriceRange, chartW: number, chartH: number): DrawingHandle | null;
|
|
2516
2547
|
/**
|
|
@@ -2564,6 +2595,8 @@ interface SerializedDrawing {
|
|
|
2564
2595
|
visible?: boolean;
|
|
2565
2596
|
text?: string;
|
|
2566
2597
|
locked?: boolean;
|
|
2598
|
+
/** Trend Angle: degrees from the horizontal. Present once the angle has been measured; see `IDrawing.angle`. */
|
|
2599
|
+
angle?: number;
|
|
2567
2600
|
/** Optional per-instance style override; absent for drawings using theme defaults. */
|
|
2568
2601
|
style?: AnyDrawingStyle;
|
|
2569
2602
|
}
|
|
@@ -2761,6 +2794,14 @@ type ChartEventMap = {
|
|
|
2761
2794
|
end: Date;
|
|
2762
2795
|
/** Candle price source the bars were requested with (see `DataLoaderParams.priceSource`). */
|
|
2763
2796
|
priceSource: 'bid' | 'ask' | 'ltp';
|
|
2797
|
+
/** Bars on the chart after the load. */
|
|
2798
|
+
barCount: number;
|
|
2799
|
+
/**
|
|
2800
|
+
* Whether any loaded bar has volume. When false, volume studies
|
|
2801
|
+
* (Volume, VWAP, OBV, MFI, …) are not plotted; native menus can grey
|
|
2802
|
+
* them out — the catalog marks them `requiresVolume`.
|
|
2803
|
+
*/
|
|
2804
|
+
hasVolume: boolean;
|
|
2764
2805
|
};
|
|
2765
2806
|
/** Emitted when the user clicks the × button on a trade, position, or bracket (SL/TP) level. */
|
|
2766
2807
|
tradeLevelClose: {
|
|
@@ -3060,6 +3101,14 @@ type ChartEventMap = {
|
|
|
3060
3101
|
shortName: string;
|
|
3061
3102
|
params: IndicatorParams;
|
|
3062
3103
|
};
|
|
3104
|
+
/**
|
|
3105
|
+
* Emitted when an indicator is refused because every sub-pane slot is in
|
|
3106
|
+
* use (`maxSubPanes`, default 3). The chart also shows a short notice.
|
|
3107
|
+
*/
|
|
3108
|
+
indicatorLimitReached: {
|
|
3109
|
+
shortName: string;
|
|
3110
|
+
maxSubPanes: number;
|
|
3111
|
+
};
|
|
3063
3112
|
/** Emitted after an indicator instance is removed (pill ×, settings dialog, or `removeIndicator`). */
|
|
3064
3113
|
indicatorRemoved: {
|
|
3065
3114
|
instanceId: string;
|
|
@@ -3601,6 +3650,15 @@ declare function mapSeries(a: Series, fn: (x: number, i: number) => number | nul
|
|
|
3601
3650
|
/** Cumulative running sum, null-propagating from the first defined value. */
|
|
3602
3651
|
declare function cumulative(values: Series): Series;
|
|
3603
3652
|
|
|
3653
|
+
/**
|
|
3654
|
+
* Writes a one-line notice in the middle of a pane that has nothing to draw.
|
|
3655
|
+
*
|
|
3656
|
+
* An empty pane with only a label looks like a bug; saying why it is empty
|
|
3657
|
+
* (no compare symbol, no volume from the feed) tells the user what to do.
|
|
3658
|
+
*/
|
|
3659
|
+
declare function drawPaneHint(ctx: CanvasRenderingContext2D, text: string, chartHeight: number, color?: string): void;
|
|
3660
|
+
/** True when no result carries a value in `field` — the study drew nothing. */
|
|
3661
|
+
declare function allEmpty(results: readonly IndicatorResult[], field?: 'value'): boolean;
|
|
3604
3662
|
/** One plotted line: where to read it from a result, and how to draw it. */
|
|
3605
3663
|
interface LineSpec {
|
|
3606
3664
|
/** Which field of `IndicatorResult` carries this line. */
|
|
@@ -3667,6 +3725,13 @@ declare abstract class HistogramIndicatorBase extends LineIndicatorBase {
|
|
|
3667
3725
|
protected baseline(): number;
|
|
3668
3726
|
/** Which field drives the bars. */
|
|
3669
3727
|
protected barField(): 'value' | 'histogram';
|
|
3728
|
+
/**
|
|
3729
|
+
* The bars must count toward the range. Subclasses that draw only bars
|
|
3730
|
+
* declare no lines, so the line-only range collapsed to the baseline guide
|
|
3731
|
+
* and fell back to a fixed −1…1 axis, flattening the Accelerator and
|
|
3732
|
+
* clipping Net Volume.
|
|
3733
|
+
*/
|
|
3734
|
+
getValueRange(results: IndicatorResult[]): PriceRange;
|
|
3670
3735
|
render(ctx: CanvasRenderingContext2D, results: IndicatorResult[], scale: ScaleManager, viewport: Viewport, chartHeight: number, rangeOverride?: PriceRange): void;
|
|
3671
3736
|
}
|
|
3672
3737
|
/** Packs aligned series into the `IndicatorResult[]` shape the engine renders. */
|
|
@@ -3797,6 +3862,13 @@ interface IndicatorDef {
|
|
|
3797
3862
|
/** Only one instance makes sense (e.g. a single volume pane). */
|
|
3798
3863
|
singleInstance?: boolean;
|
|
3799
3864
|
}
|
|
3865
|
+
/**
|
|
3866
|
+
* Indicator short names that need bar volume. The indicator menus disable
|
|
3867
|
+
* them when the loaded bars carry none, since they would draw nothing.
|
|
3868
|
+
*/
|
|
3869
|
+
declare const VOLUME_STUDIES: ReadonlySet<string>;
|
|
3870
|
+
/** Tooltip on a volume study the menu has disabled. */
|
|
3871
|
+
declare const NO_VOLUME_TITLE = "Not available: this symbol's chart data has no volume";
|
|
3800
3872
|
/** A period field. Shared so every indicator agrees on sane bounds. */
|
|
3801
3873
|
declare const periodField: (def: number, key?: string, label?: string, max?: number) => ParamFieldDef;
|
|
3802
3874
|
/** A colour field. */
|
|
@@ -3823,6 +3895,14 @@ declare function extraIndicatorPresets(): {
|
|
|
3823
3895
|
shortName: string;
|
|
3824
3896
|
factory: () => IIndicator;
|
|
3825
3897
|
}[];
|
|
3898
|
+
/**
|
|
3899
|
+
* Maps the `name` an indicator instance reports (e.g. `'Hamming MA'`) to its
|
|
3900
|
+
* registry short name (`'HammingMA'`), for the indicators where the two differ.
|
|
3901
|
+
* The engine keys active indicators, menu ticks, saved state and bridge events
|
|
3902
|
+
* by the short name; layouts saved before that used the instance name, so
|
|
3903
|
+
* restoring them goes through this map too. Built once, from schema defaults.
|
|
3904
|
+
*/
|
|
3905
|
+
declare function extraInstanceNameMap(): ReadonlyMap<string, string>;
|
|
3826
3906
|
/** Short names that may only have one instance on a chart. */
|
|
3827
3907
|
declare function extraSingleInstance(): string[];
|
|
3828
3908
|
|
|
@@ -3887,4 +3967,4 @@ declare class MACD implements IIndicator {
|
|
|
3887
3967
|
render(ctx: CanvasRenderingContext2D, results: IndicatorResult[], scale: ScaleManager, viewport: Viewport, paneHeight: number, rangeOverride?: PriceRange): void;
|
|
3888
3968
|
}
|
|
3889
3969
|
|
|
3890
|
-
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
|
|
3970
|
+
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, sourceSeries 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, linregAt as bA, linregSlope as bB, lowest as bC, lsma as bD, makeLayoutId as bE, makeSettingsTemplateId as bF, makeTemplateId as bG, mcginley as bH, methodField as bI, numField as bJ, periodField as bK, registerCustomPreset as bL, removeLayout as bM, removeSettingsTemplate as bN, removeTemplate as bO, resolveBoxSize as bP, resolveCssVarsInTheme as bQ, resolveInstrument as bR, resolveLabels as bS, resolveUiConfig as bT, rma as bU, rocPct as bV, sanitizeLayouts as bW, sanitizeSettingsTemplates as bX, sanitizeTemplates as bY, sma as bZ, sourceField 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, extraInstanceNameMap as bl, extraSingleInstance as bm, findLayout as bn, findSettingsTemplate as bo, findTemplate as bp, formatDuration as bq, formatVolume as br, getAllPresets as bs, getCustomPresets as bt, getPreset as bu, hammingMa as bv, highest as bw, hma as bx, inferPipSize as by, isPriceTransformSeries as bz, type IndicatorTemplate as c, sourceValue as c0, standardError as c1, stdev as c2, tema as c3, toKagi as c4, toLineBreak as c5, toMoney as c6, toPips as c7, toPointFigure as c8, toRenko as c9, trueRange as ca, unregisterCustomPreset as cb, upsertLayout as cc, upsertSettingsTemplate as cd, upsertTemplate as ce, vwma as cf, wma as cg, type PriceSource as ch, HistogramIndicatorBase as ci, type LineSpec as cj, type GuideLevel as ck, LineIndicatorBase as cl, type MaMethod as cm, BandIndicatorBase as cn, AdaptiveMA as co, MaChannel as cp, MovingAverage as cq, MultiMA as cr, allEmpty as cs, applyMa as ct, combine as cu, drawPaneHint as cv, mapSeries as cw, toResults as cx, 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 };
|
|
@@ -1465,7 +1465,9 @@ interface ChartConfig {
|
|
|
1465
1465
|
/**
|
|
1466
1466
|
* Hard ceiling (in milliseconds) on how far back auto-widening retries
|
|
1467
1467
|
* can reach when chasing enough bars. Retries stop once the window meets
|
|
1468
|
-
* or exceeds this value. Default: 365 days.
|
|
1468
|
+
* or exceeds this value. Default: 365 days. Without a duration, the first
|
|
1469
|
+
* request always covers `maxCandles` bars, even when that is longer
|
|
1470
|
+
* (e.g. 200 × 1W ≈ 4 years), so long-period studies have bars to draw.
|
|
1469
1471
|
*/
|
|
1470
1472
|
maxLookbackMs?: number;
|
|
1471
1473
|
/**
|
|
@@ -2325,6 +2327,21 @@ interface IIndicator {
|
|
|
2325
2327
|
readonly pane?: "main" | "sub";
|
|
2326
2328
|
readonly paneHeight?: number;
|
|
2327
2329
|
compute(data: OHLCVBar[], context?: IndicatorComputeContext): IndicatorResult[];
|
|
2330
|
+
/**
|
|
2331
|
+
* True for studies built on bar volume (Volume, OBV, MFI, …). The engine
|
|
2332
|
+
* blanks their output on bars whose feed sent no volume (missing or 0), so
|
|
2333
|
+
* a feed that stops sending volume ends the line there instead of drawing a
|
|
2334
|
+
* flat line or a meaningless reading such as MFI 100.
|
|
2335
|
+
*/
|
|
2336
|
+
readonly usesVolume?: boolean;
|
|
2337
|
+
/**
|
|
2338
|
+
* Result fields that hold prices, so a main-pane study keeps them in view
|
|
2339
|
+
* when the price scale auto-fits. Default: `value`, `upper` and `lower`.
|
|
2340
|
+
* A study that stores something else in a field — Supertrend and Parabolic
|
|
2341
|
+
* SAR keep the trend direction (+1 / -1) in `upper` — lists only its price
|
|
2342
|
+
* fields, or the scale would stretch to that number and flatten the candles.
|
|
2343
|
+
*/
|
|
2344
|
+
readonly priceFields?: readonly ('value' | 'upper' | 'lower')[];
|
|
2328
2345
|
/**
|
|
2329
2346
|
* Returns the natural value range for the given results.
|
|
2330
2347
|
* Used to render a price axis on the right side of sub-panes and to support draggable Y-scale.
|
|
@@ -2492,6 +2509,12 @@ interface IDrawing {
|
|
|
2492
2509
|
visible?: boolean;
|
|
2493
2510
|
locked?: boolean;
|
|
2494
2511
|
text?: string;
|
|
2512
|
+
/**
|
|
2513
|
+
* Trend Angle only: the line's angle in degrees from the horizontal — the
|
|
2514
|
+
* drawing's defining property, kept through zooms and carried across
|
|
2515
|
+
* platforms so the label reads the same everywhere. Other tools leave it unset.
|
|
2516
|
+
*/
|
|
2517
|
+
angle?: number;
|
|
2495
2518
|
/** Optional per-instance style override; falls back to theme defaults when absent. */
|
|
2496
2519
|
style?: AnyDrawingStyle;
|
|
2497
2520
|
render(ctx: CanvasRenderingContext2D, scale: ScaleManager, viewport: Viewport, priceRange: PriceRange, chartW: number, chartH: number, isSelected: boolean, pricePrecision?: number, theme?: ChartTheme, context?: DrawingRenderContext): void;
|
|
@@ -2511,6 +2534,14 @@ interface IDrawing {
|
|
|
2511
2534
|
* a third time.
|
|
2512
2535
|
*/
|
|
2513
2536
|
onPlaced?(): void;
|
|
2537
|
+
/**
|
|
2538
|
+
* Called after the user moved this drawing's points — while placing it,
|
|
2539
|
+
* dragging the whole drawing, or dragging a handle. Not called when the
|
|
2540
|
+
* engine re-anchors points to new data (reload, scroll-back, timeframe
|
|
2541
|
+
* change), so a tool that derives a property from where the user put the
|
|
2542
|
+
* points — Trend Angle's angle — can tell the two apart.
|
|
2543
|
+
*/
|
|
2544
|
+
onPointsEdited?(): void;
|
|
2514
2545
|
/** Returns the handle under (x, y), or null if none */
|
|
2515
2546
|
getHandle(x: number, y: number, scale: ScaleManager, viewport: Viewport, priceRange: PriceRange, chartW: number, chartH: number): DrawingHandle | null;
|
|
2516
2547
|
/**
|
|
@@ -2564,6 +2595,8 @@ interface SerializedDrawing {
|
|
|
2564
2595
|
visible?: boolean;
|
|
2565
2596
|
text?: string;
|
|
2566
2597
|
locked?: boolean;
|
|
2598
|
+
/** Trend Angle: degrees from the horizontal. Present once the angle has been measured; see `IDrawing.angle`. */
|
|
2599
|
+
angle?: number;
|
|
2567
2600
|
/** Optional per-instance style override; absent for drawings using theme defaults. */
|
|
2568
2601
|
style?: AnyDrawingStyle;
|
|
2569
2602
|
}
|
|
@@ -2761,6 +2794,14 @@ type ChartEventMap = {
|
|
|
2761
2794
|
end: Date;
|
|
2762
2795
|
/** Candle price source the bars were requested with (see `DataLoaderParams.priceSource`). */
|
|
2763
2796
|
priceSource: 'bid' | 'ask' | 'ltp';
|
|
2797
|
+
/** Bars on the chart after the load. */
|
|
2798
|
+
barCount: number;
|
|
2799
|
+
/**
|
|
2800
|
+
* Whether any loaded bar has volume. When false, volume studies
|
|
2801
|
+
* (Volume, VWAP, OBV, MFI, …) are not plotted; native menus can grey
|
|
2802
|
+
* them out — the catalog marks them `requiresVolume`.
|
|
2803
|
+
*/
|
|
2804
|
+
hasVolume: boolean;
|
|
2764
2805
|
};
|
|
2765
2806
|
/** Emitted when the user clicks the × button on a trade, position, or bracket (SL/TP) level. */
|
|
2766
2807
|
tradeLevelClose: {
|
|
@@ -3060,6 +3101,14 @@ type ChartEventMap = {
|
|
|
3060
3101
|
shortName: string;
|
|
3061
3102
|
params: IndicatorParams;
|
|
3062
3103
|
};
|
|
3104
|
+
/**
|
|
3105
|
+
* Emitted when an indicator is refused because every sub-pane slot is in
|
|
3106
|
+
* use (`maxSubPanes`, default 3). The chart also shows a short notice.
|
|
3107
|
+
*/
|
|
3108
|
+
indicatorLimitReached: {
|
|
3109
|
+
shortName: string;
|
|
3110
|
+
maxSubPanes: number;
|
|
3111
|
+
};
|
|
3063
3112
|
/** Emitted after an indicator instance is removed (pill ×, settings dialog, or `removeIndicator`). */
|
|
3064
3113
|
indicatorRemoved: {
|
|
3065
3114
|
instanceId: string;
|
|
@@ -3601,6 +3650,15 @@ declare function mapSeries(a: Series, fn: (x: number, i: number) => number | nul
|
|
|
3601
3650
|
/** Cumulative running sum, null-propagating from the first defined value. */
|
|
3602
3651
|
declare function cumulative(values: Series): Series;
|
|
3603
3652
|
|
|
3653
|
+
/**
|
|
3654
|
+
* Writes a one-line notice in the middle of a pane that has nothing to draw.
|
|
3655
|
+
*
|
|
3656
|
+
* An empty pane with only a label looks like a bug; saying why it is empty
|
|
3657
|
+
* (no compare symbol, no volume from the feed) tells the user what to do.
|
|
3658
|
+
*/
|
|
3659
|
+
declare function drawPaneHint(ctx: CanvasRenderingContext2D, text: string, chartHeight: number, color?: string): void;
|
|
3660
|
+
/** True when no result carries a value in `field` — the study drew nothing. */
|
|
3661
|
+
declare function allEmpty(results: readonly IndicatorResult[], field?: 'value'): boolean;
|
|
3604
3662
|
/** One plotted line: where to read it from a result, and how to draw it. */
|
|
3605
3663
|
interface LineSpec {
|
|
3606
3664
|
/** Which field of `IndicatorResult` carries this line. */
|
|
@@ -3667,6 +3725,13 @@ declare abstract class HistogramIndicatorBase extends LineIndicatorBase {
|
|
|
3667
3725
|
protected baseline(): number;
|
|
3668
3726
|
/** Which field drives the bars. */
|
|
3669
3727
|
protected barField(): 'value' | 'histogram';
|
|
3728
|
+
/**
|
|
3729
|
+
* The bars must count toward the range. Subclasses that draw only bars
|
|
3730
|
+
* declare no lines, so the line-only range collapsed to the baseline guide
|
|
3731
|
+
* and fell back to a fixed −1…1 axis, flattening the Accelerator and
|
|
3732
|
+
* clipping Net Volume.
|
|
3733
|
+
*/
|
|
3734
|
+
getValueRange(results: IndicatorResult[]): PriceRange;
|
|
3670
3735
|
render(ctx: CanvasRenderingContext2D, results: IndicatorResult[], scale: ScaleManager, viewport: Viewport, chartHeight: number, rangeOverride?: PriceRange): void;
|
|
3671
3736
|
}
|
|
3672
3737
|
/** Packs aligned series into the `IndicatorResult[]` shape the engine renders. */
|
|
@@ -3797,6 +3862,13 @@ interface IndicatorDef {
|
|
|
3797
3862
|
/** Only one instance makes sense (e.g. a single volume pane). */
|
|
3798
3863
|
singleInstance?: boolean;
|
|
3799
3864
|
}
|
|
3865
|
+
/**
|
|
3866
|
+
* Indicator short names that need bar volume. The indicator menus disable
|
|
3867
|
+
* them when the loaded bars carry none, since they would draw nothing.
|
|
3868
|
+
*/
|
|
3869
|
+
declare const VOLUME_STUDIES: ReadonlySet<string>;
|
|
3870
|
+
/** Tooltip on a volume study the menu has disabled. */
|
|
3871
|
+
declare const NO_VOLUME_TITLE = "Not available: this symbol's chart data has no volume";
|
|
3800
3872
|
/** A period field. Shared so every indicator agrees on sane bounds. */
|
|
3801
3873
|
declare const periodField: (def: number, key?: string, label?: string, max?: number) => ParamFieldDef;
|
|
3802
3874
|
/** A colour field. */
|
|
@@ -3823,6 +3895,14 @@ declare function extraIndicatorPresets(): {
|
|
|
3823
3895
|
shortName: string;
|
|
3824
3896
|
factory: () => IIndicator;
|
|
3825
3897
|
}[];
|
|
3898
|
+
/**
|
|
3899
|
+
* Maps the `name` an indicator instance reports (e.g. `'Hamming MA'`) to its
|
|
3900
|
+
* registry short name (`'HammingMA'`), for the indicators where the two differ.
|
|
3901
|
+
* The engine keys active indicators, menu ticks, saved state and bridge events
|
|
3902
|
+
* by the short name; layouts saved before that used the instance name, so
|
|
3903
|
+
* restoring them goes through this map too. Built once, from schema defaults.
|
|
3904
|
+
*/
|
|
3905
|
+
declare function extraInstanceNameMap(): ReadonlyMap<string, string>;
|
|
3826
3906
|
/** Short names that may only have one instance on a chart. */
|
|
3827
3907
|
declare function extraSingleInstance(): string[];
|
|
3828
3908
|
|
|
@@ -3887,4 +3967,4 @@ declare class MACD implements IIndicator {
|
|
|
3887
3967
|
render(ctx: CanvasRenderingContext2D, results: IndicatorResult[], scale: ScaleManager, viewport: Viewport, paneHeight: number, rangeOverride?: PriceRange): void;
|
|
3888
3968
|
}
|
|
3889
3969
|
|
|
3890
|
-
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
|
|
3970
|
+
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, sourceSeries 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, linregAt as bA, linregSlope as bB, lowest as bC, lsma as bD, makeLayoutId as bE, makeSettingsTemplateId as bF, makeTemplateId as bG, mcginley as bH, methodField as bI, numField as bJ, periodField as bK, registerCustomPreset as bL, removeLayout as bM, removeSettingsTemplate as bN, removeTemplate as bO, resolveBoxSize as bP, resolveCssVarsInTheme as bQ, resolveInstrument as bR, resolveLabels as bS, resolveUiConfig as bT, rma as bU, rocPct as bV, sanitizeLayouts as bW, sanitizeSettingsTemplates as bX, sanitizeTemplates as bY, sma as bZ, sourceField 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, extraInstanceNameMap as bl, extraSingleInstance as bm, findLayout as bn, findSettingsTemplate as bo, findTemplate as bp, formatDuration as bq, formatVolume as br, getAllPresets as bs, getCustomPresets as bt, getPreset as bu, hammingMa as bv, highest as bw, hma as bx, inferPipSize as by, isPriceTransformSeries as bz, type IndicatorTemplate as c, sourceValue as c0, standardError as c1, stdev as c2, tema as c3, toKagi as c4, toLineBreak as c5, toMoney as c6, toPips as c7, toPointFigure as c8, toRenko as c9, trueRange as ca, unregisterCustomPreset as cb, upsertLayout as cc, upsertSettingsTemplate as cd, upsertTemplate as ce, vwma as cf, wma as cg, type PriceSource as ch, HistogramIndicatorBase as ci, type LineSpec as cj, type GuideLevel as ck, LineIndicatorBase as cl, type MaMethod as cm, BandIndicatorBase as cn, AdaptiveMA as co, MaChannel as cp, MovingAverage as cq, MultiMA as cr, allEmpty as cs, applyMa as ct, combine as cu, drawPaneHint as cv, mapSeries as cw, toResults as cx, 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 };
|