lightweight-charts-indicators 0.8.0 → 0.9.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 +39 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/render/color.d.ts +44 -0
- package/dist/render/color.d.ts.map +1 -0
- package/dist/render/histogram-series.d.ts +36 -0
- package/dist/render/histogram-series.d.ts.map +1 -0
- package/dist/render/index.d.ts +13 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/primitives.d.ts +388 -0
- package/dist/render/primitives.d.ts.map +1 -0
- package/dist/render/renderer.d.ts +163 -0
- package/dist/render/renderer.d.ts.map +1 -0
- package/dist/render.mjs +2339 -0
- package/package.json +14 -3
package/README.md
CHANGED
|
@@ -34,9 +34,47 @@ const macdResult = MACD.calculate(bars, { fastLength: 12, slowLength: 26, signal
|
|
|
34
34
|
const bbResult = BollingerBands.calculate(bars, { length: 20, mult: 2 });
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
+
## Drawing Results with the Renderer
|
|
38
|
+
|
|
39
|
+
`lightweight-charts-indicators/render` draws a complete indicator result (plots, fills, hlines, markers, arrows, bar
|
|
40
|
+
and background colours, plotcandle / plotbar, labels, lines, boxes, linefills, polylines, tables) on a chart you
|
|
41
|
+
own. It needs `lightweight-charts` 5 (optional peer dependency) and is published as an ES module.
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { createChart, CandlestickSeries } from 'lightweight-charts';
|
|
45
|
+
import { indicatorRegistry } from 'lightweight-charts-indicators';
|
|
46
|
+
import { IndicatorRenderer } from 'lightweight-charts-indicators/render';
|
|
47
|
+
|
|
48
|
+
const chart = createChart(document.getElementById('chart')!);
|
|
49
|
+
const candles = chart.addSeries(CandlestickSeries);
|
|
50
|
+
candles.setData(bars);
|
|
51
|
+
|
|
52
|
+
const rsi = indicatorRegistry.find((e) => e.id === 'rsi')!;
|
|
53
|
+
const renderer = new IndicatorRenderer(chart, { paneIndex: 1, mainSeries: candles });
|
|
54
|
+
renderer.render(rsi, rsi.calculate(bars, { length: 14 }), bars, { inputs: { length: 14 } });
|
|
55
|
+
|
|
56
|
+
renderer.series(); // the series it created, plot series first
|
|
57
|
+
renderer.clear(); // removes everything it drew
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
One instance draws one indicator; use one instance per indicator. Each `render()` replaces what the instance drew
|
|
61
|
+
before, and the indicator pane keeps its height across a redraw.
|
|
62
|
+
|
|
63
|
+
- **Panes**: an overlay indicator draws in pane 0, the others in `paneIndex`; `force_overlay` output goes to pane 0.
|
|
64
|
+
- **Bar colours** (`barcolor`) repaint the bars of `mainSeries` (candlestick or bar series, Heikin Ashi included)
|
|
65
|
+
without changing its data. Without `mainSeries`, bar colours are not drawn.
|
|
66
|
+
- **Bars after the last bar**: drawings on future bars are placed without adding time-scale slots; pass
|
|
67
|
+
`extendTimeScale: true` to add them.
|
|
68
|
+
- **`preserveEmptyPane: true`** keeps the pane when `clear()` empties it.
|
|
69
|
+
- **Render options**: `inputs` (plots whose visibility follows an input), `plots` (per-plot `visible`, `color`,
|
|
70
|
+
`lineWidth`, `style`, `palette`), `lastValueVisible`, `titleVisible`, `priceLineVisible`, `precision`, and
|
|
71
|
+
`autoscale: false` to leave the indicator out of the price-pane autoscale.
|
|
72
|
+
|
|
73
|
+
The demo page (`example/`) uses the same renderer.
|
|
74
|
+
|
|
37
75
|
## Lightweight-Charts Integration Example
|
|
38
76
|
|
|
39
|
-
Here's a complete example showing how to integrate indicators with lightweight-charts:
|
|
77
|
+
Here's a complete example showing how to integrate indicators with lightweight-charts without the renderer:
|
|
40
78
|
|
|
41
79
|
```typescript
|
|
42
80
|
import { createChart, ColorType, LineSeries, CandlestickSeries } from 'lightweight-charts';
|
package/dist/index.cjs
CHANGED
|
@@ -169207,4 +169207,4 @@ var registryPart5 = [
|
|
|
169207
169207
|
}
|
|
169208
169208
|
];
|
|
169209
169209
|
var indicatorRegistry = [...registryPart1, ...registryPart2, ...registryPart3, ...registryPart4, ...registryPart5];
|
|
169210
|
-
var version = "0.
|
|
169210
|
+
var version = "0.9.0";
|
package/dist/index.d.ts
CHANGED
|
@@ -2493,5 +2493,5 @@ export interface IndicatorRegistryEntry {
|
|
|
2493
2493
|
calculate: (bars: Bar[], inputs?: any) => any;
|
|
2494
2494
|
}
|
|
2495
2495
|
export declare const indicatorRegistry: IndicatorRegistryEntry[];
|
|
2496
|
-
export declare const version = "0.
|
|
2496
|
+
export declare const version = "0.9.0";
|
|
2497
2497
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.mjs
CHANGED
|
@@ -167004,7 +167004,7 @@ var registryPart5 = [
|
|
|
167004
167004
|
}
|
|
167005
167005
|
];
|
|
167006
167006
|
var indicatorRegistry = [...registryPart1, ...registryPart2, ...registryPart3, ...registryPart4, ...registryPart5];
|
|
167007
|
-
var version = "0.
|
|
167007
|
+
var version = "0.9.0";
|
|
167008
167008
|
export {
|
|
167009
167009
|
ADR,
|
|
167010
167010
|
ADX,
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Colour helper of the renderer: reads the colour strings of indicator results and combines alphas.
|
|
3
|
+
* Formats: 'transparent', '#rgb', '#rgba', '#rrggbb', '#rrggbbaa', 'rgb(r, g, b)', 'rgba(r, g, b, a)'
|
|
4
|
+
* (also the CSS 'rgb(r g b / a)' form). Any other CSS colour (named colours, hsl()...) is read through the canvas
|
|
5
|
+
* colour parser of the browser.
|
|
6
|
+
*/
|
|
7
|
+
/** Colour channels: r, g, b 0..255, a (opacity) 0..1 */
|
|
8
|
+
export interface Rgba {
|
|
9
|
+
r: number;
|
|
10
|
+
g: number;
|
|
11
|
+
b: number;
|
|
12
|
+
a: number;
|
|
13
|
+
}
|
|
14
|
+
/** Channels of a colour string; null for null / empty / unreadable strings */
|
|
15
|
+
export declare function parseColor(color: string | null | undefined): Rgba | null;
|
|
16
|
+
/** CSS text of channels: rgba(r, g, b, a) */
|
|
17
|
+
export declare function toCss(c: Rgba): string;
|
|
18
|
+
/**
|
|
19
|
+
* Colour with its opacity multiplied by `opacity` (0..1), as rgba() text. A colour that already carries an alpha
|
|
20
|
+
* keeps it and gets the product. Null when the colour is missing, unreadable or fully transparent (Pine na colour:
|
|
21
|
+
* nothing drawn).
|
|
22
|
+
*/
|
|
23
|
+
export declare function withOpacity(color: string | null | undefined, opacity?: number): string | null;
|
|
24
|
+
/** Gradient of one part of a gradient fill: CSS colours at the prices `top` and `bottom` */
|
|
25
|
+
export interface GradientPart {
|
|
26
|
+
top: number;
|
|
27
|
+
bottom: number;
|
|
28
|
+
topColor: string;
|
|
29
|
+
bottomColor: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Gradient of one bar of Pine fill(p1, p2, top_value, bottom_value, top_color, bottom_color).
|
|
33
|
+
* Pine rules: the colour changes with the price, top_color at top_value,
|
|
34
|
+
* bottom_color at bottom_value, linear in between, the end colour outside the range; top_value below bottom_value
|
|
35
|
+
* keeps top_color at top_value. Nothing is drawn when a value is na or top_value == bottom_value. An na (null,
|
|
36
|
+
* empty, unreadable) colour is a transparent end: the gradient goes from the other colour to transparent. Null when
|
|
37
|
+
* nothing is drawn (also when both colours are transparent).
|
|
38
|
+
* A transparent end takes the RGB of the other end, so the result is the same with or without premultiplied alpha
|
|
39
|
+
* interpolation.
|
|
40
|
+
*/
|
|
41
|
+
export declare function gradientPart(topValue: number | null | undefined, bottomValue: number | null | undefined, topColor: string | null | undefined, bottomColor: string | null | undefined): GradientPart | null;
|
|
42
|
+
/** Fully transparent colour (Pine na colour): missing, empty, 'transparent', or alpha 0 (#rrggbb00, rgba(..., 0)) */
|
|
43
|
+
export declare function isTransparent(color: string | undefined | null): boolean;
|
|
44
|
+
//# sourceMappingURL=color.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/render/color.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wDAAwD;AACxD,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAkED,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAQxE;AAED,6CAA6C;AAC7C,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAGrC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,SAAI,GAAG,MAAM,GAAG,IAAI,CAKxF;AAED,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACrC,YAAY,GAAG,IAAI,CAarB;AAED,qHAAqH;AACrH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAIvE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plot style histogram (plot.style_histogram) as a custom series: per value, a vertical bar `histWidth` px wide (the
|
|
3
|
+
* plot line width, not the bar slot like columns) from the histogram base to the value:
|
|
4
|
+
* width n = max(1, floor(histWidth * hpr)), centre round(x * hpr) (+0.5 when n is odd), left = floor(centre - n / 2)
|
|
5
|
+
* base a = round(baseY * vpr) - floor(l / 2), l = max(1, floor(hpr))
|
|
6
|
+
* value p = round(y * vpr); above the base: p .. a + l; below: a .. p - floor(l / 2) + l
|
|
7
|
+
* (the bar always covers the 1 px base row)
|
|
8
|
+
* Per-point colours win over the series colour. The base is the plot's histbase price (PineScript default 0).
|
|
9
|
+
*/
|
|
10
|
+
import type { CustomSeriesOptions, CustomSeriesPricePlotValues, ICustomSeriesPaneRenderer, ICustomSeriesPaneView, PaneRendererCustomData, Time } from 'lightweight-charts';
|
|
11
|
+
/** One histogram value; `fill`, not `color`: lightweight-charts reserves `color` on custom series data */
|
|
12
|
+
export type HistogramItem = {
|
|
13
|
+
time: Time;
|
|
14
|
+
value: number;
|
|
15
|
+
fill?: string;
|
|
16
|
+
};
|
|
17
|
+
export interface ThinHistogramOptions extends CustomSeriesOptions {
|
|
18
|
+
histColor: string;
|
|
19
|
+
histWidth: number;
|
|
20
|
+
histBase: number;
|
|
21
|
+
}
|
|
22
|
+
export declare class ThinHistogramPaneView implements ICustomSeriesPaneView<Time, HistogramItem, ThinHistogramOptions> {
|
|
23
|
+
private data;
|
|
24
|
+
private options;
|
|
25
|
+
/** The base is part of the value range (like the library histogram), the value last for the axis label */
|
|
26
|
+
priceValueBuilder(item: HistogramItem): CustomSeriesPricePlotValues;
|
|
27
|
+
isWhitespace(d: HistogramItem | {
|
|
28
|
+
time: Time;
|
|
29
|
+
}): d is {
|
|
30
|
+
time: Time;
|
|
31
|
+
};
|
|
32
|
+
update(data: PaneRendererCustomData<Time, HistogramItem>, options: ThinHistogramOptions): void;
|
|
33
|
+
defaultOptions(): ThinHistogramOptions;
|
|
34
|
+
renderer(): ICustomSeriesPaneRenderer;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=histogram-series.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"histogram-series.d.ts","sourceRoot":"","sources":["../../src/render/histogram-series.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,mBAAmB,EACnB,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EAEtB,IAAI,EACL,MAAM,oBAAoB,CAAC;AAG5B,0GAA0G;AAC1G,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AASD,qBAAa,qBAAsB,YAAW,qBAAqB,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,CAAC;IAC5G,OAAO,CAAC,IAAI,CAA4D;IACxE,OAAO,CAAC,OAAO,CAAqC;IAEpD,0GAA0G;IAC1G,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,2BAA2B;IAInE,YAAY,CAAC,CAAC,EAAE,aAAa,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,CAAC,IAAI;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;IAIpE,MAAM,CAAC,IAAI,EAAE,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAK9F,cAAc,IAAI,oBAAoB;IAItC,QAAQ,IAAI,yBAAyB;CAwCtC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lightweight-charts-indicators/render: draws indicator results on a lightweight-charts chart the host owns.
|
|
3
|
+
*
|
|
4
|
+
* const r = new IndicatorRenderer(chart, { paneIndex, mainSeries });
|
|
5
|
+
* r.render(entry, entry.calculate(bars, inputs), bars, { inputs });
|
|
6
|
+
* r.clear();
|
|
7
|
+
*
|
|
8
|
+
* Needs lightweight-charts 5 (optional peer dependency of the package).
|
|
9
|
+
*/
|
|
10
|
+
export { IndicatorRenderer, type RenderableIndicator, type IndicatorRendererOptions, type RenderOptions, type PlotOverride, } from './renderer';
|
|
11
|
+
export { ThinHistogramPaneView, type HistogramItem, type ThinHistogramOptions } from './histogram-series';
|
|
12
|
+
export { parseColor, withOpacity, isTransparent, type Rgba } from './color';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EACL,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primitives and drawing functions of the indicator renderer: plots that lightweight-charts cannot draw (line breaks,
|
|
3
|
+
* crosses, fills between plots, backgrounds), markers beyond the markers plugin, and the drawings of a result
|
|
4
|
+
* (labels, lines, boxes, linefills, polylines, arrows, tables). They draw in the pane of the series they are attached
|
|
5
|
+
* to; times after the last bar are placed by BarGrid.
|
|
6
|
+
*/
|
|
7
|
+
import type { IChartApi, ISeriesApi, IPrimitivePaneView, IPrimitivePaneRenderer, ISeriesPrimitive, SeriesAttachedParameter, LineData, Time, SeriesType } from 'lightweight-charts';
|
|
8
|
+
import type { CanvasRenderingTarget2D } from 'fancy-canvas';
|
|
9
|
+
import type { Bar, FillData, ArrowData } from 'oakscriptjs';
|
|
10
|
+
import type { BgColorData, LabelData, LineDrawingData, BoxData, LinefillData, PolylineData, TableData, MarkerData, PineSize } from '../types';
|
|
11
|
+
import { type GradientPart } from './color';
|
|
12
|
+
/**
|
|
13
|
+
* Bars of the chart and the slots after the last bar.
|
|
14
|
+
* Indicators give points on future bars (Pine bar_index + k, plot offsets) the time lastTime + k * interval
|
|
15
|
+
* (barTime). With extendTimeScale the renderer adds whitespace points at these times to the time scale, so they get
|
|
16
|
+
* their own bar slots; x() also places a later time that is not on the time scale by its bar count after the last bar.
|
|
17
|
+
*/
|
|
18
|
+
export declare class BarGrid {
|
|
19
|
+
bars: Bar[];
|
|
20
|
+
byTime: Map<number, Bar>;
|
|
21
|
+
interval: number;
|
|
22
|
+
setBars(bars: Bar[]): void;
|
|
23
|
+
get lastTime(): number;
|
|
24
|
+
/** Number of bar slots after the last bar needed to show `time` (0 when time is not after the last bar) */
|
|
25
|
+
slotsAfter(time: number): number;
|
|
26
|
+
/** A time after the last bar moved to the nearest future slot; other times unchanged */
|
|
27
|
+
snap(time: number): number;
|
|
28
|
+
/** x coordinate of a time: its bar slot, or for a later time off the grid, its bar count after the last bar */
|
|
29
|
+
x(timeScale: ReturnType<IChartApi['timeScale']>, time: number): number | null;
|
|
30
|
+
}
|
|
31
|
+
/** Fill of a result; per-bar colours may hold na (null) values */
|
|
32
|
+
export type PlotFill = FillData & {
|
|
33
|
+
colors?: Array<string | null | undefined>;
|
|
34
|
+
};
|
|
35
|
+
/** Gradient of a fill (FillData / FillConfig `gradient`), one entry per bar index; na: null / NaN */
|
|
36
|
+
export type FillGradientData = {
|
|
37
|
+
topValue: Array<number | null | undefined>;
|
|
38
|
+
bottomValue: Array<number | null | undefined>;
|
|
39
|
+
topColor: Array<string | null | undefined>;
|
|
40
|
+
bottomColor: Array<string | null | undefined>;
|
|
41
|
+
};
|
|
42
|
+
/** Gradient part of bar `i` of a gradient fill (null: nothing drawn on that part) */
|
|
43
|
+
export declare function gradientAt(g: FillGradientData, i: number): GradientPart | null;
|
|
44
|
+
/** Plot fill colour when the result gives none (renderer default, not a Pine value) */
|
|
45
|
+
export declare const DEFAULT_PLOT_FILL_COLOR = "#2962FF40";
|
|
46
|
+
/** Marker shapes of the lightweight-charts markers plugin */
|
|
47
|
+
export declare const BUILTIN_MARKER_SHAPES: Set<string>;
|
|
48
|
+
/** Marker size multiplier of a Pine size */
|
|
49
|
+
export declare const PINE_SIZE_MULT: Record<PineSize, number>;
|
|
50
|
+
export declare function markerSizeMult(size: MarkerData['size']): number;
|
|
51
|
+
/**
|
|
52
|
+
* Anchor line data (invisible series that holds a primitive): one point per time, sorted, future times on the
|
|
53
|
+
* bar grid, so the time scale and the autoscale include the drawings.
|
|
54
|
+
*/
|
|
55
|
+
export declare function anchorData(points: Array<{
|
|
56
|
+
time: number;
|
|
57
|
+
value: number;
|
|
58
|
+
}>, grid: BarGrid): LineData<Time>[];
|
|
59
|
+
/**
|
|
60
|
+
* Base class for Series Primitives that need access to chart/series references
|
|
61
|
+
*/
|
|
62
|
+
export declare class BasePrimitive implements ISeriesPrimitive<Time> {
|
|
63
|
+
protected _chart: IChartApi | null;
|
|
64
|
+
protected _series: ISeriesApi<SeriesType, Time> | null;
|
|
65
|
+
protected _requestUpdate: (() => void) | null;
|
|
66
|
+
attached(param: SeriesAttachedParameter<Time, SeriesType>): void;
|
|
67
|
+
detached(): void;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Line-break primitive — draws a line that breaks at NaN gaps.
|
|
71
|
+
* Used for plot.style_linebr where the line disappears during NaN runs.
|
|
72
|
+
* Per-point colours follow Pine: the segment that leads into a point has the colour of that point;
|
|
73
|
+
* with steps, the horizontal part at the previous value keeps the previous
|
|
74
|
+
* point colour and the vertical part into the point has the point colour.
|
|
75
|
+
*/
|
|
76
|
+
export declare class LineBrPrimitive extends BasePrimitive {
|
|
77
|
+
private _data;
|
|
78
|
+
private _color;
|
|
79
|
+
private _lineWidth;
|
|
80
|
+
private _lineStyle;
|
|
81
|
+
private _withSteps;
|
|
82
|
+
private _views;
|
|
83
|
+
setData(data: Array<{
|
|
84
|
+
time: number;
|
|
85
|
+
value: number;
|
|
86
|
+
color?: string;
|
|
87
|
+
}>, color: string, lineWidth?: number, lineStyle?: number, withSteps?: boolean): void;
|
|
88
|
+
getData(): {
|
|
89
|
+
time: number;
|
|
90
|
+
value: number;
|
|
91
|
+
color?: string;
|
|
92
|
+
}[];
|
|
93
|
+
getColor(): string;
|
|
94
|
+
getLineWidth(): number;
|
|
95
|
+
getLineStyle(): number;
|
|
96
|
+
getWithSteps(): boolean;
|
|
97
|
+
getChart(): IChartApi | null;
|
|
98
|
+
getSeries(): ISeriesApi<keyof import("lightweight-charts").SeriesOptionsMap, Time, import("lightweight-charts").CustomData<Time> | import("lightweight-charts").CustomSeriesWhitespaceData<Time> | LineData<Time> | import("lightweight-charts").WhitespaceData<Time> | import("lightweight-charts").HistogramData<Time> | import("lightweight-charts").BaselineData<Time> | import("lightweight-charts").BarData<Time> | import("lightweight-charts").CandlestickData<Time> | import("lightweight-charts").AreaData<Time>, import("lightweight-charts").CustomSeriesOptions | import("lightweight-charts").HistogramSeriesOptions | import("lightweight-charts").BaselineSeriesOptions | import("lightweight-charts").LineSeriesOptions | import("lightweight-charts").BarSeriesOptions | import("lightweight-charts").CandlestickSeriesOptions | import("lightweight-charts").AreaSeriesOptions, import("lightweight-charts").DeepPartial<import("lightweight-charts").HistogramStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").BaselineStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").CustomStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").LineStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").BarStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").CandlestickStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").AreaStyleOptions & import("lightweight-charts").SeriesOptionsCommon>> | null;
|
|
99
|
+
updateAllViews(): void;
|
|
100
|
+
paneViews(): readonly IPrimitivePaneView[];
|
|
101
|
+
}
|
|
102
|
+
export declare class LineBrPaneView implements IPrimitivePaneView {
|
|
103
|
+
private _source;
|
|
104
|
+
constructor(_source: LineBrPrimitive);
|
|
105
|
+
zOrder(): 'normal';
|
|
106
|
+
renderer(): IPrimitivePaneRenderer | null;
|
|
107
|
+
}
|
|
108
|
+
export declare class LineBrRenderer implements IPrimitivePaneRenderer {
|
|
109
|
+
private _source;
|
|
110
|
+
constructor(_source: LineBrPrimitive);
|
|
111
|
+
draw(target: CanvasRenderingTarget2D): void;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Cross marker plot style — draws X marks at data points
|
|
115
|
+
*/
|
|
116
|
+
export declare class CrossPlotPrimitive extends BasePrimitive {
|
|
117
|
+
private _data;
|
|
118
|
+
private _color;
|
|
119
|
+
private _size;
|
|
120
|
+
private _views;
|
|
121
|
+
setData(data: Array<{
|
|
122
|
+
time: number;
|
|
123
|
+
value: number;
|
|
124
|
+
}>, color: string, size?: number): void;
|
|
125
|
+
getData(): {
|
|
126
|
+
time: number;
|
|
127
|
+
value: number;
|
|
128
|
+
}[];
|
|
129
|
+
getColor(): string;
|
|
130
|
+
getSize(): number;
|
|
131
|
+
getChart(): IChartApi | null;
|
|
132
|
+
getSeries(): ISeriesApi<keyof import("lightweight-charts").SeriesOptionsMap, Time, import("lightweight-charts").CustomData<Time> | import("lightweight-charts").CustomSeriesWhitespaceData<Time> | LineData<Time> | import("lightweight-charts").WhitespaceData<Time> | import("lightweight-charts").HistogramData<Time> | import("lightweight-charts").BaselineData<Time> | import("lightweight-charts").BarData<Time> | import("lightweight-charts").CandlestickData<Time> | import("lightweight-charts").AreaData<Time>, import("lightweight-charts").CustomSeriesOptions | import("lightweight-charts").HistogramSeriesOptions | import("lightweight-charts").BaselineSeriesOptions | import("lightweight-charts").LineSeriesOptions | import("lightweight-charts").BarSeriesOptions | import("lightweight-charts").CandlestickSeriesOptions | import("lightweight-charts").AreaSeriesOptions, import("lightweight-charts").DeepPartial<import("lightweight-charts").HistogramStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").BaselineStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").CustomStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").LineStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").BarStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").CandlestickStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").AreaStyleOptions & import("lightweight-charts").SeriesOptionsCommon>> | null;
|
|
133
|
+
updateAllViews(): void;
|
|
134
|
+
paneViews(): readonly IPrimitivePaneView[];
|
|
135
|
+
}
|
|
136
|
+
export declare class CrossPlotPaneView implements IPrimitivePaneView {
|
|
137
|
+
private _source;
|
|
138
|
+
constructor(_source: CrossPlotPrimitive);
|
|
139
|
+
zOrder(): 'normal';
|
|
140
|
+
renderer(): IPrimitivePaneRenderer | null;
|
|
141
|
+
}
|
|
142
|
+
export declare class CrossPlotRenderer implements IPrimitivePaneRenderer {
|
|
143
|
+
private _source;
|
|
144
|
+
constructor(_source: CrossPlotPrimitive);
|
|
145
|
+
draw(target: CanvasRenderingTarget2D): void;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Background color primitive — fills rectangular areas behind bars
|
|
149
|
+
*/
|
|
150
|
+
export declare class BgColorPrimitive extends BasePrimitive {
|
|
151
|
+
private _data;
|
|
152
|
+
private _views;
|
|
153
|
+
setData(data: BgColorData[]): void;
|
|
154
|
+
getData(): BgColorData[];
|
|
155
|
+
getChart(): IChartApi | null;
|
|
156
|
+
getSeries(): ISeriesApi<keyof import("lightweight-charts").SeriesOptionsMap, Time, import("lightweight-charts").CustomData<Time> | import("lightweight-charts").CustomSeriesWhitespaceData<Time> | LineData<Time> | import("lightweight-charts").WhitespaceData<Time> | import("lightweight-charts").HistogramData<Time> | import("lightweight-charts").BaselineData<Time> | import("lightweight-charts").BarData<Time> | import("lightweight-charts").CandlestickData<Time> | import("lightweight-charts").AreaData<Time>, import("lightweight-charts").CustomSeriesOptions | import("lightweight-charts").HistogramSeriesOptions | import("lightweight-charts").BaselineSeriesOptions | import("lightweight-charts").LineSeriesOptions | import("lightweight-charts").BarSeriesOptions | import("lightweight-charts").CandlestickSeriesOptions | import("lightweight-charts").AreaSeriesOptions, import("lightweight-charts").DeepPartial<import("lightweight-charts").HistogramStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").BaselineStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").CustomStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").LineStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").BarStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").CandlestickStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").AreaStyleOptions & import("lightweight-charts").SeriesOptionsCommon>> | null;
|
|
157
|
+
updateAllViews(): void;
|
|
158
|
+
paneViews(): readonly IPrimitivePaneView[];
|
|
159
|
+
}
|
|
160
|
+
export declare class BgColorPaneView implements IPrimitivePaneView {
|
|
161
|
+
private _source;
|
|
162
|
+
constructor(_source: BgColorPrimitive);
|
|
163
|
+
zOrder(): 'bottom';
|
|
164
|
+
renderer(): IPrimitivePaneRenderer | null;
|
|
165
|
+
}
|
|
166
|
+
export declare class BgColorRenderer implements IPrimitivePaneRenderer {
|
|
167
|
+
private _source;
|
|
168
|
+
constructor(_source: BgColorPrimitive);
|
|
169
|
+
draw(target: CanvasRenderingTarget2D): void;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Plot fill primitive: Pine fill(plot1, plot2, color) between two plots.
|
|
173
|
+
* Pine fills the polygon between the two plot lines; the part between bar i - 1 and bar i has the colour of bar i,
|
|
174
|
+
* and an na colour on
|
|
175
|
+
* bar i removes that part only. A bar where either plot is na breaks the fill (fillgaps = false).
|
|
176
|
+
* Gradient fills: the part between bar i - 1 and bar i gets the vertical gradient of bar i (a canvas linear
|
|
177
|
+
* gradient from the y of top_value to the y of bottom_value; the canvas keeps the end colours outside it, which is
|
|
178
|
+
* the Pine clamping), see drawGradient.
|
|
179
|
+
* Drawn as a primitive (not AreaSeries pairs) to avoid masking overlay candlesticks.
|
|
180
|
+
*/
|
|
181
|
+
export interface PlotFillPoint {
|
|
182
|
+
time: number;
|
|
183
|
+
/** plot1 / plot2 values (NaN = na) */
|
|
184
|
+
v1: number;
|
|
185
|
+
v2: number;
|
|
186
|
+
/** fill colour of the part that leads into this point (CSS colour with its final alpha); null = na, no fill */
|
|
187
|
+
color: string | null;
|
|
188
|
+
/**
|
|
189
|
+
* Gradient fill (Pine fill(p1, p2, top_value, bottom_value, top_color, bottom_color)): gradient of the part that
|
|
190
|
+
* leads into this point, used instead of `color`; null = nothing drawn on that part (see gradientPart)
|
|
191
|
+
*/
|
|
192
|
+
gradient?: GradientPart | null;
|
|
193
|
+
}
|
|
194
|
+
export declare class PlotFillPrimitive extends BasePrimitive {
|
|
195
|
+
private _data;
|
|
196
|
+
private _views;
|
|
197
|
+
setData(data: PlotFillPoint[]): void;
|
|
198
|
+
getData(): PlotFillPoint[];
|
|
199
|
+
getChart(): IChartApi | null;
|
|
200
|
+
getSeries(): ISeriesApi<keyof import("lightweight-charts").SeriesOptionsMap, Time, import("lightweight-charts").CustomData<Time> | import("lightweight-charts").CustomSeriesWhitespaceData<Time> | LineData<Time> | import("lightweight-charts").WhitespaceData<Time> | import("lightweight-charts").HistogramData<Time> | import("lightweight-charts").BaselineData<Time> | import("lightweight-charts").BarData<Time> | import("lightweight-charts").CandlestickData<Time> | import("lightweight-charts").AreaData<Time>, import("lightweight-charts").CustomSeriesOptions | import("lightweight-charts").HistogramSeriesOptions | import("lightweight-charts").BaselineSeriesOptions | import("lightweight-charts").LineSeriesOptions | import("lightweight-charts").BarSeriesOptions | import("lightweight-charts").CandlestickSeriesOptions | import("lightweight-charts").AreaSeriesOptions, import("lightweight-charts").DeepPartial<import("lightweight-charts").HistogramStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").BaselineStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").CustomStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").LineStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").BarStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").CandlestickStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").AreaStyleOptions & import("lightweight-charts").SeriesOptionsCommon>> | null;
|
|
201
|
+
updateAllViews(): void;
|
|
202
|
+
paneViews(): readonly IPrimitivePaneView[];
|
|
203
|
+
}
|
|
204
|
+
export declare class PlotFillPaneView implements IPrimitivePaneView {
|
|
205
|
+
private _source;
|
|
206
|
+
constructor(_source: PlotFillPrimitive);
|
|
207
|
+
zOrder(): 'bottom';
|
|
208
|
+
renderer(): IPrimitivePaneRenderer | null;
|
|
209
|
+
}
|
|
210
|
+
export declare class PlotFillRenderer implements IPrimitivePaneRenderer {
|
|
211
|
+
private _source;
|
|
212
|
+
constructor(_source: PlotFillPrimitive);
|
|
213
|
+
draw(target: CanvasRenderingTarget2D): void;
|
|
214
|
+
/**
|
|
215
|
+
* Gradient fill: each stretch of bars where both plots have a value is clipped to its polygon, and each part
|
|
216
|
+
* (bar i - 1 to bar i) is painted with the vertical gradient of bar i as a rectangle between the two bar x (rounded
|
|
217
|
+
* to device pixels, so neighbour parts neither overlap nor leave a seam). Consecutive parts with the same gradient
|
|
218
|
+
* share one rectangle.
|
|
219
|
+
*/
|
|
220
|
+
private drawGradient;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Extended marker primitive — draws the markers that the lightweight-charts markers plugin cannot draw:
|
|
224
|
+
* shapes beyond the 4 built-in ones, a text colour different from the shape colour (Pine textcolor), shapes with
|
|
225
|
+
* a transparent colour (Pine color = na: text only), multi-line text and label shapes (text inside the label).
|
|
226
|
+
* Positions: aboveBar / belowBar / inBar next to the bar of the price series (markers of one bar stacked away from
|
|
227
|
+
* the bar), atPriceTop / atPriceBottom / atPriceMiddle at marker.price (see MarkerData).
|
|
228
|
+
* Pine layout: a label has its text inside and its tip on the bar / price;
|
|
229
|
+
* other shapes have the text on the far side of the shape (above for abovebar, below for belowbar).
|
|
230
|
+
*/
|
|
231
|
+
export declare class ExtendedMarkerPrimitive extends BasePrimitive {
|
|
232
|
+
private _grid;
|
|
233
|
+
private _markers;
|
|
234
|
+
private _views;
|
|
235
|
+
constructor(_grid: BarGrid);
|
|
236
|
+
setMarkers(markers: MarkerData[]): void;
|
|
237
|
+
getMarkers(): MarkerData[];
|
|
238
|
+
getGrid(): BarGrid;
|
|
239
|
+
getChart(): IChartApi | null;
|
|
240
|
+
getSeries(): ISeriesApi<keyof import("lightweight-charts").SeriesOptionsMap, Time, import("lightweight-charts").CustomData<Time> | import("lightweight-charts").CustomSeriesWhitespaceData<Time> | LineData<Time> | import("lightweight-charts").WhitespaceData<Time> | import("lightweight-charts").HistogramData<Time> | import("lightweight-charts").BaselineData<Time> | import("lightweight-charts").BarData<Time> | import("lightweight-charts").CandlestickData<Time> | import("lightweight-charts").AreaData<Time>, import("lightweight-charts").CustomSeriesOptions | import("lightweight-charts").HistogramSeriesOptions | import("lightweight-charts").BaselineSeriesOptions | import("lightweight-charts").LineSeriesOptions | import("lightweight-charts").BarSeriesOptions | import("lightweight-charts").CandlestickSeriesOptions | import("lightweight-charts").AreaSeriesOptions, import("lightweight-charts").DeepPartial<import("lightweight-charts").HistogramStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").BaselineStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").CustomStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").LineStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").BarStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").CandlestickStyleOptions & import("lightweight-charts").SeriesOptionsCommon> | import("lightweight-charts").DeepPartial<import("lightweight-charts").AreaStyleOptions & import("lightweight-charts").SeriesOptionsCommon>> | null;
|
|
241
|
+
updateAllViews(): void;
|
|
242
|
+
paneViews(): readonly IPrimitivePaneView[];
|
|
243
|
+
}
|
|
244
|
+
export declare class ExtendedMarkerPaneView implements IPrimitivePaneView {
|
|
245
|
+
private _source;
|
|
246
|
+
constructor(_source: ExtendedMarkerPrimitive);
|
|
247
|
+
zOrder(): 'normal';
|
|
248
|
+
renderer(): IPrimitivePaneRenderer | null;
|
|
249
|
+
}
|
|
250
|
+
/** Font size (px) of the text of a marker */
|
|
251
|
+
export declare function markerFontSize(size: MarkerData['size']): number;
|
|
252
|
+
export declare const MARKER_BAR_GAP = 4;
|
|
253
|
+
export declare const MARKER_STACK_GAP = 2;
|
|
254
|
+
export declare const LABEL_PAD = 3;
|
|
255
|
+
export declare const LABEL_POINTER = 5;
|
|
256
|
+
export declare class ExtendedMarkerRenderer implements IPrimitivePaneRenderer {
|
|
257
|
+
private _source;
|
|
258
|
+
constructor(_source: ExtendedMarkerPrimitive);
|
|
259
|
+
draw(target: CanvasRenderingTarget2D): void;
|
|
260
|
+
}
|
|
261
|
+
export declare function drawExtendedShape(ctx: CanvasRenderingContext2D, shape: string, x: number, y: number, size: number): void;
|
|
262
|
+
/**
|
|
263
|
+
* PineScript default colour of drawings (color.blue). Drawing properties follow the oakscriptjs rules: a property
|
|
264
|
+
* the script did not set is omitted and the PineScript default applies; a colour set to na is 'transparent'.
|
|
265
|
+
*/
|
|
266
|
+
export declare const PINE_BLUE = "#2962FF";
|
|
267
|
+
/** Context of a drawing function (media coordinates) */
|
|
268
|
+
export interface DrawEnv {
|
|
269
|
+
ctx: CanvasRenderingContext2D;
|
|
270
|
+
width: number;
|
|
271
|
+
height: number;
|
|
272
|
+
series: ISeriesApi<SeriesType, Time>;
|
|
273
|
+
grid: BarGrid;
|
|
274
|
+
timeScale: ReturnType<IChartApi['timeScale']>;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Primitive that draws a list of drawings of one kind with its draw function.
|
|
278
|
+
*/
|
|
279
|
+
export declare class DrawingPrimitive<T> extends BasePrimitive {
|
|
280
|
+
private _grid;
|
|
281
|
+
private _items;
|
|
282
|
+
private _draw;
|
|
283
|
+
private _views;
|
|
284
|
+
constructor(_grid: BarGrid, _items: T[], _draw: (env: DrawEnv, item: T) => void, zOrder: 'bottom' | 'normal' | 'top');
|
|
285
|
+
updateAllViews(): void;
|
|
286
|
+
paneViews(): readonly IPrimitivePaneView[];
|
|
287
|
+
private drawAll;
|
|
288
|
+
}
|
|
289
|
+
/** A colour that draws something: set and not fully transparent */
|
|
290
|
+
export declare function shown(color: string | undefined): color is string;
|
|
291
|
+
/** Canvas dash of a PineScript line style (the arrow styles are solid) */
|
|
292
|
+
export declare function lineDash(style: string | undefined): number[];
|
|
293
|
+
/** Font size (px) of label and box text */
|
|
294
|
+
export declare const TEXT_SIZES: Record<PineSize, number>;
|
|
295
|
+
/** Font size (px) of a PineScript size: a size.* constant or a size in points */
|
|
296
|
+
export declare function textPx(size: PineSize | number | undefined): number;
|
|
297
|
+
/** Canvas / CSS font: PineScript font family (font.family_*) and text.format_* flags (1 bold, 2 italic) */
|
|
298
|
+
export declare function fontOf(px: number, family?: 'default' | 'monospace', formatting?: number): string;
|
|
299
|
+
/** Open arrow head at (tipX, tipY), pointing away from (fromX, fromY) */
|
|
300
|
+
export declare function arrowHead(ctx: CanvasRenderingContext2D, tipX: number, tipY: number, fromX: number, fromY: number, width: number): void;
|
|
301
|
+
/**
|
|
302
|
+
* End points (x1, y1, x2, y2) of a line as drawn: point 1 and point 2, moved to the left / right edge of the pane by
|
|
303
|
+
* the line extension (extend.left continues the line beyond its left point). null when a point is not on the chart.
|
|
304
|
+
*/
|
|
305
|
+
export declare function linePoints(env: DrawEnv, line: LineDrawingData): [number, number, number, number] | null;
|
|
306
|
+
export declare function drawLine(env: DrawEnv, line: LineDrawingData): void;
|
|
307
|
+
/** linefill.new: the area between the two lines as drawn (their extensions included) */
|
|
308
|
+
export declare function drawLinefill(env: DrawEnv, fill: LinefillData): void;
|
|
309
|
+
/** Path through the points: straight segments, or a curve through the points (Catmull-Rom spline) */
|
|
310
|
+
export declare function polylinePath(pts: Array<[number, number]>, curved: boolean, closed: boolean): Path2D;
|
|
311
|
+
/** polyline.new: line through the points (curved, closed), fill of the area inside */
|
|
312
|
+
export declare function drawPolyline(env: DrawEnv, poly: PolylineData): void;
|
|
313
|
+
/** The arrows of one plotarrow */
|
|
314
|
+
export interface ArrowSeries {
|
|
315
|
+
arrows: ArrowData[];
|
|
316
|
+
minheight: number;
|
|
317
|
+
maxheight: number;
|
|
318
|
+
forceOverlay: boolean;
|
|
319
|
+
/** Drawn at the bars (price pane); otherwise from the pane edge */
|
|
320
|
+
onBars: boolean;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* plotarrow: an up arrow for a positive value (below the bar, pointing up), a down arrow for a negative value (above
|
|
324
|
+
* the bar, pointing down). Length lo + |value| * (hi - lo) / largest, where lo / hi are minheight / maxheight and
|
|
325
|
+
* largest is the largest |value| of the arrows on the visible bars. Width and gap to the bar follow the bar spacing:
|
|
326
|
+
* below 4 px of width a line arrow (head, shaft, tail bar), else a filled arrow with an outline at the fill's
|
|
327
|
+
* transparency. In an indicator pane (not on the bars) the arrows start at the pane edge.
|
|
328
|
+
*/
|
|
329
|
+
export declare function drawArrowSeries(env: DrawEnv, s: ArrowSeries): void;
|
|
330
|
+
export declare const BOX_TEXT_PAD = 4;
|
|
331
|
+
/** Words of a text line wrapped to `width` (PineScript text.wrap_auto) */
|
|
332
|
+
export declare function wrapLine(ctx: CanvasRenderingContext2D, line: string, width: number): string[];
|
|
333
|
+
/** Text of a box (clipped to the box): size auto fits the text in the box */
|
|
334
|
+
export declare function drawBoxText(ctx: CanvasRenderingContext2D, box: BoxData, left: number, top: number, w: number, h: number): void;
|
|
335
|
+
export declare function drawBox(env: DrawEnv, box: BoxData): void;
|
|
336
|
+
export declare const LABEL_BAR_GAP = 4;
|
|
337
|
+
export declare const LABEL_PADDING = 4;
|
|
338
|
+
export declare const LABEL_TIP = 6;
|
|
339
|
+
/** Label styles drawn as a shape (label.style_xcross ...): marker shape name */
|
|
340
|
+
export declare const LABEL_SHAPES: Record<string, string>;
|
|
341
|
+
/** Half size (px) of a label shape */
|
|
342
|
+
export declare const LABEL_SHAPE_HALF: Record<PineSize, number>;
|
|
343
|
+
/** Corner label styles: side of the box from the point (x: 1 right, -1 left; y: 1 below, -1 above) */
|
|
344
|
+
export declare const LABEL_CORNERS: Record<string, [number, number]>;
|
|
345
|
+
/**
|
|
346
|
+
* Label geometry (PineScript label styles, default label_down): label_down = box above the point with a tip down to
|
|
347
|
+
* it, label_up = box below with a tip up, label_left / label_right = box right / left of the point, the corner styles
|
|
348
|
+
* (label_lower_left ...) = box with that corner at the point, label_center = box centred on the point; the shape
|
|
349
|
+
* styles (xcross, triangleup, ...) draw the shape at the point with the text above it (below for arrowup /
|
|
350
|
+
* triangleup); none = text only; text_outline = text outlined with the label colour. yloc abovebar / belowbar: the
|
|
351
|
+
* point is the bar high / low, and a centred box, a shape or a text is moved above / below it.
|
|
352
|
+
*/
|
|
353
|
+
export declare function drawLabel(env: DrawEnv, label: LabelData): void;
|
|
354
|
+
/** Font size (px) of table text */
|
|
355
|
+
export declare const TABLE_TEXT_SIZES: Record<PineSize, number>;
|
|
356
|
+
/**
|
|
357
|
+
* DOM table of a table.new table: merged cells (table.merge_cells), frame and cell borders, cell width / height in %
|
|
358
|
+
* of the plotting area (0: fit the text).
|
|
359
|
+
*/
|
|
360
|
+
export declare function buildTable(table: TableData, area: {
|
|
361
|
+
width: number;
|
|
362
|
+
height: number;
|
|
363
|
+
}): HTMLTableElement;
|
|
364
|
+
/**
|
|
365
|
+
* Estimate bar width from the time scale's visible range
|
|
366
|
+
*/
|
|
367
|
+
export declare function getBarWidth(timeScale: ReturnType<IChartApi['timeScale']>, mediaWidth: number): number;
|
|
368
|
+
/**
|
|
369
|
+
* barcolor: the bars of the host's main series (candlestick or bar series, Heikin Ashi included) repainted in their
|
|
370
|
+
* colour, with the same geometry as lightweight-charts, so the main series data is never rewritten. Other series
|
|
371
|
+
* types have no bars to colour: nothing is drawn.
|
|
372
|
+
*/
|
|
373
|
+
export declare class BarColorPrimitive extends BasePrimitive {
|
|
374
|
+
private _colors;
|
|
375
|
+
private _ohlc;
|
|
376
|
+
private _dataLength;
|
|
377
|
+
private _views;
|
|
378
|
+
constructor(colors: Array<{
|
|
379
|
+
time: number;
|
|
380
|
+
color: string;
|
|
381
|
+
}>);
|
|
382
|
+
updateAllViews(): void;
|
|
383
|
+
paneViews(): readonly IPrimitivePaneView[];
|
|
384
|
+
/** OHLC of the main series by time, rebuilt when its data changed length */
|
|
385
|
+
private ohlc;
|
|
386
|
+
private drawAll;
|
|
387
|
+
}
|
|
388
|
+
//# sourceMappingURL=primitives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/render/primitives.ts"],"names":[],"mappings":"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"}
|