@trdrs/quickcharts 2.4.0 → 4.0.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/CHANGELOG.md +121 -0
- package/README.md +326 -25
- package/dist/adapters/rest.d.ts +1 -1
- package/dist/{ar-KSXQ2USS.js → ar-FXZ5QJUR.js} +206 -56
- package/dist/ar-FXZ5QJUR.js.map +1 -0
- package/dist/{assets-M5emOz5c.d.ts → assets-Gg-UquDA.d.ts} +285 -61
- package/dist/{ca_ES-JG4FM55E.js → ca_ES-3WVKFBIF.js} +206 -56
- package/dist/ca_ES-3WVKFBIF.js.map +1 -0
- package/dist/chunk-C4MEVUNK.js +11449 -0
- package/dist/chunk-C4MEVUNK.js.map +1 -0
- package/dist/{de-VSW2LHNF.js → de-V72Q3OI7.js} +206 -56
- package/dist/de-V72Q3OI7.js.map +1 -0
- package/dist/drawings.d.ts +24 -13
- package/dist/drawings.js +5 -1
- package/dist/{es-5ZXIPVOB.js → es-CNQ3OJ6E.js} +206 -56
- package/dist/es-CNQ3OJ6E.js.map +1 -0
- package/dist/feature-manifest.json +94 -11
- package/dist/{fr-4F6DAWGD.js → fr-5WQBCGR4.js} +206 -56
- package/dist/fr-5WQBCGR4.js.map +1 -0
- package/dist/{he_IL-B7PBQUEV.js → he_IL-WXKA77UE.js} +206 -56
- package/dist/he_IL-WXKA77UE.js.map +1 -0
- package/dist/{id_ID-CYJRMXPC.js → id_ID-XPBAYSWK.js} +206 -56
- package/dist/id_ID-XPBAYSWK.js.map +1 -0
- package/dist/index.d.ts +1834 -1671
- package/dist/index.js +5405 -2619
- package/dist/index.js.map +1 -1
- package/dist/{it-KTX4SG5P.js → it-DR2EBNWX.js} +206 -56
- package/dist/it-DR2EBNWX.js.map +1 -0
- package/dist/{ja-V7OURU5D.js → ja-URB2CPXO.js} +206 -56
- package/dist/ja-URB2CPXO.js.map +1 -0
- package/dist/{ko-2RNEBYVE.js → ko-OE47NYVP.js} +206 -56
- package/dist/ko-OE47NYVP.js.map +1 -0
- package/dist/{ms_MY-EY235E7Q.js → ms_MY-BKCFRK2K.js} +206 -56
- package/dist/ms_MY-BKCFRK2K.js.map +1 -0
- package/dist/{pl-ADNVRP55.js → pl-3IKQRG3Y.js} +206 -56
- package/dist/pl-3IKQRG3Y.js.map +1 -0
- package/dist/{pt-OL2DR3DO.js → pt-PZHV5EZE.js} +206 -56
- package/dist/pt-PZHV5EZE.js.map +1 -0
- package/dist/quickcharts.css +2060 -717
- package/dist/{resources-C0cYryO9.d.ts → resources-Le6flcEn.d.ts} +1 -1
- package/dist/{ru-V6YFEPAF.js → ru-BAL6RQUV.js} +206 -56
- package/dist/ru-BAL6RQUV.js.map +1 -0
- package/dist/{sv-TORXQVE7.js → sv-Y6GBGDHM.js} +206 -56
- package/dist/sv-Y6GBGDHM.js.map +1 -0
- package/dist/{symbols-BL1fD4CS.d.ts → symbols-6V22WaRX.d.ts} +1 -1
- package/dist/symbols.d.ts +1 -1
- package/dist/{th-K6SJSYSY.js → th-MAMLMZKU.js} +206 -56
- package/dist/th-MAMLMZKU.js.map +1 -0
- package/dist/theme-manifest.json +204 -16
- package/dist/{tr-4AEM66KW.js → tr-3LQHINUZ.js} +206 -56
- package/dist/tr-3LQHINUZ.js.map +1 -0
- package/dist/{vi-YU5XCEUU.js → vi-GR4PSDKP.js} +206 -56
- package/dist/vi-GR4PSDKP.js.map +1 -0
- package/dist/{zh-QXKRYHU5.js → zh-2RJ5VNAI.js} +206 -56
- package/dist/zh-2RJ5VNAI.js.map +1 -0
- package/dist/{zh_TW-AYPDKG4Q.js → zh_TW-XEBSACHU.js} +206 -56
- package/dist/zh_TW-XEBSACHU.js.map +1 -0
- package/package.json +1 -1
- package/dist/ar-KSXQ2USS.js.map +0 -1
- package/dist/ca_ES-JG4FM55E.js.map +0 -1
- package/dist/chunk-YR7NT5ZW.js +0 -6997
- package/dist/chunk-YR7NT5ZW.js.map +0 -1
- package/dist/de-VSW2LHNF.js.map +0 -1
- package/dist/es-5ZXIPVOB.js.map +0 -1
- package/dist/fr-4F6DAWGD.js.map +0 -1
- package/dist/he_IL-B7PBQUEV.js.map +0 -1
- package/dist/id_ID-CYJRMXPC.js.map +0 -1
- package/dist/it-KTX4SG5P.js.map +0 -1
- package/dist/ja-V7OURU5D.js.map +0 -1
- package/dist/ko-2RNEBYVE.js.map +0 -1
- package/dist/ms_MY-EY235E7Q.js.map +0 -1
- package/dist/pl-ADNVRP55.js.map +0 -1
- package/dist/pt-OL2DR3DO.js.map +0 -1
- package/dist/ru-V6YFEPAF.js.map +0 -1
- package/dist/sv-TORXQVE7.js.map +0 -1
- package/dist/th-K6SJSYSY.js.map +0 -1
- package/dist/tr-4AEM66KW.js.map +0 -1
- package/dist/vi-YU5XCEUU.js.map +0 -1
- package/dist/zh-QXKRYHU5.js.map +0 -1
- package/dist/zh_TW-AYPDKG4Q.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,1437 +1,47 @@
|
|
|
1
|
-
import { C as ChartDatafeed, F as FeedBar, S as SymbolRow, a as SearchClassNode } from './symbols-
|
|
2
|
-
export { B as BarMark,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export {
|
|
1
|
+
import { C as ChartDatafeed, F as FeedBar, S as SymbolRow, D as DatafeedSearchOptions, a as SearchPage, b as SearchClassNode } from './symbols-6V22WaRX.js';
|
|
2
|
+
export { B as BarMark, c as BarsEvent, d as DatafeedConfig, e as FeedUnavailableError, H as HistoryPage, M as MarkColorRole, f as MarkPlacement, g as MarkShape, O as OlderPageVerdict, h as SubscribeHandlers, i as SymbolNames, T as TimescaleMark, o as olderPageVerdict, s as symbolNames } from './symbols-6V22WaRX.js';
|
|
3
|
+
import { an as en, C as ChartMessageKey, G as GlyphSourcePort, M as MagnetMode, d as CursorMode, N as TextEditFrame, K as TextDraft, L as LineStyle, I as IDrawing, m as DrawingCounts, D as DrawingStyle, _ as VisibilityPreset, W as ToolPreset, X as ToolTemplate, S as SerializedDrawing, o as DrawingPreferences, l as DrawingAssetPort } from './assets-Gg-UquDA.js';
|
|
4
|
+
import { R as ResourceRef, C as ChartSaveLoadAdapter, q as ChartMeta, t as ChartBody, f as DrawingResourceContext, i as ResourceStore, u as DrawingsMeta, h as DrawingsBody, j as TemplateMeta, T as TemplateBody, v as LayoutMeta, w as LayoutBody, c as DrawingContextKind } from './resources-Le6flcEn.js';
|
|
5
|
+
export { a as ChartLocalDrawingContext, D as DRAWING_CONTEXT_VERSION, b as DRAWING_DOCUMENT_VERSION, d as DrawingEntry, e as DrawingGroup, g as DrawingTombstone, L as LayoutSharedDrawingContext, M as MemoryResourcesOptions, x as ResourceAbortError, S as SymbolGlobalDrawingContext, y as TemplateKind, W as WriteOutcome, k as drawingContextKey, l as emptyDrawingDocument, m as liveDrawingEntries, n as liveDrawingGroups, z as memorySaveLoadAdapter, o as mergeDrawingDocuments, p as parseDrawingDocument, r as reviseDrawingDocument, s as sameDrawingContext } from './resources-Le6flcEn.js';
|
|
6
6
|
import { LineData, UTCTimestamp, HistogramData, WhitespaceData, IChartApi, ISeriesApi, CreatePriceLineOptions, PriceLineOptions, ISeriesPrimitive, Time, PriceScaleMode, SeriesType, SeriesAttachedParameter, TickMarkType } from 'lightweight-charts';
|
|
7
7
|
import { D as DataStatus, S as SymbolInfo, P as PriceFormat } from './symbology-D3SLclrU.js';
|
|
8
8
|
export { a as Subsession, b as SubsessionId, T as TickBand, p as parseTickBands, t as tickBandFor } from './symbology-D3SLclrU.js';
|
|
9
9
|
import { PriceFormatter } from './format.js';
|
|
10
10
|
export { NumericPunctuation, PriceFormatterOptions, createPriceFormatter } from './format.js';
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
interface
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
/** Persist a value. Must not throw — a quota/permission failure is swallowed (the chart keeps working
|
|
34
|
-
* off in-memory state for the session). */
|
|
35
|
-
set(key: string, value: string): void;
|
|
36
|
-
/** Remove a key. Must not throw. */
|
|
37
|
-
remove(key: string): void;
|
|
38
|
-
/** Every key currently present, so the chart can enumerate its own namespace. Order is unspecified. */
|
|
39
|
-
keys(): string[];
|
|
40
|
-
}
|
|
41
|
-
/** An in-memory ChartStorage — the default, and the store for SSR, tests, or an intentionally ephemeral
|
|
42
|
-
* embed where nothing should persist beyond the page. A host can also seed one from its own state to
|
|
43
|
-
* hand the chart a starting set. */
|
|
44
|
-
declare function memoryChartStorage(seed?: Record<string, string>): ChartStorage;
|
|
45
|
-
|
|
46
|
-
/** The subset of `fetch` this adapter uses — kept minimal so the package stays DOM-independent and a
|
|
47
|
-
* test can drive it with a plain fake. The global `fetch` satisfies it. */
|
|
48
|
-
type FetchLike = (url: string) => Promise<{
|
|
49
|
-
ok: boolean;
|
|
50
|
-
status: number;
|
|
51
|
-
json(): Promise<unknown>;
|
|
52
|
-
text(): Promise<string>;
|
|
53
|
-
}>;
|
|
54
|
-
interface UdfDatafeedOptions {
|
|
55
|
-
/** UDF server base URL, e.g. `https://feed.example.com/udf` (no trailing slash needed). */
|
|
56
|
-
baseUrl: string;
|
|
57
|
-
/** Injected fetch — defaults to the global. Provide one in tests or to add auth headers via a wrapper. */
|
|
58
|
-
fetch?: FetchLike;
|
|
59
|
-
/** Live-poll cadence in ms for `subscribeBars` (UDF has no push). Default 10s, the UDF norm. */
|
|
60
|
-
pollMs?: number;
|
|
61
|
-
/** Bars pulled for the initial live snapshot. Default 300. */
|
|
62
|
-
snapshotBars?: number;
|
|
63
|
-
}
|
|
64
|
-
/** A ChartDatafeed backed by a UDF server. */
|
|
65
|
-
declare function createUdfDatafeed(options: UdfDatafeedOptions): ChartDatafeed;
|
|
66
|
-
|
|
67
|
-
/** Map a timeframe token to a UDF resolution string: seconds `<N>S`, minutes `<N>`, hours as
|
|
68
|
-
* minutes (`<N*60>`, the classic UDF intraday encoding), day/week/month `<N>D`/`<N>W`/`<N>M`, ticks
|
|
69
|
-
* `<N>T`. A token the grammar cannot read falls through as-is (a custom server may accept it). */
|
|
70
|
-
declare function tfToUdfResolution(tf: string): string;
|
|
71
|
-
/** The inverse of {@link tfToUdfResolution}: a UDF resolution string back to a timeframe token.
|
|
72
|
-
* Bare numbers are minutes; whole-hour counts of 60 or more normalize to `<N>h` (the forward map
|
|
73
|
-
* emits hours AS minutes, so '1h' → '60' → '1h' round-trips); bare 'D'/'W'/'M'/'S'/'T' mean a
|
|
74
|
-
* count of 1. Null for a resolution the timeframe grammar cannot express, its per-unit ceilings
|
|
75
|
-
* included: a caller building a capability declaration OMITS that resolution rather than
|
|
76
|
-
* mis-declaring it (the widget can't do bucket arithmetic on a token outside the grammar, so it
|
|
77
|
-
* isn't widget-servable even if the server serves it). */
|
|
78
|
-
declare function udfResolutionToTf(resolution: string): string | null;
|
|
79
|
-
|
|
80
|
-
/** A locale a product ships or a host registers. `code` is the stable product-facing identifier;
|
|
81
|
-
* `tag` is the canonical BCP 47 value for `Intl` and the document language. */
|
|
82
|
-
interface LocaleDefinition<Code extends string = string> {
|
|
83
|
-
code: Code;
|
|
84
|
-
endonym: string;
|
|
85
|
-
tag: string;
|
|
86
|
-
dir: 'ltr' | 'rtl';
|
|
87
|
-
}
|
|
88
|
-
/** The languages this package ships a dictionary for. */
|
|
89
|
-
type ChartLocaleCode = 'en' | 'de' | 'fr' | 'es' | 'it' | 'ca_ES' | 'pl' | 'sv' | 'tr' | 'ru' | 'pt' | 'id_ID' | 'ms_MY' | 'th' | 'vi' | 'ja' | 'ko' | 'zh' | 'zh_TW' | 'ar' | 'he_IL';
|
|
90
|
-
type ChartLocale = LocaleDefinition<ChartLocaleCode>;
|
|
91
|
-
/** English first, then the Latin-script languages, then the others. Endonyms let every reader find
|
|
92
|
-
* their own language in a picker. `scripts/i18n.mjs` reads this table by its line shape. */
|
|
93
|
-
declare const BUILT_IN_LOCALES: readonly ChartLocale[];
|
|
94
|
-
|
|
95
|
-
type PluralCategory = 'zero' | 'one' | 'two' | 'few' | 'many' | 'other';
|
|
96
|
-
/** A message with one form per plural category its language distinguishes (CLDR: English has
|
|
97
|
-
* `one` and `other`, Russian `one`/`few`/`many`/`other`, Arabic all six, Japanese `other` alone).
|
|
98
|
-
* `other` is always present. `zero` is special: when present it is used for an exact count of 0 in
|
|
99
|
-
* EVERY language, so "No alerts" needs no branch at the call site. The form is selected by the
|
|
100
|
-
* `count` variable. */
|
|
101
|
-
type PluralMessage = {
|
|
102
|
-
other: string;
|
|
103
|
-
} & Partial<Record<Exclude<PluralCategory, 'other'>, string>>;
|
|
104
|
-
type Message = string | PluralMessage;
|
|
105
|
-
/** A catalog: keys to messages. The English catalog is the SOURCE every translation is typed
|
|
106
|
-
* against; keys are dotted by surface (`legend.hideIndicator`), and each surface keeps its own file. */
|
|
107
|
-
type Catalog = Record<string, Message>;
|
|
108
|
-
/** A translation of a catalog: a string for every string, a plural for every plural. The shape is
|
|
109
|
-
* the source's, so a translation cannot miss a key or flatten a plural without failing typecheck. */
|
|
110
|
-
type Translation<Source extends Catalog> = {
|
|
111
|
-
[K in keyof Source]: Source[K] extends string ? string : PluralMessage;
|
|
112
|
-
};
|
|
113
|
-
type Vars = Record<string, string | number>;
|
|
114
|
-
/** The arguments `t` takes for a key: a plural key REQUIRES `count`; a string key takes any vars.
|
|
115
|
-
* Distributive over `K`, so a key chosen at runtime from a union of keys (a label table) is
|
|
116
|
-
* accepted with the arguments any ONE of them takes rather than what all of them would need. */
|
|
117
|
-
type TranslateArgs<Source extends Catalog, K extends keyof Source> = K extends unknown ? Source[K] extends string ? [vars?: Vars] : [vars: Vars & {
|
|
118
|
-
count: number;
|
|
119
|
-
}] : never;
|
|
120
|
-
/** The message for a key in the active language: a plural key picks its form by the language's
|
|
121
|
-
* rules, and numbers in `{slots}` are written with the language's digits and grouping. */
|
|
122
|
-
type Translate<Source extends Catalog> = <K extends keyof Source & string>(key: K, ...args: TranslateArgs<Source, K>) => string;
|
|
123
|
-
|
|
124
|
-
interface DictionaryLoader<Source extends Catalog, Code extends string = ChartLocaleCode> {
|
|
125
|
-
/** The translation if it is already in memory: synchronous, for a first render that must not flash. */
|
|
126
|
-
ifLoaded(code: Code): Translation<Source> | null;
|
|
127
|
-
/** Load (once) and return a locale's translation. Concurrent callers share one fetch; a locale
|
|
128
|
-
* the catalog does not ship resolves to the source. */
|
|
129
|
-
load(code: Code): Promise<Translation<Source>>;
|
|
130
|
-
/** Whether the catalog ships this locale (the source locale always does). */
|
|
131
|
-
has(code: Code): boolean;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
type ChartTranslate = Translate<typeof en>;
|
|
135
|
-
/** The widget's catalog in one language: every key of the English source, in the same shape. */
|
|
136
|
-
type ChartDictionary = Translation<typeof en>;
|
|
137
|
-
/** A locale a host adds beyond the built-in inventory: its stable code, canonical BCP 47 tag,
|
|
138
|
-
* reading direction, endonym, and the dictionary chunk to fetch the first time it is chosen. */
|
|
139
|
-
interface ChartCustomLocale extends LocaleDefinition {
|
|
140
|
-
dictionary: () => Promise<{
|
|
141
|
-
default: ChartDictionary;
|
|
142
|
-
}>;
|
|
143
|
-
}
|
|
144
|
-
interface ChartI18nOptions {
|
|
145
|
-
/** Locales registered beside the built-in inventory. A code or tag the inventory already holds
|
|
146
|
-
* is refused: the built-in dictionaries are not overridden through this door. */
|
|
147
|
-
locales?: readonly ChartCustomLocale[];
|
|
148
|
-
/** Hears every key a loaded dictionary is missing; the text falls back to English. The typed
|
|
149
|
-
* catalogs cannot miss a key, so this only ever reports a dictionary loaded from data. */
|
|
150
|
-
onMissing?: (key: ChartMessageKey, locale: string) => void;
|
|
12
|
+
/** The two modes Quick Charts ships complete. A host switches between them at runtime; it does not
|
|
13
|
+
* add a third. A host that keeps named brand presets resolves each preset to a custom light or
|
|
14
|
+
* dark palette before passing it in. */
|
|
15
|
+
type ThemeMode = 'light' | 'dark';
|
|
16
|
+
/** What a role's value is written as. Every value is a CSS token string, so `length` is `'4px'`,
|
|
17
|
+
* `duration` is `'150ms'`, `easing` is a timing function such as `'ease-out'`, and `scale` is a
|
|
18
|
+
* unitless factor such as `'0.97'`; the kind says which tokens are valid, and validation enforces
|
|
19
|
+
* it. */
|
|
20
|
+
type ThemeRoleKind = 'color' | 'length' | 'font' | 'duration' | 'easing' | 'scale' | 'shadow';
|
|
21
|
+
/** The grouping a role belongs to. Families organize the manual and the manifest; they are not part
|
|
22
|
+
* of a role's identity. */
|
|
23
|
+
type ThemeRoleFamily = 'canvas' | 'series' | 'scale' | 'text' | 'chrome' | 'overlay' | 'state' | 'control' | 'status' | 'illustration' | 'drawing' | 'motion';
|
|
24
|
+
/** A readability requirement the palettes must meet: this role's value, read against the value of
|
|
25
|
+
* `over`, reaches `min` under the WCAG 2.2 contrast formula. Where `over` is a translucent tint
|
|
26
|
+
* such as the hover or selected fill, `on` names the opaque surface the tint is drawn on, and the
|
|
27
|
+
* tint is flattened onto it before measuring. Body text needs 4.5, a non-text indicator such as a
|
|
28
|
+
* focus ring needs 3. */
|
|
29
|
+
interface ThemeContrastRule {
|
|
30
|
+
over: string;
|
|
31
|
+
on?: string;
|
|
32
|
+
min: number;
|
|
151
33
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
setLocale(code: string): Promise<void>;
|
|
164
|
-
/** Hear every change of `t`; a module re-renders its text in the handler. */
|
|
165
|
-
onChange(listener: () => void): () => void;
|
|
166
|
-
}
|
|
167
|
-
/** One chunk per language the widget ships, every language in `BUILT_IN_LOCALES`, fetched the
|
|
168
|
-
* first time it is chosen. */
|
|
169
|
-
declare const chartDictionaries: DictionaryLoader<{
|
|
170
|
-
readonly 'toast.dismiss': "Dismiss";
|
|
171
|
-
readonly 'toast.feedUnavailable': "No data for {symbol} from this feed.";
|
|
172
|
-
readonly 'toast.feedNoData': "No data for {symbol} yet.";
|
|
173
|
-
readonly 'toast.imageCopyFallback': "Could not copy the image. Saved a file instead.";
|
|
174
|
-
readonly 'toast.imageFailed': "Could not capture the chart image.";
|
|
175
|
-
readonly 'toast.indicatorsNotCarried': {
|
|
176
|
-
readonly one: "{count} indicator in this saved chart is not available here and was left out.";
|
|
177
|
-
readonly other: "{count} indicators in this saved chart are not available here and were left out.";
|
|
178
|
-
};
|
|
179
|
-
readonly 'settings.menu': "Chart settings";
|
|
180
|
-
readonly 'settings.sectionAppearance': "Appearance";
|
|
181
|
-
readonly 'settings.background': "Background";
|
|
182
|
-
readonly 'settings.upCandles': "Up candles";
|
|
183
|
-
readonly 'settings.downCandles': "Down candles";
|
|
184
|
-
readonly 'settings.upBorders': "Up borders";
|
|
185
|
-
readonly 'settings.downBorders': "Down borders";
|
|
186
|
-
readonly 'settings.upWicks': "Up wicks";
|
|
187
|
-
readonly 'settings.downWicks': "Down wicks";
|
|
188
|
-
readonly 'settings.sectionDisplay': "Display";
|
|
189
|
-
readonly 'settings.gridLines': "Grid lines";
|
|
190
|
-
readonly 'settings.sessionShading': "Session shading";
|
|
191
|
-
readonly 'settings.sectionScale': "Price scale";
|
|
192
|
-
readonly 'settings.sectionTheme': "Theme";
|
|
193
|
-
readonly 'settings.indicatorTitle': "{name} settings";
|
|
194
|
-
readonly 'settings.tabInputs': "Inputs";
|
|
195
|
-
readonly 'settings.tabStyle': "Style";
|
|
196
|
-
readonly 'settings.tabVisibility': "Visibility";
|
|
197
|
-
readonly 'settings.plots': "Plots";
|
|
198
|
-
readonly 'settings.levels': "Levels";
|
|
199
|
-
readonly 'settings.fills': "Fills";
|
|
200
|
-
readonly 'settings.colorOf': "{name} color";
|
|
201
|
-
readonly 'settings.lineWidthOf': "{name} line width";
|
|
202
|
-
readonly 'settings.lineStyleOf': "{name} line style";
|
|
203
|
-
readonly 'settings.visibleOf': "Show {name}";
|
|
204
|
-
readonly 'settings.lineStyleSolid': "Solid";
|
|
205
|
-
readonly 'settings.lineStyleDashed': "Dashed";
|
|
206
|
-
readonly 'settings.lineStyleDotted': "Dotted";
|
|
207
|
-
readonly 'settings.precision': "Precision";
|
|
208
|
-
readonly 'settings.precisionDefault': "Default";
|
|
209
|
-
readonly 'settings.labelsOnPriceScale': "Labels on price scale";
|
|
210
|
-
readonly 'settings.showIndicator': "Show this indicator";
|
|
211
|
-
readonly 'picker.title': "Indicators";
|
|
212
|
-
readonly 'picker.search': "Search indicators";
|
|
213
|
-
readonly 'picker.noMatches': "No matching indicators.";
|
|
214
|
-
readonly 'picker.collections': "Indicator collections";
|
|
215
|
-
readonly 'picker.personal': "Personal";
|
|
216
|
-
readonly 'picker.builtin': "Built-in";
|
|
217
|
-
readonly 'picker.favorites': "Favorites";
|
|
218
|
-
readonly 'picker.thousands': " K";
|
|
219
|
-
readonly 'picker.name': "Name";
|
|
220
|
-
readonly 'picker.author': "Author";
|
|
221
|
-
readonly 'picker.favorite': "Favorite {name}";
|
|
222
|
-
readonly 'picker.unfavorite': "Unfavorite {name}";
|
|
223
|
-
readonly 'picker.loading': "Loading indicators…";
|
|
224
|
-
readonly 'picker.unavailable': "Indicator content is unavailable. Try again.";
|
|
225
|
-
readonly 'picker.actionFailed': "The action could not be completed. Try again.";
|
|
226
|
-
readonly 'picker.add': "Add {name}";
|
|
227
|
-
readonly 'picker.notPermitted': "{name} is not available here";
|
|
228
|
-
readonly 'history.undoNamed': "Undo {change}";
|
|
229
|
-
readonly 'history.redoNamed': "Redo {change}";
|
|
230
|
-
readonly 'history.changeSymbol': "symbol change";
|
|
231
|
-
readonly 'history.changeTimeframe': "timeframe change";
|
|
232
|
-
readonly 'history.changeChartStyle': "chart style change";
|
|
233
|
-
readonly 'history.changePriceScale': "price scale change";
|
|
234
|
-
readonly 'history.changeAppearance': "appearance change";
|
|
235
|
-
readonly 'history.changeAddCompare': "add comparison";
|
|
236
|
-
readonly 'history.changeRemoveCompare': "remove comparison";
|
|
237
|
-
readonly 'history.changeCompare': "comparison change";
|
|
238
|
-
readonly 'history.changeAddIndicator': "add indicator";
|
|
239
|
-
readonly 'history.changeRemoveIndicator': "remove indicator";
|
|
240
|
-
readonly 'history.changeIndicator': "indicator change";
|
|
241
|
-
readonly 'history.changeAddDrawing': "add drawing";
|
|
242
|
-
readonly 'history.changeRemoveDrawing': "remove drawing";
|
|
243
|
-
readonly 'history.changeDrawing': "drawing change";
|
|
244
|
-
readonly 'chrome.topBar': "Chart toolbar";
|
|
245
|
-
readonly 'chrome.bottomBar': "Chart footer";
|
|
246
|
-
readonly 'chrome.symbolSearch': "Search symbol";
|
|
247
|
-
readonly 'chrome.compare': "Compare or add symbol";
|
|
248
|
-
readonly 'chrome.chartStyle': "Chart style";
|
|
249
|
-
readonly 'chrome.indicators': "Indicators";
|
|
250
|
-
readonly 'chrome.replay': "Bar replay";
|
|
251
|
-
readonly 'chrome.replayChip': "Replay";
|
|
252
|
-
readonly 'chrome.image': "Chart image";
|
|
253
|
-
readonly 'chrome.session': "Trading session";
|
|
254
|
-
readonly 'chrome.sessionsHeading': "Sessions";
|
|
255
|
-
readonly 'chrome.navigation': "Chart navigation";
|
|
256
|
-
readonly 'chrome.activeChart': "{symbol}, {timeframe}";
|
|
257
|
-
readonly 'command.extension': "Host command";
|
|
258
|
-
readonly 'command.viewReset': "Reset view";
|
|
259
|
-
readonly 'command.viewGoLive': "Go to the live edge";
|
|
260
|
-
readonly 'command.viewZoomIn': "Zoom in";
|
|
261
|
-
readonly 'command.viewZoomOut': "Zoom out";
|
|
262
|
-
readonly 'command.viewScrollLeft': "Scroll back";
|
|
263
|
-
readonly 'command.viewScrollRight': "Scroll forward";
|
|
264
|
-
readonly 'command.priceCopy': "Copy price";
|
|
265
|
-
readonly 'command.symbolSet': "Change symbol";
|
|
266
|
-
readonly 'command.styleCandles': "Candles";
|
|
267
|
-
readonly 'command.styleHollow': "Hollow candles";
|
|
268
|
-
readonly 'command.styleBars': "Bars";
|
|
269
|
-
readonly 'command.styleLine': "Line";
|
|
270
|
-
readonly 'command.styleArea': "Area";
|
|
271
|
-
readonly 'command.styleBaseline': "Baseline";
|
|
272
|
-
readonly 'command.styleStepline': "Step line";
|
|
273
|
-
readonly 'command.appearanceApply': "Chart appearance";
|
|
274
|
-
readonly 'command.appearanceReset': "Reset defaults";
|
|
275
|
-
readonly 'command.scaleNormal': "Regular price scale";
|
|
276
|
-
readonly 'command.scaleLog': "Logarithmic price scale";
|
|
277
|
-
readonly 'command.scalePercent': "Percentage price scale";
|
|
278
|
-
readonly 'command.scaleIndexed': "Indexed price scale";
|
|
279
|
-
readonly 'command.historyUndo': "Undo";
|
|
280
|
-
readonly 'command.historyRedo': "Redo";
|
|
281
|
-
readonly 'command.indicatorAdd': "Add indicator";
|
|
282
|
-
readonly 'command.indicatorUpdate': "Update indicator";
|
|
283
|
-
readonly 'command.indicatorsRemoveAll': "Remove indicators";
|
|
284
|
-
readonly 'command.indicatorRemove': "Remove indicator";
|
|
285
|
-
readonly 'command.indicatorHide': "Hide indicator";
|
|
286
|
-
readonly 'command.indicatorShow': "Show indicator";
|
|
287
|
-
readonly 'command.drawingsRemoveAll': "Remove drawings";
|
|
288
|
-
readonly 'command.drawingDeleteSelected': "Delete selected drawing";
|
|
289
|
-
readonly 'command.drawingArm': "Drawing tool";
|
|
290
|
-
readonly 'command.drawingCursor': "Cursor mode";
|
|
291
|
-
readonly 'command.drawingMagnet': "Magnet";
|
|
292
|
-
readonly 'command.drawingStayInMode': "Stay in drawing mode";
|
|
293
|
-
readonly 'command.drawingLockAll': "Lock all drawings";
|
|
294
|
-
readonly 'command.drawingHide': "Hide drawings or indicators";
|
|
295
|
-
readonly 'command.drawingSync': "Sync drawings across the layout";
|
|
296
|
-
readonly 'command.drawingRemoveLockedPolicy': "Always remove locked drawings";
|
|
297
|
-
readonly 'command.drawingFavorite': "Favorite drawing tool";
|
|
298
|
-
readonly 'command.drawingFavoritesBar': "Favorite drawing tools toolbar";
|
|
299
|
-
readonly 'command.drawingStyle': "Drawing style";
|
|
300
|
-
readonly 'command.drawingProps': "Drawing properties";
|
|
301
|
-
readonly 'command.drawingLock': "Lock drawing";
|
|
302
|
-
readonly 'command.drawingClone': "Clone drawing";
|
|
303
|
-
readonly 'command.drawingCopy': "Copy drawing";
|
|
304
|
-
readonly 'command.drawingPaste': "Paste drawing";
|
|
305
|
-
readonly 'command.drawingBringToFront': "Bring drawing to front";
|
|
306
|
-
readonly 'command.drawingSendToBack': "Send drawing to back";
|
|
307
|
-
readonly 'command.drawingBringForward': "Bring drawing forward";
|
|
308
|
-
readonly 'command.drawingSendBackward': "Send drawing backward";
|
|
309
|
-
readonly 'command.drawingHideSelected': "Hide drawing";
|
|
310
|
-
readonly 'command.drawingVisibility': "Drawing visibility on timeframes";
|
|
311
|
-
readonly 'command.drawingSettings': "Drawing settings";
|
|
312
|
-
readonly 'command.drawingCommitEdit': "Apply drawing settings";
|
|
313
|
-
readonly 'command.drawingPlaceImage': "Place image";
|
|
314
|
-
readonly 'command.drawingTemplateApply': "Apply drawing template";
|
|
315
|
-
readonly 'command.drawingTemplateSave': "Save drawing template";
|
|
316
|
-
readonly 'command.drawingTemplateRemove': "Remove drawing template";
|
|
317
|
-
readonly 'command.drawingTableAddRow': "Add table row";
|
|
318
|
-
readonly 'command.drawingTableAddColumn': "Add table column";
|
|
319
|
-
readonly 'command.drawingCancel': "Cancel drawing";
|
|
320
|
-
readonly 'command.compareOpen': "Compare or add symbol";
|
|
321
|
-
readonly 'command.compareAdd': "Add comparison";
|
|
322
|
-
readonly 'command.compareRemove': "Remove comparison";
|
|
323
|
-
readonly 'command.compareVisible': "Show or hide a comparison";
|
|
324
|
-
readonly 'command.compareChangeSymbol': "Change compared symbol";
|
|
325
|
-
readonly 'command.replayStart': "Start bar replay";
|
|
326
|
-
readonly 'command.replayStartFirst': "Start bar replay at the first available date";
|
|
327
|
-
readonly 'command.replayExit': "Exit bar replay";
|
|
328
|
-
readonly 'command.replayPlay': "Play replay";
|
|
329
|
-
readonly 'command.replayPause': "Pause replay";
|
|
330
|
-
readonly 'command.replayStepForward': "Step forward";
|
|
331
|
-
readonly 'command.replayStepBack': "Step back";
|
|
332
|
-
readonly 'command.replayGoLive': "Replay to the live edge";
|
|
333
|
-
readonly 'command.replaySpeed': "Replay speed";
|
|
334
|
-
readonly 'command.replayTimeframe': "Replay update timeframe";
|
|
335
|
-
readonly 'command.timeframeSet': "Timeframe";
|
|
336
|
-
readonly 'command.subsessionRegular': "Regular hours";
|
|
337
|
-
readonly 'command.subsessionExtended': "Extended hours";
|
|
338
|
-
readonly 'command.rangeSet': "Date range";
|
|
339
|
-
readonly 'command.timezoneSet': "Timezone";
|
|
340
|
-
readonly 'command.themeLight': "Light theme";
|
|
341
|
-
readonly 'command.themeDark': "Dark theme";
|
|
342
|
-
readonly 'command.themeToggle': "Switch theme";
|
|
343
|
-
readonly 'command.themeSet': "Set theme";
|
|
344
|
-
readonly 'command.localeSet': "Language";
|
|
345
|
-
readonly 'command.fullscreenEnter': "Fullscreen";
|
|
346
|
-
readonly 'command.fullscreenExit': "Exit fullscreen";
|
|
347
|
-
readonly 'command.fullscreenToggle': "Toggle fullscreen";
|
|
348
|
-
readonly 'command.imageCapture': "Capture image";
|
|
349
|
-
readonly 'command.imageDownload': "Download image";
|
|
350
|
-
readonly 'command.dataDownload': "Download chart data";
|
|
351
|
-
readonly 'command.imageCopy': "Copy image";
|
|
352
|
-
readonly 'command.layoutArrangement': "Layout";
|
|
353
|
-
readonly 'command.layoutActive': "Active chart";
|
|
354
|
-
readonly 'command.layoutSync': "Chart synchronization";
|
|
355
|
-
readonly 'command.layoutActivateNext': "Next chart in layout";
|
|
356
|
-
readonly 'command.layoutActivatePrevious': "Previous chart in layout";
|
|
357
|
-
readonly 'command.layoutMaximize': "Maximize or restore the active chart";
|
|
358
|
-
readonly 'command.layoutSave': "Save layout";
|
|
359
|
-
readonly 'command.layoutRename': "Rename layout";
|
|
360
|
-
readonly 'command.layoutLoad': "Open layout";
|
|
361
|
-
readonly 'command.layoutOpen': "Open layout…";
|
|
362
|
-
readonly 'command.layoutDelete': "Delete layout";
|
|
363
|
-
readonly 'command.layoutCreate': "Create new layout";
|
|
364
|
-
readonly 'command.layoutAutosave': "Autosave layout";
|
|
365
|
-
readonly 'drawing.toolbar': "Drawing tools";
|
|
366
|
-
readonly 'drawing.groupTrend': "Trend tools";
|
|
367
|
-
readonly 'drawing.groupFibGann': "Fibonacci & Gann";
|
|
368
|
-
readonly 'drawing.groupPatterns': "Patterns";
|
|
369
|
-
readonly 'drawing.groupForecast': "Forecast & measure";
|
|
370
|
-
readonly 'drawing.groupGlyphs': "Emojis & stickers";
|
|
371
|
-
readonly 'drawing.shapes': "Shapes";
|
|
372
|
-
readonly 'drawing.textNotes': "Text & notes";
|
|
373
|
-
readonly 'drawing.groupMenu': "{group} menu";
|
|
374
|
-
readonly 'drawing.sectionLines': "Lines";
|
|
375
|
-
readonly 'drawing.sectionChannels': "Channels";
|
|
376
|
-
readonly 'drawing.sectionPitchforks': "Pitchforks";
|
|
377
|
-
readonly 'drawing.sectionFibonacci': "Fibonacci";
|
|
378
|
-
readonly 'drawing.sectionGann': "Gann";
|
|
379
|
-
readonly 'drawing.sectionChartPatterns': "Chart patterns";
|
|
380
|
-
readonly 'drawing.sectionElliott': "Elliott waves";
|
|
381
|
-
readonly 'drawing.sectionCycles': "Cycles";
|
|
382
|
-
readonly 'drawing.sectionForecasting': "Forecasting";
|
|
383
|
-
readonly 'drawing.sectionVolumeBased': "Volume based";
|
|
384
|
-
readonly 'drawing.sectionMeasures': "Measures";
|
|
385
|
-
readonly 'drawing.sectionBrushes': "Brushes";
|
|
386
|
-
readonly 'drawing.sectionArrows': "Arrows";
|
|
387
|
-
readonly 'drawing.sectionContent': "Content";
|
|
388
|
-
readonly 'drawing.sectionGlyphs': "Emojis, stickers, icons";
|
|
389
|
-
readonly 'drawing.cursor': "Cursor";
|
|
390
|
-
readonly 'drawing.cursorMenu': "Cursor menu";
|
|
391
|
-
readonly 'drawing.cursorCross': "Cross";
|
|
392
|
-
readonly 'drawing.cursorDot': "Dot";
|
|
393
|
-
readonly 'drawing.cursorArrow': "Arrow";
|
|
394
|
-
readonly 'drawing.cursorEraser': "Eraser";
|
|
395
|
-
readonly 'drawing.measure': "Measure";
|
|
396
|
-
readonly 'drawing.zoomIn': "Zoom in";
|
|
397
|
-
readonly 'drawing.magnet': "Magnet";
|
|
398
|
-
readonly 'drawing.magnetMenu': "Magnet menu";
|
|
399
|
-
readonly 'drawing.magnetWeak': "Weak magnet";
|
|
400
|
-
readonly 'drawing.magnetStrong': "Strong magnet";
|
|
401
|
-
readonly 'drawing.stayInDrawingMode': "Stay in drawing mode";
|
|
402
|
-
readonly 'drawing.lockAll': "Lock all drawings";
|
|
403
|
-
readonly 'drawing.unlockAll': "Unlock all drawings";
|
|
404
|
-
readonly 'drawing.hideMenu': "Hide menu";
|
|
405
|
-
readonly 'drawing.hideDrawings': "Hide drawings";
|
|
406
|
-
readonly 'drawing.showDrawings': "Show drawings";
|
|
407
|
-
readonly 'drawing.hideIndicators': "Hide indicators";
|
|
408
|
-
readonly 'drawing.showIndicators': "Show indicators";
|
|
409
|
-
readonly 'drawing.hideAll': "Hide all";
|
|
410
|
-
readonly 'drawing.showAll': "Show all";
|
|
411
|
-
readonly 'drawing.syncLabel': "Sync drawings across the layout";
|
|
412
|
-
readonly 'drawing.syncOnHelp': "New drawings are replicated to all charts in the layout and shown when the same ticker is selected";
|
|
413
|
-
readonly 'drawing.syncOffHelp': "New drawings stay on the chart that drew them";
|
|
414
|
-
readonly 'drawing.removeMenu': "Remove menu";
|
|
415
|
-
readonly 'drawing.removeDrawings': "Remove drawings";
|
|
416
|
-
readonly 'drawing.countDrawings': {
|
|
417
|
-
readonly one: "{count} drawing";
|
|
418
|
-
readonly other: "{count} drawings";
|
|
419
|
-
};
|
|
420
|
-
readonly 'drawing.countIndicators': {
|
|
421
|
-
readonly one: "{count} indicator";
|
|
422
|
-
readonly other: "{count} indicators";
|
|
423
|
-
};
|
|
424
|
-
readonly 'drawing.removeItems': "Remove {items}";
|
|
425
|
-
readonly 'drawing.removeBoth': "Remove {drawings} & {indicators}";
|
|
426
|
-
readonly 'drawing.nothingToRemove': "Nothing to remove";
|
|
427
|
-
readonly 'drawing.alwaysRemoveLocked': "Always remove locked drawings";
|
|
428
|
-
readonly 'drawing.favTools': "Favorite drawing tools";
|
|
429
|
-
readonly 'drawing.favToolsBar': "Favorite drawing tools toolbar";
|
|
430
|
-
readonly 'drawing.favAdd': "Add {tool} to favorites";
|
|
431
|
-
readonly 'drawing.favRemove': "Remove {tool} from favorites";
|
|
432
|
-
readonly 'drawing.moveToolbar': "Move toolbar";
|
|
433
|
-
readonly 'drawing.moveFavoritesToolbar': "Move favorites toolbar";
|
|
434
|
-
readonly 'drawing.settingsBar': "Selected drawing";
|
|
435
|
-
readonly 'drawing.templates': "Templates";
|
|
436
|
-
readonly 'drawing.drawingTemplates': "Drawing templates";
|
|
437
|
-
readonly 'drawing.saveTemplateAs': "Save drawing template as...";
|
|
438
|
-
readonly 'drawing.applyDefaultTemplate': "Apply default drawing template";
|
|
439
|
-
readonly 'drawing.removeTemplateNamed': "Remove template {name}";
|
|
440
|
-
readonly 'drawing.remove': "Remove";
|
|
441
|
-
readonly 'drawing.addRowShort': "+ Row";
|
|
442
|
-
readonly 'drawing.addColumnShort': "+ Col";
|
|
443
|
-
readonly 'drawing.drawingColor': "Drawing color";
|
|
444
|
-
readonly 'drawing.backgroundColor': "Background color";
|
|
445
|
-
readonly 'drawing.thickness': "Thickness";
|
|
446
|
-
readonly 'drawing.lineThickness': "Line thickness";
|
|
447
|
-
readonly 'drawing.thicknessValue': "Thickness {n}px";
|
|
448
|
-
readonly 'drawing.lineStyle': "Line style";
|
|
449
|
-
readonly 'drawing.lineStyleValue': "Line style {name}";
|
|
450
|
-
readonly 'drawing.lineSolid': "Line";
|
|
451
|
-
readonly 'drawing.lineDashed': "Dashed line";
|
|
452
|
-
readonly 'drawing.lineDotted': "Dotted line";
|
|
453
|
-
readonly 'drawing.settings': "Settings";
|
|
454
|
-
readonly 'drawing.drawingSettings': "Drawing settings";
|
|
455
|
-
readonly 'drawing.lock': "Lock";
|
|
456
|
-
readonly 'drawing.unlock': "Unlock";
|
|
457
|
-
readonly 'drawing.lockDrawing': "Lock drawing";
|
|
458
|
-
readonly 'drawing.unlockDrawing': "Unlock drawing";
|
|
459
|
-
readonly 'drawing.deleteDrawing': "Delete drawing";
|
|
460
|
-
readonly 'drawing.more': "More";
|
|
461
|
-
readonly 'drawing.moreActions': "More drawing actions";
|
|
462
|
-
readonly 'drawing.visualOrder': "Visual order";
|
|
463
|
-
readonly 'drawing.visibilityOnTimeframes': "Visibility on timeframes";
|
|
464
|
-
readonly 'drawing.clone': "Clone";
|
|
465
|
-
readonly 'drawing.copy': "Copy";
|
|
466
|
-
readonly 'drawing.modifierControl': "Ctrl";
|
|
467
|
-
readonly 'drawing.modifierCommand': "Cmd";
|
|
468
|
-
readonly 'drawing.hintClone': "{modifier} + Drag";
|
|
469
|
-
readonly 'drawing.hintCopy': "{modifier} + C";
|
|
470
|
-
readonly 'drawing.hintPaste': "{modifier} + V";
|
|
471
|
-
readonly 'drawing.deleteWithKey': "Delete (Del)";
|
|
472
|
-
readonly 'drawing.statusDrawingsHidden': "Drawings hidden";
|
|
473
|
-
readonly 'drawing.statusDrawingsShown': "Drawings shown";
|
|
474
|
-
readonly 'drawing.statusIndicatorsHidden': "Indicators hidden";
|
|
475
|
-
readonly 'drawing.statusIndicatorsShown': "Indicators shown";
|
|
476
|
-
readonly 'drawing.statusAllHidden': "Drawings and indicators hidden";
|
|
477
|
-
readonly 'drawing.statusAllShown': "Drawings and indicators shown";
|
|
478
|
-
readonly 'drawing.statusAllLocked': "All drawings locked";
|
|
479
|
-
readonly 'drawing.statusAllUnlocked': "All drawings unlocked";
|
|
480
|
-
readonly 'drawing.hide': "Hide";
|
|
481
|
-
readonly 'drawing.bringToFront': "Bring to front";
|
|
482
|
-
readonly 'drawing.sendToBack': "Send to back";
|
|
483
|
-
readonly 'drawing.bringForward': "Bring forward";
|
|
484
|
-
readonly 'drawing.sendBackward': "Send backward";
|
|
485
|
-
readonly 'drawing.visCurrentAndAbove': "Current timeframe and above";
|
|
486
|
-
readonly 'drawing.visCurrentAndBelow': "Current timeframe and below";
|
|
487
|
-
readonly 'drawing.visCurrentOnly': "Current timeframe only";
|
|
488
|
-
readonly 'drawing.visAll': "All timeframes";
|
|
489
|
-
readonly 'drawing.saveTemplate': "Save drawing template";
|
|
490
|
-
readonly 'drawing.templateName': "Template name";
|
|
491
|
-
readonly 'drawing.save': "Save";
|
|
492
|
-
readonly 'drawing.deleteTemplateTitle': "Delete this template?";
|
|
493
|
-
readonly 'drawing.deleteTemplateBody': "Doing this will permanently delete your \"{name}\" drawing template.";
|
|
494
|
-
readonly 'drawing.settingsTitle': "{tool} settings";
|
|
495
|
-
readonly 'drawing.tabInputs': "Inputs";
|
|
496
|
-
readonly 'drawing.tabStyle': "Style";
|
|
497
|
-
readonly 'drawing.tabText': "Text";
|
|
498
|
-
readonly 'drawing.tabTable': "Table";
|
|
499
|
-
readonly 'drawing.tabCoordinates': "Coordinates";
|
|
500
|
-
readonly 'drawing.tabVisibility': "Visibility";
|
|
501
|
-
readonly 'drawing.template': "Template";
|
|
502
|
-
readonly 'drawing.saveAs': "Save as...";
|
|
503
|
-
readonly 'drawing.applyDefaults': "Apply defaults";
|
|
504
|
-
readonly 'drawing.cancel': "Cancel";
|
|
505
|
-
readonly 'drawing.ok': "Ok";
|
|
506
|
-
readonly 'drawing.delete': "Delete";
|
|
507
|
-
readonly 'drawing.close': "Close";
|
|
508
|
-
readonly 'drawing.color': "Color";
|
|
509
|
-
readonly 'drawing.rowLine': "Line";
|
|
510
|
-
readonly 'drawing.background': "Background";
|
|
511
|
-
readonly 'drawing.border': "Border";
|
|
512
|
-
readonly 'drawing.profitColor': "Target zone color";
|
|
513
|
-
readonly 'drawing.stopColor': "Stop zone color";
|
|
514
|
-
readonly 'drawing.textColor': "Text color";
|
|
515
|
-
readonly 'drawing.fontSize': "Font size";
|
|
516
|
-
readonly 'drawing.size': "Size";
|
|
517
|
-
readonly 'drawing.width': "Width";
|
|
518
|
-
readonly 'drawing.opacity': "Opacity";
|
|
519
|
-
readonly 'drawing.transparency': "Transparency";
|
|
520
|
-
readonly 'drawing.label': "Label";
|
|
521
|
-
readonly 'drawing.labels': "Labels";
|
|
522
|
-
readonly 'drawing.left': "Left";
|
|
523
|
-
readonly 'drawing.center': "Center";
|
|
524
|
-
readonly 'drawing.right': "Right";
|
|
525
|
-
readonly 'drawing.up': "Up";
|
|
526
|
-
readonly 'drawing.down': "Down";
|
|
527
|
-
readonly 'drawing.rowVisible': "{name} visible";
|
|
528
|
-
readonly 'drawing.leftEnd': "Left end";
|
|
529
|
-
readonly 'drawing.rightEnd': "Right end";
|
|
530
|
-
readonly 'drawing.lineEndNormal': "Normal";
|
|
531
|
-
readonly 'drawing.lineEndArrow': "Arrow";
|
|
532
|
-
readonly 'drawing.increase': "Increase";
|
|
533
|
-
readonly 'drawing.decrease': "Decrease";
|
|
534
|
-
readonly 'drawing.rangeFrom': "From";
|
|
535
|
-
readonly 'drawing.rangeTo': "To";
|
|
536
|
-
readonly 'drawing.pickColor': "Pick a color";
|
|
537
|
-
readonly 'drawing.extend': "Extend";
|
|
538
|
-
readonly 'drawing.extendNone': "Don't extend";
|
|
539
|
-
readonly 'drawing.extendLeft': "Extend left";
|
|
540
|
-
readonly 'drawing.extendRight': "Extend right";
|
|
541
|
-
readonly 'drawing.extendBoth': "Extend both";
|
|
542
|
-
readonly 'drawing.extendLines': "Extend lines";
|
|
543
|
-
readonly 'drawing.middlePoint': "Middle point";
|
|
544
|
-
readonly 'drawing.middleLine': "Middle line";
|
|
545
|
-
readonly 'drawing.priceLabel': "Price label";
|
|
546
|
-
readonly 'drawing.priceLabels': "Price labels";
|
|
547
|
-
readonly 'drawing.timeLabel': "Time label";
|
|
548
|
-
readonly 'drawing.rowStyle': "Style";
|
|
549
|
-
readonly 'drawing.variantOriginal': "Original";
|
|
550
|
-
readonly 'drawing.variantSchiff': "Schiff";
|
|
551
|
-
readonly 'drawing.variantModifiedSchiff': "Modified Schiff";
|
|
552
|
-
readonly 'drawing.variantInside': "Inside";
|
|
553
|
-
readonly 'drawing.sectionStats': "Stats";
|
|
554
|
-
readonly 'drawing.priceChange': "Price change";
|
|
555
|
-
readonly 'drawing.percentChange': "Percent change";
|
|
556
|
-
readonly 'drawing.bars': "Bars";
|
|
557
|
-
readonly 'drawing.dateTimeRange': "Date/time range";
|
|
558
|
-
readonly 'drawing.volume': "Volume";
|
|
559
|
-
readonly 'drawing.sectionInfo': "Info";
|
|
560
|
-
readonly 'drawing.priceRange': "Price range";
|
|
561
|
-
readonly 'drawing.barsRange': "Bars range";
|
|
562
|
-
readonly 'drawing.angle': "Angle";
|
|
563
|
-
readonly 'drawing.statsPosition': "Stats position";
|
|
564
|
-
readonly 'drawing.direction': "Direction";
|
|
565
|
-
readonly 'drawing.prices': "Prices";
|
|
566
|
-
readonly 'drawing.levels': "Levels";
|
|
567
|
-
readonly 'drawing.reverse': "Reverse";
|
|
568
|
-
readonly 'drawing.fullCircles': "Full circles";
|
|
569
|
-
readonly 'drawing.coeffsAsPercents': "Coeffs as percents";
|
|
570
|
-
readonly 'drawing.glyph': "Glyph";
|
|
571
|
-
readonly 'drawing.image': "Image";
|
|
572
|
-
readonly 'drawing.replaceEllipsis': "Replace...";
|
|
573
|
-
readonly 'drawing.chooseEllipsis': "Choose...";
|
|
574
|
-
readonly 'drawing.link': "Link";
|
|
575
|
-
readonly 'drawing.rowsLayout': "Rows layout";
|
|
576
|
-
readonly 'drawing.rowsByNumber': "Number of rows";
|
|
577
|
-
readonly 'drawing.ticksPerRow': "Ticks per row";
|
|
578
|
-
readonly 'drawing.rowSize': "Row size";
|
|
579
|
-
readonly 'drawing.upDown': "Up/Down";
|
|
580
|
-
readonly 'drawing.total': "Total";
|
|
581
|
-
readonly 'drawing.delta': "Delta";
|
|
582
|
-
readonly 'drawing.valueAreaVolume': "Value area volume";
|
|
583
|
-
readonly 'drawing.widthPercent': "Width %";
|
|
584
|
-
readonly 'drawing.placement': "Placement";
|
|
585
|
-
readonly 'drawing.upDownVolume': "Up/Down volume";
|
|
586
|
-
readonly 'drawing.valueAreaUpDown': "Value area up/down";
|
|
587
|
-
readonly 'drawing.pointOfControl': "Point of control";
|
|
588
|
-
readonly 'drawing.valueAreaHigh': "Value area high";
|
|
589
|
-
readonly 'drawing.valueAreaLow': "Value area low";
|
|
590
|
-
readonly 'drawing.developingPoc': "Developing PoC";
|
|
591
|
-
readonly 'drawing.developingVa': "Developing VA";
|
|
592
|
-
readonly 'drawing.source': "Source";
|
|
593
|
-
readonly 'drawing.mode': "Mode";
|
|
594
|
-
readonly 'drawing.modeLineOpen': "Line (Open)";
|
|
595
|
-
readonly 'drawing.modeLineHigh': "Line (High)";
|
|
596
|
-
readonly 'drawing.modeLineLow': "Line (Low)";
|
|
597
|
-
readonly 'drawing.modeLineClose': "Line (Close)";
|
|
598
|
-
readonly 'drawing.modeLineHl2': "Line (HL2)";
|
|
599
|
-
readonly 'drawing.mirrored': "Mirrored";
|
|
600
|
-
readonly 'drawing.flipped': "Flipped";
|
|
601
|
-
readonly 'drawing.target': "Target";
|
|
602
|
-
readonly 'drawing.success': "Success";
|
|
603
|
-
readonly 'drawing.failure': "Failure";
|
|
604
|
-
readonly 'drawing.avgHl': "Avg HL";
|
|
605
|
-
readonly 'drawing.variance': "Variance";
|
|
606
|
-
readonly 'drawing.body': "Body";
|
|
607
|
-
readonly 'drawing.borders': "Borders";
|
|
608
|
-
readonly 'drawing.drawBorders': "Draw borders";
|
|
609
|
-
readonly 'drawing.wick': "Wick";
|
|
610
|
-
readonly 'drawing.drawWicks': "Draw wicks";
|
|
611
|
-
readonly 'drawing.sectionDeviation': "Deviation";
|
|
612
|
-
readonly 'drawing.upper': "Upper";
|
|
613
|
-
readonly 'drawing.lower': "Lower";
|
|
614
|
-
readonly 'drawing.useUpperDeviation': "Use upper deviation";
|
|
615
|
-
readonly 'drawing.useLowerDeviation': "Use lower deviation";
|
|
616
|
-
readonly 'drawing.risk': "Risk";
|
|
617
|
-
readonly 'drawing.accountSize': "Account size";
|
|
618
|
-
readonly 'drawing.lotSize': "Lot size";
|
|
619
|
-
readonly 'drawing.leverage': "Leverage";
|
|
620
|
-
readonly 'drawing.compactStatsMode': "Compact stats mode";
|
|
621
|
-
readonly 'drawing.levelVisible': "Level {value} visible";
|
|
622
|
-
readonly 'drawing.levelText': "Level {value} text";
|
|
623
|
-
readonly 'drawing.removeLevel': "Remove level {value}";
|
|
624
|
-
readonly 'drawing.addLevel': "Add level";
|
|
625
|
-
readonly 'drawing.weight': "Weight";
|
|
626
|
-
readonly 'drawing.bold': "Bold";
|
|
627
|
-
readonly 'drawing.italic': "Italic";
|
|
628
|
-
readonly 'drawing.addText': "Add text";
|
|
629
|
-
readonly 'drawing.alignment': "Alignment";
|
|
630
|
-
readonly 'drawing.textPlaceholder': "Text";
|
|
631
|
-
readonly 'drawing.textEditor': "Drawing text";
|
|
632
|
-
readonly 'drawing.headerRow': "Header row";
|
|
633
|
-
readonly 'drawing.tableCell': "Cell {row},{col}";
|
|
634
|
-
readonly 'drawing.addRow': "Add row";
|
|
635
|
-
readonly 'drawing.removeRow': "Remove row";
|
|
636
|
-
readonly 'drawing.addColumn': "Add column";
|
|
637
|
-
readonly 'drawing.removeColumn': "Remove column";
|
|
638
|
-
readonly 'drawing.coordBar': "#{n} (bar)";
|
|
639
|
-
readonly 'drawing.coordPriceBar': "#{n} (price, bar)";
|
|
640
|
-
readonly 'drawing.unitTicks': "Ticks";
|
|
641
|
-
readonly 'drawing.unitSeconds': "Seconds";
|
|
642
|
-
readonly 'drawing.unitMinutes': "Minutes";
|
|
643
|
-
readonly 'drawing.unitHours': "Hours";
|
|
644
|
-
readonly 'drawing.unitDays': "Days";
|
|
645
|
-
readonly 'drawing.unitWeeks': "Weeks";
|
|
646
|
-
readonly 'drawing.unitMonths': "Months";
|
|
647
|
-
readonly 'drawing.timeframePinnedNote': "A drawing stays on at least one timeframe, so it can always be reached again.";
|
|
648
|
-
readonly 'drawing.colorSwatch': "Color {hex}";
|
|
649
|
-
readonly 'drawing.customColor': "Custom color";
|
|
650
|
-
readonly 'drawing.saturationValue': "Saturation and brightness";
|
|
651
|
-
readonly 'drawing.hue': "Hue";
|
|
652
|
-
readonly 'drawing.hexColor': "Hex color";
|
|
653
|
-
readonly 'drawing.add': "Add";
|
|
654
|
-
readonly 'drawing.glyphPicker': "Glyph picker";
|
|
655
|
-
readonly 'drawing.kindEmojis': "Emojis";
|
|
656
|
-
readonly 'drawing.kindStickers': "Stickers";
|
|
657
|
-
readonly 'drawing.kindIcons': "Icons";
|
|
658
|
-
readonly 'drawing.recentlyUsed': "Recently used";
|
|
659
|
-
readonly 'drawing.recentGlyph': "Recent {glyph}";
|
|
660
|
-
readonly 'drawing.stickersSoon': "No sticker set is installed.";
|
|
661
|
-
readonly 'drawing.glyphCatSmileys': "Smileys & People";
|
|
662
|
-
readonly 'drawing.glyphCatNature': "Animals & Nature";
|
|
663
|
-
readonly 'drawing.glyphCatFood': "Food & Drink";
|
|
664
|
-
readonly 'drawing.glyphCatActivity': "Activity";
|
|
665
|
-
readonly 'drawing.glyphCatTravel': "Travel & Places";
|
|
666
|
-
readonly 'drawing.glyphCatObjects': "Objects";
|
|
667
|
-
readonly 'drawing.glyphCatSymbols': "Symbols";
|
|
668
|
-
readonly 'drawing.glyphCatFlags': "Flags";
|
|
669
|
-
readonly 'drawing.glyphCatIconArrows': "Arrows";
|
|
670
|
-
readonly 'drawing.glyphCatIconCurrency': "Currency";
|
|
671
|
-
readonly 'drawing.glyphCatIconGestures': "Gestures and smileys";
|
|
672
|
-
readonly 'drawing.glyphCatIconNature': "Nature";
|
|
673
|
-
readonly 'drawing.glyphCatIconSpecial': "Special";
|
|
674
|
-
readonly 'drawing.glyphCatIconSymbols': "Symbols and flags";
|
|
675
|
-
readonly 'drawing.imageReading': "Reading...";
|
|
676
|
-
readonly 'drawing.chooseImage': "Choose image";
|
|
677
|
-
readonly 'drawing.imageFormats': "JPG or PNG";
|
|
678
|
-
readonly 'drawing.imageMaxSize': "Max size 2MB";
|
|
679
|
-
readonly 'drawing.imageDimensions': "{width} x {height}";
|
|
680
|
-
readonly 'drawing.imageErrorType': "That file is not a JPG or PNG. Pick one of those two formats.";
|
|
681
|
-
readonly 'drawing.imageErrorSize': "That image is {size}. The limit is 2MB.";
|
|
682
|
-
readonly 'drawing.imageErrorRead': "That file could not be read. Try picking it again.";
|
|
683
|
-
readonly 'drawing.imageErrorDecode': "That image could not be opened. It may be damaged.";
|
|
684
|
-
readonly 'search.title': "Symbol search";
|
|
685
|
-
readonly 'search.compareTitle': "Compare symbols";
|
|
686
|
-
readonly 'search.changeSymbolTitle': "Change symbol";
|
|
687
|
-
readonly 'search.placeholder': "Search symbol";
|
|
688
|
-
readonly 'search.clear': "Clear";
|
|
689
|
-
readonly 'search.close': "Close";
|
|
690
|
-
readonly 'search.noMatches': "No symbols match your criteria";
|
|
691
|
-
readonly 'search.loadingMore': "Loading more";
|
|
692
|
-
readonly 'search.failed': "Search failed.";
|
|
693
|
-
readonly 'search.results': "Symbols";
|
|
694
|
-
readonly 'search.samePercent': "Same % scale";
|
|
695
|
-
readonly 'search.newScale': "New price scale";
|
|
696
|
-
readonly 'search.newPane': "New pane";
|
|
697
|
-
readonly 'search.added': "Added symbols";
|
|
698
|
-
readonly 'search.recent': "Recent symbols";
|
|
699
|
-
readonly 'search.addedMark': "{symbol} is on the chart. Click to remove.";
|
|
700
|
-
readonly 'search.compareEmpty': "No symbols here yet. Why not add some?";
|
|
701
|
-
readonly 'search.allClasses': "All";
|
|
702
|
-
readonly 'search.classFilter': "Asset class";
|
|
703
|
-
readonly 'search.opDivision': "Division";
|
|
704
|
-
readonly 'search.opSubtraction': "Subtraction";
|
|
705
|
-
readonly 'search.opAddition': "Addition";
|
|
706
|
-
readonly 'search.opMultiplication': "Multiplication";
|
|
707
|
-
readonly 'search.opExponentiation': "Exponentiation";
|
|
708
|
-
readonly 'search.opReciprocal': "Reciprocal";
|
|
709
|
-
readonly 'search.opsHide': "Hide spread operators";
|
|
710
|
-
readonly 'search.opsShow': "Show spread operators";
|
|
711
|
-
readonly 'search.ops': "Spread operators";
|
|
712
|
-
readonly 'status.title': "Market status";
|
|
713
|
-
readonly 'status.unknownTitle': "Session unknown";
|
|
714
|
-
readonly 'status.unknown': "This symbol's trading session has not resolved yet.";
|
|
715
|
-
readonly 'status.endOfDayTitle': "End of day";
|
|
716
|
-
readonly 'status.endOfDay': "Prices update once a day, after the session closes.";
|
|
717
|
-
readonly 'status.delayed': "Prices are delayed.";
|
|
718
|
-
readonly 'status.delayedPair': "{status} {delay}";
|
|
719
|
-
readonly 'status.continuousTitle': "Open 24/7";
|
|
720
|
-
readonly 'status.continuous': "This market trades around the clock and never closes.";
|
|
721
|
-
readonly 'status.open': "Market is open for regular trading.";
|
|
722
|
-
readonly 'status.openCloses': "Market is open for regular trading. Closes in {until}.";
|
|
723
|
-
readonly 'status.extended': "Market is open for extended-hours trading.";
|
|
724
|
-
readonly 'status.extendedRegular': "Market is open for extended-hours trading. Regular hours start in {until}.";
|
|
725
|
-
readonly 'status.extendedCloses': "Market is open for extended-hours trading. Closes in {until}.";
|
|
726
|
-
readonly 'status.pre': "Market is open for pre-market trading.";
|
|
727
|
-
readonly 'status.preRegular': "Market is open for pre-market trading. Regular hours start in {until}.";
|
|
728
|
-
readonly 'status.after': "Market is open for after-hours trading.";
|
|
729
|
-
readonly 'status.afterEnds': "Market is open for after-hours trading. Ends in {until}.";
|
|
730
|
-
readonly 'status.closed': "Market is closed.";
|
|
731
|
-
readonly 'status.closedPre': "Market is closed. Pre-market starts in {until}.";
|
|
732
|
-
readonly 'status.closedOpens': "Market is closed. Opens in {until}.";
|
|
733
|
-
readonly 'status.exchangeTimezone': "Exchange timezone: {zone}";
|
|
734
|
-
readonly 'status.durationDays': {
|
|
735
|
-
readonly one: "{count} day";
|
|
736
|
-
readonly other: "{count} days";
|
|
737
|
-
};
|
|
738
|
-
readonly 'status.durationHours': {
|
|
739
|
-
readonly one: "{count} hour";
|
|
740
|
-
readonly other: "{count} hours";
|
|
741
|
-
};
|
|
742
|
-
readonly 'status.durationMinutes': {
|
|
743
|
-
readonly one: "{count} minute";
|
|
744
|
-
readonly other: "{count} minutes";
|
|
745
|
-
};
|
|
746
|
-
readonly 'status.durationPair': "{major} {minor}";
|
|
747
|
-
readonly 'range.oneDay': "1 Day";
|
|
748
|
-
readonly 'range.fiveDays': "5 Days";
|
|
749
|
-
readonly 'range.oneMonth': "1 Month";
|
|
750
|
-
readonly 'range.threeMonths': "3 Months";
|
|
751
|
-
readonly 'range.sixMonths': "6 Months";
|
|
752
|
-
readonly 'range.yearToDate': "Year to date";
|
|
753
|
-
readonly 'range.oneYear': "1 Year";
|
|
754
|
-
readonly 'range.fiveYears': "5 Years";
|
|
755
|
-
readonly 'range.all': "All data";
|
|
756
|
-
readonly 'range.tip': "{range} · {timeframe} bars";
|
|
757
|
-
readonly 'range.zoomIn': "Zoom in";
|
|
758
|
-
readonly 'range.zoomOut': "Zoom out";
|
|
759
|
-
readonly 'range.scrollLeft': "Scroll left";
|
|
760
|
-
readonly 'range.scrollRight': "Scroll right";
|
|
761
|
-
readonly 'range.reset': "Reset chart view";
|
|
762
|
-
readonly 'range.maximizeChart': "Maximize chart";
|
|
763
|
-
readonly 'range.restoreChart': "Restore chart";
|
|
764
|
-
readonly 'timezone.title': "Chart timezone";
|
|
765
|
-
readonly 'timezone.exchange': "Exchange";
|
|
766
|
-
readonly 'timeframe.title': "Timeframe";
|
|
767
|
-
readonly 'timeframe.all': "All timeframes";
|
|
768
|
-
readonly 'timeframe.unitTicks': "Ticks";
|
|
769
|
-
readonly 'timeframe.unitSeconds': "Seconds";
|
|
770
|
-
readonly 'timeframe.unitMinutes': "Minutes";
|
|
771
|
-
readonly 'timeframe.unitHours': "Hours";
|
|
772
|
-
readonly 'timeframe.unitDays': "Days";
|
|
773
|
-
readonly 'timeframe.unitWeeks': "Weeks";
|
|
774
|
-
readonly 'timeframe.unitMonths': "Months";
|
|
775
|
-
readonly 'timeframe.countTicks': {
|
|
776
|
-
readonly one: "{count} Tick";
|
|
777
|
-
readonly other: "{count} Ticks";
|
|
778
|
-
};
|
|
779
|
-
readonly 'timeframe.countSeconds': {
|
|
780
|
-
readonly one: "{count} Second";
|
|
781
|
-
readonly other: "{count} Seconds";
|
|
782
|
-
};
|
|
783
|
-
readonly 'timeframe.countMinutes': {
|
|
784
|
-
readonly one: "{count} Minute";
|
|
785
|
-
readonly other: "{count} Minutes";
|
|
786
|
-
};
|
|
787
|
-
readonly 'timeframe.countHours': {
|
|
788
|
-
readonly one: "{count} Hour";
|
|
789
|
-
readonly other: "{count} Hours";
|
|
790
|
-
};
|
|
791
|
-
readonly 'timeframe.countDays': {
|
|
792
|
-
readonly one: "{count} Day";
|
|
793
|
-
readonly other: "{count} Days";
|
|
794
|
-
};
|
|
795
|
-
readonly 'timeframe.countWeeks': {
|
|
796
|
-
readonly one: "{count} Week";
|
|
797
|
-
readonly other: "{count} Weeks";
|
|
798
|
-
};
|
|
799
|
-
readonly 'timeframe.countMonths': {
|
|
800
|
-
readonly one: "{count} Month";
|
|
801
|
-
readonly other: "{count} Months";
|
|
802
|
-
};
|
|
803
|
-
readonly 'timeframe.delete': "Delete {timeframe}";
|
|
804
|
-
readonly 'timeframe.save': "Save {timeframe}";
|
|
805
|
-
readonly 'timeframe.exists': "{timeframe} already exists";
|
|
806
|
-
readonly 'timeframe.custom': "Custom timeframe";
|
|
807
|
-
readonly 'timeframe.customCount': "Custom timeframe count";
|
|
808
|
-
readonly 'timeframe.customUnit': "Custom timeframe unit";
|
|
809
|
-
readonly 'timeframe.addCustom': "Add custom timeframe";
|
|
810
|
-
readonly 'timeframe.increment': "Increment";
|
|
811
|
-
readonly 'timeframe.decrement': "Decrement";
|
|
812
|
-
readonly 'indicator.smaName': "Simple Moving Average";
|
|
813
|
-
readonly 'indicator.smaDescription': "Smoothed average over a fixed window";
|
|
814
|
-
readonly 'indicator.emaName': "Exponential Moving Average";
|
|
815
|
-
readonly 'indicator.emaDescription': "Recency-weighted moving average";
|
|
816
|
-
readonly 'indicator.hmaName': "Hull Moving Average";
|
|
817
|
-
readonly 'indicator.hmaDescription': "Low-lag weighted moving average";
|
|
818
|
-
readonly 'indicator.vwmaName': "Volume Weighted MA";
|
|
819
|
-
readonly 'indicator.vwmaDescription': "Moving average weighted by volume";
|
|
820
|
-
readonly 'indicator.bollingerName': "Bollinger Bands";
|
|
821
|
-
readonly 'indicator.bollingerDescription': "SMA envelope at two standard deviations";
|
|
822
|
-
readonly 'indicator.donchianName': "Donchian Channels";
|
|
823
|
-
readonly 'indicator.donchianDescription': "Rolling highest-high and lowest-low channel";
|
|
824
|
-
readonly 'indicator.keltnerName': "Keltner Channels";
|
|
825
|
-
readonly 'indicator.keltnerDescription': "EMA midline with ATR-scaled bands";
|
|
826
|
-
readonly 'indicator.supertrendName': "Supertrend";
|
|
827
|
-
readonly 'indicator.supertrendDescription': "ATR trend band that flips with direction";
|
|
828
|
-
readonly 'indicator.psarName': "Parabolic SAR";
|
|
829
|
-
readonly 'indicator.psarDescription': "Stop-and-reverse trailing dots";
|
|
830
|
-
readonly 'indicator.rsiName': "Relative Strength Index";
|
|
831
|
-
readonly 'indicator.rsiDescription': "Momentum oscillator from 0 to 100";
|
|
832
|
-
readonly 'indicator.macdName': "MACD";
|
|
833
|
-
readonly 'indicator.macdDescription': "Moving Average Convergence Divergence";
|
|
834
|
-
readonly 'indicator.stochasticName': "Stochastic Oscillator";
|
|
835
|
-
readonly 'indicator.stochasticDescription': "%K and %D momentum from 0 to 100";
|
|
836
|
-
readonly 'indicator.stochrsiName': "Stochastic RSI";
|
|
837
|
-
readonly 'indicator.stochrsiDescription': "Stochastic applied to the RSI series";
|
|
838
|
-
readonly 'indicator.adxName': "Average Directional Index";
|
|
839
|
-
readonly 'indicator.adxDescription': "Trend strength with +DI and -DI";
|
|
840
|
-
readonly 'indicator.atrName': "Average True Range";
|
|
841
|
-
readonly 'indicator.atrDescription': "Volatility: Wilder's true-range average";
|
|
842
|
-
readonly 'indicator.cciName': "Commodity Channel Index";
|
|
843
|
-
readonly 'indicator.cciDescription': "Deviation from the typical-price average";
|
|
844
|
-
readonly 'indicator.williamsName': "Williams %R";
|
|
845
|
-
readonly 'indicator.williamsDescription': "Overbought and oversold momentum from -100 to 0";
|
|
846
|
-
readonly 'indicator.rocName': "Rate of Change";
|
|
847
|
-
readonly 'indicator.rocDescription': "Percent change over the period";
|
|
848
|
-
readonly 'indicator.momentumName': "Momentum";
|
|
849
|
-
readonly 'indicator.momentumDescription': "Price difference over the period";
|
|
850
|
-
readonly 'indicator.volumeName': "Volume";
|
|
851
|
-
readonly 'indicator.volumeDescription': "Per-bar traded volume histogram";
|
|
852
|
-
readonly 'indicator.vwapName': "Volume Weighted Avg Price";
|
|
853
|
-
readonly 'indicator.vwapDescription': "Cumulative volume-weighted average price";
|
|
854
|
-
readonly 'indicator.obvName': "On-Balance Volume";
|
|
855
|
-
readonly 'indicator.obvDescription': "Cumulative volume by close direction";
|
|
856
|
-
readonly 'indicator.mfiName': "Money Flow Index";
|
|
857
|
-
readonly 'indicator.mfiDescription': "Volume-weighted RSI from 0 to 100";
|
|
858
|
-
readonly 'host.noVolume': "No volume from this feed";
|
|
859
|
-
readonly 'host.saveConflict': "Saved elsewhere since you opened it. Load the newer version before saving.";
|
|
860
|
-
readonly 'host.saveNotFound': "This was deleted elsewhere. Save it again as new.";
|
|
861
|
-
readonly 'host.loadInvalid': "This could not be opened. Nothing on screen changed.";
|
|
862
|
-
readonly 'host.loadUnavailable': "Your saved work could not be reached. Nothing on screen changed.";
|
|
863
|
-
readonly 'host.loadNotRestored': "This could not be opened, and what was on screen could not be put back. The chart is not saving until you open a saved chart or layout. Save a copy first to keep what is on screen.";
|
|
864
|
-
readonly 'host.notSaving': "The chart is not saving. Open a saved chart or layout to start from a known state. Saving a copy keeps what is on screen, but the chart still will not save.";
|
|
865
|
-
readonly 'layout.s': "Single chart";
|
|
866
|
-
readonly 'layout.2h': "2 columns";
|
|
867
|
-
readonly 'layout.2v': "2 rows";
|
|
868
|
-
readonly 'layout.3h': "3 columns";
|
|
869
|
-
readonly 'layout.3v': "3 rows";
|
|
870
|
-
readonly 'layout.3s': "Large left, 2 stacked right";
|
|
871
|
-
readonly 'layout.3r': "2 stacked left, large right";
|
|
872
|
-
readonly 'layout.2_1': "2 above, 1 below";
|
|
873
|
-
readonly 'layout.1_2': "1 above, 2 below";
|
|
874
|
-
readonly 'layout.4': "2 × 2 grid";
|
|
875
|
-
readonly 'layout.4v': "4 rows";
|
|
876
|
-
readonly 'layout.4h': "4 columns";
|
|
877
|
-
readonly 'layout.4s': "Large left, 3 stacked right";
|
|
878
|
-
readonly 'layout.4s_l': "3 stacked left, large right";
|
|
879
|
-
readonly 'layout.1_3': "1 above, 3 below";
|
|
880
|
-
readonly 'layout.3_1': "3 above, 1 below";
|
|
881
|
-
readonly 'layout.2_2_l': "2 columns, 2 stacked right";
|
|
882
|
-
readonly 'layout.2_2_r': "2 stacked left, 2 columns";
|
|
883
|
-
readonly 'layout.2_2': "2 above, 2 full-width rows below";
|
|
884
|
-
readonly 'layout.1_4': "1 above, 4 below";
|
|
885
|
-
readonly 'layout.5h': "5 columns";
|
|
886
|
-
readonly 'layout.5v': "5 rows";
|
|
887
|
-
readonly 'layout.5s': "Large left, 4 stacked right";
|
|
888
|
-
readonly 'layout.5s_l': "4 stacked left, large right";
|
|
889
|
-
readonly 'layout.2_3': "2 above, 3 below";
|
|
890
|
-
readonly 'layout.3_2': "3 above, 2 below";
|
|
891
|
-
readonly 'layout.4_1': "4 above, 1 below";
|
|
892
|
-
readonly 'layout.2_3_l': "2 columns, 3 stacked right";
|
|
893
|
-
readonly 'layout.2_3_r': "3 stacked left, 2 columns";
|
|
894
|
-
readonly 'layout.6': "3 × 2 grid";
|
|
895
|
-
readonly 'layout.6h': "6 columns";
|
|
896
|
-
readonly 'layout.6v': "6 rows";
|
|
897
|
-
readonly 'layout.6c': "2 × 3 grid";
|
|
898
|
-
readonly 'layout.2_4': "2 above, 4 below";
|
|
899
|
-
readonly 'layout.4_2': "4 above, 2 below";
|
|
900
|
-
readonly 'layout.4_3': "4 above, 3 below";
|
|
901
|
-
readonly 'layout.7h': "7 columns";
|
|
902
|
-
readonly 'layout.7s': "Large left, 6 stacked right";
|
|
903
|
-
readonly 'layout.8': "4 × 2 grid";
|
|
904
|
-
readonly 'layout.8c': "2 × 4 grid";
|
|
905
|
-
readonly 'layout.8h': "8 columns";
|
|
906
|
-
readonly 'layout.8v': "8 rows";
|
|
907
|
-
readonly 'layout.9s': "3 × 3 grid";
|
|
908
|
-
readonly 'layout.5_4': "5 above, 4 below";
|
|
909
|
-
readonly 'layout.9h': "9 columns";
|
|
910
|
-
readonly 'layout.9v': "9 rows";
|
|
911
|
-
readonly 'layout.10c5': "5 × 2 grid";
|
|
912
|
-
readonly 'layout.10h': "10 columns";
|
|
913
|
-
readonly 'layout.10v': "10 rows";
|
|
914
|
-
readonly 'layout.12c6': "6 × 2 grid";
|
|
915
|
-
readonly 'layout.12c4': "4 × 3 grid";
|
|
916
|
-
readonly 'layout.12h': "12 columns";
|
|
917
|
-
readonly 'layout.14c7': "7 × 2 grid";
|
|
918
|
-
readonly 'layout.16c8': "8 × 2 grid";
|
|
919
|
-
readonly 'layout.16c4': "4 × 4 grid";
|
|
920
|
-
readonly 'layouts.setup': "Layout setup";
|
|
921
|
-
readonly 'layouts.arrangement': "Chart arrangement";
|
|
922
|
-
readonly 'layouts.syncInLayout': "Sync in layout";
|
|
923
|
-
readonly 'layouts.syncSymbol': "Symbol";
|
|
924
|
-
readonly 'layouts.syncTimeframe': "Timeframe";
|
|
925
|
-
readonly 'layouts.syncCrosshair': "Crosshair";
|
|
926
|
-
readonly 'layouts.syncTime': "Time";
|
|
927
|
-
readonly 'layouts.syncDateRange': "Date range";
|
|
928
|
-
readonly 'layouts.syncSymbolTip': "Symbol changes on all charts within the layout";
|
|
929
|
-
readonly 'layouts.syncTimeframeTip': "Timeframe changes on all charts within the layout";
|
|
930
|
-
readonly 'layouts.syncCrosshairTip': "Crosshair is synced across all charts within the layout";
|
|
931
|
-
readonly 'layouts.syncTimeTip': "When a chart is clicked, all charts within the layout display the same point of time";
|
|
932
|
-
readonly 'layouts.syncDateRangeTip': "Date range changes on all charts within the layout";
|
|
933
|
-
readonly 'layouts.syncSymbolToggle': "Sync symbol";
|
|
934
|
-
readonly 'layouts.syncTimeframeToggle': "Sync timeframe";
|
|
935
|
-
readonly 'layouts.syncCrosshairToggle': "Sync crosshair";
|
|
936
|
-
readonly 'layouts.syncTimeToggle': "Sync time";
|
|
937
|
-
readonly 'layouts.syncDateRangeToggle': "Sync date range";
|
|
938
|
-
readonly 'layouts.unnamed': "Unnamed";
|
|
939
|
-
readonly 'layouts.unsavedChanges': "Unsaved changes";
|
|
940
|
-
readonly 'layouts.allSaved': "All changes saved";
|
|
941
|
-
readonly 'layouts.notSaving': "Not saving until this is restored";
|
|
942
|
-
readonly 'layouts.manage': "Manage layouts";
|
|
943
|
-
readonly 'layouts.saveLayout': "Save layout";
|
|
944
|
-
readonly 'layouts.hintSave': "{modifier} + S";
|
|
945
|
-
readonly 'layouts.hintOpen': "Dot";
|
|
946
|
-
readonly 'layouts.save': "Save";
|
|
947
|
-
readonly 'layouts.autosave': "Autosave";
|
|
948
|
-
readonly 'layouts.rename': "Rename";
|
|
949
|
-
readonly 'layouts.copyOfName': "{name} copy";
|
|
950
|
-
readonly 'layouts.saveNewTitle': "Save New Chart Layout";
|
|
951
|
-
readonly 'layouts.saveNewLabel': "Enter a new chart layout name:";
|
|
952
|
-
readonly 'layouts.copyTitle': "Make copy of chart layout";
|
|
953
|
-
readonly 'layouts.renameTitle': "Rename chart layout";
|
|
954
|
-
readonly 'layouts.createTitle': "Create layout";
|
|
955
|
-
readonly 'layouts.newLayoutName': "New layout name";
|
|
956
|
-
readonly 'layouts.createPlaceholder': "My layout";
|
|
957
|
-
readonly 'layouts.create': "Create";
|
|
958
|
-
readonly 'layouts.makeCopyRow': "Make a copy…";
|
|
959
|
-
readonly 'layouts.renameRow': "Rename…";
|
|
960
|
-
readonly 'layouts.downloadDataRow': "Download chart data";
|
|
961
|
-
readonly 'layouts.createNewRow': "Create new layout…";
|
|
962
|
-
readonly 'layouts.recentlyUsed': "Recently used";
|
|
963
|
-
readonly 'layouts.loading': "Loading";
|
|
964
|
-
readonly 'layouts.emptyNone': "No saved layouts yet.";
|
|
965
|
-
readonly 'layouts.openLayoutRow': "Open layout…";
|
|
966
|
-
readonly 'layouts.listingFacts': "{symbol}, {timeframe}";
|
|
967
|
-
readonly 'layouts.listingDated': "{facts} ({date})";
|
|
968
|
-
readonly 'layouts.dialogTitle': "Layouts";
|
|
969
|
-
readonly 'layouts.search': "Search";
|
|
970
|
-
readonly 'layouts.columnName': "Layout name";
|
|
971
|
-
readonly 'layouts.sortBy': "Sort by layout name, date changed";
|
|
972
|
-
readonly 'layouts.sortNameAsc': "Layout name (A to Z)";
|
|
973
|
-
readonly 'layouts.sortNameDesc': "Layout name (Z to A)";
|
|
974
|
-
readonly 'layouts.sortModifiedAsc': "Date modified (oldest first)";
|
|
975
|
-
readonly 'layouts.sortModifiedDesc': "Date modified (newest first)";
|
|
976
|
-
readonly 'layouts.favorite': "Add to favorites";
|
|
977
|
-
readonly 'layouts.unfavorite': "Remove from favorites";
|
|
978
|
-
readonly 'layouts.noMatches': "Nothing matches.";
|
|
979
|
-
readonly 'layouts.delete': "Delete";
|
|
980
|
-
readonly 'layouts.deleteNamed': "Delete {name}";
|
|
981
|
-
readonly 'layouts.deleteConfirm': "Delete this chart layout?";
|
|
982
|
-
readonly 'layouts.deleteConfirmBody': "Doing this will permanently delete your \"{name}\" layout.";
|
|
983
|
-
readonly 'layouts.cancel': "Cancel";
|
|
984
|
-
readonly 'layouts.close': "Close";
|
|
985
|
-
readonly 'layouts.errList': "Could not load your saved layouts.";
|
|
986
|
-
readonly 'session.pre': "Pre-market";
|
|
987
|
-
readonly 'session.open': "Market open";
|
|
988
|
-
readonly 'session.extended': "Extended hours";
|
|
989
|
-
readonly 'session.after': "After-hours";
|
|
990
|
-
readonly 'session.closed': "Market closed";
|
|
991
|
-
readonly 'inputs.cancel': "Cancel";
|
|
992
|
-
readonly 'inputs.apply': "Apply";
|
|
993
|
-
readonly 'replay.watermark': "Replay";
|
|
994
|
-
readonly 'replay.selectBar': "Select bar";
|
|
995
|
-
readonly 'replay.selectDate': "Select date";
|
|
996
|
-
readonly 'replay.selectStartingPoint': "Select starting point";
|
|
997
|
-
readonly 'replay.startBar': "Bar";
|
|
998
|
-
readonly 'replay.startDate': "Date…";
|
|
999
|
-
readonly 'replay.startFirst': "First available date";
|
|
1000
|
-
readonly 'replay.startRandom': "Random bar";
|
|
1001
|
-
readonly 'replay.startDateField': "Replay start date";
|
|
1002
|
-
readonly 'replay.startTimeField': "Replay start time (UTC, optional)";
|
|
1003
|
-
readonly 'replay.dateMask': "YYYY-MM-DD";
|
|
1004
|
-
readonly 'replay.timeMask': "HH:MM";
|
|
1005
|
-
readonly 'replay.previousMonth': "Previous month";
|
|
1006
|
-
readonly 'replay.nextMonth': "Next month";
|
|
1007
|
-
readonly 'replay.cancel': "Cancel";
|
|
1008
|
-
readonly 'replay.select': "Select";
|
|
1009
|
-
readonly 'replay.weekdayMon': "Mo";
|
|
1010
|
-
readonly 'replay.weekdayTue': "Tu";
|
|
1011
|
-
readonly 'replay.weekdayWed': "We";
|
|
1012
|
-
readonly 'replay.weekdayThu': "Th";
|
|
1013
|
-
readonly 'replay.weekdayFri': "Fr";
|
|
1014
|
-
readonly 'replay.weekdaySat': "Sa";
|
|
1015
|
-
readonly 'replay.weekdaySun': "Su";
|
|
1016
|
-
readonly 'replay.stepBack': "Step back one bar";
|
|
1017
|
-
readonly 'replay.play': "Play";
|
|
1018
|
-
readonly 'replay.pause': "Pause";
|
|
1019
|
-
readonly 'replay.stepForward': "Step forward one bar";
|
|
1020
|
-
readonly 'replay.goLiveTitle': "Jump to the live edge";
|
|
1021
|
-
readonly 'replay.exit': "Exit replay";
|
|
1022
|
-
readonly 'replay.speed': "Replay speed";
|
|
1023
|
-
readonly 'replay.updatesPerSecond': {
|
|
1024
|
-
readonly one: "{count} update per second";
|
|
1025
|
-
readonly other: "{count} updates per second";
|
|
1026
|
-
};
|
|
1027
|
-
readonly 'replay.oneUpdatePerSeconds': {
|
|
1028
|
-
readonly one: "1 update per {count} second";
|
|
1029
|
-
readonly other: "1 update per {count} seconds";
|
|
1030
|
-
};
|
|
1031
|
-
readonly 'replay.timeframe': "Update timeframe";
|
|
1032
|
-
readonly 'replay.timeframeHelp': "How much time each replay update advances. Finer than the chart timeframe, each bar forms from real finer bars.";
|
|
1033
|
-
readonly 'replay.timeframeNone': "No finer timeframe for this chart timeframe";
|
|
1034
|
-
readonly 'replay.auto': "Auto";
|
|
1035
|
-
readonly 'replay.autoSelectTimeframe': "Auto select timeframe";
|
|
1036
|
-
readonly 'menu.resetView': "Reset chart view";
|
|
1037
|
-
readonly 'menu.copyPrice': "Copy price {price}";
|
|
1038
|
-
readonly 'menu.paste': "Paste";
|
|
1039
|
-
readonly 'menu.removeIndicators': {
|
|
1040
|
-
readonly one: "Remove {count} indicator";
|
|
1041
|
-
readonly other: "Remove {count} indicators";
|
|
1042
|
-
};
|
|
1043
|
-
readonly 'menu.removeDrawings': {
|
|
1044
|
-
readonly one: "Remove {count} drawing";
|
|
1045
|
-
readonly other: "Remove {count} drawings";
|
|
1046
|
-
};
|
|
1047
|
-
readonly 'menu.settings': "Settings…";
|
|
1048
|
-
readonly 'tool.trend_line': "Trend line";
|
|
1049
|
-
readonly 'tool.ray': "Ray";
|
|
1050
|
-
readonly 'tool.info_line': "Info line";
|
|
1051
|
-
readonly 'tool.extended': "Extended line";
|
|
1052
|
-
readonly 'tool.trend_angle': "Trend angle";
|
|
1053
|
-
readonly 'tool.horizontal_line': "Horizontal line";
|
|
1054
|
-
readonly 'tool.horizontal_ray': "Horizontal ray";
|
|
1055
|
-
readonly 'tool.vertical_line': "Vertical line";
|
|
1056
|
-
readonly 'tool.cross_line': "Cross line";
|
|
1057
|
-
readonly 'tool.arrow': "Arrow";
|
|
1058
|
-
readonly 'tool.rectangle': "Rectangle";
|
|
1059
|
-
readonly 'tool.rotated_rectangle': "Rotated rectangle";
|
|
1060
|
-
readonly 'tool.ellipse': "Ellipse";
|
|
1061
|
-
readonly 'tool.circle': "Circle";
|
|
1062
|
-
readonly 'tool.triangle': "Triangle";
|
|
1063
|
-
readonly 'tool.arc': "Arc";
|
|
1064
|
-
readonly 'tool.curve': "Curve";
|
|
1065
|
-
readonly 'tool.double_curve': "Double curve";
|
|
1066
|
-
readonly 'tool.regression_trend': "Regression trend";
|
|
1067
|
-
readonly 'tool.parallel_channel': "Parallel channel";
|
|
1068
|
-
readonly 'tool.flat_top_bottom': "Flat top/bottom";
|
|
1069
|
-
readonly 'tool.disjoint_channel': "Disjoint channel";
|
|
1070
|
-
readonly 'tool.fib_retracement': "Fib retracement";
|
|
1071
|
-
readonly 'tool.fib_trend_ext': "Trend-based fib extension";
|
|
1072
|
-
readonly 'tool.fib_channel': "Fib channel";
|
|
1073
|
-
readonly 'tool.fib_timezone': "Fib time zone";
|
|
1074
|
-
readonly 'tool.fib_speed_resist_fan': "Fib speed resistance fan";
|
|
1075
|
-
readonly 'tool.fib_trend_time': "Trend-based fib time";
|
|
1076
|
-
readonly 'tool.fib_circles': "Fib circles";
|
|
1077
|
-
readonly 'tool.fib_spiral': "Fib spiral";
|
|
1078
|
-
readonly 'tool.fib_speed_resist_arcs': "Fib speed resistance arcs";
|
|
1079
|
-
readonly 'tool.fib_wedge': "Fib wedge";
|
|
1080
|
-
readonly 'tool.pitchfan': "Pitchfan";
|
|
1081
|
-
readonly 'tool.pitchfork': "Pitchfork";
|
|
1082
|
-
readonly 'tool.schiff_pitchfork': "Schiff pitchfork";
|
|
1083
|
-
readonly 'tool.schiff_pitchfork_modified': "Modified Schiff pitchfork";
|
|
1084
|
-
readonly 'tool.inside_pitchfork': "Inside pitchfork";
|
|
1085
|
-
readonly 'tool.gannbox': "Gann box";
|
|
1086
|
-
readonly 'tool.gannbox_square': "Gann square";
|
|
1087
|
-
readonly 'tool.gannbox_fixed': "Gann square fixed";
|
|
1088
|
-
readonly 'tool.gannbox_fan': "Gann fan";
|
|
1089
|
-
readonly 'tool.xabcd_pattern': "XABCD pattern";
|
|
1090
|
-
readonly 'tool.cypher_pattern': "Cypher pattern";
|
|
1091
|
-
readonly 'tool.abcd_pattern': "ABCD pattern";
|
|
1092
|
-
readonly 'tool.three_drives': "Three drives pattern";
|
|
1093
|
-
readonly 'tool.triangle_pattern': "Triangle pattern";
|
|
1094
|
-
readonly 'tool.head_and_shoulders': "Head and shoulders";
|
|
1095
|
-
readonly 'tool.elliott_impulse_wave': "Elliott impulse (12345)";
|
|
1096
|
-
readonly 'tool.elliott_correction': "Elliott correction (ABC)";
|
|
1097
|
-
readonly 'tool.elliott_triangle_wave': "Elliott triangle (ABCDE)";
|
|
1098
|
-
readonly 'tool.elliott_double_combo': "Elliott double combo (WXY)";
|
|
1099
|
-
readonly 'tool.elliott_triple_combo': "Elliott triple combo (WXYXZ)";
|
|
1100
|
-
readonly 'tool.cyclic_lines': "Cyclic lines";
|
|
1101
|
-
readonly 'tool.time_cycles': "Time cycles";
|
|
1102
|
-
readonly 'tool.sine_line': "Sine line";
|
|
1103
|
-
readonly 'tool.long_position': "Long position";
|
|
1104
|
-
readonly 'tool.short_position': "Short position";
|
|
1105
|
-
readonly 'tool.forecast': "Position forecast";
|
|
1106
|
-
readonly 'tool.sector': "Sector";
|
|
1107
|
-
readonly 'tool.bars_pattern': "Bars pattern";
|
|
1108
|
-
readonly 'tool.ghost_feed': "Ghost feed";
|
|
1109
|
-
readonly 'tool.anchored_vwap': "Anchored VWAP";
|
|
1110
|
-
readonly 'tool.fixed_range_volume_profile': "Fixed range volume profile";
|
|
1111
|
-
readonly 'tool.anchored_volume_profile': "Anchored volume profile";
|
|
1112
|
-
readonly 'tool.image': "Image";
|
|
1113
|
-
readonly 'tool.content_card': "Content card";
|
|
1114
|
-
readonly 'tool.emoji': "Emoji";
|
|
1115
|
-
readonly 'tool.sticker': "Sticker";
|
|
1116
|
-
readonly 'tool.icon': "Icon";
|
|
1117
|
-
readonly 'tool.text': "Text";
|
|
1118
|
-
readonly 'tool.note': "Note";
|
|
1119
|
-
readonly 'tool.comment': "Comment";
|
|
1120
|
-
readonly 'tool.callout': "Callout";
|
|
1121
|
-
readonly 'tool.price_label': "Price label";
|
|
1122
|
-
readonly 'tool.arrow_up': "Arrow mark up";
|
|
1123
|
-
readonly 'tool.arrow_down': "Arrow mark down";
|
|
1124
|
-
readonly 'tool.arrow_marker': "Arrow marker";
|
|
1125
|
-
readonly 'tool.flag': "Flag mark";
|
|
1126
|
-
readonly 'tool.price_note': "Price note";
|
|
1127
|
-
readonly 'tool.pin': "Pin";
|
|
1128
|
-
readonly 'tool.signpost': "Signpost";
|
|
1129
|
-
readonly 'tool.table': "Table";
|
|
1130
|
-
readonly 'tool.brush': "Brush";
|
|
1131
|
-
readonly 'tool.highlighter': "Highlighter";
|
|
1132
|
-
readonly 'tool.path': "Path";
|
|
1133
|
-
readonly 'tool.polyline': "Polyline";
|
|
1134
|
-
readonly 'tool.price_range': "Price range";
|
|
1135
|
-
readonly 'tool.date_range': "Date range";
|
|
1136
|
-
readonly 'tool.date_and_price_range': "Date and price range";
|
|
1137
|
-
readonly 'tool.measure': "Measure";
|
|
1138
|
-
readonly 'legend.open': "O";
|
|
1139
|
-
readonly 'legend.high': "H";
|
|
1140
|
-
readonly 'legend.low': "L";
|
|
1141
|
-
readonly 'legend.close': "C";
|
|
1142
|
-
readonly 'legend.change': "{change} ({percent}%)";
|
|
1143
|
-
readonly 'legend.indicatorSettings': "Indicator settings";
|
|
1144
|
-
readonly 'legend.showRows': "Show indicator rows";
|
|
1145
|
-
readonly 'legend.hideRows': "Hide indicator rows";
|
|
1146
|
-
readonly 'legend.restorePane': "Restore pane";
|
|
1147
|
-
readonly 'legend.collapsePane': "Collapse pane";
|
|
1148
|
-
readonly 'legend.maximizePane': "Maximize pane";
|
|
1149
|
-
readonly 'legend.showIndicator': "Show indicator";
|
|
1150
|
-
readonly 'legend.hideIndicator': "Hide indicator";
|
|
1151
|
-
readonly 'legend.scaleNormal': "Reg";
|
|
1152
|
-
readonly 'legend.scaleLog': "Log";
|
|
1153
|
-
readonly 'legend.scalePercent': "%";
|
|
1154
|
-
readonly 'legend.scaleIndexed': "100";
|
|
1155
|
-
readonly 'legend.changeSymbol': "Change symbol";
|
|
1156
|
-
readonly 'legend.removeCompare': "Remove comparison";
|
|
1157
|
-
readonly 'legend.removeIndicator': "Remove indicator";
|
|
1158
|
-
}, ChartLocaleCode>;
|
|
1159
|
-
/** A drawing tool's display name for a registry `type`: the catalog's when it knows the type, else
|
|
1160
|
-
* the registry's own English `name`, so a tool the catalog has not met still has a name. */
|
|
1161
|
-
declare function toolName(t: ChartTranslate, type: string, fallback: string): string;
|
|
1162
|
-
/** A multi-chart arrangement's display name for its code, else the arrangement catalog's English
|
|
1163
|
-
* label. An arrangement code separates its parts with hyphens (`2-2-l`) where a catalog key uses
|
|
1164
|
-
* underscores, so the code is converted rather than asking every caller to. */
|
|
1165
|
-
declare function arrangementName(t: ChartTranslate, code: string, fallback: string): string;
|
|
1166
|
-
/** A `ChartI18n` over the widget's own catalog, starting in `initial` (English when omitted): one
|
|
1167
|
-
* of the built-in codes, or a code the `locales` option registers. */
|
|
1168
|
-
declare function createChartI18n(initial?: string, options?: ChartI18nOptions): ChartI18n;
|
|
1169
|
-
|
|
1170
|
-
/** The session an instant classifies into. `extended` is trading outside regular hours when the
|
|
1171
|
-
* symbol does not split it into pre-market and after-hours. */
|
|
1172
|
-
type SessionState = 'pre' | 'open' | 'extended' | 'after' | 'closed';
|
|
1173
|
-
/** One subsession of an extended-hours symbol: `regular`,
|
|
1174
|
-
* `extended`, `premarket` or `postmarket`, each with its own session string and, optionally,
|
|
1175
|
-
* the corrections that shorten it. `SymbolInfo.subsessions` satisfies it; an id the chart has
|
|
1176
|
-
* no state for is ignored. */
|
|
1177
|
-
interface SubsessionSource {
|
|
1178
|
-
readonly id: string;
|
|
1179
|
-
readonly session: string;
|
|
1180
|
-
readonly sessionCorrections?: string;
|
|
1181
|
-
}
|
|
1182
|
-
/** What a session model is built from: the symbology triple plus the optional corrections and
|
|
1183
|
-
* subsessions. `SymbolInfo` satisfies it. */
|
|
1184
|
-
interface SessionSource {
|
|
1185
|
-
readonly timezone: string;
|
|
1186
|
-
readonly session: string;
|
|
1187
|
-
readonly sessionHolidays?: string;
|
|
1188
|
-
readonly corrections?: string;
|
|
1189
|
-
readonly subsessions?: readonly SubsessionSource[];
|
|
1190
|
-
}
|
|
1191
|
-
/** One trading stretch of a trading day, in minutes from that day's exchange-local midnight. The
|
|
1192
|
-
* start may be negative (the stretch begins on a previous day) and the end may pass 1440 (it
|
|
1193
|
-
* runs into the next day); the end is exclusive. */
|
|
1194
|
-
interface SessionSegment {
|
|
1195
|
-
readonly start: number;
|
|
1196
|
-
readonly end: number;
|
|
1197
|
-
}
|
|
1198
|
-
/** A schedule: the stretches per weekday (0 = Sunday), and dated overrides keyed 'YYYYMMDD'. */
|
|
1199
|
-
interface SessionSchedule {
|
|
1200
|
-
readonly week: readonly (readonly SessionSegment[])[];
|
|
1201
|
-
readonly corrections: ReadonlyMap<string, readonly SessionSegment[]>;
|
|
1202
|
-
}
|
|
1203
|
-
interface SessionModel {
|
|
1204
|
-
/** The exchange zone every minute here is read in. */
|
|
1205
|
-
readonly timezone: string;
|
|
1206
|
-
/** A `24x7` symbol: always open, no transitions, no timeline. */
|
|
1207
|
-
readonly continuous: boolean;
|
|
1208
|
-
/** The regular session. */
|
|
1209
|
-
readonly regular: SessionSchedule;
|
|
1210
|
-
/** Extended-hours stretches by the state they classify into, from the subsessions. */
|
|
1211
|
-
readonly extended: readonly {
|
|
1212
|
-
readonly state: Exclude<SessionState, 'open' | 'closed'>;
|
|
1213
|
-
readonly schedule: SessionSchedule;
|
|
1214
|
-
}[];
|
|
1215
|
-
/** Full-closure dates, 'YYYYMMDD'. */
|
|
1216
|
-
readonly holidays: ReadonlySet<string>;
|
|
1217
|
-
}
|
|
1218
|
-
/** Build the session model from a symbol's metadata. Null when the grammar cannot read any part
|
|
1219
|
-
* of it: a chart then shows no bands, no status and no timeline for the symbol rather than a
|
|
1220
|
-
* session it guessed. A `regular` subsession, when given, is the regular session; the symbol's
|
|
1221
|
-
* `session` is otherwise. Subsessions with ids the chart has no state for are ignored. */
|
|
1222
|
-
declare function parseSessionModel(source: SessionSource): SessionModel | null;
|
|
1223
|
-
/** Which of a symbol's named sessions a chart displays:
|
|
1224
|
-
* `regular` shows regular hours only, `extended` shows the extended-hours bars as well. A
|
|
1225
|
-
* per-chart preference a host persists. `extended` is the DEFAULT and shows every bar the feed
|
|
1226
|
-
* served; narrowing to `regular` is the opt-in, because a chart that silently hid bars it had
|
|
1227
|
-
* would be lying about the market by default. A symbol without extended hours has nothing to
|
|
1228
|
-
* choose, and every bar shows either way. */
|
|
1229
|
-
type ActiveSubsession = 'regular' | 'extended';
|
|
1230
|
-
declare const DEFAULT_SUBSESSION: ActiveSubsession;
|
|
1231
|
-
/** Whether the symbol declared any hours outside its regular session. Only such a symbol offers a
|
|
1232
|
-
* subsession choice or shades extended hours. */
|
|
1233
|
-
declare function hasExtendedHours(model: SessionModel): boolean;
|
|
1234
|
-
/** The bar filter for the active subsession: under `regular`, on a symbol with extended hours,
|
|
1235
|
-
* keep the bars whose open falls in regular hours; otherwise nothing is filtered (null). For
|
|
1236
|
-
* intraday timeframes only: a daily bar spans whole sessions, so a caller applies the filter on
|
|
1237
|
-
* intraday timeframes and shows every daily bar. */
|
|
1238
|
-
declare function subsessionBarFilter(model: SessionModel, active: ActiveSubsession): ((epochSecs: number) => boolean) | null;
|
|
1239
|
-
/** The session state at an instant (epoch seconds), under the symbol's exchange clock. */
|
|
1240
|
-
declare function sessionStateAt(model: SessionModel, epochSecs: number): SessionState;
|
|
1241
|
-
/** The next session transition after an instant, exact to the minute, or null when there is
|
|
1242
|
-
* none within eight days (a continuous market, or a long closure). */
|
|
1243
|
-
declare function nextSessionChange(model: SessionModel, epochSecs: number): {
|
|
1244
|
-
atSecs: number;
|
|
1245
|
-
state: SessionState;
|
|
1246
|
-
} | null;
|
|
1247
|
-
interface SessionTimeline {
|
|
1248
|
-
/** The exchange-local day's stretches, closed gaps included, covering 0 to 1440 minutes. */
|
|
1249
|
-
readonly segments: readonly {
|
|
1250
|
-
readonly start: number;
|
|
1251
|
-
readonly end: number;
|
|
1252
|
-
readonly state: SessionState;
|
|
1253
|
-
}[];
|
|
1254
|
-
/** Now, in exchange-local minutes from midnight. */
|
|
1255
|
-
readonly nowMins: number;
|
|
1256
|
-
/** The exchange-local weekday, written in the language of `tag` and upper-cased ("MON"). */
|
|
1257
|
-
readonly dayLabel: string;
|
|
1258
|
-
readonly timezone: string;
|
|
1259
|
-
}
|
|
1260
|
-
/** The exchange-local day's timeline for a status popup. `tag` is the BCP 47 tag the weekday is
|
|
1261
|
-
* written in: a date part, so it comes from Intl rather than the catalog. */
|
|
1262
|
-
declare function sessionTimeline(model: SessionModel, epochSecs: number, tag: string): SessionTimeline;
|
|
1263
|
-
/** A symbol's market status at an instant: the session state and the feed's liveness together,
|
|
1264
|
-
* so a consumer cannot present an end-of-day or delayed feed as a live open market. */
|
|
1265
|
-
interface MarketStatus {
|
|
1266
|
-
readonly state: SessionState;
|
|
1267
|
-
/** The feed's liveness, an explicit part of the status. */
|
|
1268
|
-
readonly dataStatus: DataStatus;
|
|
1269
|
-
/** A `24x7` symbol. */
|
|
1270
|
-
readonly continuous: boolean;
|
|
1271
|
-
/** The next transition, or null when there is none to count down to. */
|
|
1272
|
-
readonly next: {
|
|
1273
|
-
readonly atSecs: number;
|
|
1274
|
-
readonly state: SessionState;
|
|
1275
|
-
} | null;
|
|
1276
|
-
}
|
|
1277
|
-
declare function marketStatus(model: SessionModel, dataStatus: DataStatus, nowSecs: number): MarketStatus;
|
|
1278
|
-
/** The market status straight from a resolved symbol, or null when its session cannot be read. */
|
|
1279
|
-
declare function marketStatusFor(symbol: Pick<SymbolInfo, 'timezone' | 'session' | 'sessionHolidays' | 'corrections' | 'subsessions' | 'dataStatus'>, nowSecs: number): MarketStatus | null;
|
|
1280
|
-
/** The catalog key of a session state's name: the same five words the legend's status dot and
|
|
1281
|
-
* a status popup's title use. */
|
|
1282
|
-
declare const SESSION_STATE_TITLE: Readonly<Record<SessionState, ChartMessageKey>>;
|
|
1283
|
-
/** The title line of a status popup: the feed's liveness when it is not a live stream, the
|
|
1284
|
-
* continuous market's own word, or the session state's name. */
|
|
1285
|
-
declare function marketStatusTitle(t: ChartTranslate, status: MarketStatus): string;
|
|
1286
|
-
/** "3 days 4 hours": the coarsest unit, and the next one down when it is non-zero. Each unit is a
|
|
1287
|
-
* whole phrase and `status.durationPair` owns the order and the separator, so a language decides
|
|
1288
|
-
* both rather than inheriting English's. A duration under a minute reads as one minute. */
|
|
1289
|
-
declare function formatDuration(t: ChartTranslate, secs: number): string;
|
|
1290
|
-
/** The sentence under a status popup's title. An end-of-day feed states that and nothing about
|
|
1291
|
-
* hours; a continuous market states that it never closes; otherwise the session state with a
|
|
1292
|
-
* countdown to the next transition when one is known, and a delayed stream adds that its prices
|
|
1293
|
-
* are delayed. */
|
|
1294
|
-
declare function marketStatusText(t: ChartTranslate, status: MarketStatus, nowSecs: number): string;
|
|
1295
|
-
/** The footer naming the exchange zone a timeline is drawn in: "Exchange timezone: New York
|
|
1296
|
-
* (UTC-4)". */
|
|
1297
|
-
declare function exchangeTimezoneText(t: ChartTranslate, timezone: string, at?: Date): string;
|
|
1298
|
-
|
|
1299
|
-
/** Paints a market's mark into a box the chart owns, and answers what takes it down again. */
|
|
1300
|
-
type SymbolMarkPainter = (request: {
|
|
1301
|
-
symbol: string;
|
|
1302
|
-
host: HTMLElement;
|
|
1303
|
-
size: number;
|
|
1304
|
-
}) => (() => void) | void;
|
|
1305
|
-
/** Paints the mark of the venue a market lists on, the same way. */
|
|
1306
|
-
type VenueMarkPainter = (request: {
|
|
1307
|
-
exchange: string;
|
|
1308
|
-
host: HTMLElement;
|
|
1309
|
-
size: number;
|
|
1310
|
-
}) => (() => void) | void;
|
|
1311
|
-
/** Paints the mark of a data source, where a row names a data source rather than a venue. */
|
|
1312
|
-
type DataSourceMarkPainter = (request: {
|
|
1313
|
-
dataSource: string;
|
|
1314
|
-
host: HTMLElement;
|
|
1315
|
-
size: number;
|
|
1316
|
-
}) => (() => void) | void;
|
|
1317
|
-
/** Every painter the host lent, as the chart carries them: null where it lent none. */
|
|
1318
|
-
interface MarkPainters {
|
|
1319
|
-
readonly symbol: SymbolMarkPainter | null;
|
|
1320
|
-
readonly venue: VenueMarkPainter | null;
|
|
1321
|
-
readonly dataSource: DataSourceMarkPainter | null;
|
|
1322
|
-
}
|
|
1323
|
-
/** The host's hooks, as an entry point takes them. Each is the host's to lend or withhold, and
|
|
1324
|
-
* every entry point that paints marks takes exactly these, so a host writes them once and hands
|
|
1325
|
-
* the same three to a chart and to a picker it opens away from one. */
|
|
1326
|
-
interface MarkPainterHooks {
|
|
1327
|
-
/** The host's mark for a market, called WHEREVER the chart names one: each chart's legend, the
|
|
1328
|
-
* compare rows under it, every row of the symbol search and compare dialogs, and the market tag
|
|
1329
|
-
* an extension's notice wears. It receives the element to paint into and the symbol it stands for,
|
|
1330
|
-
* and returns a disposer that takes the mark down again.
|
|
1331
|
-
*
|
|
1332
|
-
* One hook rather than one per surface, so a market wears the same mark everywhere it appears and
|
|
1333
|
-
* a host implements it once. The chart ships no artwork and fetches none: absent this, every mark
|
|
1334
|
-
* is the neutral monogram the package draws itself. */
|
|
1335
|
-
symbolMark?: SymbolMarkPainter;
|
|
1336
|
-
/** The host's mark for the venue a market lists on, painted beside the venue's name in every row
|
|
1337
|
-
* of the symbol search and compare dialogs. Like `symbolMark`, it receives the element to paint
|
|
1338
|
-
* into and the size of the box, and returns a disposer; absent, a venue wears its initial on the
|
|
1339
|
-
* neutral disc the package draws itself. */
|
|
1340
|
-
venueMark?: VenueMarkPainter;
|
|
1341
|
-
/** The host's mark for the data source a row names where it names no venue, painted in that
|
|
1342
|
-
* row's source cell the same way. Absent, a data source wears its initial on a neutral disc. */
|
|
1343
|
-
dataSourceMark?: DataSourceMarkPainter;
|
|
1344
|
-
}
|
|
1345
|
-
|
|
1346
|
-
/** One glyph: its own grid and the inner markup drawn on it. */
|
|
1347
|
-
interface Glyph {
|
|
1348
|
-
viewBox: string;
|
|
1349
|
-
body: string;
|
|
1350
|
-
/** A glyph that is not square keeps its grid's proportion: the size is its HEIGHT and the width
|
|
1351
|
-
* follows this ratio. Square glyphs omit it. */
|
|
1352
|
-
aspect?: number;
|
|
1353
|
-
/** The height the glyph is drawn at when a caller names none. Glyphs drawn at 28 omit it. */
|
|
1354
|
-
size?: number;
|
|
1355
|
-
}
|
|
1356
|
-
|
|
1357
|
-
interface ChartOverrides {
|
|
1358
|
-
appearance: {
|
|
1359
|
-
background: string;
|
|
1360
|
-
upColor: string;
|
|
1361
|
-
downColor: string;
|
|
1362
|
-
/** Candle anatomy: the border ring and the wick are their OWN colors per direction. They do
|
|
1363
|
-
* NOT follow upColor/downColor; each is set independently. */
|
|
1364
|
-
borderUpColor: string;
|
|
1365
|
-
borderDownColor: string;
|
|
1366
|
-
wickUpColor: string;
|
|
1367
|
-
wickDownColor: string;
|
|
1368
|
-
grid: boolean;
|
|
1369
|
-
/** Shade pre-market / after-hours / overnight stretches. */
|
|
1370
|
-
sessions: boolean;
|
|
1371
|
-
/** Bar-close countdown pill on the price scale. */
|
|
1372
|
-
countdown: boolean;
|
|
1373
|
-
};
|
|
1374
|
-
}
|
|
1375
|
-
/** The brand palette, single-sourced: a host's own surfaces on the chart read these (an
|
|
1376
|
-
* extension's lines among them), and a rebrand edits two strings. The candle bodies keep their
|
|
1377
|
-
* own pair; see the note on DEFAULT_OVERRIDES for why. */
|
|
1378
|
-
declare const BRAND_UP = "#4c98fb";
|
|
1379
|
-
declare const BRAND_DOWN = "#f23645";
|
|
1380
|
-
declare const DEFAULT_OVERRIDES: ChartOverrides;
|
|
1381
|
-
/** A recursive partial of the tree — what a host supplies. */
|
|
1382
|
-
type PartialOverrides = {
|
|
1383
|
-
[S in keyof ChartOverrides]?: Partial<ChartOverrides[S]>;
|
|
1384
|
-
};
|
|
1385
|
-
/** Deep-fill a partial over the defaults. One level of nesting by design — the tree is two levels
|
|
1386
|
-
* (section → leaf) and stays that way; new leaves are additive. */
|
|
1387
|
-
declare function mergeOverrides(partial?: PartialOverrides | null): ChartOverrides;
|
|
1388
|
-
/** The precedence composer: deep-fill any number of partials over an explicit BASE, later layers
|
|
1389
|
-
* winning leaf by leaf. The widget's look resolves through this — its theme-derived floor, then
|
|
1390
|
-
* the host's constructor partial, then runtime applyAppearance calls: one ladder where runtime
|
|
1391
|
-
* beats constructor beats theme, expressed as one pure function. */
|
|
1392
|
-
declare function layerOverrides(base: ChartOverrides, ...partials: (PartialOverrides | null | undefined)[]): ChartOverrides;
|
|
1393
|
-
|
|
1394
|
-
/** One resolved role as it is written to the DOM. */
|
|
1395
|
-
interface ThemeDeclaration {
|
|
1396
|
-
/** The private custom-property name. */
|
|
1397
|
-
property: string;
|
|
1398
|
-
/** The resolved value, already a CSS token. */
|
|
1399
|
-
value: string;
|
|
1400
|
-
}
|
|
1401
|
-
|
|
1402
|
-
/** The two modes Quick Charts ships complete. A host switches between them at runtime; it does not
|
|
1403
|
-
* add a third. A host that keeps named brand presets resolves each preset to a custom light or
|
|
1404
|
-
* dark palette before passing it in. */
|
|
1405
|
-
type ThemeMode = 'light' | 'dark';
|
|
1406
|
-
/** What a role's value is written as. Every value is a CSS token string, so `length` is `'4px'`,
|
|
1407
|
-
* `duration` is `'150ms'`, `easing` is a timing function such as `'ease-out'`, and `scale` is a
|
|
1408
|
-
* unitless factor such as `'0.97'`; the kind says which tokens are valid, and validation enforces
|
|
1409
|
-
* it. */
|
|
1410
|
-
type ThemeRoleKind = 'color' | 'length' | 'font' | 'duration' | 'easing' | 'scale' | 'shadow';
|
|
1411
|
-
/** The grouping a role belongs to. Families organize the manual and the manifest; they are not part
|
|
1412
|
-
* of a role's identity. */
|
|
1413
|
-
type ThemeRoleFamily = 'canvas' | 'series' | 'scale' | 'text' | 'chrome' | 'overlay' | 'state' | 'control' | 'status' | 'illustration' | 'drawing' | 'motion';
|
|
1414
|
-
/** A readability requirement the palettes must meet: this role's value, read against the value of
|
|
1415
|
-
* `over`, reaches `min` under the WCAG 2.2 contrast formula. Where `over` is a translucent tint
|
|
1416
|
-
* such as the hover or selected fill, `on` names the opaque surface the tint is drawn on, and the
|
|
1417
|
-
* tint is flattened onto it before measuring. Body text needs 4.5, a non-text indicator such as a
|
|
1418
|
-
* focus ring needs 3. */
|
|
1419
|
-
interface ThemeContrastRule {
|
|
1420
|
-
over: string;
|
|
1421
|
-
on?: string;
|
|
1422
|
-
min: number;
|
|
1423
|
-
}
|
|
1424
|
-
/** One entry of the inventory. */
|
|
1425
|
-
interface ThemeRole {
|
|
1426
|
-
/** The public id, `family.name`. Also the key of `SemanticTheme`. */
|
|
1427
|
-
id: string;
|
|
1428
|
-
family: ThemeRoleFamily;
|
|
1429
|
-
kind: ThemeRoleKind;
|
|
1430
|
-
/** One sentence naming what the role means, published in the manifest and the manual. */
|
|
1431
|
-
description: string;
|
|
1432
|
-
/** Present when the role carries readability requirements: one rule per ground the stylesheet's
|
|
1433
|
-
* recipes draw it on. */
|
|
1434
|
-
contrast?: readonly ThemeContrastRule[];
|
|
34
|
+
/** One entry of the inventory. */
|
|
35
|
+
interface ThemeRole {
|
|
36
|
+
/** The public id, `family.name`. Also the key of `SemanticTheme`. */
|
|
37
|
+
id: string;
|
|
38
|
+
family: ThemeRoleFamily;
|
|
39
|
+
kind: ThemeRoleKind;
|
|
40
|
+
/** One sentence naming what the role means, published in the manifest and the manual. */
|
|
41
|
+
description: string;
|
|
42
|
+
/** Present when the role carries readability requirements: one rule per ground the stylesheet's
|
|
43
|
+
* recipes draw it on. */
|
|
44
|
+
contrast?: readonly ThemeContrastRule[];
|
|
1435
45
|
}
|
|
1436
46
|
/** The complete role inventory. Adding an entry is a minor API change and needs a value in both
|
|
1437
47
|
* built-in palettes; removing one is breaking. */
|
|
@@ -1569,6 +179,9 @@ declare const THEME_ROLES: readonly [{
|
|
|
1569
179
|
readonly over: "state.hover";
|
|
1570
180
|
readonly on: "overlay.surface";
|
|
1571
181
|
readonly min: 4.5;
|
|
182
|
+
}, {
|
|
183
|
+
readonly over: "control.neutral";
|
|
184
|
+
readonly min: 4.5;
|
|
1572
185
|
}];
|
|
1573
186
|
}, {
|
|
1574
187
|
readonly id: "text.disabled";
|
|
@@ -1678,7 +291,7 @@ declare const THEME_ROLES: readonly [{
|
|
|
1678
291
|
readonly id: "chrome.fieldBorder";
|
|
1679
292
|
readonly family: "chrome";
|
|
1680
293
|
readonly kind: "color";
|
|
1681
|
-
readonly description: "The outline of
|
|
294
|
+
readonly description: "The outline of the symbol search field. The field's mark and prompt name it, so the outline is not its only sign.";
|
|
1682
295
|
}, {
|
|
1683
296
|
readonly id: "chrome.caret";
|
|
1684
297
|
readonly family: "chrome";
|
|
@@ -1732,7 +345,7 @@ declare const THEME_ROLES: readonly [{
|
|
|
1732
345
|
readonly id: "state.accent";
|
|
1733
346
|
readonly family: "state";
|
|
1734
347
|
readonly kind: "color";
|
|
1735
|
-
readonly description: "The accent a mark, fill, or glyph wears: a
|
|
348
|
+
readonly description: "The accent a mark, fill, or glyph wears: a selected tab, an armed favorite.";
|
|
1736
349
|
readonly contrast: readonly [{
|
|
1737
350
|
readonly over: "chrome.surface";
|
|
1738
351
|
readonly min: 3;
|
|
@@ -1783,7 +396,7 @@ declare const THEME_ROLES: readonly [{
|
|
|
1783
396
|
readonly id: "state.markInk";
|
|
1784
397
|
readonly family: "state";
|
|
1785
398
|
readonly kind: "color";
|
|
1786
|
-
readonly description: "Ink on the accent or a filled state mark
|
|
399
|
+
readonly description: "Ink on the accent or a filled state mark, such as the replay disc's cut-out.";
|
|
1787
400
|
readonly contrast: readonly [{
|
|
1788
401
|
readonly over: "state.accent";
|
|
1789
402
|
readonly min: 4.5;
|
|
@@ -1830,6 +443,58 @@ declare const THEME_ROLES: readonly [{
|
|
|
1830
443
|
readonly family: "control";
|
|
1831
444
|
readonly kind: "color";
|
|
1832
445
|
readonly description: "The track of a switch that is off, while the pointer is down.";
|
|
446
|
+
}, {
|
|
447
|
+
readonly id: "control.outline";
|
|
448
|
+
readonly family: "control";
|
|
449
|
+
readonly kind: "color";
|
|
450
|
+
readonly description: "The edge and the words of an outlined button at rest, such as a dialog's Cancel, which takes the emphasis fill under the pointer.";
|
|
451
|
+
readonly contrast: readonly [{
|
|
452
|
+
readonly over: "overlay.surface";
|
|
453
|
+
readonly min: 4.5;
|
|
454
|
+
}];
|
|
455
|
+
}, {
|
|
456
|
+
readonly id: "control.onInk";
|
|
457
|
+
readonly family: "control";
|
|
458
|
+
readonly kind: "color";
|
|
459
|
+
readonly description: "A mark cut from the emphasis fill, and its name beside it: a chosen thickness, line style or line end.";
|
|
460
|
+
readonly contrast: readonly [{
|
|
461
|
+
readonly over: "control.on";
|
|
462
|
+
readonly min: 3;
|
|
463
|
+
}];
|
|
464
|
+
}, {
|
|
465
|
+
readonly id: "control.neutral";
|
|
466
|
+
readonly family: "control";
|
|
467
|
+
readonly kind: "color";
|
|
468
|
+
readonly description: "The quiet fill: a neutral action such as a dialog's shortcut chip, the band that heads a calendar's columns, and a chosen month or year.";
|
|
469
|
+
}, {
|
|
470
|
+
readonly id: "control.neutralHover";
|
|
471
|
+
readonly family: "control";
|
|
472
|
+
readonly kind: "color";
|
|
473
|
+
readonly description: "The quiet fill under the pointer.";
|
|
474
|
+
}, {
|
|
475
|
+
readonly id: "control.neutralPressed";
|
|
476
|
+
readonly family: "control";
|
|
477
|
+
readonly kind: "color";
|
|
478
|
+
readonly description: "The quiet fill while the pointer is down.";
|
|
479
|
+
}, {
|
|
480
|
+
readonly id: "control.neutralInk";
|
|
481
|
+
readonly family: "control";
|
|
482
|
+
readonly kind: "color";
|
|
483
|
+
readonly description: "The words and mark on the quiet fill, and what a quiet control's words and mark brighten to under the pointer, such as a calendar's day or a dialog's close.";
|
|
484
|
+
readonly contrast: readonly [{
|
|
485
|
+
readonly over: "control.neutral";
|
|
486
|
+
readonly min: 4.5;
|
|
487
|
+
}, {
|
|
488
|
+
readonly over: "control.neutralHover";
|
|
489
|
+
readonly min: 4.5;
|
|
490
|
+
}, {
|
|
491
|
+
readonly over: "control.neutralPressed";
|
|
492
|
+
readonly min: 4.5;
|
|
493
|
+
}, {
|
|
494
|
+
readonly over: "state.hover";
|
|
495
|
+
readonly on: "overlay.surface";
|
|
496
|
+
readonly min: 4.5;
|
|
497
|
+
}];
|
|
1833
498
|
}, {
|
|
1834
499
|
readonly id: "control.mark";
|
|
1835
500
|
readonly family: "control";
|
|
@@ -1845,6 +510,38 @@ declare const THEME_ROLES: readonly [{
|
|
|
1845
510
|
readonly over: "control.onPressed";
|
|
1846
511
|
readonly min: 3;
|
|
1847
512
|
}];
|
|
513
|
+
}, {
|
|
514
|
+
readonly id: "control.fieldEdge";
|
|
515
|
+
readonly family: "control";
|
|
516
|
+
readonly kind: "color";
|
|
517
|
+
readonly description: "The edge of a text field, a select, a number field or a color well at rest.";
|
|
518
|
+
}, {
|
|
519
|
+
readonly id: "control.fieldEdgeHover";
|
|
520
|
+
readonly family: "control";
|
|
521
|
+
readonly kind: "color";
|
|
522
|
+
readonly description: "The edge of a field under the pointer.";
|
|
523
|
+
}, {
|
|
524
|
+
readonly id: "control.selectEdgeHover";
|
|
525
|
+
readonly family: "control";
|
|
526
|
+
readonly kind: "color";
|
|
527
|
+
readonly description: "The edge of a list button under the pointer, such as a select on a drawing's settings page.";
|
|
528
|
+
}, {
|
|
529
|
+
readonly id: "control.fieldInvalid";
|
|
530
|
+
readonly family: "control";
|
|
531
|
+
readonly kind: "color";
|
|
532
|
+
readonly description: "The edge and the focus ring of a field holding a value it refuses.";
|
|
533
|
+
readonly contrast: readonly [{
|
|
534
|
+
readonly over: "overlay.surface";
|
|
535
|
+
readonly min: 3;
|
|
536
|
+
}, {
|
|
537
|
+
readonly over: "chrome.surface";
|
|
538
|
+
readonly min: 3;
|
|
539
|
+
}];
|
|
540
|
+
}, {
|
|
541
|
+
readonly id: "control.fieldFill";
|
|
542
|
+
readonly family: "control";
|
|
543
|
+
readonly kind: "color";
|
|
544
|
+
readonly description: "The fill of a field that is read-only or disabled.";
|
|
1848
545
|
}, {
|
|
1849
546
|
readonly id: "status.positive";
|
|
1850
547
|
readonly family: "status";
|
|
@@ -1988,6 +685,11 @@ declare const THEME_ROLES: readonly [{
|
|
|
1988
685
|
readonly family: "motion";
|
|
1989
686
|
readonly kind: "duration";
|
|
1990
687
|
readonly description: "A larger mark turning, such as the drawing toolbar's chevron.";
|
|
688
|
+
}, {
|
|
689
|
+
readonly id: "motion.durationGlide";
|
|
690
|
+
readonly family: "motion";
|
|
691
|
+
readonly kind: "duration";
|
|
692
|
+
readonly description: "A mark gliding to a new place, such as a dialog's tab bar or an opacity knob.";
|
|
1991
693
|
}, {
|
|
1992
694
|
readonly id: "motion.easingStandard";
|
|
1993
695
|
readonly family: "motion";
|
|
@@ -2008,6 +710,11 @@ declare const THEME_ROLES: readonly [{
|
|
|
2008
710
|
readonly family: "motion";
|
|
2009
711
|
readonly kind: "easing";
|
|
2010
712
|
readonly description: "The timing of a mark that turns with a slight overshoot, such as a caret or chevron.";
|
|
713
|
+
}, {
|
|
714
|
+
readonly id: "motion.easingInOut";
|
|
715
|
+
readonly family: "motion";
|
|
716
|
+
readonly kind: "easing";
|
|
717
|
+
readonly description: "The timing of a mark that slides from one place to another, such as a dialog's tab bar.";
|
|
2011
718
|
}, {
|
|
2012
719
|
readonly id: "motion.scaleEnter";
|
|
2013
720
|
readonly family: "motion";
|
|
@@ -2021,11 +728,1565 @@ type ThemeRoleId = (typeof THEME_ROLES)[number]['id'];
|
|
|
2021
728
|
type SemanticTheme = {
|
|
2022
729
|
readonly [Id in ThemeRoleId]: string;
|
|
2023
730
|
};
|
|
2024
|
-
/** What a host supplies: a partial palette for either mode, or both. An omitted role keeps the
|
|
2025
|
-
* built-in value for that mode. */
|
|
2026
|
-
interface CustomThemes {
|
|
2027
|
-
light?: Partial<SemanticTheme>;
|
|
2028
|
-
dark?: Partial<SemanticTheme>;
|
|
731
|
+
/** What a host supplies: a partial palette for either mode, or both. An omitted role keeps the
|
|
732
|
+
* built-in value for that mode. */
|
|
733
|
+
interface CustomThemes {
|
|
734
|
+
light?: Partial<SemanticTheme>;
|
|
735
|
+
dark?: Partial<SemanticTheme>;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
interface DrawingInks {
|
|
739
|
+
/** A selection handle's ring. */
|
|
740
|
+
handleRing: string;
|
|
741
|
+
/** A selection handle's center: the chart's ground, so the handle covers what it stands on. */
|
|
742
|
+
handleCenter: string;
|
|
743
|
+
/** Words a drawing writes in the chart's own ink. */
|
|
744
|
+
text: string;
|
|
745
|
+
/** A quiet edge, such as a signpost plate's outline. */
|
|
746
|
+
edge: string;
|
|
747
|
+
/** The accent the chart marks what is being worked on with, such as the table cell being typed
|
|
748
|
+
* in. */
|
|
749
|
+
accent: string;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
/** A feed that answers coarser grains than the one it wraps.
|
|
753
|
+
*
|
|
754
|
+
* `serves` names the grains the wrapped feed answers natively; every other request is folded from
|
|
755
|
+
* the coarsest of them that divides it. A request nothing divides is passed straight through, so
|
|
756
|
+
* the wrapped feed gives its own honest answer rather than this wrapper inventing one.
|
|
757
|
+
*
|
|
758
|
+
* ```ts
|
|
759
|
+
* import { withFoldedHistory } from '@trdrs/quickcharts'
|
|
760
|
+
*
|
|
761
|
+
* const feed = withFoldedHistory(venueFeed, { serves: ['1m', '15m', '1h', '1d', '1mo'] })
|
|
762
|
+
* // A 45m request now fetches 15m bars and folds them three at a time.
|
|
763
|
+
* ```
|
|
764
|
+
*/
|
|
765
|
+
declare function withFoldedHistory(feed: ChartDatafeed, options: {
|
|
766
|
+
serves: readonly string[];
|
|
767
|
+
}): ChartDatafeed;
|
|
768
|
+
|
|
769
|
+
interface ChartStorage {
|
|
770
|
+
/** The stored value for a key, or null when absent. Must not throw — a backing-store failure reads as
|
|
771
|
+
* "absent" so the chart falls back to its defaults rather than crashing. */
|
|
772
|
+
get(key: string): string | null;
|
|
773
|
+
/** Persist a value. Must not throw — a quota/permission failure is swallowed (the chart keeps working
|
|
774
|
+
* off in-memory state for the session). */
|
|
775
|
+
set(key: string, value: string): void;
|
|
776
|
+
/** Remove a key. Must not throw. */
|
|
777
|
+
remove(key: string): void;
|
|
778
|
+
/** Every key currently present, so the chart can enumerate its own namespace. Order is unspecified. */
|
|
779
|
+
keys(): string[];
|
|
780
|
+
}
|
|
781
|
+
/** An in-memory ChartStorage — the default, and the store for SSR, tests, or an intentionally ephemeral
|
|
782
|
+
* embed where nothing should persist beyond the page. A host can also seed one from its own state to
|
|
783
|
+
* hand the chart a starting set. */
|
|
784
|
+
declare function memoryChartStorage(seed?: Record<string, string>): ChartStorage;
|
|
785
|
+
|
|
786
|
+
/** The subset of `fetch` this adapter uses — kept minimal so the package stays DOM-independent and a
|
|
787
|
+
* test can drive it with a plain fake. The global `fetch` satisfies it. */
|
|
788
|
+
type FetchLike = (url: string) => Promise<{
|
|
789
|
+
ok: boolean;
|
|
790
|
+
status: number;
|
|
791
|
+
json(): Promise<unknown>;
|
|
792
|
+
text(): Promise<string>;
|
|
793
|
+
}>;
|
|
794
|
+
interface UdfDatafeedOptions {
|
|
795
|
+
/** UDF server base URL, e.g. `https://feed.example.com/udf` (no trailing slash needed). */
|
|
796
|
+
baseUrl: string;
|
|
797
|
+
/** Injected fetch — defaults to the global. Provide one in tests or to add auth headers via a wrapper. */
|
|
798
|
+
fetch?: FetchLike;
|
|
799
|
+
/** Live-poll cadence in ms for `subscribeBars` (UDF has no push). Default 10s, the UDF norm. */
|
|
800
|
+
pollMs?: number;
|
|
801
|
+
/** Bars pulled for the initial live snapshot. Default 300. */
|
|
802
|
+
snapshotBars?: number;
|
|
803
|
+
}
|
|
804
|
+
/** A ChartDatafeed backed by a UDF server. */
|
|
805
|
+
declare function createUdfDatafeed(options: UdfDatafeedOptions): ChartDatafeed;
|
|
806
|
+
|
|
807
|
+
/** Map a timeframe token to a UDF resolution string: seconds `<N>S`, minutes `<N>`, hours as
|
|
808
|
+
* minutes (`<N*60>`, the classic UDF intraday encoding), day/week/month `<N>D`/`<N>W`/`<N>M`, ticks
|
|
809
|
+
* `<N>T`. A token the grammar cannot read falls through as-is (a custom server may accept it). */
|
|
810
|
+
declare function tfToUdfResolution(tf: string): string;
|
|
811
|
+
/** The inverse of {@link tfToUdfResolution}: a UDF resolution string back to a timeframe token.
|
|
812
|
+
* Bare numbers are minutes; whole-hour counts of 60 or more normalize to `<N>h` (the forward map
|
|
813
|
+
* emits hours AS minutes, so '1h' → '60' → '1h' round-trips); bare 'D'/'W'/'M'/'S'/'T' mean a
|
|
814
|
+
* count of 1. Null for a resolution the timeframe grammar cannot express, its per-unit ceilings
|
|
815
|
+
* included: a caller building a capability declaration OMITS that resolution rather than
|
|
816
|
+
* mis-declaring it (the widget can't do bucket arithmetic on a token outside the grammar, so it
|
|
817
|
+
* isn't widget-servable even if the server serves it). */
|
|
818
|
+
declare function udfResolutionToTf(resolution: string): string | null;
|
|
819
|
+
|
|
820
|
+
/** A locale a product ships or a host registers. `code` is the stable product-facing identifier;
|
|
821
|
+
* `tag` is the canonical BCP 47 value for `Intl` and the document language. */
|
|
822
|
+
interface LocaleDefinition<Code extends string = string> {
|
|
823
|
+
code: Code;
|
|
824
|
+
endonym: string;
|
|
825
|
+
tag: string;
|
|
826
|
+
dir: 'ltr' | 'rtl';
|
|
827
|
+
}
|
|
828
|
+
/** The languages this package ships a dictionary for. */
|
|
829
|
+
type ChartLocaleCode = 'en' | 'de' | 'fr' | 'es' | 'it' | 'ca_ES' | 'pl' | 'sv' | 'tr' | 'ru' | 'pt' | 'id_ID' | 'ms_MY' | 'th' | 'vi' | 'ja' | 'ko' | 'zh' | 'zh_TW' | 'ar' | 'he_IL';
|
|
830
|
+
type ChartLocale = LocaleDefinition<ChartLocaleCode>;
|
|
831
|
+
/** English first, then the Latin-script languages, then the others. Endonyms let every reader find
|
|
832
|
+
* their own language in a picker. `scripts/i18n.mjs` reads this table by its line shape. */
|
|
833
|
+
declare const BUILT_IN_LOCALES: readonly ChartLocale[];
|
|
834
|
+
|
|
835
|
+
type PluralCategory = 'zero' | 'one' | 'two' | 'few' | 'many' | 'other';
|
|
836
|
+
/** A message with one form per plural category its language distinguishes (CLDR: English has
|
|
837
|
+
* `one` and `other`, Russian `one`/`few`/`many`/`other`, Arabic all six, Japanese `other` alone).
|
|
838
|
+
* `other` is always present. `zero` is special: when present it is used for an exact count of 0 in
|
|
839
|
+
* EVERY language, so "No alerts" needs no branch at the call site. The form is selected by the
|
|
840
|
+
* `count` variable. */
|
|
841
|
+
type PluralMessage = {
|
|
842
|
+
other: string;
|
|
843
|
+
} & Partial<Record<Exclude<PluralCategory, 'other'>, string>>;
|
|
844
|
+
type Message = string | PluralMessage;
|
|
845
|
+
/** A catalog: keys to messages. The English catalog is the SOURCE every translation is typed
|
|
846
|
+
* against; keys are dotted by surface (`legend.hideIndicator`), and each surface keeps its own file. */
|
|
847
|
+
type Catalog = Record<string, Message>;
|
|
848
|
+
/** A translation of a catalog: a string for every string, a plural for every plural. The shape is
|
|
849
|
+
* the source's, so a translation cannot miss a key or flatten a plural without failing typecheck. */
|
|
850
|
+
type Translation<Source extends Catalog> = {
|
|
851
|
+
[K in keyof Source]: Source[K] extends string ? string : PluralMessage;
|
|
852
|
+
};
|
|
853
|
+
type Vars = Record<string, string | number>;
|
|
854
|
+
/** The arguments `t` takes for a key: a plural key REQUIRES `count`; a string key takes any vars.
|
|
855
|
+
* Distributive over `K`, so a key chosen at runtime from a union of keys (a label table) is
|
|
856
|
+
* accepted with the arguments any ONE of them takes rather than what all of them would need. */
|
|
857
|
+
type TranslateArgs<Source extends Catalog, K extends keyof Source> = K extends unknown ? Source[K] extends string ? [vars?: Vars] : [vars: Vars & {
|
|
858
|
+
count: number;
|
|
859
|
+
}] : never;
|
|
860
|
+
/** The message for a key in the active language: a plural key picks its form by the language's
|
|
861
|
+
* rules, and numbers in `{slots}` are written with the language's digits and grouping. */
|
|
862
|
+
type Translate<Source extends Catalog> = <K extends keyof Source & string>(key: K, ...args: TranslateArgs<Source, K>) => string;
|
|
863
|
+
|
|
864
|
+
interface DictionaryLoader<Source extends Catalog, Code extends string = ChartLocaleCode> {
|
|
865
|
+
/** The translation if it is already in memory: synchronous, for a first render that must not flash. */
|
|
866
|
+
ifLoaded(code: Code): Translation<Source> | null;
|
|
867
|
+
/** Load (once) and return a locale's translation. Concurrent callers share one fetch; a locale
|
|
868
|
+
* the catalog does not ship resolves to the source. */
|
|
869
|
+
load(code: Code): Promise<Translation<Source>>;
|
|
870
|
+
/** Whether the catalog ships this locale (the source locale always does). */
|
|
871
|
+
has(code: Code): boolean;
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
type ChartTranslate = Translate<typeof en>;
|
|
875
|
+
/** The widget's catalog in one language: every key of the English source, in the same shape. */
|
|
876
|
+
type ChartDictionary = Translation<typeof en>;
|
|
877
|
+
/** A locale a host adds beyond the built-in inventory: its stable code, canonical BCP 47 tag,
|
|
878
|
+
* reading direction, endonym, and the dictionary chunk to fetch the first time it is chosen. */
|
|
879
|
+
interface ChartCustomLocale extends LocaleDefinition {
|
|
880
|
+
dictionary: () => Promise<{
|
|
881
|
+
default: ChartDictionary;
|
|
882
|
+
}>;
|
|
883
|
+
}
|
|
884
|
+
interface ChartI18nOptions {
|
|
885
|
+
/** Locales registered beside the built-in inventory. A code or tag the inventory already holds
|
|
886
|
+
* is refused: the built-in dictionaries are not overridden through this door. */
|
|
887
|
+
locales?: readonly ChartCustomLocale[];
|
|
888
|
+
/** Hears every key a loaded dictionary is missing; the text falls back to English. The typed
|
|
889
|
+
* catalogs cannot miss a key, so this only ever reports a dictionary loaded from data. */
|
|
890
|
+
onMissing?: (key: ChartMessageKey, locale: string) => void;
|
|
891
|
+
}
|
|
892
|
+
interface ChartI18n {
|
|
893
|
+
/** The host-owned stable locale code. It does not need to use the built-in vocabulary. */
|
|
894
|
+
locale(): string;
|
|
895
|
+
/** The BCP 47 tag for `Intl` and for the chart library's own axis and crosshair formatting. */
|
|
896
|
+
tag(): string;
|
|
897
|
+
/** The reading direction of the language in effect. The chrome writes it on the widget root so
|
|
898
|
+
* the stylesheet's logical properties flip. A host adapter that omits it reads as left to right. */
|
|
899
|
+
dir?(): 'ltr' | 'rtl';
|
|
900
|
+
t: ChartTranslate;
|
|
901
|
+
/** Switch language. The translation loads once; until it lands `t` reads English. Resolves when
|
|
902
|
+
* the switch is complete (or has settled on English because the chunk failed). */
|
|
903
|
+
setLocale(code: string): Promise<void>;
|
|
904
|
+
/** Hear every change of `t`; a module re-renders its text in the handler. */
|
|
905
|
+
onChange(listener: () => void): () => void;
|
|
906
|
+
}
|
|
907
|
+
/** One chunk per language the widget ships, every language in `BUILT_IN_LOCALES`, fetched the
|
|
908
|
+
* first time it is chosen. */
|
|
909
|
+
declare const chartDictionaries: DictionaryLoader<{
|
|
910
|
+
readonly 'toast.dismiss': "Dismiss";
|
|
911
|
+
readonly 'toast.feedUnavailable': "No data for {symbol} from this feed.";
|
|
912
|
+
readonly 'toast.feedNoData': "No data for {symbol} yet.";
|
|
913
|
+
readonly 'toast.imageCopyFallback': "Could not copy the image. Saved a file instead.";
|
|
914
|
+
readonly 'toast.imageFailed': "Could not capture the chart image.";
|
|
915
|
+
readonly 'toast.indicatorsNotCarried': {
|
|
916
|
+
readonly one: "{count} indicator in this saved chart is not available here and was left out.";
|
|
917
|
+
readonly other: "{count} indicators in this saved chart are not available here and were left out.";
|
|
918
|
+
};
|
|
919
|
+
readonly 'settings.menu': "Chart settings";
|
|
920
|
+
readonly 'settings.sectionAppearance': "Appearance";
|
|
921
|
+
readonly 'settings.background': "Background";
|
|
922
|
+
readonly 'settings.upCandles': "Up candles";
|
|
923
|
+
readonly 'settings.downCandles': "Down candles";
|
|
924
|
+
readonly 'settings.upBorders': "Up borders";
|
|
925
|
+
readonly 'settings.downBorders': "Down borders";
|
|
926
|
+
readonly 'settings.upWicks': "Up wicks";
|
|
927
|
+
readonly 'settings.downWicks': "Down wicks";
|
|
928
|
+
readonly 'settings.sectionDisplay': "Display";
|
|
929
|
+
readonly 'settings.gridLines': "Grid lines";
|
|
930
|
+
readonly 'settings.sessionShading': "Session shading";
|
|
931
|
+
readonly 'settings.sectionScale': "Price scale";
|
|
932
|
+
readonly 'settings.sectionTheme': "Theme";
|
|
933
|
+
readonly 'settings.indicatorTitle': "{name} settings";
|
|
934
|
+
readonly 'settings.tabInputs': "Inputs";
|
|
935
|
+
readonly 'settings.tabStyle': "Style";
|
|
936
|
+
readonly 'settings.tabVisibility': "Visibility";
|
|
937
|
+
readonly 'settings.plots': "Plots";
|
|
938
|
+
readonly 'settings.levels': "Levels";
|
|
939
|
+
readonly 'settings.fills': "Fills";
|
|
940
|
+
readonly 'settings.colorOf': "{name} color";
|
|
941
|
+
readonly 'settings.lineWidthOf': "{name} line width";
|
|
942
|
+
readonly 'settings.lineStyleOf': "{name} line style";
|
|
943
|
+
readonly 'settings.visibleOf': "Show {name}";
|
|
944
|
+
readonly 'settings.lineStyleSolid': "Solid";
|
|
945
|
+
readonly 'settings.lineStyleDashed': "Dashed";
|
|
946
|
+
readonly 'settings.lineStyleDotted': "Dotted";
|
|
947
|
+
readonly 'settings.precision': "Precision";
|
|
948
|
+
readonly 'settings.precisionDefault': "Default";
|
|
949
|
+
readonly 'settings.labelsOnPriceScale': "Labels on price scale";
|
|
950
|
+
readonly 'settings.showIndicator': "Show this indicator";
|
|
951
|
+
readonly 'picker.title': "Indicators";
|
|
952
|
+
readonly 'picker.search': "Search indicators";
|
|
953
|
+
readonly 'picker.noMatches': "No matching indicators.";
|
|
954
|
+
readonly 'picker.collections': "Indicator collections";
|
|
955
|
+
readonly 'picker.personal': "Personal";
|
|
956
|
+
readonly 'picker.builtin': "Built-in";
|
|
957
|
+
readonly 'picker.favorites': "Favorites";
|
|
958
|
+
readonly 'picker.thousands': " K";
|
|
959
|
+
readonly 'picker.name': "Name";
|
|
960
|
+
readonly 'picker.author': "Author";
|
|
961
|
+
readonly 'picker.favorite': "Favorite {name}";
|
|
962
|
+
readonly 'picker.unfavorite': "Unfavorite {name}";
|
|
963
|
+
readonly 'picker.loading': "Loading indicators…";
|
|
964
|
+
readonly 'picker.unavailable': "Indicator content is unavailable. Try again.";
|
|
965
|
+
readonly 'picker.actionFailed': "The action could not be completed. Try again.";
|
|
966
|
+
readonly 'picker.add': "Add {name}";
|
|
967
|
+
readonly 'picker.notPermitted': "{name} is not available here";
|
|
968
|
+
readonly 'history.undoNamed': "Undo {change}";
|
|
969
|
+
readonly 'history.redoNamed': "Redo {change}";
|
|
970
|
+
readonly 'history.changeSymbol': "symbol change";
|
|
971
|
+
readonly 'history.changeTimeframe': "timeframe change";
|
|
972
|
+
readonly 'history.changeChartStyle': "chart style change";
|
|
973
|
+
readonly 'history.changePriceScale': "price scale change";
|
|
974
|
+
readonly 'history.changeAppearance': "appearance change";
|
|
975
|
+
readonly 'history.changeAddCompare': "add comparison";
|
|
976
|
+
readonly 'history.changeRemoveCompare': "remove comparison";
|
|
977
|
+
readonly 'history.changeCompare': "comparison change";
|
|
978
|
+
readonly 'history.changeAddIndicator': "add indicator";
|
|
979
|
+
readonly 'history.changeRemoveIndicator': "remove indicator";
|
|
980
|
+
readonly 'history.changeIndicator': "indicator change";
|
|
981
|
+
readonly 'history.changeAddDrawing': "add drawing";
|
|
982
|
+
readonly 'history.changeRemoveDrawing': "remove drawing";
|
|
983
|
+
readonly 'history.changeDrawing': "drawing change";
|
|
984
|
+
readonly 'chrome.topBar': "Chart toolbar";
|
|
985
|
+
readonly 'chrome.bottomBar': "Chart footer";
|
|
986
|
+
readonly 'chrome.symbolSearch': "Search symbol";
|
|
987
|
+
readonly 'chrome.compare': "Compare or add symbol";
|
|
988
|
+
readonly 'chrome.chartStyle': "Chart style";
|
|
989
|
+
readonly 'chrome.indicators': "Indicators";
|
|
990
|
+
readonly 'chrome.replay': "Bar replay";
|
|
991
|
+
readonly 'chrome.replayChip': "Replay";
|
|
992
|
+
readonly 'chrome.image': "Chart image";
|
|
993
|
+
readonly 'chrome.session': "Trading session";
|
|
994
|
+
readonly 'chrome.sessionsHeading': "Sessions";
|
|
995
|
+
readonly 'chrome.navigation': "Chart navigation";
|
|
996
|
+
readonly 'chrome.activeChart': "{symbol}, {timeframe}";
|
|
997
|
+
readonly 'command.extension': "Host command";
|
|
998
|
+
readonly 'command.viewReset': "Reset view";
|
|
999
|
+
readonly 'command.viewGoLive': "Go to the live edge";
|
|
1000
|
+
readonly 'command.viewZoomIn': "Zoom in";
|
|
1001
|
+
readonly 'command.viewZoomOut': "Zoom out";
|
|
1002
|
+
readonly 'command.viewScrollLeft': "Scroll back";
|
|
1003
|
+
readonly 'command.viewScrollRight': "Scroll forward";
|
|
1004
|
+
readonly 'command.priceCopy': "Copy price";
|
|
1005
|
+
readonly 'command.symbolSet': "Change symbol";
|
|
1006
|
+
readonly 'command.styleCandles': "Candles";
|
|
1007
|
+
readonly 'command.styleHollow': "Hollow candles";
|
|
1008
|
+
readonly 'command.styleBars': "Bars";
|
|
1009
|
+
readonly 'command.styleLine': "Line";
|
|
1010
|
+
readonly 'command.styleArea': "Area";
|
|
1011
|
+
readonly 'command.styleBaseline': "Baseline";
|
|
1012
|
+
readonly 'command.styleStepline': "Step line";
|
|
1013
|
+
readonly 'command.appearanceApply': "Chart appearance";
|
|
1014
|
+
readonly 'command.appearanceReset': "Reset defaults";
|
|
1015
|
+
readonly 'command.scaleNormal': "Regular price scale";
|
|
1016
|
+
readonly 'command.scaleLog': "Logarithmic price scale";
|
|
1017
|
+
readonly 'command.scalePercent': "Percentage price scale";
|
|
1018
|
+
readonly 'command.scaleIndexed': "Indexed price scale";
|
|
1019
|
+
readonly 'command.historyUndo': "Undo";
|
|
1020
|
+
readonly 'command.historyRedo': "Redo";
|
|
1021
|
+
readonly 'command.indicatorAdd': "Add indicator";
|
|
1022
|
+
readonly 'command.indicatorUpdate': "Update indicator";
|
|
1023
|
+
readonly 'command.indicatorsRemoveAll': "Remove indicators";
|
|
1024
|
+
readonly 'command.indicatorRemove': "Remove indicator";
|
|
1025
|
+
readonly 'command.indicatorHide': "Hide indicator";
|
|
1026
|
+
readonly 'command.indicatorShow': "Show indicator";
|
|
1027
|
+
readonly 'command.drawingsRemoveAll': "Remove drawings";
|
|
1028
|
+
readonly 'command.drawingDeleteSelected': "Delete selected drawing";
|
|
1029
|
+
readonly 'command.drawingArm': "Drawing tool";
|
|
1030
|
+
readonly 'command.drawingCursor': "Cursor mode";
|
|
1031
|
+
readonly 'command.drawingMagnet': "Magnet";
|
|
1032
|
+
readonly 'command.drawingStayInMode': "Stay in drawing mode";
|
|
1033
|
+
readonly 'command.drawingLockAll': "Lock all drawings";
|
|
1034
|
+
readonly 'command.drawingHide': "Hide drawings or indicators";
|
|
1035
|
+
readonly 'command.drawingSync': "Sync drawings across the layout";
|
|
1036
|
+
readonly 'command.drawingRemoveLockedPolicy': "Always remove locked drawings";
|
|
1037
|
+
readonly 'command.drawingFavorite': "Favorite drawing tool";
|
|
1038
|
+
readonly 'command.drawingFavoritesBar': "Favorite drawing tools toolbar";
|
|
1039
|
+
readonly 'command.drawingStyle': "Drawing style";
|
|
1040
|
+
readonly 'command.drawingProps': "Drawing properties";
|
|
1041
|
+
readonly 'command.drawingLock': "Lock drawing";
|
|
1042
|
+
readonly 'command.drawingClone': "Clone drawing";
|
|
1043
|
+
readonly 'command.drawingCopy': "Copy drawing";
|
|
1044
|
+
readonly 'command.drawingPaste': "Paste drawing";
|
|
1045
|
+
readonly 'command.drawingBringToFront': "Bring drawing to front";
|
|
1046
|
+
readonly 'command.drawingSendToBack': "Send drawing to back";
|
|
1047
|
+
readonly 'command.drawingBringForward': "Bring drawing forward";
|
|
1048
|
+
readonly 'command.drawingSendBackward': "Send drawing backward";
|
|
1049
|
+
readonly 'command.drawingHideSelected': "Hide drawing";
|
|
1050
|
+
readonly 'command.drawingVisibility': "Drawing visibility on timeframes";
|
|
1051
|
+
readonly 'command.drawingSettings': "Drawing settings";
|
|
1052
|
+
readonly 'command.drawingCommitEdit': "Apply drawing settings";
|
|
1053
|
+
readonly 'command.drawingPlaceImage': "Place image";
|
|
1054
|
+
readonly 'command.drawingTemplateApply': "Apply drawing template";
|
|
1055
|
+
readonly 'command.drawingTemplateSave': "Save drawing template";
|
|
1056
|
+
readonly 'command.drawingTemplateRemove': "Remove drawing template";
|
|
1057
|
+
readonly 'command.drawingTableAddRow': "Add table row";
|
|
1058
|
+
readonly 'command.drawingTableAddColumn': "Add table column";
|
|
1059
|
+
readonly 'command.drawingTableRemoveRow': "Remove table row";
|
|
1060
|
+
readonly 'command.drawingTableRemoveColumn': "Remove table column";
|
|
1061
|
+
readonly 'command.drawingCancel': "Cancel drawing";
|
|
1062
|
+
readonly 'command.compareOpen': "Compare or add symbol";
|
|
1063
|
+
readonly 'command.compareAdd': "Add comparison";
|
|
1064
|
+
readonly 'command.compareRemove': "Remove comparison";
|
|
1065
|
+
readonly 'command.compareVisible': "Show or hide a comparison";
|
|
1066
|
+
readonly 'command.compareChangeSymbol': "Change compared symbol";
|
|
1067
|
+
readonly 'command.replayStart': "Start bar replay";
|
|
1068
|
+
readonly 'command.replayStartFirst': "Start bar replay at the first available date";
|
|
1069
|
+
readonly 'command.replayExit': "Exit bar replay";
|
|
1070
|
+
readonly 'command.replayPlay': "Play replay";
|
|
1071
|
+
readonly 'command.replayPause': "Pause replay";
|
|
1072
|
+
readonly 'command.replayStepForward': "Step forward";
|
|
1073
|
+
readonly 'command.replayStepBack': "Step back";
|
|
1074
|
+
readonly 'command.replayGoLive': "Replay to the live edge";
|
|
1075
|
+
readonly 'command.replaySpeed': "Replay speed";
|
|
1076
|
+
readonly 'command.replayTimeframe': "Replay update timeframe";
|
|
1077
|
+
readonly 'command.timeframeSet': "Timeframe";
|
|
1078
|
+
readonly 'command.subsessionRegular': "Regular hours";
|
|
1079
|
+
readonly 'command.subsessionExtended': "Extended hours";
|
|
1080
|
+
readonly 'command.rangeSet': "Date range";
|
|
1081
|
+
readonly 'command.timezoneSet': "Timezone";
|
|
1082
|
+
readonly 'command.themeLight': "Light theme";
|
|
1083
|
+
readonly 'command.themeDark': "Dark theme";
|
|
1084
|
+
readonly 'command.themeToggle': "Switch theme";
|
|
1085
|
+
readonly 'command.themeSet': "Set theme";
|
|
1086
|
+
readonly 'command.localeSet': "Language";
|
|
1087
|
+
readonly 'command.fullscreenEnter': "Fullscreen";
|
|
1088
|
+
readonly 'command.fullscreenExit': "Exit fullscreen";
|
|
1089
|
+
readonly 'command.fullscreenToggle': "Toggle fullscreen";
|
|
1090
|
+
readonly 'command.imageCapture': "Capture image";
|
|
1091
|
+
readonly 'command.imageDownload': "Download image";
|
|
1092
|
+
readonly 'command.dataDownload': "Download chart data";
|
|
1093
|
+
readonly 'command.imageCopy': "Copy image";
|
|
1094
|
+
readonly 'command.layoutArrangement': "Layout";
|
|
1095
|
+
readonly 'command.layoutActive': "Active chart";
|
|
1096
|
+
readonly 'command.layoutSync': "Chart synchronization";
|
|
1097
|
+
readonly 'command.layoutActivateNext': "Next chart in layout";
|
|
1098
|
+
readonly 'command.layoutActivatePrevious': "Previous chart in layout";
|
|
1099
|
+
readonly 'command.layoutMaximize': "Maximize or restore the active chart";
|
|
1100
|
+
readonly 'command.layoutSave': "Save layout";
|
|
1101
|
+
readonly 'command.layoutRename': "Rename layout";
|
|
1102
|
+
readonly 'command.layoutLoad': "Open layout";
|
|
1103
|
+
readonly 'command.layoutOpen': "Open layout…";
|
|
1104
|
+
readonly 'command.layoutDelete': "Delete layout";
|
|
1105
|
+
readonly 'command.layoutCreate': "Create new layout";
|
|
1106
|
+
readonly 'command.layoutAutosave': "Autosave layout";
|
|
1107
|
+
readonly 'drawing.toolbar': "Drawing tools";
|
|
1108
|
+
readonly 'drawing.groupTrend': "Trend tools";
|
|
1109
|
+
readonly 'drawing.groupFibGann': "Fibonacci & Gann";
|
|
1110
|
+
readonly 'drawing.groupPatterns': "Patterns";
|
|
1111
|
+
readonly 'drawing.groupForecast': "Forecast & measure";
|
|
1112
|
+
readonly 'drawing.groupGlyphs': "Emojis & stickers";
|
|
1113
|
+
readonly 'drawing.shapes': "Shapes";
|
|
1114
|
+
readonly 'drawing.textNotes': "Text & notes";
|
|
1115
|
+
readonly 'drawing.groupMenu': "{group} menu";
|
|
1116
|
+
readonly 'drawing.sectionLines': "Lines";
|
|
1117
|
+
readonly 'drawing.sectionChannels': "Channels";
|
|
1118
|
+
readonly 'drawing.sectionPitchforks': "Pitchforks";
|
|
1119
|
+
readonly 'drawing.sectionFibonacci': "Fibonacci";
|
|
1120
|
+
readonly 'drawing.sectionGann': "Gann";
|
|
1121
|
+
readonly 'drawing.sectionChartPatterns': "Chart patterns";
|
|
1122
|
+
readonly 'drawing.sectionElliott': "Elliott waves";
|
|
1123
|
+
readonly 'drawing.sectionCycles': "Cycles";
|
|
1124
|
+
readonly 'drawing.sectionForecasting': "Forecasting";
|
|
1125
|
+
readonly 'drawing.sectionVolumeBased': "Volume based";
|
|
1126
|
+
readonly 'drawing.sectionMeasures': "Measures";
|
|
1127
|
+
readonly 'drawing.sectionBrushes': "Brushes";
|
|
1128
|
+
readonly 'drawing.sectionArrows': "Arrows";
|
|
1129
|
+
readonly 'drawing.sectionContent': "Content";
|
|
1130
|
+
readonly 'drawing.sectionGlyphs': "Emojis, stickers, icons";
|
|
1131
|
+
readonly 'drawing.cursor': "Cursor";
|
|
1132
|
+
readonly 'drawing.cursorMenu': "Cursor menu";
|
|
1133
|
+
readonly 'drawing.cursorCross': "Cross";
|
|
1134
|
+
readonly 'drawing.cursorDot': "Dot";
|
|
1135
|
+
readonly 'drawing.cursorArrow': "Arrow";
|
|
1136
|
+
readonly 'drawing.cursorEraser': "Eraser";
|
|
1137
|
+
readonly 'drawing.measure': "Measure";
|
|
1138
|
+
readonly 'drawing.zoomIn': "Zoom in";
|
|
1139
|
+
readonly 'drawing.magnet': "Magnet";
|
|
1140
|
+
readonly 'drawing.magnetMenu': "Magnet menu";
|
|
1141
|
+
readonly 'drawing.magnetWeak': "Weak magnet";
|
|
1142
|
+
readonly 'drawing.magnetStrong': "Strong magnet";
|
|
1143
|
+
readonly 'drawing.stayInDrawingMode': "Stay in drawing mode";
|
|
1144
|
+
readonly 'drawing.lockAll': "Lock all drawings";
|
|
1145
|
+
readonly 'drawing.unlockAll': "Unlock all drawings";
|
|
1146
|
+
readonly 'drawing.hideMenu': "Hide menu";
|
|
1147
|
+
readonly 'drawing.hideDrawings': "Hide drawings";
|
|
1148
|
+
readonly 'drawing.showDrawings': "Show drawings";
|
|
1149
|
+
readonly 'drawing.hideIndicators': "Hide indicators";
|
|
1150
|
+
readonly 'drawing.showIndicators': "Show indicators";
|
|
1151
|
+
readonly 'drawing.hideAll': "Hide all";
|
|
1152
|
+
readonly 'drawing.showAll': "Show all";
|
|
1153
|
+
readonly 'drawing.syncLabel': "Sync drawings across the layout";
|
|
1154
|
+
readonly 'drawing.syncOnHelp': "New drawings are replicated to all charts in the layout and shown when the same ticker is selected";
|
|
1155
|
+
readonly 'drawing.syncOffHelp': "New drawings stay on the chart that drew them";
|
|
1156
|
+
readonly 'drawing.removeMenu': "Remove menu";
|
|
1157
|
+
readonly 'drawing.removeDrawings': "Remove drawings";
|
|
1158
|
+
readonly 'drawing.countDrawings': {
|
|
1159
|
+
readonly one: "{count} drawing";
|
|
1160
|
+
readonly other: "{count} drawings";
|
|
1161
|
+
};
|
|
1162
|
+
readonly 'drawing.countIndicators': {
|
|
1163
|
+
readonly one: "{count} indicator";
|
|
1164
|
+
readonly other: "{count} indicators";
|
|
1165
|
+
};
|
|
1166
|
+
readonly 'drawing.removeItems': "Remove {items}";
|
|
1167
|
+
readonly 'drawing.removeBoth': "Remove {drawings} & {indicators}";
|
|
1168
|
+
readonly 'drawing.nothingToRemove': "Nothing to remove";
|
|
1169
|
+
readonly 'drawing.alwaysRemoveLocked': "Always remove locked drawings";
|
|
1170
|
+
readonly 'drawing.favTools': "Favorite drawing tools";
|
|
1171
|
+
readonly 'drawing.favToolsBar': "Favorite drawing tools toolbar";
|
|
1172
|
+
readonly 'drawing.favAdd': "Add {tool} to favorites";
|
|
1173
|
+
readonly 'drawing.favRemove': "Remove {tool} from favorites";
|
|
1174
|
+
readonly 'drawing.moveToolbar': "Move toolbar";
|
|
1175
|
+
readonly 'drawing.moveFavoritesToolbar': "Move favorites toolbar";
|
|
1176
|
+
readonly 'drawing.settingsBar': "Selected drawing";
|
|
1177
|
+
readonly 'drawing.templates': "Templates";
|
|
1178
|
+
readonly 'drawing.drawingTemplates': "Drawing templates";
|
|
1179
|
+
readonly 'drawing.saveTemplateAs': "Save drawing template as...";
|
|
1180
|
+
readonly 'drawing.applyDefaultTemplate': "Apply default drawing template";
|
|
1181
|
+
readonly 'drawing.removeTemplateNamed': "Remove template {name}";
|
|
1182
|
+
readonly 'drawing.remove': "Remove";
|
|
1183
|
+
readonly 'drawing.drawingColor': "Drawing color";
|
|
1184
|
+
readonly 'drawing.backgroundColor': "Background color";
|
|
1185
|
+
readonly 'drawing.thickness': "Thickness";
|
|
1186
|
+
readonly 'drawing.lineThickness': "Line thickness";
|
|
1187
|
+
readonly 'drawing.thicknessValue': "Thickness {n}px";
|
|
1188
|
+
readonly 'drawing.lineStyle': "Line style";
|
|
1189
|
+
readonly 'drawing.lineStyleValue': "Line style {name}";
|
|
1190
|
+
readonly 'drawing.lineSolid': "Line";
|
|
1191
|
+
readonly 'drawing.lineDashed': "Dashed line";
|
|
1192
|
+
readonly 'drawing.lineDotted': "Dotted line";
|
|
1193
|
+
readonly 'drawing.settings': "Settings";
|
|
1194
|
+
readonly 'drawing.drawingSettings': "Drawing settings";
|
|
1195
|
+
readonly 'drawing.lock': "Lock";
|
|
1196
|
+
readonly 'drawing.unlock': "Unlock";
|
|
1197
|
+
readonly 'drawing.lockDrawing': "Lock drawing";
|
|
1198
|
+
readonly 'drawing.unlockDrawing': "Unlock drawing";
|
|
1199
|
+
readonly 'drawing.deleteDrawing': "Delete drawing";
|
|
1200
|
+
readonly 'drawing.more': "More";
|
|
1201
|
+
readonly 'drawing.moreActions': "More drawing actions";
|
|
1202
|
+
readonly 'drawing.visualOrder': "Visual order";
|
|
1203
|
+
readonly 'drawing.visibilityOnTimeframes': "Visibility on timeframes";
|
|
1204
|
+
readonly 'drawing.clone': "Clone";
|
|
1205
|
+
readonly 'drawing.copy': "Copy";
|
|
1206
|
+
readonly 'drawing.modifierControl': "Ctrl";
|
|
1207
|
+
readonly 'drawing.modifierCommand': "Cmd";
|
|
1208
|
+
readonly 'drawing.hintClone': "{modifier} + Drag";
|
|
1209
|
+
readonly 'drawing.hintCopy': "{modifier} + C";
|
|
1210
|
+
readonly 'drawing.hintPaste': "{modifier} + V";
|
|
1211
|
+
readonly 'drawing.deleteWithKey': "Delete (Del)";
|
|
1212
|
+
readonly 'drawing.statusDrawingsHidden': "Drawings hidden";
|
|
1213
|
+
readonly 'drawing.statusDrawingsShown': "Drawings shown";
|
|
1214
|
+
readonly 'drawing.statusIndicatorsHidden': "Indicators hidden";
|
|
1215
|
+
readonly 'drawing.statusIndicatorsShown': "Indicators shown";
|
|
1216
|
+
readonly 'drawing.statusAllHidden': "Drawings and indicators hidden";
|
|
1217
|
+
readonly 'drawing.statusAllShown': "Drawings and indicators shown";
|
|
1218
|
+
readonly 'drawing.statusAllLocked': "All drawings locked";
|
|
1219
|
+
readonly 'drawing.statusAllUnlocked': "All drawings unlocked";
|
|
1220
|
+
readonly 'drawing.hide': "Hide";
|
|
1221
|
+
readonly 'drawing.bringToFront': "Bring to front";
|
|
1222
|
+
readonly 'drawing.sendToBack': "Send to back";
|
|
1223
|
+
readonly 'drawing.bringForward': "Bring forward";
|
|
1224
|
+
readonly 'drawing.sendBackward': "Send backward";
|
|
1225
|
+
readonly 'drawing.visCurrentAndAbove': "Current timeframe and above";
|
|
1226
|
+
readonly 'drawing.visCurrentAndBelow': "Current timeframe and below";
|
|
1227
|
+
readonly 'drawing.visCurrentOnly': "Current timeframe only";
|
|
1228
|
+
readonly 'drawing.visAll': "All timeframes";
|
|
1229
|
+
readonly 'drawing.saveTemplate': "Save drawing template";
|
|
1230
|
+
readonly 'drawing.templateName': "Template name";
|
|
1231
|
+
readonly 'drawing.save': "Save";
|
|
1232
|
+
readonly 'drawing.deleteTemplateTitle': "Delete this template?";
|
|
1233
|
+
readonly 'drawing.deleteTemplateBody': "Doing this will permanently delete your \"{name}\" drawing template.";
|
|
1234
|
+
readonly 'drawing.settingsTitle': "{tool} settings";
|
|
1235
|
+
readonly 'drawing.rename': "Rename";
|
|
1236
|
+
readonly 'drawing.name': "Name";
|
|
1237
|
+
readonly 'drawing.tabInputs': "Inputs";
|
|
1238
|
+
readonly 'drawing.tabStyle': "Style";
|
|
1239
|
+
readonly 'drawing.tabText': "Text";
|
|
1240
|
+
readonly 'drawing.tabCoordinates': "Coordinates";
|
|
1241
|
+
readonly 'drawing.tabVisibility': "Visibility";
|
|
1242
|
+
readonly 'drawing.template': "Template";
|
|
1243
|
+
readonly 'drawing.saveAs': "Save as…";
|
|
1244
|
+
readonly 'drawing.applyDefaults': "Apply defaults";
|
|
1245
|
+
readonly 'drawing.cancel': "Cancel";
|
|
1246
|
+
readonly 'drawing.ok': "Ok";
|
|
1247
|
+
readonly 'drawing.delete': "Delete";
|
|
1248
|
+
readonly 'drawing.close': "Close";
|
|
1249
|
+
readonly 'drawing.color': "Color";
|
|
1250
|
+
readonly 'drawing.rowLine': "Line";
|
|
1251
|
+
readonly 'drawing.background': "Background";
|
|
1252
|
+
readonly 'drawing.border': "Border";
|
|
1253
|
+
readonly 'drawing.profitColor': "Target color";
|
|
1254
|
+
readonly 'drawing.stopColor': "Stop color";
|
|
1255
|
+
readonly 'drawing.textColor': "Text color";
|
|
1256
|
+
readonly 'drawing.fontSize': "Font size";
|
|
1257
|
+
readonly 'drawing.opacity': "Opacity";
|
|
1258
|
+
readonly 'drawing.transparency': "Transparency";
|
|
1259
|
+
readonly 'drawing.label': "Label";
|
|
1260
|
+
readonly 'drawing.labelColor': "Label color";
|
|
1261
|
+
readonly 'drawing.labels': "Labels";
|
|
1262
|
+
readonly 'drawing.left': "Left";
|
|
1263
|
+
readonly 'drawing.center': "Center";
|
|
1264
|
+
readonly 'drawing.right': "Right";
|
|
1265
|
+
readonly 'drawing.up': "Up";
|
|
1266
|
+
readonly 'drawing.down': "Down";
|
|
1267
|
+
readonly 'drawing.rowVisible': "{name} visible";
|
|
1268
|
+
readonly 'drawing.leftEnd': "Left end";
|
|
1269
|
+
readonly 'drawing.rightEnd': "Right end";
|
|
1270
|
+
readonly 'drawing.lineEndNormal': "Normal";
|
|
1271
|
+
readonly 'drawing.lineEndArrow': "Arrow";
|
|
1272
|
+
readonly 'drawing.increase': "Increase";
|
|
1273
|
+
readonly 'drawing.decrease': "Decrease";
|
|
1274
|
+
readonly 'drawing.rangeFrom': "From";
|
|
1275
|
+
readonly 'drawing.rangeTo': "To";
|
|
1276
|
+
readonly 'drawing.pickColor': "Pick a color";
|
|
1277
|
+
readonly 'drawing.extend': "Extend";
|
|
1278
|
+
readonly 'drawing.extendNone': "Don't extend";
|
|
1279
|
+
readonly 'drawing.extendLeft': "Extend left";
|
|
1280
|
+
readonly 'drawing.extendRight': "Extend right";
|
|
1281
|
+
readonly 'drawing.extendBoth': "Extend both";
|
|
1282
|
+
readonly 'drawing.extendLines': "Extend lines";
|
|
1283
|
+
readonly 'drawing.middlePoint': "Middle point";
|
|
1284
|
+
readonly 'drawing.middleLine': "Middle line";
|
|
1285
|
+
readonly 'drawing.priceLabel': "Price label";
|
|
1286
|
+
readonly 'drawing.priceLabels': "Price labels";
|
|
1287
|
+
readonly 'drawing.timeLabel': "Time label";
|
|
1288
|
+
readonly 'drawing.rowStyle': "Style";
|
|
1289
|
+
readonly 'drawing.variantOriginal': "Original";
|
|
1290
|
+
readonly 'drawing.variantSchiff': "Schiff";
|
|
1291
|
+
readonly 'drawing.variantModifiedSchiff': "Modified Schiff";
|
|
1292
|
+
readonly 'drawing.variantInside': "Inside";
|
|
1293
|
+
readonly 'drawing.sectionStats': "Stats";
|
|
1294
|
+
readonly 'drawing.percentChange': "Percent change";
|
|
1295
|
+
readonly 'drawing.dateTimeRange': "Date/time range";
|
|
1296
|
+
readonly 'drawing.volume': "Volume";
|
|
1297
|
+
readonly 'drawing.sectionInfo': "Info";
|
|
1298
|
+
readonly 'drawing.priceRange': "Price range";
|
|
1299
|
+
readonly 'drawing.barsRange': "Bars range";
|
|
1300
|
+
readonly 'drawing.angle': "Angle";
|
|
1301
|
+
readonly 'drawing.statsPosition': "Stats position";
|
|
1302
|
+
readonly 'drawing.statsHidden': "Hidden";
|
|
1303
|
+
readonly 'drawing.changeInPips': "Change in pips";
|
|
1304
|
+
readonly 'drawing.alwaysShowStats': "Always show stats";
|
|
1305
|
+
readonly 'drawing.auto': "Auto";
|
|
1306
|
+
readonly 'drawing.extendLeftLine': "Extend left line";
|
|
1307
|
+
readonly 'drawing.extendRightLine': "Extend right line";
|
|
1308
|
+
readonly 'drawing.direction': "Direction";
|
|
1309
|
+
readonly 'drawing.prices': "Prices";
|
|
1310
|
+
readonly 'drawing.levels': "Levels";
|
|
1311
|
+
readonly 'drawing.reverse': "Reverse";
|
|
1312
|
+
readonly 'drawing.fullCircles': "Full circles";
|
|
1313
|
+
readonly 'drawing.coeffsAsPercents': "Coeffs as percents";
|
|
1314
|
+
readonly 'drawing.image': "Image";
|
|
1315
|
+
readonly 'drawing.rowsLayout': "Rows Layout";
|
|
1316
|
+
readonly 'drawing.rowsByNumber': "Number Of Rows";
|
|
1317
|
+
readonly 'drawing.ticksPerRow': "Ticks Per Row";
|
|
1318
|
+
readonly 'drawing.rowSize': "Row Size";
|
|
1319
|
+
readonly 'drawing.upDown': "Up/Down";
|
|
1320
|
+
readonly 'drawing.total': "Total";
|
|
1321
|
+
readonly 'drawing.delta': "Delta";
|
|
1322
|
+
readonly 'drawing.valueAreaVolume': "Value Area Volume";
|
|
1323
|
+
readonly 'drawing.widthPercent': "Width (% of the box)";
|
|
1324
|
+
readonly 'drawing.placement': "Placement";
|
|
1325
|
+
readonly 'drawing.developingPoc': "Developing POC";
|
|
1326
|
+
readonly 'drawing.developingVa': "Developing VA";
|
|
1327
|
+
readonly 'drawing.source': "Source";
|
|
1328
|
+
readonly 'drawing.mode': "Mode";
|
|
1329
|
+
readonly 'drawing.modeHlBars': "HL bars";
|
|
1330
|
+
readonly 'drawing.modeOcBars': "OC bars";
|
|
1331
|
+
readonly 'drawing.modeLineOpen': "Line - open";
|
|
1332
|
+
readonly 'drawing.modeLineHigh': "Line - high";
|
|
1333
|
+
readonly 'drawing.modeLineLow': "Line - low";
|
|
1334
|
+
readonly 'drawing.modeLineClose': "Line - close";
|
|
1335
|
+
readonly 'drawing.modeLineHl2': "Line - HL/2";
|
|
1336
|
+
readonly 'drawing.mirrored': "Mirrored";
|
|
1337
|
+
readonly 'drawing.flipped': "Flipped";
|
|
1338
|
+
readonly 'drawing.avgHlMinticks': "Avg HL in minticks";
|
|
1339
|
+
readonly 'drawing.variance': "Variance";
|
|
1340
|
+
readonly 'drawing.candles': "Candles";
|
|
1341
|
+
readonly 'drawing.borders': "Borders";
|
|
1342
|
+
readonly 'drawing.wick': "Wick";
|
|
1343
|
+
readonly 'drawing.useUpperDeviation': "Use Upper Deviation";
|
|
1344
|
+
readonly 'drawing.useLowerDeviation': "Use Lower Deviation";
|
|
1345
|
+
readonly 'drawing.risk': "Risk";
|
|
1346
|
+
readonly 'drawing.accountSize': "Account size";
|
|
1347
|
+
readonly 'drawing.lotSize': "Lot size";
|
|
1348
|
+
readonly 'drawing.leverage': "Leverage";
|
|
1349
|
+
readonly 'drawing.compactStatsMode': "Compact stats mode";
|
|
1350
|
+
readonly 'drawing.levelVisible': "Level {value} visible";
|
|
1351
|
+
readonly 'drawing.levelText': "Level {value} text";
|
|
1352
|
+
readonly 'drawing.removeLevel': "Remove level {value}";
|
|
1353
|
+
readonly 'drawing.addLevel': "Add level";
|
|
1354
|
+
readonly 'drawing.trendLine': "Trend line";
|
|
1355
|
+
readonly 'drawing.levelsLine': "Levels line";
|
|
1356
|
+
readonly 'drawing.extendLinesLeft': "Extend lines left";
|
|
1357
|
+
readonly 'drawing.extendLinesRight': "Extend lines right";
|
|
1358
|
+
readonly 'drawing.levelOn': "Level {n}";
|
|
1359
|
+
readonly 'drawing.levelValue': "Level {n} value";
|
|
1360
|
+
readonly 'drawing.levelColor': "Level {n} color";
|
|
1361
|
+
readonly 'drawing.useOneColor': "Use one color";
|
|
1362
|
+
readonly 'drawing.backgroundOpacity': "Background opacity";
|
|
1363
|
+
readonly 'drawing.values': "Values";
|
|
1364
|
+
readonly 'drawing.percents': "Percents";
|
|
1365
|
+
readonly 'drawing.levelWords': "Text";
|
|
1366
|
+
readonly 'drawing.levelsOnLogScale': "Fib levels based on log scale";
|
|
1367
|
+
readonly 'drawing.median': "Median";
|
|
1368
|
+
readonly 'drawing.counterclockwise': "Counterclockwise";
|
|
1369
|
+
readonly 'drawing.fans': "Fans";
|
|
1370
|
+
readonly 'drawing.arcs': "Arcs";
|
|
1371
|
+
readonly 'drawing.fanOn': "Fan {n}";
|
|
1372
|
+
readonly 'drawing.fanColor': "Fan {n} color";
|
|
1373
|
+
readonly 'drawing.arcOn': "Arc {n}";
|
|
1374
|
+
readonly 'drawing.arcColor': "Arc {n} color";
|
|
1375
|
+
readonly 'drawing.priceBarRatio': "Price/bar ratio";
|
|
1376
|
+
readonly 'drawing.rangesAndRatio': "Ranges and ratio";
|
|
1377
|
+
readonly 'drawing.wave': "Wave";
|
|
1378
|
+
readonly 'drawing.lines': "Lines";
|
|
1379
|
+
readonly 'drawing.degree': "Degree";
|
|
1380
|
+
readonly 'drawing.degreeSupermillennium': "Supermillennium";
|
|
1381
|
+
readonly 'drawing.degreeMillennium': "Millennium";
|
|
1382
|
+
readonly 'drawing.degreeSubmillennium': "Submillennium";
|
|
1383
|
+
readonly 'drawing.degreeGrandSupercycle': "Grand supercycle";
|
|
1384
|
+
readonly 'drawing.degreeSupercycle': "Supercycle";
|
|
1385
|
+
readonly 'drawing.degreeCycle': "Cycle";
|
|
1386
|
+
readonly 'drawing.degreePrimary': "Primary";
|
|
1387
|
+
readonly 'drawing.degreeIntermediate': "Intermediate";
|
|
1388
|
+
readonly 'drawing.degreeMinor': "Minor";
|
|
1389
|
+
readonly 'drawing.degreeMinute': "Minute";
|
|
1390
|
+
readonly 'drawing.degreeMinuette': "Minuette";
|
|
1391
|
+
readonly 'drawing.degreeSubminuette': "Subminuette";
|
|
1392
|
+
readonly 'drawing.degreeMicro': "Micro";
|
|
1393
|
+
readonly 'drawing.degreeSubmicro': "Submicro";
|
|
1394
|
+
readonly 'drawing.degreeMinuscule': "Minuscule";
|
|
1395
|
+
readonly 'drawing.upperDeviation': "Upper Deviation";
|
|
1396
|
+
readonly 'drawing.lowerDeviation': "Lower Deviation";
|
|
1397
|
+
readonly 'drawing.base': "Base";
|
|
1398
|
+
readonly 'drawing.pearsonsR': "Pearson's R";
|
|
1399
|
+
readonly 'drawing.sourceOpen': "Open";
|
|
1400
|
+
readonly 'drawing.sourceHigh': "High";
|
|
1401
|
+
readonly 'drawing.sourceLow': "Low";
|
|
1402
|
+
readonly 'drawing.sourceClose': "Close";
|
|
1403
|
+
readonly 'drawing.sourceVolume': "Volume";
|
|
1404
|
+
readonly 'drawing.sourceHl2': "(H + L)/2";
|
|
1405
|
+
readonly 'drawing.sourceHlc3': "(H + L + C)/3";
|
|
1406
|
+
readonly 'drawing.sourceOhlc4': "(O + H + L + C)/4";
|
|
1407
|
+
readonly 'drawing.sourceHlcc4': "(H + L + C + C)/4";
|
|
1408
|
+
readonly 'drawing.pricesColor': "Prices color";
|
|
1409
|
+
readonly 'drawing.priceOffset': "Price offset";
|
|
1410
|
+
readonly 'drawing.textWrap': "Text wrap";
|
|
1411
|
+
readonly 'drawing.labelBorder': "Label border";
|
|
1412
|
+
readonly 'drawing.labelText': "Label text";
|
|
1413
|
+
readonly 'drawing.lineColor': "Line color";
|
|
1414
|
+
readonly 'drawing.emojiPin': "Emoji pin";
|
|
1415
|
+
readonly 'drawing.emoji': "Emoji";
|
|
1416
|
+
readonly 'drawing.plateColor': "Plate color";
|
|
1417
|
+
readonly 'drawing.arrowMark': "Arrow";
|
|
1418
|
+
readonly 'drawing.flag': "Flag";
|
|
1419
|
+
readonly 'drawing.coordPositionBar': "#{n} (vertical position %, bar)";
|
|
1420
|
+
readonly 'drawing.verticalPosition': "Vertical position %";
|
|
1421
|
+
readonly 'drawing.riskUnit': "Risk unit";
|
|
1422
|
+
readonly 'drawing.riskAmount': "Amount";
|
|
1423
|
+
readonly 'drawing.entryPrice': "Entry price";
|
|
1424
|
+
readonly 'drawing.profitLevel': "Profit level";
|
|
1425
|
+
readonly 'drawing.stopLevel': "Stop level";
|
|
1426
|
+
readonly 'drawing.ticks': "Ticks";
|
|
1427
|
+
readonly 'drawing.price': "Price";
|
|
1428
|
+
readonly 'drawing.qtyPrecision': "QTY precision";
|
|
1429
|
+
readonly 'drawing.qtyDefault': "Default";
|
|
1430
|
+
readonly 'drawing.qtyInteger': "Integer";
|
|
1431
|
+
readonly 'drawing.qtyOneDecimal': "1 decimal";
|
|
1432
|
+
readonly 'drawing.qtyDecimals': "{n} decimals";
|
|
1433
|
+
readonly 'drawing.text': "Text";
|
|
1434
|
+
readonly 'drawing.statTpPriceOffset': "TP price offset";
|
|
1435
|
+
readonly 'drawing.statTpPercentOffset': "TP percent offset";
|
|
1436
|
+
readonly 'drawing.statTpTickOffset': "TP tick offset";
|
|
1437
|
+
readonly 'drawing.statTpAmount': "TP amount";
|
|
1438
|
+
readonly 'drawing.statTpPl': "TP PL";
|
|
1439
|
+
readonly 'drawing.statOpenClosePl': "Open/closed PL";
|
|
1440
|
+
readonly 'drawing.statQty': "Qty";
|
|
1441
|
+
readonly 'drawing.statRiskRewardRatio': "Risk/reward ratio";
|
|
1442
|
+
readonly 'drawing.statSlPriceOffset': "SL price offset";
|
|
1443
|
+
readonly 'drawing.statSlPercentOffset': "SL percent offset";
|
|
1444
|
+
readonly 'drawing.statSlTickOffset': "SL tick offset";
|
|
1445
|
+
readonly 'drawing.statSlAmount': "SL amount";
|
|
1446
|
+
readonly 'drawing.statSlPl': "SL PL";
|
|
1447
|
+
readonly 'drawing.profileExtendRight': "Extend Right";
|
|
1448
|
+
readonly 'drawing.volumeProfile': "Volume profile";
|
|
1449
|
+
readonly 'drawing.valuesColor': "Values color";
|
|
1450
|
+
readonly 'drawing.upVolume': "Up Volume";
|
|
1451
|
+
readonly 'drawing.downVolume': "Down Volume";
|
|
1452
|
+
readonly 'drawing.valueAreaUp': "Value Area Up";
|
|
1453
|
+
readonly 'drawing.valueAreaDown': "Value Area Down";
|
|
1454
|
+
readonly 'drawing.vah': "VAH";
|
|
1455
|
+
readonly 'drawing.val': "VAL";
|
|
1456
|
+
readonly 'drawing.poc': "POC";
|
|
1457
|
+
readonly 'drawing.histogramBox': "Histogram Box";
|
|
1458
|
+
readonly 'drawing.labelsOnPriceScale': "Labels on price scale";
|
|
1459
|
+
readonly 'drawing.bandsSettings': "Bands Settings";
|
|
1460
|
+
readonly 'drawing.bandsMode': "Bands Calculation Mode";
|
|
1461
|
+
readonly 'drawing.bandsStdev': "Standard Deviation";
|
|
1462
|
+
readonly 'drawing.bandsPercent': "Percentage";
|
|
1463
|
+
readonly 'drawing.bandsMultiplier': "Bands Multiplier #{n}";
|
|
1464
|
+
readonly 'drawing.vwap': "VWAP";
|
|
1465
|
+
readonly 'drawing.upperBand': "Upper band #{n}";
|
|
1466
|
+
readonly 'drawing.lowerBand': "Lower band #{n}";
|
|
1467
|
+
readonly 'drawing.bandBackground': "Background #{n}";
|
|
1468
|
+
readonly 'drawing.extendTop': "Extend top";
|
|
1469
|
+
readonly 'drawing.extendBottom': "Extend bottom";
|
|
1470
|
+
readonly 'drawing.labelBackground': "Label background";
|
|
1471
|
+
readonly 'drawing.sourceText': "Source text";
|
|
1472
|
+
readonly 'drawing.sourceBackground': "Source background";
|
|
1473
|
+
readonly 'drawing.sourceBorder': "Source border";
|
|
1474
|
+
readonly 'drawing.targetText': "Target text";
|
|
1475
|
+
readonly 'drawing.targetBackground': "Target background";
|
|
1476
|
+
readonly 'drawing.targetBorder': "Target border";
|
|
1477
|
+
readonly 'drawing.successText': "Success text";
|
|
1478
|
+
readonly 'drawing.successBackground': "Success background";
|
|
1479
|
+
readonly 'drawing.failureText': "Failure text";
|
|
1480
|
+
readonly 'drawing.failureBackground': "Failure background";
|
|
1481
|
+
readonly 'drawing.backgroundFirst': "First background";
|
|
1482
|
+
readonly 'drawing.backgroundSecond': "Second background";
|
|
1483
|
+
readonly 'drawing.priceLevels': "Price levels";
|
|
1484
|
+
readonly 'drawing.timeLevels': "Time levels";
|
|
1485
|
+
readonly 'drawing.priceLevelOn': "Price level {n}";
|
|
1486
|
+
readonly 'drawing.priceLevelValue': "Price level {n} value";
|
|
1487
|
+
readonly 'drawing.priceLevelColor': "Price level {n} color";
|
|
1488
|
+
readonly 'drawing.timeLevelOn': "Time level {n}";
|
|
1489
|
+
readonly 'drawing.timeLevelValue': "Time level {n} value";
|
|
1490
|
+
readonly 'drawing.timeLevelColor': "Time level {n} color";
|
|
1491
|
+
readonly 'drawing.leftLabels': "Left labels";
|
|
1492
|
+
readonly 'drawing.rightLabels': "Right labels";
|
|
1493
|
+
readonly 'drawing.topLabels': "Top labels";
|
|
1494
|
+
readonly 'drawing.bottomLabels': "Bottom labels";
|
|
1495
|
+
readonly 'drawing.grid': "Grid";
|
|
1496
|
+
readonly 'drawing.angles': "Angles";
|
|
1497
|
+
readonly 'drawing.bold': "Bold";
|
|
1498
|
+
readonly 'drawing.italic': "Italic";
|
|
1499
|
+
readonly 'drawing.addText': "Add text";
|
|
1500
|
+
readonly 'drawing.textAlignment': "Text alignment";
|
|
1501
|
+
readonly 'drawing.top': "Top";
|
|
1502
|
+
readonly 'drawing.middle': "Middle";
|
|
1503
|
+
readonly 'drawing.bottom': "Bottom";
|
|
1504
|
+
readonly 'drawing.inside': "Inside";
|
|
1505
|
+
readonly 'drawing.textOrientation': "Text orientation";
|
|
1506
|
+
readonly 'drawing.horizontal': "Horizontal";
|
|
1507
|
+
readonly 'drawing.vertical': "Vertical";
|
|
1508
|
+
readonly 'drawing.textPlaceholder': "Text";
|
|
1509
|
+
readonly 'drawing.textEditor': "Drawing text";
|
|
1510
|
+
readonly 'drawing.addColumnRight': "Add column to right";
|
|
1511
|
+
readonly 'drawing.addRowBelow': "Add row below";
|
|
1512
|
+
readonly 'drawing.removeRow': "Remove row";
|
|
1513
|
+
readonly 'drawing.removeColumn': "Remove column";
|
|
1514
|
+
readonly 'drawing.coordBar': "#{n} (bar)";
|
|
1515
|
+
readonly 'drawing.coordPrice': "#{n} (price)";
|
|
1516
|
+
readonly 'drawing.coordPriceBar': "#{n} (price, bar)";
|
|
1517
|
+
readonly 'drawing.unitTicks': "Ticks";
|
|
1518
|
+
readonly 'drawing.unitSeconds': "Seconds";
|
|
1519
|
+
readonly 'drawing.unitMinutes': "Minutes";
|
|
1520
|
+
readonly 'drawing.unitHours': "Hours";
|
|
1521
|
+
readonly 'drawing.unitDays': "Days";
|
|
1522
|
+
readonly 'drawing.unitWeeks': "Weeks";
|
|
1523
|
+
readonly 'drawing.unitMonths': "Months";
|
|
1524
|
+
readonly 'drawing.timeframePinnedNote': "A drawing stays on at least one timeframe, so it can always be reached again.";
|
|
1525
|
+
readonly 'drawing.colorSwatch': "Color {hex}";
|
|
1526
|
+
readonly 'drawing.addCustomColor': "Add custom color";
|
|
1527
|
+
readonly 'drawing.saturationValue': "Saturation and brightness";
|
|
1528
|
+
readonly 'drawing.hue': "Hue";
|
|
1529
|
+
readonly 'drawing.hexColor': "Hex color";
|
|
1530
|
+
readonly 'drawing.add': "Add";
|
|
1531
|
+
readonly 'drawing.glyphPicker': "Glyph picker";
|
|
1532
|
+
readonly 'drawing.kindEmojis': "Emojis";
|
|
1533
|
+
readonly 'drawing.kindStickers': "Stickers";
|
|
1534
|
+
readonly 'drawing.kindIcons': "Icons";
|
|
1535
|
+
readonly 'drawing.recentlyUsed': "Recently used";
|
|
1536
|
+
readonly 'drawing.recentGlyph': "Recent {glyph}";
|
|
1537
|
+
readonly 'drawing.stickersSoon': "No sticker set is installed.";
|
|
1538
|
+
readonly 'drawing.glyphCatSmileys': "Smileys & People";
|
|
1539
|
+
readonly 'drawing.glyphCatNature': "Animals & Nature";
|
|
1540
|
+
readonly 'drawing.glyphCatFood': "Food & Drink";
|
|
1541
|
+
readonly 'drawing.glyphCatActivity': "Activity";
|
|
1542
|
+
readonly 'drawing.glyphCatTravel': "Travel & Places";
|
|
1543
|
+
readonly 'drawing.glyphCatObjects': "Objects";
|
|
1544
|
+
readonly 'drawing.glyphCatSymbols': "Symbols";
|
|
1545
|
+
readonly 'drawing.glyphCatFlags': "Flags";
|
|
1546
|
+
readonly 'drawing.glyphCatIconArrows': "Arrows";
|
|
1547
|
+
readonly 'drawing.glyphCatIconCurrency': "Currency";
|
|
1548
|
+
readonly 'drawing.glyphCatIconGestures': "Gestures and smileys";
|
|
1549
|
+
readonly 'drawing.glyphCatIconNature': "Nature";
|
|
1550
|
+
readonly 'drawing.glyphCatIconSpecial': "Special";
|
|
1551
|
+
readonly 'drawing.glyphCatIconSymbols': "Symbols and flags";
|
|
1552
|
+
readonly 'drawing.imageReading': "Reading...";
|
|
1553
|
+
readonly 'drawing.chooseImage': "Choose image";
|
|
1554
|
+
readonly 'drawing.imageFormats': "JPG, PNG or WEBP";
|
|
1555
|
+
readonly 'drawing.imageMaxSize': "Max size 2MB";
|
|
1556
|
+
readonly 'drawing.imageDimensions': "{width} x {height}";
|
|
1557
|
+
readonly 'drawing.imageErrorType': "That file is not a JPG, PNG or WEBP. Pick one of those three formats.";
|
|
1558
|
+
readonly 'drawing.imageErrorSize': "That image is {size}. The limit is 2MB.";
|
|
1559
|
+
readonly 'drawing.imageErrorRead': "That file could not be read. Try picking it again.";
|
|
1560
|
+
readonly 'drawing.imageErrorDecode': "That image could not be opened. It may be damaged.";
|
|
1561
|
+
readonly 'search.title': "Symbol search";
|
|
1562
|
+
readonly 'search.compareTitle': "Compare symbols";
|
|
1563
|
+
readonly 'search.changeSymbolTitle': "Change symbol";
|
|
1564
|
+
readonly 'search.placeholder': "Search symbol";
|
|
1565
|
+
readonly 'search.clear': "Clear";
|
|
1566
|
+
readonly 'search.close': "Close";
|
|
1567
|
+
readonly 'search.noMatches': "No symbols match your criteria";
|
|
1568
|
+
readonly 'search.loadingMore': "Loading more";
|
|
1569
|
+
readonly 'search.failed': "Search failed.";
|
|
1570
|
+
readonly 'search.results': "Symbols";
|
|
1571
|
+
readonly 'search.samePercent': "Same % scale";
|
|
1572
|
+
readonly 'search.newScale': "New price scale";
|
|
1573
|
+
readonly 'search.newPane': "New pane";
|
|
1574
|
+
readonly 'search.added': "Added symbols";
|
|
1575
|
+
readonly 'search.recent': "Recent symbols";
|
|
1576
|
+
readonly 'search.addedMark': "{symbol} is on the chart. Click to remove.";
|
|
1577
|
+
readonly 'search.compareEmpty': "No symbols here yet. Why not add some?";
|
|
1578
|
+
readonly 'search.allClasses': "All";
|
|
1579
|
+
readonly 'search.classFilter': "Asset class";
|
|
1580
|
+
readonly 'search.limitToScope': "Limit search to {scope}";
|
|
1581
|
+
readonly 'search.opDivision': "Division";
|
|
1582
|
+
readonly 'search.opSubtraction': "Subtraction";
|
|
1583
|
+
readonly 'search.opAddition': "Addition";
|
|
1584
|
+
readonly 'search.opMultiplication': "Multiplication";
|
|
1585
|
+
readonly 'search.opExponentiation': "Exponentiation";
|
|
1586
|
+
readonly 'search.opReciprocal': "Reciprocal";
|
|
1587
|
+
readonly 'search.opsHide': "Hide spread operators";
|
|
1588
|
+
readonly 'search.opsShow': "Show spread operators";
|
|
1589
|
+
readonly 'search.ops': "Spread operators";
|
|
1590
|
+
readonly 'status.title': "Market status";
|
|
1591
|
+
readonly 'status.unknownTitle': "Session unknown";
|
|
1592
|
+
readonly 'status.unknown': "This symbol's trading session has not resolved yet.";
|
|
1593
|
+
readonly 'status.endOfDayTitle': "End of day";
|
|
1594
|
+
readonly 'status.endOfDay': "Prices update once a day, after the session closes.";
|
|
1595
|
+
readonly 'status.delayed': "Prices are delayed.";
|
|
1596
|
+
readonly 'status.delayedPair': "{status} {delay}";
|
|
1597
|
+
readonly 'status.continuousTitle': "Open 24/7";
|
|
1598
|
+
readonly 'status.continuous': "This market trades around the clock and never closes.";
|
|
1599
|
+
readonly 'status.open': "Market is open for regular trading.";
|
|
1600
|
+
readonly 'status.openCloses': "Market is open for regular trading. Closes in {until}.";
|
|
1601
|
+
readonly 'status.extended': "Market is open for extended-hours trading.";
|
|
1602
|
+
readonly 'status.extendedRegular': "Market is open for extended-hours trading. Regular hours start in {until}.";
|
|
1603
|
+
readonly 'status.extendedCloses': "Market is open for extended-hours trading. Closes in {until}.";
|
|
1604
|
+
readonly 'status.pre': "Market is open for pre-market trading.";
|
|
1605
|
+
readonly 'status.preRegular': "Market is open for pre-market trading. Regular hours start in {until}.";
|
|
1606
|
+
readonly 'status.after': "Market is open for after-hours trading.";
|
|
1607
|
+
readonly 'status.afterEnds': "Market is open for after-hours trading. Ends in {until}.";
|
|
1608
|
+
readonly 'status.closed': "Market is closed.";
|
|
1609
|
+
readonly 'status.closedPre': "Market is closed. Pre-market starts in {until}.";
|
|
1610
|
+
readonly 'status.closedOpens': "Market is closed. Opens in {until}.";
|
|
1611
|
+
readonly 'status.exchangeTimezone': "Exchange timezone: {zone}";
|
|
1612
|
+
readonly 'status.durationDays': {
|
|
1613
|
+
readonly one: "{count} day";
|
|
1614
|
+
readonly other: "{count} days";
|
|
1615
|
+
};
|
|
1616
|
+
readonly 'status.durationHours': {
|
|
1617
|
+
readonly one: "{count} hour";
|
|
1618
|
+
readonly other: "{count} hours";
|
|
1619
|
+
};
|
|
1620
|
+
readonly 'status.durationMinutes': {
|
|
1621
|
+
readonly one: "{count} minute";
|
|
1622
|
+
readonly other: "{count} minutes";
|
|
1623
|
+
};
|
|
1624
|
+
readonly 'status.durationPair': "{major} {minor}";
|
|
1625
|
+
readonly 'range.oneDay': "1 Day";
|
|
1626
|
+
readonly 'range.fiveDays': "5 Days";
|
|
1627
|
+
readonly 'range.oneMonth': "1 Month";
|
|
1628
|
+
readonly 'range.threeMonths': "3 Months";
|
|
1629
|
+
readonly 'range.sixMonths': "6 Months";
|
|
1630
|
+
readonly 'range.yearToDate': "Year to date";
|
|
1631
|
+
readonly 'range.oneYear': "1 Year";
|
|
1632
|
+
readonly 'range.fiveYears': "5 Years";
|
|
1633
|
+
readonly 'range.all': "All data";
|
|
1634
|
+
readonly 'range.tip': "{range} · {timeframe} bars";
|
|
1635
|
+
readonly 'range.zoomIn': "Zoom in";
|
|
1636
|
+
readonly 'range.zoomOut': "Zoom out";
|
|
1637
|
+
readonly 'range.scrollLeft': "Scroll left";
|
|
1638
|
+
readonly 'range.scrollRight': "Scroll right";
|
|
1639
|
+
readonly 'range.reset': "Reset chart view";
|
|
1640
|
+
readonly 'range.maximizeChart': "Maximize chart";
|
|
1641
|
+
readonly 'range.restoreChart': "Restore chart";
|
|
1642
|
+
readonly 'timezone.title': "Chart timezone";
|
|
1643
|
+
readonly 'timezone.exchange': "Exchange";
|
|
1644
|
+
readonly 'timeframe.title': "Timeframe";
|
|
1645
|
+
readonly 'timeframe.all': "All timeframes";
|
|
1646
|
+
readonly 'timeframe.unitTicks': "Ticks";
|
|
1647
|
+
readonly 'timeframe.unitSeconds': "Seconds";
|
|
1648
|
+
readonly 'timeframe.unitMinutes': "Minutes";
|
|
1649
|
+
readonly 'timeframe.unitHours': "Hours";
|
|
1650
|
+
readonly 'timeframe.unitDays': "Days";
|
|
1651
|
+
readonly 'timeframe.unitWeeks': "Weeks";
|
|
1652
|
+
readonly 'timeframe.unitMonths': "Months";
|
|
1653
|
+
readonly 'timeframe.countTicks': {
|
|
1654
|
+
readonly one: "{count} Tick";
|
|
1655
|
+
readonly other: "{count} Ticks";
|
|
1656
|
+
};
|
|
1657
|
+
readonly 'timeframe.countSeconds': {
|
|
1658
|
+
readonly one: "{count} Second";
|
|
1659
|
+
readonly other: "{count} Seconds";
|
|
1660
|
+
};
|
|
1661
|
+
readonly 'timeframe.countMinutes': {
|
|
1662
|
+
readonly one: "{count} Minute";
|
|
1663
|
+
readonly other: "{count} Minutes";
|
|
1664
|
+
};
|
|
1665
|
+
readonly 'timeframe.countHours': {
|
|
1666
|
+
readonly one: "{count} Hour";
|
|
1667
|
+
readonly other: "{count} Hours";
|
|
1668
|
+
};
|
|
1669
|
+
readonly 'timeframe.countDays': {
|
|
1670
|
+
readonly one: "{count} Day";
|
|
1671
|
+
readonly other: "{count} Days";
|
|
1672
|
+
};
|
|
1673
|
+
readonly 'timeframe.countWeeks': {
|
|
1674
|
+
readonly one: "{count} Week";
|
|
1675
|
+
readonly other: "{count} Weeks";
|
|
1676
|
+
};
|
|
1677
|
+
readonly 'timeframe.countMonths': {
|
|
1678
|
+
readonly one: "{count} Month";
|
|
1679
|
+
readonly other: "{count} Months";
|
|
1680
|
+
};
|
|
1681
|
+
readonly 'timeframe.delete': "Delete {timeframe}";
|
|
1682
|
+
readonly 'timeframe.save': "Save {timeframe}";
|
|
1683
|
+
readonly 'timeframe.exists': "{timeframe} already exists";
|
|
1684
|
+
readonly 'timeframe.custom': "Custom timeframe";
|
|
1685
|
+
readonly 'timeframe.customCount': "Custom timeframe count";
|
|
1686
|
+
readonly 'timeframe.customUnit': "Custom timeframe unit";
|
|
1687
|
+
readonly 'timeframe.addCustom': "Add custom timeframe";
|
|
1688
|
+
readonly 'timeframe.increment': "Increment";
|
|
1689
|
+
readonly 'timeframe.decrement': "Decrement";
|
|
1690
|
+
readonly 'indicator.smaName': "Simple Moving Average";
|
|
1691
|
+
readonly 'indicator.smaDescription': "Smoothed average over a fixed window";
|
|
1692
|
+
readonly 'indicator.emaName': "Exponential Moving Average";
|
|
1693
|
+
readonly 'indicator.emaDescription': "Recency-weighted moving average";
|
|
1694
|
+
readonly 'indicator.hmaName': "Hull Moving Average";
|
|
1695
|
+
readonly 'indicator.hmaDescription': "Low-lag weighted moving average";
|
|
1696
|
+
readonly 'indicator.vwmaName': "Volume Weighted MA";
|
|
1697
|
+
readonly 'indicator.vwmaDescription': "Moving average weighted by volume";
|
|
1698
|
+
readonly 'indicator.bollingerName': "Bollinger Bands";
|
|
1699
|
+
readonly 'indicator.bollingerDescription': "SMA envelope at two standard deviations";
|
|
1700
|
+
readonly 'indicator.donchianName': "Donchian Channels";
|
|
1701
|
+
readonly 'indicator.donchianDescription': "Rolling highest-high and lowest-low channel";
|
|
1702
|
+
readonly 'indicator.keltnerName': "Keltner Channels";
|
|
1703
|
+
readonly 'indicator.keltnerDescription': "EMA midline with ATR-scaled bands";
|
|
1704
|
+
readonly 'indicator.supertrendName': "Supertrend";
|
|
1705
|
+
readonly 'indicator.supertrendDescription': "ATR trend band that flips with direction";
|
|
1706
|
+
readonly 'indicator.psarName': "Parabolic SAR";
|
|
1707
|
+
readonly 'indicator.psarDescription': "Stop-and-reverse trailing dots";
|
|
1708
|
+
readonly 'indicator.rsiName': "Relative Strength Index";
|
|
1709
|
+
readonly 'indicator.rsiDescription': "Momentum oscillator from 0 to 100";
|
|
1710
|
+
readonly 'indicator.macdName': "MACD";
|
|
1711
|
+
readonly 'indicator.macdDescription': "Moving Average Convergence Divergence";
|
|
1712
|
+
readonly 'indicator.stochasticName': "Stochastic Oscillator";
|
|
1713
|
+
readonly 'indicator.stochasticDescription': "%K and %D momentum from 0 to 100";
|
|
1714
|
+
readonly 'indicator.stochrsiName': "Stochastic RSI";
|
|
1715
|
+
readonly 'indicator.stochrsiDescription': "Stochastic applied to the RSI series";
|
|
1716
|
+
readonly 'indicator.adxName': "Average Directional Index";
|
|
1717
|
+
readonly 'indicator.adxDescription': "Trend strength with +DI and -DI";
|
|
1718
|
+
readonly 'indicator.atrName': "Average True Range";
|
|
1719
|
+
readonly 'indicator.atrDescription': "Volatility: Wilder's true-range average";
|
|
1720
|
+
readonly 'indicator.cciName': "Commodity Channel Index";
|
|
1721
|
+
readonly 'indicator.cciDescription': "Deviation from the typical-price average";
|
|
1722
|
+
readonly 'indicator.williamsName': "Williams %R";
|
|
1723
|
+
readonly 'indicator.williamsDescription': "Overbought and oversold momentum from -100 to 0";
|
|
1724
|
+
readonly 'indicator.rocName': "Rate of Change";
|
|
1725
|
+
readonly 'indicator.rocDescription': "Percent change over the period";
|
|
1726
|
+
readonly 'indicator.momentumName': "Momentum";
|
|
1727
|
+
readonly 'indicator.momentumDescription': "Price difference over the period";
|
|
1728
|
+
readonly 'indicator.volumeName': "Volume";
|
|
1729
|
+
readonly 'indicator.volumeDescription': "Per-bar traded volume histogram";
|
|
1730
|
+
readonly 'indicator.vwapName': "Volume Weighted Avg Price";
|
|
1731
|
+
readonly 'indicator.vwapDescription': "Cumulative volume-weighted average price";
|
|
1732
|
+
readonly 'indicator.obvName': "On-Balance Volume";
|
|
1733
|
+
readonly 'indicator.obvDescription': "Cumulative volume by close direction";
|
|
1734
|
+
readonly 'indicator.mfiName': "Money Flow Index";
|
|
1735
|
+
readonly 'indicator.mfiDescription': "Volume-weighted RSI from 0 to 100";
|
|
1736
|
+
readonly 'host.noVolume': "No volume from this feed";
|
|
1737
|
+
readonly 'host.saveConflict': "Saved elsewhere since you opened it. Load the newer version before saving.";
|
|
1738
|
+
readonly 'host.saveNotFound': "This was deleted elsewhere. Save it again as new.";
|
|
1739
|
+
readonly 'host.loadInvalid': "This could not be opened. Nothing on screen changed.";
|
|
1740
|
+
readonly 'host.loadUnavailable': "Your saved work could not be reached. Nothing on screen changed.";
|
|
1741
|
+
readonly 'host.loadNotRestored': "This could not be opened, and what was on screen could not be put back. The chart is not saving until you open a saved chart or layout. Save a copy first to keep what is on screen.";
|
|
1742
|
+
readonly 'host.notSaving': "The chart is not saving. Open a saved chart or layout to start from a known state. Saving a copy keeps what is on screen, but the chart still will not save.";
|
|
1743
|
+
readonly 'layout.s': "Single chart";
|
|
1744
|
+
readonly 'layout.2h': "2 columns";
|
|
1745
|
+
readonly 'layout.2v': "2 rows";
|
|
1746
|
+
readonly 'layout.3h': "3 columns";
|
|
1747
|
+
readonly 'layout.3v': "3 rows";
|
|
1748
|
+
readonly 'layout.3s': "Large left, 2 stacked right";
|
|
1749
|
+
readonly 'layout.3r': "2 stacked left, large right";
|
|
1750
|
+
readonly 'layout.2_1': "2 above, 1 below";
|
|
1751
|
+
readonly 'layout.1_2': "1 above, 2 below";
|
|
1752
|
+
readonly 'layout.4': "2 × 2 grid";
|
|
1753
|
+
readonly 'layout.4v': "4 rows";
|
|
1754
|
+
readonly 'layout.4h': "4 columns";
|
|
1755
|
+
readonly 'layout.4s': "Large left, 3 stacked right";
|
|
1756
|
+
readonly 'layout.4s_l': "3 stacked left, large right";
|
|
1757
|
+
readonly 'layout.1_3': "1 above, 3 below";
|
|
1758
|
+
readonly 'layout.3_1': "3 above, 1 below";
|
|
1759
|
+
readonly 'layout.2_2_l': "2 columns, 2 stacked right";
|
|
1760
|
+
readonly 'layout.2_2_r': "2 stacked left, 2 columns";
|
|
1761
|
+
readonly 'layout.2_2': "2 above, 2 full-width rows below";
|
|
1762
|
+
readonly 'layout.1_4': "1 above, 4 below";
|
|
1763
|
+
readonly 'layout.5h': "5 columns";
|
|
1764
|
+
readonly 'layout.5v': "5 rows";
|
|
1765
|
+
readonly 'layout.5s': "Large left, 4 stacked right";
|
|
1766
|
+
readonly 'layout.5s_l': "4 stacked left, large right";
|
|
1767
|
+
readonly 'layout.2_3': "2 above, 3 below";
|
|
1768
|
+
readonly 'layout.3_2': "3 above, 2 below";
|
|
1769
|
+
readonly 'layout.4_1': "4 above, 1 below";
|
|
1770
|
+
readonly 'layout.2_3_l': "2 columns, 3 stacked right";
|
|
1771
|
+
readonly 'layout.2_3_r': "3 stacked left, 2 columns";
|
|
1772
|
+
readonly 'layout.6': "3 × 2 grid";
|
|
1773
|
+
readonly 'layout.6h': "6 columns";
|
|
1774
|
+
readonly 'layout.6v': "6 rows";
|
|
1775
|
+
readonly 'layout.6c': "2 × 3 grid";
|
|
1776
|
+
readonly 'layout.2_4': "2 above, 4 below";
|
|
1777
|
+
readonly 'layout.4_2': "4 above, 2 below";
|
|
1778
|
+
readonly 'layout.4_3': "4 above, 3 below";
|
|
1779
|
+
readonly 'layout.7h': "7 columns";
|
|
1780
|
+
readonly 'layout.7s': "Large left, 6 stacked right";
|
|
1781
|
+
readonly 'layout.8': "4 × 2 grid";
|
|
1782
|
+
readonly 'layout.8c': "2 × 4 grid";
|
|
1783
|
+
readonly 'layout.8h': "8 columns";
|
|
1784
|
+
readonly 'layout.8v': "8 rows";
|
|
1785
|
+
readonly 'layout.9s': "3 × 3 grid";
|
|
1786
|
+
readonly 'layout.5_4': "5 above, 4 below";
|
|
1787
|
+
readonly 'layout.9h': "9 columns";
|
|
1788
|
+
readonly 'layout.9v': "9 rows";
|
|
1789
|
+
readonly 'layout.10c5': "5 × 2 grid";
|
|
1790
|
+
readonly 'layout.10h': "10 columns";
|
|
1791
|
+
readonly 'layout.10v': "10 rows";
|
|
1792
|
+
readonly 'layout.12c6': "6 × 2 grid";
|
|
1793
|
+
readonly 'layout.12c4': "4 × 3 grid";
|
|
1794
|
+
readonly 'layout.12h': "12 columns";
|
|
1795
|
+
readonly 'layout.14c7': "7 × 2 grid";
|
|
1796
|
+
readonly 'layout.16c8': "8 × 2 grid";
|
|
1797
|
+
readonly 'layout.16c4': "4 × 4 grid";
|
|
1798
|
+
readonly 'layouts.setup': "Layout setup";
|
|
1799
|
+
readonly 'layouts.arrangement': "Chart arrangement";
|
|
1800
|
+
readonly 'layouts.syncInLayout': "Sync in layout";
|
|
1801
|
+
readonly 'layouts.syncSymbol': "Symbol";
|
|
1802
|
+
readonly 'layouts.syncTimeframe': "Timeframe";
|
|
1803
|
+
readonly 'layouts.syncCrosshair': "Crosshair";
|
|
1804
|
+
readonly 'layouts.syncTime': "Time";
|
|
1805
|
+
readonly 'layouts.syncDateRange': "Date range";
|
|
1806
|
+
readonly 'layouts.syncSymbolTip': "Symbol changes on all charts within the layout";
|
|
1807
|
+
readonly 'layouts.syncTimeframeTip': "Timeframe changes on all charts within the layout";
|
|
1808
|
+
readonly 'layouts.syncCrosshairTip': "Crosshair is synced across all charts within the layout";
|
|
1809
|
+
readonly 'layouts.syncTimeTip': "When a chart is clicked, all charts within the layout display the same point of time";
|
|
1810
|
+
readonly 'layouts.syncDateRangeTip': "Date range changes on all charts within the layout";
|
|
1811
|
+
readonly 'layouts.syncSymbolToggle': "Sync symbol";
|
|
1812
|
+
readonly 'layouts.syncTimeframeToggle': "Sync timeframe";
|
|
1813
|
+
readonly 'layouts.syncCrosshairToggle': "Sync crosshair";
|
|
1814
|
+
readonly 'layouts.syncTimeToggle': "Sync time";
|
|
1815
|
+
readonly 'layouts.syncDateRangeToggle': "Sync date range";
|
|
1816
|
+
readonly 'layouts.unnamed': "Unnamed";
|
|
1817
|
+
readonly 'layouts.unsavedChanges': "Unsaved changes";
|
|
1818
|
+
readonly 'layouts.allSaved': "All changes saved";
|
|
1819
|
+
readonly 'layouts.notSaving': "Not saving until this is restored";
|
|
1820
|
+
readonly 'layouts.manage': "Manage layouts";
|
|
1821
|
+
readonly 'layouts.saveLayout': "Save layout";
|
|
1822
|
+
readonly 'layouts.hintSave': "{modifier} + S";
|
|
1823
|
+
readonly 'layouts.hintOpen': "Dot";
|
|
1824
|
+
readonly 'layouts.save': "Save";
|
|
1825
|
+
readonly 'layouts.autosave': "Autosave";
|
|
1826
|
+
readonly 'layouts.rename': "Rename";
|
|
1827
|
+
readonly 'layouts.copyOfName': "{name} copy";
|
|
1828
|
+
readonly 'layouts.saveNewTitle': "Save New Chart Layout";
|
|
1829
|
+
readonly 'layouts.saveNewLabel': "Enter a new chart layout name:";
|
|
1830
|
+
readonly 'layouts.copyTitle': "Make copy of chart layout";
|
|
1831
|
+
readonly 'layouts.renameTitle': "Rename chart layout";
|
|
1832
|
+
readonly 'layouts.createTitle': "Create layout";
|
|
1833
|
+
readonly 'layouts.newLayoutName': "New layout name";
|
|
1834
|
+
readonly 'layouts.createPlaceholder': "My layout";
|
|
1835
|
+
readonly 'layouts.create': "Create";
|
|
1836
|
+
readonly 'layouts.makeCopyRow': "Make a copy…";
|
|
1837
|
+
readonly 'layouts.renameRow': "Rename…";
|
|
1838
|
+
readonly 'layouts.downloadDataRow': "Download chart data";
|
|
1839
|
+
readonly 'layouts.createNewRow': "Create new layout…";
|
|
1840
|
+
readonly 'layouts.recentlyUsed': "Recently used";
|
|
1841
|
+
readonly 'layouts.loading': "Loading";
|
|
1842
|
+
readonly 'layouts.emptyNone': "No saved layouts yet.";
|
|
1843
|
+
readonly 'layouts.openLayoutRow': "Open layout…";
|
|
1844
|
+
readonly 'layouts.listingFacts': "{symbol}, {timeframe}";
|
|
1845
|
+
readonly 'layouts.listingDated': "{facts} ({date})";
|
|
1846
|
+
readonly 'layouts.dialogTitle': "Layouts";
|
|
1847
|
+
readonly 'layouts.search': "Search";
|
|
1848
|
+
readonly 'layouts.columnName': "Layout name";
|
|
1849
|
+
readonly 'layouts.sortBy': "Sort by layout name, date changed";
|
|
1850
|
+
readonly 'layouts.sortNameAsc': "Layout name (A to Z)";
|
|
1851
|
+
readonly 'layouts.sortNameDesc': "Layout name (Z to A)";
|
|
1852
|
+
readonly 'layouts.sortModifiedAsc': "Date modified (oldest first)";
|
|
1853
|
+
readonly 'layouts.sortModifiedDesc': "Date modified (newest first)";
|
|
1854
|
+
readonly 'layouts.favorite': "Add to favorites";
|
|
1855
|
+
readonly 'layouts.unfavorite': "Remove from favorites";
|
|
1856
|
+
readonly 'layouts.noMatches': "Nothing matches.";
|
|
1857
|
+
readonly 'layouts.delete': "Delete";
|
|
1858
|
+
readonly 'layouts.deleteNamed': "Delete {name}";
|
|
1859
|
+
readonly 'layouts.deleteConfirm': "Delete this chart layout?";
|
|
1860
|
+
readonly 'layouts.deleteConfirmBody': "Doing this will permanently delete your \"{name}\" layout.";
|
|
1861
|
+
readonly 'layouts.cancel': "Cancel";
|
|
1862
|
+
readonly 'layouts.close': "Close";
|
|
1863
|
+
readonly 'layouts.errList': "Could not load your saved layouts.";
|
|
1864
|
+
readonly 'session.pre': "Pre-market";
|
|
1865
|
+
readonly 'session.open': "Market open";
|
|
1866
|
+
readonly 'session.extended': "Extended hours";
|
|
1867
|
+
readonly 'session.after': "After-hours";
|
|
1868
|
+
readonly 'session.closed': "Market closed";
|
|
1869
|
+
readonly 'inputs.cancel': "Cancel";
|
|
1870
|
+
readonly 'inputs.apply': "Apply";
|
|
1871
|
+
readonly 'replay.watermark': "Replay";
|
|
1872
|
+
readonly 'replay.selectBar': "Select bar";
|
|
1873
|
+
readonly 'replay.selectDate': "Select date";
|
|
1874
|
+
readonly 'replay.selectStartingPoint': "Select starting point";
|
|
1875
|
+
readonly 'replay.startBar': "Bar";
|
|
1876
|
+
readonly 'replay.startDate': "Date…";
|
|
1877
|
+
readonly 'replay.startFirst': "First available date";
|
|
1878
|
+
readonly 'replay.startRandom': "Random bar";
|
|
1879
|
+
readonly 'replay.close': "Close";
|
|
1880
|
+
readonly 'replay.startDateField': "Replay start date";
|
|
1881
|
+
readonly 'replay.startTimeField': "Replay start time (UTC, optional)";
|
|
1882
|
+
readonly 'replay.dateMask': "YYYY-MM-DD";
|
|
1883
|
+
readonly 'replay.timeMask': "HH:MM";
|
|
1884
|
+
readonly 'replay.chooseTime': "Choose a time";
|
|
1885
|
+
readonly 'replay.previousMonth': "Previous month, {month}";
|
|
1886
|
+
readonly 'replay.nextMonth': "Next month, {month}";
|
|
1887
|
+
readonly 'replay.previousYear': "Previous year, {year}";
|
|
1888
|
+
readonly 'replay.nextYear': "Next year, {year}";
|
|
1889
|
+
readonly 'replay.previousYears': "Previous years, {years}";
|
|
1890
|
+
readonly 'replay.nextYears': "Next years, {years}";
|
|
1891
|
+
readonly 'replay.showMonths': "Switch to months, {year}";
|
|
1892
|
+
readonly 'replay.showYears': "Switch to years, {years}";
|
|
1893
|
+
readonly 'replay.showDates': "Switch to dates, {month}";
|
|
1894
|
+
readonly 'replay.yearRange': "{from} - {to}";
|
|
1895
|
+
readonly 'replay.months': "Months";
|
|
1896
|
+
readonly 'replay.years': "Years";
|
|
1897
|
+
readonly 'replay.firstAvailableDay': "Select the first available day";
|
|
1898
|
+
readonly 'replay.cancel': "Cancel";
|
|
1899
|
+
readonly 'replay.select': "Select";
|
|
1900
|
+
readonly 'replay.weekdayMon': "Mo";
|
|
1901
|
+
readonly 'replay.weekdayTue': "Tu";
|
|
1902
|
+
readonly 'replay.weekdayWed': "We";
|
|
1903
|
+
readonly 'replay.weekdayThu': "Th";
|
|
1904
|
+
readonly 'replay.weekdayFri': "Fr";
|
|
1905
|
+
readonly 'replay.weekdaySat': "Sa";
|
|
1906
|
+
readonly 'replay.weekdaySun': "Su";
|
|
1907
|
+
readonly 'replay.stepBack': "Step back one bar";
|
|
1908
|
+
readonly 'replay.play': "Play";
|
|
1909
|
+
readonly 'replay.pause': "Pause";
|
|
1910
|
+
readonly 'replay.stepForward': "Step forward one bar";
|
|
1911
|
+
readonly 'replay.goLiveTitle': "Jump to the live edge";
|
|
1912
|
+
readonly 'replay.exit': "Exit replay";
|
|
1913
|
+
readonly 'replay.speed': "Replay speed";
|
|
1914
|
+
readonly 'replay.updatesPerSecond': {
|
|
1915
|
+
readonly one: "{count} update per second";
|
|
1916
|
+
readonly other: "{count} updates per second";
|
|
1917
|
+
};
|
|
1918
|
+
readonly 'replay.oneUpdatePerSeconds': {
|
|
1919
|
+
readonly one: "1 update per {count} second";
|
|
1920
|
+
readonly other: "1 update per {count} seconds";
|
|
1921
|
+
};
|
|
1922
|
+
readonly 'replay.timeframe': "Update timeframe";
|
|
1923
|
+
readonly 'replay.timeframeHelp': "How much time each replay update advances. Finer than the chart timeframe, each bar forms from real finer bars.";
|
|
1924
|
+
readonly 'replay.timeframeNone': "No finer timeframe for this chart timeframe";
|
|
1925
|
+
readonly 'replay.auto': "Auto";
|
|
1926
|
+
readonly 'replay.autoSelectTimeframe': "Auto select timeframe";
|
|
1927
|
+
readonly 'menu.resetView': "Reset chart view";
|
|
1928
|
+
readonly 'menu.copyPrice': "Copy price {price}";
|
|
1929
|
+
readonly 'menu.paste': "Paste";
|
|
1930
|
+
readonly 'menu.removeIndicators': {
|
|
1931
|
+
readonly one: "Remove {count} indicator";
|
|
1932
|
+
readonly other: "Remove {count} indicators";
|
|
1933
|
+
};
|
|
1934
|
+
readonly 'menu.removeDrawings': {
|
|
1935
|
+
readonly one: "Remove {count} drawing";
|
|
1936
|
+
readonly other: "Remove {count} drawings";
|
|
1937
|
+
};
|
|
1938
|
+
readonly 'menu.settings': "Settings…";
|
|
1939
|
+
readonly 'tool.trend_line': "Trend line";
|
|
1940
|
+
readonly 'tool.ray': "Ray";
|
|
1941
|
+
readonly 'tool.info_line': "Info line";
|
|
1942
|
+
readonly 'tool.extended': "Extended line";
|
|
1943
|
+
readonly 'tool.trend_angle': "Trend angle";
|
|
1944
|
+
readonly 'tool.horizontal_line': "Horizontal line";
|
|
1945
|
+
readonly 'tool.horizontal_ray': "Horizontal ray";
|
|
1946
|
+
readonly 'tool.vertical_line': "Vertical line";
|
|
1947
|
+
readonly 'tool.cross_line': "Cross line";
|
|
1948
|
+
readonly 'tool.arrow': "Arrow";
|
|
1949
|
+
readonly 'tool.rectangle': "Rectangle";
|
|
1950
|
+
readonly 'tool.rotated_rectangle': "Rotated rectangle";
|
|
1951
|
+
readonly 'tool.ellipse': "Ellipse";
|
|
1952
|
+
readonly 'tool.circle': "Circle";
|
|
1953
|
+
readonly 'tool.triangle': "Triangle";
|
|
1954
|
+
readonly 'tool.arc': "Arc";
|
|
1955
|
+
readonly 'tool.curve': "Curve";
|
|
1956
|
+
readonly 'tool.double_curve': "Double curve";
|
|
1957
|
+
readonly 'tool.regression_trend': "Regression trend";
|
|
1958
|
+
readonly 'tool.parallel_channel': "Parallel channel";
|
|
1959
|
+
readonly 'tool.flat_top_bottom': "Flat top/bottom";
|
|
1960
|
+
readonly 'tool.disjoint_channel': "Disjoint channel";
|
|
1961
|
+
readonly 'tool.fib_retracement': "Fib retracement";
|
|
1962
|
+
readonly 'tool.fib_trend_ext': "Trend-based fib extension";
|
|
1963
|
+
readonly 'tool.fib_channel': "Fib channel";
|
|
1964
|
+
readonly 'tool.fib_timezone': "Fib time zone";
|
|
1965
|
+
readonly 'tool.fib_speed_resist_fan': "Fib speed resistance fan";
|
|
1966
|
+
readonly 'tool.fib_trend_time': "Trend-based fib time";
|
|
1967
|
+
readonly 'tool.fib_circles': "Fib circles";
|
|
1968
|
+
readonly 'tool.fib_spiral': "Fib spiral";
|
|
1969
|
+
readonly 'tool.fib_speed_resist_arcs': "Fib speed resistance arcs";
|
|
1970
|
+
readonly 'tool.fib_wedge': "Fib wedge";
|
|
1971
|
+
readonly 'tool.pitchfan': "Pitchfan";
|
|
1972
|
+
readonly 'tool.pitchfork': "Pitchfork";
|
|
1973
|
+
readonly 'tool.schiff_pitchfork': "Schiff pitchfork";
|
|
1974
|
+
readonly 'tool.schiff_pitchfork_modified': "Modified Schiff pitchfork";
|
|
1975
|
+
readonly 'tool.inside_pitchfork': "Inside pitchfork";
|
|
1976
|
+
readonly 'tool.gannbox': "Gann box";
|
|
1977
|
+
readonly 'tool.gannbox_square': "Gann square";
|
|
1978
|
+
readonly 'tool.gannbox_fixed': "Gann square fixed";
|
|
1979
|
+
readonly 'tool.gannbox_fan': "Gann fan";
|
|
1980
|
+
readonly 'tool.xabcd_pattern': "XABCD pattern";
|
|
1981
|
+
readonly 'tool.cypher_pattern': "Cypher pattern";
|
|
1982
|
+
readonly 'tool.abcd_pattern': "ABCD pattern";
|
|
1983
|
+
readonly 'tool.three_drives': "Three drives pattern";
|
|
1984
|
+
readonly 'tool.triangle_pattern': "Triangle pattern";
|
|
1985
|
+
readonly 'tool.head_and_shoulders': "Head and shoulders";
|
|
1986
|
+
readonly 'tool.elliott_impulse_wave': "Elliott impulse (12345)";
|
|
1987
|
+
readonly 'tool.elliott_correction': "Elliott correction (ABC)";
|
|
1988
|
+
readonly 'tool.elliott_triangle_wave': "Elliott triangle (ABCDE)";
|
|
1989
|
+
readonly 'tool.elliott_double_combo': "Elliott double combo (WXY)";
|
|
1990
|
+
readonly 'tool.elliott_triple_combo': "Elliott triple combo (WXYXZ)";
|
|
1991
|
+
readonly 'tool.cyclic_lines': "Cyclic lines";
|
|
1992
|
+
readonly 'tool.time_cycles': "Time cycles";
|
|
1993
|
+
readonly 'tool.sine_line': "Sine line";
|
|
1994
|
+
readonly 'tool.long_position': "Long position";
|
|
1995
|
+
readonly 'tool.short_position': "Short position";
|
|
1996
|
+
readonly 'tool.forecast': "Position forecast";
|
|
1997
|
+
readonly 'tool.sector': "Sector";
|
|
1998
|
+
readonly 'tool.bars_pattern': "Bars pattern";
|
|
1999
|
+
readonly 'tool.ghost_feed': "Ghost feed";
|
|
2000
|
+
readonly 'tool.anchored_vwap': "Anchored VWAP";
|
|
2001
|
+
readonly 'tool.fixed_range_volume_profile': "Fixed range volume profile";
|
|
2002
|
+
readonly 'tool.anchored_volume_profile': "Anchored volume profile";
|
|
2003
|
+
readonly 'tool.image': "Image";
|
|
2004
|
+
readonly 'tool.emoji': "Emoji";
|
|
2005
|
+
readonly 'tool.sticker': "Sticker";
|
|
2006
|
+
readonly 'tool.icon': "Icon";
|
|
2007
|
+
readonly 'tool.text': "Text";
|
|
2008
|
+
readonly 'tool.note': "Note";
|
|
2009
|
+
readonly 'tool.comment': "Comment";
|
|
2010
|
+
readonly 'tool.callout': "Callout";
|
|
2011
|
+
readonly 'tool.price_label': "Price label";
|
|
2012
|
+
readonly 'tool.arrow_up': "Arrow mark up";
|
|
2013
|
+
readonly 'tool.arrow_down': "Arrow mark down";
|
|
2014
|
+
readonly 'tool.arrow_marker': "Arrow marker";
|
|
2015
|
+
readonly 'tool.flag': "Flag mark";
|
|
2016
|
+
readonly 'tool.price_note': "Price note";
|
|
2017
|
+
readonly 'tool.pin': "Pin";
|
|
2018
|
+
readonly 'tool.signpost': "Signpost";
|
|
2019
|
+
readonly 'tool.table': "Table";
|
|
2020
|
+
readonly 'tool.brush': "Brush";
|
|
2021
|
+
readonly 'tool.highlighter': "Highlighter";
|
|
2022
|
+
readonly 'tool.path': "Path";
|
|
2023
|
+
readonly 'tool.polyline': "Polyline";
|
|
2024
|
+
readonly 'tool.price_range': "Price range";
|
|
2025
|
+
readonly 'tool.date_range': "Date range";
|
|
2026
|
+
readonly 'tool.date_and_price_range': "Date and price range";
|
|
2027
|
+
readonly 'tool.measure': "Measure";
|
|
2028
|
+
readonly 'legend.open': "O";
|
|
2029
|
+
readonly 'legend.high': "H";
|
|
2030
|
+
readonly 'legend.low': "L";
|
|
2031
|
+
readonly 'legend.close': "C";
|
|
2032
|
+
readonly 'legend.change': "{change} ({percent}%)";
|
|
2033
|
+
readonly 'legend.indicatorSettings': "Indicator settings";
|
|
2034
|
+
readonly 'legend.showRows': "Show indicator rows";
|
|
2035
|
+
readonly 'legend.hideRows': "Hide indicator rows";
|
|
2036
|
+
readonly 'legend.restorePane': "Restore pane";
|
|
2037
|
+
readonly 'legend.collapsePane': "Collapse pane";
|
|
2038
|
+
readonly 'legend.maximizePane': "Maximize pane";
|
|
2039
|
+
readonly 'legend.showIndicator': "Show indicator";
|
|
2040
|
+
readonly 'legend.hideIndicator': "Hide indicator";
|
|
2041
|
+
readonly 'legend.scaleNormal': "Reg";
|
|
2042
|
+
readonly 'legend.scaleLog': "Log";
|
|
2043
|
+
readonly 'legend.scalePercent': "%";
|
|
2044
|
+
readonly 'legend.scaleIndexed': "100";
|
|
2045
|
+
readonly 'legend.changeSymbol': "Change symbol";
|
|
2046
|
+
readonly 'legend.removeCompare': "Remove comparison";
|
|
2047
|
+
readonly 'legend.removeIndicator': "Remove indicator";
|
|
2048
|
+
}, ChartLocaleCode>;
|
|
2049
|
+
/** A drawing tool's display name for a registry `type`: the catalog's when it knows the type, else
|
|
2050
|
+
* the registry's own English `name`, so a tool the catalog has not met still has a name. */
|
|
2051
|
+
declare function toolName(t: ChartTranslate, type: string, fallback: string): string;
|
|
2052
|
+
/** A multi-chart arrangement's display name for its code, else the arrangement catalog's English
|
|
2053
|
+
* label. An arrangement code separates its parts with hyphens (`2-2-l`) where a catalog key uses
|
|
2054
|
+
* underscores, so the code is converted rather than asking every caller to. */
|
|
2055
|
+
declare function arrangementName(t: ChartTranslate, code: string, fallback: string): string;
|
|
2056
|
+
/** A `ChartI18n` over the widget's own catalog, starting in `initial` (English when omitted): one
|
|
2057
|
+
* of the built-in codes, or a code the `locales` option registers. */
|
|
2058
|
+
declare function createChartI18n(initial?: string, options?: ChartI18nOptions): ChartI18n;
|
|
2059
|
+
|
|
2060
|
+
/** The session an instant classifies into. `extended` is trading outside regular hours when the
|
|
2061
|
+
* symbol does not split it into pre-market and after-hours. */
|
|
2062
|
+
type SessionState = 'pre' | 'open' | 'extended' | 'after' | 'closed';
|
|
2063
|
+
/** One subsession of an extended-hours symbol: `regular`,
|
|
2064
|
+
* `extended`, `premarket` or `postmarket`, each with its own session string and, optionally,
|
|
2065
|
+
* the corrections that shorten it. `SymbolInfo.subsessions` satisfies it; an id the chart has
|
|
2066
|
+
* no state for is ignored. */
|
|
2067
|
+
interface SubsessionSource {
|
|
2068
|
+
readonly id: string;
|
|
2069
|
+
readonly session: string;
|
|
2070
|
+
readonly sessionCorrections?: string;
|
|
2071
|
+
}
|
|
2072
|
+
/** What a session model is built from: the symbology triple plus the optional corrections and
|
|
2073
|
+
* subsessions. `SymbolInfo` satisfies it. */
|
|
2074
|
+
interface SessionSource {
|
|
2075
|
+
readonly timezone: string;
|
|
2076
|
+
readonly session: string;
|
|
2077
|
+
readonly sessionHolidays?: string;
|
|
2078
|
+
readonly corrections?: string;
|
|
2079
|
+
readonly subsessions?: readonly SubsessionSource[];
|
|
2080
|
+
}
|
|
2081
|
+
/** One trading stretch of a trading day, in minutes from that day's exchange-local midnight. The
|
|
2082
|
+
* start may be negative (the stretch begins on a previous day) and the end may pass 1440 (it
|
|
2083
|
+
* runs into the next day); the end is exclusive. */
|
|
2084
|
+
interface SessionSegment {
|
|
2085
|
+
readonly start: number;
|
|
2086
|
+
readonly end: number;
|
|
2087
|
+
}
|
|
2088
|
+
/** A schedule: the stretches per weekday (0 = Sunday), and dated overrides keyed 'YYYYMMDD'. */
|
|
2089
|
+
interface SessionSchedule {
|
|
2090
|
+
readonly week: readonly (readonly SessionSegment[])[];
|
|
2091
|
+
readonly corrections: ReadonlyMap<string, readonly SessionSegment[]>;
|
|
2092
|
+
}
|
|
2093
|
+
interface SessionModel {
|
|
2094
|
+
/** The exchange zone every minute here is read in. */
|
|
2095
|
+
readonly timezone: string;
|
|
2096
|
+
/** A `24x7` symbol: always open, no transitions, no timeline. */
|
|
2097
|
+
readonly continuous: boolean;
|
|
2098
|
+
/** The regular session. */
|
|
2099
|
+
readonly regular: SessionSchedule;
|
|
2100
|
+
/** Extended-hours stretches by the state they classify into, from the subsessions. */
|
|
2101
|
+
readonly extended: readonly {
|
|
2102
|
+
readonly state: Exclude<SessionState, 'open' | 'closed'>;
|
|
2103
|
+
readonly schedule: SessionSchedule;
|
|
2104
|
+
}[];
|
|
2105
|
+
/** Full-closure dates, 'YYYYMMDD'. */
|
|
2106
|
+
readonly holidays: ReadonlySet<string>;
|
|
2107
|
+
}
|
|
2108
|
+
/** Build the session model from a symbol's metadata. Null when the grammar cannot read any part
|
|
2109
|
+
* of it: a chart then shows no bands, no status and no timeline for the symbol rather than a
|
|
2110
|
+
* session it guessed. A `regular` subsession, when given, is the regular session; the symbol's
|
|
2111
|
+
* `session` is otherwise. Subsessions with ids the chart has no state for are ignored. */
|
|
2112
|
+
declare function parseSessionModel(source: SessionSource): SessionModel | null;
|
|
2113
|
+
/** Which of a symbol's named sessions a chart displays:
|
|
2114
|
+
* `regular` shows regular hours only, `extended` shows the extended-hours bars as well. A
|
|
2115
|
+
* per-chart preference a host persists. `extended` is the DEFAULT and shows every bar the feed
|
|
2116
|
+
* served; narrowing to `regular` is the opt-in, because a chart that silently hid bars it had
|
|
2117
|
+
* would be lying about the market by default. A symbol without extended hours has nothing to
|
|
2118
|
+
* choose, and every bar shows either way. */
|
|
2119
|
+
type ActiveSubsession = 'regular' | 'extended';
|
|
2120
|
+
declare const DEFAULT_SUBSESSION: ActiveSubsession;
|
|
2121
|
+
/** Whether the symbol declared any hours outside its regular session. Only such a symbol offers a
|
|
2122
|
+
* subsession choice or shades extended hours. */
|
|
2123
|
+
declare function hasExtendedHours(model: SessionModel): boolean;
|
|
2124
|
+
/** The bar filter for the active subsession: under `regular`, on a symbol with extended hours,
|
|
2125
|
+
* keep the bars whose open falls in regular hours; otherwise nothing is filtered (null). For
|
|
2126
|
+
* intraday timeframes only: a daily bar spans whole sessions, so a caller applies the filter on
|
|
2127
|
+
* intraday timeframes and shows every daily bar. */
|
|
2128
|
+
declare function subsessionBarFilter(model: SessionModel, active: ActiveSubsession): ((epochSecs: number) => boolean) | null;
|
|
2129
|
+
/** The session state at an instant (epoch seconds), under the symbol's exchange clock. */
|
|
2130
|
+
declare function sessionStateAt(model: SessionModel, epochSecs: number): SessionState;
|
|
2131
|
+
/** The next session transition after an instant, exact to the minute, or null when there is
|
|
2132
|
+
* none within eight days (a continuous market, or a long closure). */
|
|
2133
|
+
declare function nextSessionChange(model: SessionModel, epochSecs: number): {
|
|
2134
|
+
atSecs: number;
|
|
2135
|
+
state: SessionState;
|
|
2136
|
+
} | null;
|
|
2137
|
+
interface SessionTimeline {
|
|
2138
|
+
/** The exchange-local day's stretches, closed gaps included, covering 0 to 1440 minutes. */
|
|
2139
|
+
readonly segments: readonly {
|
|
2140
|
+
readonly start: number;
|
|
2141
|
+
readonly end: number;
|
|
2142
|
+
readonly state: SessionState;
|
|
2143
|
+
}[];
|
|
2144
|
+
/** Now, in exchange-local minutes from midnight. */
|
|
2145
|
+
readonly nowMins: number;
|
|
2146
|
+
/** The exchange-local weekday, written in the language of `tag` and upper-cased ("MON"). */
|
|
2147
|
+
readonly dayLabel: string;
|
|
2148
|
+
readonly timezone: string;
|
|
2149
|
+
}
|
|
2150
|
+
/** The exchange-local day's timeline for a status popup. `tag` is the BCP 47 tag the weekday is
|
|
2151
|
+
* written in: a date part, so it comes from Intl rather than the catalog. */
|
|
2152
|
+
declare function sessionTimeline(model: SessionModel, epochSecs: number, tag: string): SessionTimeline;
|
|
2153
|
+
/** A symbol's market status at an instant: the session state and the feed's liveness together,
|
|
2154
|
+
* so a consumer cannot present an end-of-day or delayed feed as a live open market. */
|
|
2155
|
+
interface MarketStatus {
|
|
2156
|
+
readonly state: SessionState;
|
|
2157
|
+
/** The feed's liveness, an explicit part of the status. */
|
|
2158
|
+
readonly dataStatus: DataStatus;
|
|
2159
|
+
/** A `24x7` symbol. */
|
|
2160
|
+
readonly continuous: boolean;
|
|
2161
|
+
/** The next transition, or null when there is none to count down to. */
|
|
2162
|
+
readonly next: {
|
|
2163
|
+
readonly atSecs: number;
|
|
2164
|
+
readonly state: SessionState;
|
|
2165
|
+
} | null;
|
|
2166
|
+
}
|
|
2167
|
+
declare function marketStatus(model: SessionModel, dataStatus: DataStatus, nowSecs: number): MarketStatus;
|
|
2168
|
+
/** The market status straight from a resolved symbol, or null when its session cannot be read. */
|
|
2169
|
+
declare function marketStatusFor(symbol: Pick<SymbolInfo, 'timezone' | 'session' | 'sessionHolidays' | 'corrections' | 'subsessions' | 'dataStatus'>, nowSecs: number): MarketStatus | null;
|
|
2170
|
+
/** The catalog key of a session state's name: the same five words the legend's status dot and
|
|
2171
|
+
* a status popup's title use. */
|
|
2172
|
+
declare const SESSION_STATE_TITLE: Readonly<Record<SessionState, ChartMessageKey>>;
|
|
2173
|
+
/** The title line of a status popup: the feed's liveness when it is not a live stream, the
|
|
2174
|
+
* continuous market's own word, or the session state's name. */
|
|
2175
|
+
declare function marketStatusTitle(t: ChartTranslate, status: MarketStatus): string;
|
|
2176
|
+
/** "3 days 4 hours": the coarsest unit, and the next one down when it is non-zero. Each unit is a
|
|
2177
|
+
* whole phrase and `status.durationPair` owns the order and the separator, so a language decides
|
|
2178
|
+
* both rather than inheriting English's. A duration under a minute reads as one minute. */
|
|
2179
|
+
declare function formatDuration(t: ChartTranslate, secs: number): string;
|
|
2180
|
+
/** The sentence under a status popup's title. An end-of-day feed states that and nothing about
|
|
2181
|
+
* hours; a continuous market states that it never closes; otherwise the session state with a
|
|
2182
|
+
* countdown to the next transition when one is known, and a delayed stream adds that its prices
|
|
2183
|
+
* are delayed. */
|
|
2184
|
+
declare function marketStatusText(t: ChartTranslate, status: MarketStatus, nowSecs: number): string;
|
|
2185
|
+
/** The footer naming the exchange zone a timeline is drawn in: "Exchange timezone: New York
|
|
2186
|
+
* (UTC-4)". */
|
|
2187
|
+
declare function exchangeTimezoneText(t: ChartTranslate, timezone: string, at?: Date): string;
|
|
2188
|
+
|
|
2189
|
+
/** Paints a market's mark into a box the chart owns, and answers what takes it down again. */
|
|
2190
|
+
type SymbolMarkPainter = (request: {
|
|
2191
|
+
symbol: string;
|
|
2192
|
+
host: HTMLElement;
|
|
2193
|
+
size: number;
|
|
2194
|
+
}) => (() => void) | void;
|
|
2195
|
+
/** Paints the mark of the venue a market lists on, the same way. */
|
|
2196
|
+
type VenueMarkPainter = (request: {
|
|
2197
|
+
exchange: string;
|
|
2198
|
+
host: HTMLElement;
|
|
2199
|
+
size: number;
|
|
2200
|
+
}) => (() => void) | void;
|
|
2201
|
+
/** Paints the mark of a data source, where a row names a data source rather than a venue. */
|
|
2202
|
+
type DataSourceMarkPainter = (request: {
|
|
2203
|
+
dataSource: string;
|
|
2204
|
+
host: HTMLElement;
|
|
2205
|
+
size: number;
|
|
2206
|
+
}) => (() => void) | void;
|
|
2207
|
+
/** Every painter the host lent, as the chart carries them: null where it lent none. */
|
|
2208
|
+
interface MarkPainters {
|
|
2209
|
+
readonly symbol: SymbolMarkPainter | null;
|
|
2210
|
+
readonly venue: VenueMarkPainter | null;
|
|
2211
|
+
readonly dataSource: DataSourceMarkPainter | null;
|
|
2212
|
+
}
|
|
2213
|
+
/** The host's hooks, as an entry point takes them. Each is the host's to lend or withhold, and
|
|
2214
|
+
* every entry point that paints marks takes exactly these, so a host writes them once and hands
|
|
2215
|
+
* the same three to a chart and to a picker it opens away from one. */
|
|
2216
|
+
interface MarkPainterHooks {
|
|
2217
|
+
/** The host's mark for a market, called WHEREVER the chart names one: each chart's legend, the
|
|
2218
|
+
* compare rows under it, every row of the symbol search and compare dialogs, and the market tag
|
|
2219
|
+
* an extension's notice wears. It receives the element to paint into and the symbol it stands for,
|
|
2220
|
+
* and returns a disposer that takes the mark down again.
|
|
2221
|
+
*
|
|
2222
|
+
* One hook rather than one per surface, so a market wears the same mark everywhere it appears and
|
|
2223
|
+
* a host implements it once. The chart ships no artwork and fetches none: absent this, every mark
|
|
2224
|
+
* is the neutral monogram the package draws itself. */
|
|
2225
|
+
symbolMark?: SymbolMarkPainter;
|
|
2226
|
+
/** The host's mark for the venue a market lists on, painted beside the venue's name in every row
|
|
2227
|
+
* of the symbol search and compare dialogs. Like `symbolMark`, it receives the element to paint
|
|
2228
|
+
* into and the size of the box, and returns a disposer; absent, a venue wears its initial on the
|
|
2229
|
+
* neutral disc the package draws itself. */
|
|
2230
|
+
venueMark?: VenueMarkPainter;
|
|
2231
|
+
/** The host's mark for the data source a row names where it names no venue, painted in that
|
|
2232
|
+
* row's source cell the same way. Absent, a data source wears its initial on a neutral disc. */
|
|
2233
|
+
dataSourceMark?: DataSourceMarkPainter;
|
|
2234
|
+
}
|
|
2235
|
+
|
|
2236
|
+
/** One glyph: its own grid and the inner markup drawn on it. */
|
|
2237
|
+
interface Glyph {
|
|
2238
|
+
viewBox: string;
|
|
2239
|
+
body: string;
|
|
2240
|
+
/** A glyph that is not square keeps its grid's proportion: the size is its HEIGHT and the width
|
|
2241
|
+
* follows this ratio. Square glyphs omit it. */
|
|
2242
|
+
aspect?: number;
|
|
2243
|
+
/** The height the glyph is drawn at when a caller names none. Glyphs drawn at 28 omit it. */
|
|
2244
|
+
size?: number;
|
|
2245
|
+
}
|
|
2246
|
+
|
|
2247
|
+
interface ChartOverrides {
|
|
2248
|
+
appearance: {
|
|
2249
|
+
background: string;
|
|
2250
|
+
upColor: string;
|
|
2251
|
+
downColor: string;
|
|
2252
|
+
/** Candle anatomy: the border ring and the wick are their OWN colors per direction. They do
|
|
2253
|
+
* NOT follow upColor/downColor; each is set independently. */
|
|
2254
|
+
borderUpColor: string;
|
|
2255
|
+
borderDownColor: string;
|
|
2256
|
+
wickUpColor: string;
|
|
2257
|
+
wickDownColor: string;
|
|
2258
|
+
grid: boolean;
|
|
2259
|
+
/** Shade pre-market / after-hours / overnight stretches. */
|
|
2260
|
+
sessions: boolean;
|
|
2261
|
+
/** Bar-close countdown pill on the price scale. */
|
|
2262
|
+
countdown: boolean;
|
|
2263
|
+
};
|
|
2264
|
+
}
|
|
2265
|
+
/** The brand palette, single-sourced: a host's own surfaces on the chart read these (an
|
|
2266
|
+
* extension's lines among them), and a rebrand edits two strings. The candle bodies keep their
|
|
2267
|
+
* own pair; see the note on DEFAULT_OVERRIDES for why. */
|
|
2268
|
+
declare const BRAND_UP = "#4c98fb";
|
|
2269
|
+
declare const BRAND_DOWN = "#f23645";
|
|
2270
|
+
declare const DEFAULT_OVERRIDES: ChartOverrides;
|
|
2271
|
+
/** A recursive partial of the tree — what a host supplies. */
|
|
2272
|
+
type PartialOverrides = {
|
|
2273
|
+
[S in keyof ChartOverrides]?: Partial<ChartOverrides[S]>;
|
|
2274
|
+
};
|
|
2275
|
+
/** Deep-fill a partial over the defaults. One level of nesting by design — the tree is two levels
|
|
2276
|
+
* (section → leaf) and stays that way; new leaves are additive. */
|
|
2277
|
+
declare function mergeOverrides(partial?: PartialOverrides | null): ChartOverrides;
|
|
2278
|
+
/** The precedence composer: deep-fill any number of partials over an explicit BASE, later layers
|
|
2279
|
+
* winning leaf by leaf. The widget's look resolves through this — its theme-derived floor, then
|
|
2280
|
+
* the host's constructor partial, then runtime applyAppearance calls: one ladder where runtime
|
|
2281
|
+
* beats constructor beats theme, expressed as one pure function. */
|
|
2282
|
+
declare function layerOverrides(base: ChartOverrides, ...partials: (PartialOverrides | null | undefined)[]): ChartOverrides;
|
|
2283
|
+
|
|
2284
|
+
/** One resolved role as it is written to the DOM. */
|
|
2285
|
+
interface ThemeDeclaration {
|
|
2286
|
+
/** The private custom-property name. */
|
|
2287
|
+
property: string;
|
|
2288
|
+
/** The resolved value, already a CSS token. */
|
|
2289
|
+
value: string;
|
|
2029
2290
|
}
|
|
2030
2291
|
|
|
2031
2292
|
/** Everything the widget writes on its own root element for one resolved theme. */
|
|
@@ -2170,233 +2431,71 @@ declare const TOOL_ICONS: {
|
|
|
2170
2431
|
signpost: string;
|
|
2171
2432
|
flag: string;
|
|
2172
2433
|
image: string;
|
|
2173
|
-
content_card: string;
|
|
2174
2434
|
pin: string;
|
|
2175
2435
|
};
|
|
2176
2436
|
/** A drawing tool that wears a miniature, by its registry type. */
|
|
2177
2437
|
type MiniatureTool = keyof typeof TOOL_ICONS;
|
|
2178
2438
|
|
|
2439
|
+
interface ArrangementIcon {
|
|
2440
|
+
viewBox: string;
|
|
2441
|
+
body: string;
|
|
2442
|
+
}
|
|
2179
2443
|
declare const ARRANGEMENT_ICONS: {
|
|
2180
|
-
s:
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
'
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
'
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
'
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
'
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
'
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
'
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
'2-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
'
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
'
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
'
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
'
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
'
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
'
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
};
|
|
2236
|
-
'1-3': {
|
|
2237
|
-
viewBox: string;
|
|
2238
|
-
body: string;
|
|
2239
|
-
};
|
|
2240
|
-
'3-1': {
|
|
2241
|
-
viewBox: string;
|
|
2242
|
-
body: string;
|
|
2243
|
-
};
|
|
2244
|
-
'2-2-l': {
|
|
2245
|
-
viewBox: string;
|
|
2246
|
-
body: string;
|
|
2247
|
-
};
|
|
2248
|
-
'2-2-r': {
|
|
2249
|
-
viewBox: string;
|
|
2250
|
-
body: string;
|
|
2251
|
-
};
|
|
2252
|
-
'2-2': {
|
|
2253
|
-
viewBox: string;
|
|
2254
|
-
body: string;
|
|
2255
|
-
};
|
|
2256
|
-
'1-4': {
|
|
2257
|
-
viewBox: string;
|
|
2258
|
-
body: string;
|
|
2259
|
-
};
|
|
2260
|
-
'5h': {
|
|
2261
|
-
viewBox: string;
|
|
2262
|
-
body: string;
|
|
2263
|
-
};
|
|
2264
|
-
'5v': {
|
|
2265
|
-
viewBox: string;
|
|
2266
|
-
body: string;
|
|
2267
|
-
};
|
|
2268
|
-
'5s': {
|
|
2269
|
-
viewBox: string;
|
|
2270
|
-
body: string;
|
|
2271
|
-
};
|
|
2272
|
-
'5s-l': {
|
|
2273
|
-
viewBox: string;
|
|
2274
|
-
body: string;
|
|
2275
|
-
};
|
|
2276
|
-
'2-3': {
|
|
2277
|
-
viewBox: string;
|
|
2278
|
-
body: string;
|
|
2279
|
-
};
|
|
2280
|
-
'3-2': {
|
|
2281
|
-
viewBox: string;
|
|
2282
|
-
body: string;
|
|
2283
|
-
};
|
|
2284
|
-
'4-1': {
|
|
2285
|
-
viewBox: string;
|
|
2286
|
-
body: string;
|
|
2287
|
-
};
|
|
2288
|
-
'2-3-l': {
|
|
2289
|
-
viewBox: string;
|
|
2290
|
-
body: string;
|
|
2291
|
-
};
|
|
2292
|
-
'2-3-r': {
|
|
2293
|
-
viewBox: string;
|
|
2294
|
-
body: string;
|
|
2295
|
-
};
|
|
2296
|
-
'6': {
|
|
2297
|
-
viewBox: string;
|
|
2298
|
-
body: string;
|
|
2299
|
-
};
|
|
2300
|
-
'6h': {
|
|
2301
|
-
viewBox: string;
|
|
2302
|
-
body: string;
|
|
2303
|
-
};
|
|
2304
|
-
'6v': {
|
|
2305
|
-
viewBox: string;
|
|
2306
|
-
body: string;
|
|
2307
|
-
};
|
|
2308
|
-
'6c': {
|
|
2309
|
-
viewBox: string;
|
|
2310
|
-
body: string;
|
|
2311
|
-
};
|
|
2312
|
-
'2-4': {
|
|
2313
|
-
viewBox: string;
|
|
2314
|
-
body: string;
|
|
2315
|
-
};
|
|
2316
|
-
'4-2': {
|
|
2317
|
-
viewBox: string;
|
|
2318
|
-
body: string;
|
|
2319
|
-
};
|
|
2320
|
-
'4-3': {
|
|
2321
|
-
viewBox: string;
|
|
2322
|
-
body: string;
|
|
2323
|
-
};
|
|
2324
|
-
'7h': {
|
|
2325
|
-
viewBox: string;
|
|
2326
|
-
body: string;
|
|
2327
|
-
};
|
|
2328
|
-
'7s': {
|
|
2329
|
-
viewBox: string;
|
|
2330
|
-
body: string;
|
|
2331
|
-
};
|
|
2332
|
-
'8': {
|
|
2333
|
-
viewBox: string;
|
|
2334
|
-
body: string;
|
|
2335
|
-
};
|
|
2336
|
-
'8c': {
|
|
2337
|
-
viewBox: string;
|
|
2338
|
-
body: string;
|
|
2339
|
-
};
|
|
2340
|
-
'8h': {
|
|
2341
|
-
viewBox: string;
|
|
2342
|
-
body: string;
|
|
2343
|
-
};
|
|
2344
|
-
'8v': {
|
|
2345
|
-
viewBox: string;
|
|
2346
|
-
body: string;
|
|
2347
|
-
};
|
|
2348
|
-
'9s': {
|
|
2349
|
-
viewBox: string;
|
|
2350
|
-
body: string;
|
|
2351
|
-
};
|
|
2352
|
-
'5-4': {
|
|
2353
|
-
viewBox: string;
|
|
2354
|
-
body: string;
|
|
2355
|
-
};
|
|
2356
|
-
'9h': {
|
|
2357
|
-
viewBox: string;
|
|
2358
|
-
body: string;
|
|
2359
|
-
};
|
|
2360
|
-
'9v': {
|
|
2361
|
-
viewBox: string;
|
|
2362
|
-
body: string;
|
|
2363
|
-
};
|
|
2364
|
-
'10c5': {
|
|
2365
|
-
viewBox: string;
|
|
2366
|
-
body: string;
|
|
2367
|
-
};
|
|
2368
|
-
'10h': {
|
|
2369
|
-
viewBox: string;
|
|
2370
|
-
body: string;
|
|
2371
|
-
};
|
|
2372
|
-
'10v': {
|
|
2373
|
-
viewBox: string;
|
|
2374
|
-
body: string;
|
|
2375
|
-
};
|
|
2376
|
-
'12c6': {
|
|
2377
|
-
viewBox: string;
|
|
2378
|
-
body: string;
|
|
2379
|
-
};
|
|
2380
|
-
'12c4': {
|
|
2381
|
-
viewBox: string;
|
|
2382
|
-
body: string;
|
|
2383
|
-
};
|
|
2384
|
-
'12h': {
|
|
2385
|
-
viewBox: string;
|
|
2386
|
-
body: string;
|
|
2387
|
-
};
|
|
2388
|
-
'14c7': {
|
|
2389
|
-
viewBox: string;
|
|
2390
|
-
body: string;
|
|
2391
|
-
};
|
|
2392
|
-
'16c8': {
|
|
2393
|
-
viewBox: string;
|
|
2394
|
-
body: string;
|
|
2395
|
-
};
|
|
2396
|
-
'16c4': {
|
|
2397
|
-
viewBox: string;
|
|
2398
|
-
body: string;
|
|
2399
|
-
};
|
|
2444
|
+
s: ArrangementIcon;
|
|
2445
|
+
'2h': ArrangementIcon;
|
|
2446
|
+
'2v': ArrangementIcon;
|
|
2447
|
+
'3h': ArrangementIcon;
|
|
2448
|
+
'3v': ArrangementIcon;
|
|
2449
|
+
'3s': ArrangementIcon;
|
|
2450
|
+
'3r': ArrangementIcon;
|
|
2451
|
+
'2-1': ArrangementIcon;
|
|
2452
|
+
'1-2': ArrangementIcon;
|
|
2453
|
+
'4': ArrangementIcon;
|
|
2454
|
+
'4v': ArrangementIcon;
|
|
2455
|
+
'4h': ArrangementIcon;
|
|
2456
|
+
'4s': ArrangementIcon;
|
|
2457
|
+
'4s-l': ArrangementIcon;
|
|
2458
|
+
'1-3': ArrangementIcon;
|
|
2459
|
+
'3-1': ArrangementIcon;
|
|
2460
|
+
'2-2-l': ArrangementIcon;
|
|
2461
|
+
'2-2-r': ArrangementIcon;
|
|
2462
|
+
'2-2': ArrangementIcon;
|
|
2463
|
+
'1-4': ArrangementIcon;
|
|
2464
|
+
'5h': ArrangementIcon;
|
|
2465
|
+
'5v': ArrangementIcon;
|
|
2466
|
+
'5s': ArrangementIcon;
|
|
2467
|
+
'5s-l': ArrangementIcon;
|
|
2468
|
+
'2-3': ArrangementIcon;
|
|
2469
|
+
'3-2': ArrangementIcon;
|
|
2470
|
+
'4-1': ArrangementIcon;
|
|
2471
|
+
'2-3-l': ArrangementIcon;
|
|
2472
|
+
'2-3-r': ArrangementIcon;
|
|
2473
|
+
'6': ArrangementIcon;
|
|
2474
|
+
'6h': ArrangementIcon;
|
|
2475
|
+
'6v': ArrangementIcon;
|
|
2476
|
+
'6c': ArrangementIcon;
|
|
2477
|
+
'2-4': ArrangementIcon;
|
|
2478
|
+
'4-2': ArrangementIcon;
|
|
2479
|
+
'4-3': ArrangementIcon;
|
|
2480
|
+
'7h': ArrangementIcon;
|
|
2481
|
+
'7s': ArrangementIcon;
|
|
2482
|
+
'8': ArrangementIcon;
|
|
2483
|
+
'8c': ArrangementIcon;
|
|
2484
|
+
'8h': ArrangementIcon;
|
|
2485
|
+
'8v': ArrangementIcon;
|
|
2486
|
+
'9s': ArrangementIcon;
|
|
2487
|
+
'5-4': ArrangementIcon;
|
|
2488
|
+
'9h': ArrangementIcon;
|
|
2489
|
+
'9v': ArrangementIcon;
|
|
2490
|
+
'10c5': ArrangementIcon;
|
|
2491
|
+
'10h': ArrangementIcon;
|
|
2492
|
+
'10v': ArrangementIcon;
|
|
2493
|
+
'12c6': ArrangementIcon;
|
|
2494
|
+
'12c4': ArrangementIcon;
|
|
2495
|
+
'12h': ArrangementIcon;
|
|
2496
|
+
'14c7': ArrangementIcon;
|
|
2497
|
+
'16c8': ArrangementIcon;
|
|
2498
|
+
'16c4': ArrangementIcon;
|
|
2400
2499
|
};
|
|
2401
2500
|
/** A layout arrangement that wears a glyph, by its code. */
|
|
2402
2501
|
type ArrangementGlyphCode = keyof typeof ARRANGEMENT_ICONS;
|
|
@@ -2431,7 +2530,7 @@ interface ChartIconDiagnostic {
|
|
|
2431
2530
|
}
|
|
2432
2531
|
|
|
2433
2532
|
/** The glyphs of the chart's own controls, by meaning, each with every drawing that carries it. */
|
|
2434
|
-
declare const CONTROL_ICONS: Readonly<Record<"info" | "search" | "indicators" | "visible" | "textColor" | "lineColor" | "open" | "close" | "template" | "fillColor" | "locked" | "sync" | "measure" | "image" | "eraser" | "delete" | "remove" | "hidden" | "copy" | "pause" | "play" | "reset" | "scroll" | "
|
|
2533
|
+
declare const CONTROL_ICONS: Readonly<Record<"info" | "search" | "bold" | "indicators" | "visible" | "textColor" | "lineColor" | "open" | "close" | "template" | "fillColor" | "italic" | "locked" | "sync" | "caret" | "measure" | "image" | "eraser" | "delete" | "remove" | "hidden" | "copy" | "pause" | "play" | "reset" | "scroll" | "magnet" | "compare" | "replay" | "settings" | "fullscreen" | "marketStatus" | "paneCollapse" | "paneRestore" | "paneMaximize" | "replayStatus" | "replayMark" | "replayCut" | "undo" | "redo" | "tileMaximize" | "tileRestore" | "download" | "chevronDown" | "chevronUp" | "chevronLeft" | "chevronRight" | "check" | "clear" | "goLive" | "stepForward" | "stepBack" | "calendar" | "selectBar" | "firstAvailable" | "randomBar" | "clock" | "cursorCross" | "cursorDot" | "cursorArrow" | "magnetStrong" | "drawingsShown" | "drawingsHidden" | "indicatorsShown" | "indicatorsHidden" | "allShown" | "allHidden" | "zoomIn" | "grip" | "tableAddColumn" | "tableAddRow" | "favoritesBar" | "lineSolid" | "lineDashed" | "lineDotted" | "lineThickness1" | "lineThickness2" | "lineThickness3" | "lineThickness4" | "lineEndNormal" | "lineEndArrow" | "fullscreenExit" | "collapse" | "zoomOut" | "add" | "rename" | "duplicate" | "favorite" | "favorited" | "sortAscending" | "sortDescending" | "flyout" | "submenu" | "more" | "emptySearch" | "emptyCompare" | "operatorsShow" | "operatorsHide" | "operatorAdd" | "operatorSubtract" | "operatorMultiply" | "operatorDivide" | "operatorPower" | "operatorReciprocal" | "selectDate" | "zoomTool" | "stayInMode" | "stayInModeOn" | "unlocked" | "hide" | "glyphTools" | "visualOrder", readonly Glyph[]>>;
|
|
2435
2534
|
/** An icon of one of the chart's own controls. */
|
|
2436
2535
|
type ControlIconId = keyof typeof CONTROL_ICONS;
|
|
2437
2536
|
/** Every icon a host may draw: a control's glyph by its meaning, a chart style by its id, a drawing
|
|
@@ -3613,6 +3712,32 @@ interface TextEditSession {
|
|
|
3613
3712
|
row: number;
|
|
3614
3713
|
col: number;
|
|
3615
3714
|
};
|
|
3715
|
+
/** Set when the drawing types its words on the chart: it paints them as they are typed, so the
|
|
3716
|
+
* editor is an invisible field laid exactly over them. Absent, the editor shows the words. */
|
|
3717
|
+
inline?: TextInlineEdit;
|
|
3718
|
+
}
|
|
3719
|
+
/** The live side of an edit on a drawing that types its words on the chart. The drawing paints the
|
|
3720
|
+
* words, their caret, their selection and their placeholder; the editor takes the keys in a field
|
|
3721
|
+
* nobody sees, reports what it holds, and follows the words wherever a repaint stands them. The
|
|
3722
|
+
* words commit through `commitText`, kept exactly as typed. */
|
|
3723
|
+
interface TextInlineEdit {
|
|
3724
|
+
/** Where the words stand now: the field's place, size and type, in pane-local pixels. */
|
|
3725
|
+
frame(): TextEditFrame | null;
|
|
3726
|
+
/** Hear the words move or resize as the chart repaints. Answers the unsubscribe. */
|
|
3727
|
+
onFrame(listener: (frame: TextEditFrame | null) => void): () => void;
|
|
3728
|
+
/** Show what the field holds on the chart: the words typed so far, the selection, the run an
|
|
3729
|
+
* input method is composing, and whether the caret is lit. */
|
|
3730
|
+
update(draft: TextDraft): void;
|
|
3731
|
+
/** A double-click that began with the click that opened this edit landed in the field. Answers
|
|
3732
|
+
* whether it opened the drawing's settings, which ends the edit, rather than selecting a word. */
|
|
3733
|
+
doubleClick(): boolean;
|
|
3734
|
+
/** Tab, or Shift with Tab, in the field. Answers whether the edit moved on to the next place of
|
|
3735
|
+
* the drawing's words, or back to the one before, as a table's cells take turns; that commits
|
|
3736
|
+
* what was typed and opens a new edit there. Answering false leaves the key to the page. */
|
|
3737
|
+
tab(backward: boolean): boolean;
|
|
3738
|
+
/** The viewer ended the edit from the field, with Escape or with Ctrl or Cmd and Enter: nothing
|
|
3739
|
+
* of the drawing stays marked as being typed in. The field commits its words after. */
|
|
3740
|
+
finished(): void;
|
|
3616
3741
|
}
|
|
3617
3742
|
/** A picture ready to place: what the image picker or a paste hands the layer. */
|
|
3618
3743
|
interface PlacedImage {
|
|
@@ -3663,7 +3788,9 @@ type DrawingRejectionReason =
|
|
|
3663
3788
|
| 'foreign-pane'
|
|
3664
3789
|
/** Its group was deleted. The row is not applied under a group that no longer exists. */
|
|
3665
3790
|
| 'deleted-group'
|
|
3666
|
-
/** Its state is not a drawing this build can read
|
|
3791
|
+
/** Its state is not a drawing this build can read: no drawing at all, or one the catalog does not
|
|
3792
|
+
* restore (a type it does not hold, anchors that are not a list, or options that are null). The
|
|
3793
|
+
* row stays in the document as it was written. */
|
|
3667
3794
|
| 'unreadable';
|
|
3668
3795
|
interface DrawingRejection {
|
|
3669
3796
|
id: string;
|
|
@@ -3776,6 +3903,13 @@ interface AttachDrawingsOptions {
|
|
|
3776
3903
|
/** The ink the dot cursor's ring is drawn in, read when the cursor is set: the chart passes its
|
|
3777
3904
|
* text role, so the ring follows the theme. */
|
|
3778
3905
|
ink?: () => string;
|
|
3906
|
+
/** The words a drawing that types on the chart shows while it holds none, read as it paints: the
|
|
3907
|
+
* chart passes its catalog's, in the viewer's language. Absent, the catalog's English. */
|
|
3908
|
+
placeholder?: () => string;
|
|
3909
|
+
/** The chart's own inks drawings paint with where their tools take no color of their own (a
|
|
3910
|
+
* handle's ring and center, words in the chart's ink, a quiet edge), read as they paint: the
|
|
3911
|
+
* chart passes its theme's. Absent, the built-in light theme's. */
|
|
3912
|
+
inks?: () => DrawingInks;
|
|
3779
3913
|
/** Whether the HOST has taken the pointer over for a gesture of its own. While it has, this layer
|
|
3780
3914
|
* paints no pointer glyph at all: the host is drawing the mark that says where a click lands, and
|
|
3781
3915
|
* a cursor beside it would be a second claim about the same point. This layer writes the plot's
|
|
@@ -3869,6 +4003,9 @@ interface DrawingsHandle {
|
|
|
3869
4003
|
/** The symbol's smallest price move (tick-denominated readouts on measure-style drawings); null
|
|
3870
4004
|
* while the symbol is unresolved. */
|
|
3871
4005
|
setTick(tick: number | null): void;
|
|
4006
|
+
/** The currency the symbol is quoted in: the unit a position's risk amount is offered in. Null
|
|
4007
|
+
* while the symbol is unresolved or states none. */
|
|
4008
|
+
setCurrency(code: string | null): void;
|
|
3872
4009
|
/** The symbol's price formatter: every drawing label, pill and readout writes prices through it.
|
|
3873
4010
|
* Null returns the layer to the drawings package's declared stand-in. */
|
|
3874
4011
|
setPriceFormatter(format: ((price: number) => string) | null): void;
|
|
@@ -3933,7 +4070,7 @@ type ReplayPhase = 'off' | 'arming' | 'on';
|
|
|
3933
4070
|
* timeframe, tick, price format, teardown) and minus the session verbs only the package's own
|
|
3934
4071
|
* surfaces use (the live `IDrawing`, the preview and edit session, the inline text session, the
|
|
3935
4072
|
* presets). The public surface grows on demand, not by exposure. */
|
|
3936
|
-
type ChartDrawingsApi = Omit<DrawingsHandle, 'setSymbol' | 'setTimeframe' | 'setTick' | 'setPriceFormatter' | 'destroy' | 'selectedDrawing' | 'commitEdit' | 'beginPreview' | 'endPreview' | 'textEdit' | 'commitText' | 'cancelText' | 'presets'>;
|
|
4073
|
+
type ChartDrawingsApi = Omit<DrawingsHandle, 'setSymbol' | 'setTimeframe' | 'setTick' | 'setCurrency' | 'setPriceFormatter' | 'destroy' | 'selectedDrawing' | 'commitEdit' | 'beginPreview' | 'endPreview' | 'textEdit' | 'commitText' | 'cancelText' | 'presets'>;
|
|
3937
4074
|
|
|
3938
4075
|
/** What a preset frames: seconds of history, the year to date, or everything loaded. */
|
|
3939
4076
|
type RangeSpan = number | 'ytd' | 'all';
|
|
@@ -4608,15 +4745,31 @@ interface IndicatorInstance {
|
|
|
4608
4745
|
title?: string;
|
|
4609
4746
|
overrides?: IndicatorOverrides;
|
|
4610
4747
|
}
|
|
4611
|
-
/**
|
|
4612
|
-
*
|
|
4613
|
-
*
|
|
4748
|
+
/** A part of the catalog the viewer can limit the symbol search to, as the host names it: a
|
|
4749
|
+
* portfolio, a watchlist, or any other set of symbols the host can search within. The symbol
|
|
4750
|
+
* search offers it as a toggle chip at the far edge of the asset-class strip, wearing `mark` and
|
|
4751
|
+
* `label`. While the chip is on, the dialog searches with `search` and lists `recents`; while it is
|
|
4752
|
+
* off, it searches the datafeed and lists the chart's recents. */
|
|
4614
4753
|
interface SearchScope {
|
|
4754
|
+
/** The scope's name, written on the chip. */
|
|
4615
4755
|
readonly label: string;
|
|
4756
|
+
/** Paints the scope's own mark into the 18px box the chart owns at the chip's leading edge, and
|
|
4757
|
+
* returns what takes it down. Absent, the chip wears the label's initial. */
|
|
4616
4758
|
readonly mark?: (request: {
|
|
4617
4759
|
host: HTMLElement;
|
|
4618
4760
|
size: number;
|
|
4619
4761
|
}) => (() => void) | void;
|
|
4762
|
+
/** Searches within the scope while the chip is on. The chart's search controller asks it exactly
|
|
4763
|
+
* as it asks the datafeed's `search`: the query after the debounce, the selected classes as
|
|
4764
|
+
* `cls` or `classes`, a page at a time through `limit` and `offset`, and a newer question
|
|
4765
|
+
* retiring an older one's answer. It answers a page as the datafeed does, `hasMore` exact. */
|
|
4766
|
+
search(query: string, options?: DatafeedSearchOptions): Promise<SearchPage>;
|
|
4767
|
+
/** The recent picks the dialog lists while the chip is on, and where it records a pick made then,
|
|
4768
|
+
* beside the chart's recents, which record every pick in either state. Absent, the dialog lists
|
|
4769
|
+
* no recents while the chip is on. */
|
|
4770
|
+
readonly recents?: RecentsPort;
|
|
4771
|
+
/** Whether the chip is on when the dialog opens. Default true. */
|
|
4772
|
+
readonly on?: boolean;
|
|
4620
4773
|
}
|
|
4621
4774
|
/** How the symbol search offers its class filter and its spread operators. Every field is optional,
|
|
4622
4775
|
* and a host that sets none gets the default search: all six operators, an All chip, and one class
|
|
@@ -4889,16 +5042,18 @@ interface ChartWidgetOptions extends MarkPainterHooks {
|
|
|
4889
5042
|
image?: ImageOptions;
|
|
4890
5043
|
/** The symbol picker's host inputs. The chart owns the search controller (its debounce, cache and
|
|
4891
5044
|
* cancellation); a host supplies only what it alone knows: where the viewer's recent symbols
|
|
4892
|
-
* live, what its feed's asset classes are called,
|
|
4893
|
-
*
|
|
4894
|
-
* written, and the search offers its default class
|
|
5045
|
+
* live, what its feed's asset classes are called, how the classes and the spread operators are
|
|
5046
|
+
* offered, and a scope the viewer can limit the search to. Absent, recents last the page, a
|
|
5047
|
+
* class's filter chip wears the class token as written, and the search offers its default class
|
|
5048
|
+
* strip and operators and no scope. */
|
|
4895
5049
|
search?: SearchDisplayOptions & {
|
|
4896
5050
|
recents?: RecentsPort;
|
|
4897
5051
|
/** Display names for the asset-class tokens the feed's `config()` declares in `classes`. */
|
|
4898
5052
|
classNames?: Readonly<Record<string, string>>;
|
|
4899
|
-
/**
|
|
4900
|
-
*
|
|
4901
|
-
*
|
|
5053
|
+
/** A part of the catalog the viewer can limit the symbol search to, offered as a toggle chip at
|
|
5054
|
+
* the far edge of the asset-class strip. Read each time the dialog opens; null offers none.
|
|
5055
|
+
* The compare dialog, adding a comparison or changing one, offers no scope and searches the
|
|
5056
|
+
* datafeed. */
|
|
4902
5057
|
scope?: () => SearchScope | null;
|
|
4903
5058
|
};
|
|
4904
5059
|
/** Where the image and glyph drawing tools get their artwork, and how a picked file becomes a
|
|
@@ -5202,9 +5357,9 @@ declare function isCollapsed(height: number | undefined): boolean;
|
|
|
5202
5357
|
|
|
5203
5358
|
/** Every action the menu can offer. A host handles the ids it supports and passes `has` flags for
|
|
5204
5359
|
* the rest — an unsupported action simply never becomes a row. */
|
|
5205
|
-
type ChartMenuAction = 'reset-view' | 'copy-price' | 'paste' | 'remove-indicators' | 'remove-drawings' | 'settings';
|
|
5360
|
+
type ChartMenuAction = 'table-add-column' | 'table-add-row' | 'table-remove-row' | 'table-remove-column' | 'reset-view' | 'copy-price' | 'paste' | 'remove-indicators' | 'remove-drawings' | 'settings';
|
|
5206
5361
|
/** The glyph a row wears, named rather than drawn — the host owns the artwork. */
|
|
5207
|
-
type ChartMenuIcon = 'reset' | 'settings' | 'check';
|
|
5362
|
+
type ChartMenuIcon = 'reset' | 'settings' | 'check' | 'table-add-column' | 'table-add-row' | 'delete';
|
|
5208
5363
|
type ChartMenuRow = {
|
|
5209
5364
|
kind: 'separator';
|
|
5210
5365
|
} | {
|
|
@@ -5230,6 +5385,12 @@ interface ChartMenuContext {
|
|
|
5230
5385
|
canPaste?: boolean;
|
|
5231
5386
|
/** A settings surface exists to open. Default true; a host without one omits the row. */
|
|
5232
5387
|
canSettings?: boolean;
|
|
5388
|
+
/** The level lies on a table. Its rows add a column right of the cell being typed in and a row
|
|
5389
|
+
* below it, or at the table's ends where no cell is, and with a cell, remove its row and its
|
|
5390
|
+
* column. Omitted where the level lies on none. */
|
|
5391
|
+
table?: {
|
|
5392
|
+
cell: boolean;
|
|
5393
|
+
};
|
|
5233
5394
|
/** The widget's language for the row labels. Omitted ⇒ English. */
|
|
5234
5395
|
t?: ChartTranslate;
|
|
5235
5396
|
}
|
|
@@ -5296,6 +5457,8 @@ declare function createSessionBands(chart: IChartApi, series: ISeriesApi<SeriesT
|
|
|
5296
5457
|
/** The theme in effect. Read at draw time, so a mode switch repaints the bands with the pane. */
|
|
5297
5458
|
theme: () => SemanticTheme): SessionBandsPrimitive;
|
|
5298
5459
|
|
|
5460
|
+
/** The compact editor beside `rect` inside `container`, its glyphs drawn from the chart's own
|
|
5461
|
+
* artwork. */
|
|
5299
5462
|
declare function openInputsEditor(container: HTMLElement, rect: {
|
|
5300
5463
|
x: number;
|
|
5301
5464
|
y: number;
|
|
@@ -5630,4 +5793,4 @@ declare function mountTimeframePicker(options: TimeframePickerOptions & {
|
|
|
5630
5793
|
container: HTMLElement;
|
|
5631
5794
|
}): MountedTimeframePicker;
|
|
5632
5795
|
|
|
5633
|
-
export { ARRANGEMENTS, type AccessPolicy, type ActiveSubsession, type Arrangement, type AttachDrawingsOptions, BRAND_DOWN, BRAND_UP, BUILT_IN_INDICATORS, BUILT_IN_LOCALES, type BuiltInIndicator, CHART_ICON_IDS, CHART_STYLES, COLLAPSED_H, COMPARE_COLORS, type CanvasTheme, type Capabilities, ChartBody, type ChartChrome, type ChartCompareApi, type ChartCustomLocale, ChartDatafeed, type ChartDictionary, type ChartDrawingsApi, type ChartEvents, type ChartExtension, type ChartExtensionChart, type ChartExtensionCommand, type ChartExtensionContext, type ChartExtensionHandle, type ChartExtensionIcon, type ChartExtensionIconPath, type ChartExtensionMenuBuilder, type ChartExtensionMenuContext, type ChartExtensionMenuItem, type ChartExtensionPane, type ChartExtensionPriceLine, type ChartExtensionReplayState, type ChartExtensionScope, type ChartExtensionSeries, type ChartHandle, type ChartHistoryApi, type ChartI18n, type ChartI18nOptions, type ChartIconArtwork, type ChartIconContext, type ChartIconDiagnostic, type ChartIconFactory, type ChartIconFailure, type ChartIconId, type ChartIcons, type ChartLegendRow, type ChartLocale, type ChartLocaleCode, type ChartMenuAction, type ChartMenuContext, type ChartMenuIcon, type ChartMenuRow, ChartMessageKey, ChartMeta, type ChartOverrides, type ChartPaneSyncApi, type ChartPreferences, type ChartPriceFormatter, type ChartReplayApi, ChartSaveLoadAdapter, type ChartSaveLoadApi, type ChartStorage, type ChartStyleId, type ChartTimezone, type ChartTranslate, type ChartWidget, type ChartWidgetOptions, type CommandRegistry, type CommandResult, type CommandScope, type CommandSpec, type CompareDeps, type CompareEntry, type CompareHandle, type ComparePlacement, type CompareSnapshot, type CompareSymbol, type ContextMenuHandle, type CrosshairUi, type CustomThemes, DEFAULT_OVERRIDES, DEFAULT_SUBSESSION, DEFAULT_TIMEZONE, type DataSourceMarkPainter, DataStatus, type DrawingApplyOutcome, DrawingAssetPort, DrawingContextKind, type DrawingDocumentApi, type DrawingDocumentPort, type DrawingDocumentRefusal, type DrawingEvent, type DrawingOwner, DrawingPreferences, type DrawingPresets, type DrawingReadOutcome, type DrawingRejection, type DrawingRejectionReason, DrawingResourceContext, DrawingsBody, type DrawingsEvents, type DrawingsHandle, DrawingsMeta, type DrawingsWorkflow, EXCHANGE_TIMEZONE, type FeatureConfig, FeedBar, type FetchLike, FillBetweenPrimitive, type FullscreenApi, type FullscreenOptions, type HistoryChange, type HistoryEventState, IMAGE_HEADER_H, type ImageApi, type ImageEvent, type ImageHeader, type ImageOptions, type ImageTextRun, type ImageTile, type IndicatorCategory, type IndicatorDefinition, type IndicatorEvent, type IndicatorFill, type IndicatorInstance, type IndicatorLevel, type IndicatorManifest, type IndicatorOverrides, type IndicatorPickerAction, type IndicatorPickerBuiltInState, type IndicatorPickerCollection, type IndicatorPickerItem, type IndicatorPickerSource, type IndicatorPlot, type IndicatorPlots, type IndicatorsApi, type IndicatorsRenderer, LAYOUT_MENU_ROWS, type LayoutApi, LayoutBody, type LayoutEvent, LayoutMeta, type LayoutOptions, type LayoutSaveLoadApi, type LayoutSyncFlags, type LegendUi, type LogicalRange, MAIN_MIN_H, MIN_BAR_SPACING, MIRRORED_ICONS, type ManifestFill, type ManifestInput, type ManifestLevel, type ManifestPlot, type ManifestRun, type MarkPainters, type MarketStatus, type MatchSegment, type MountedSymbolSearch, type MountedTimeframePicker, type OpenResource, PRICE_SCALE_MODE, type PaneOp, type PanePlan, type PaneRect, type PaneState, type PartialOverrides, type PlacedImage, type PlotArea, type PlotPoint, PriceFormat, PriceFormatter, RANGE_PRESETS, RECENT_SYMBOLS_CAP, REPLAY_SPEEDS, type RangeFrameTarget, type RangePreset, type RangeSpan, type RecentsPort, type ReplayEventState, type ReplaySpeed, type ResourceLoadOutcome, ResourceRef, type ResourceRemoveOutcome, type ResourceSaveOutcome, ResourceStore, SCALE_MODES, SCALE_MODE_OPTIONS, SCROLL_STEP_BARS, SESSION_DOT, SESSION_LABEL, SESSION_STATE_TITLE, SPREAD_OPERATORS, type SaveConflictInfo, type ScaleMode, type SearchClassFilter, SearchClassNode, type SearchController, type SearchControllerOptions, type SearchDisplayOptions, type SearchScope, type SearchState, type SelectedDrawing, type SemanticTheme, type SessionBandsPrimitive, type SessionModel, type SessionSchedule, type SessionSegment, type SessionSource, type SessionState, type SessionTimeline, type SettingsMenuUi, ShadePrimitive, type SpreadOperator, type SpreadOperatorId, type SubsessionSource, SymbolInfo, type SymbolMarkPainter, type SymbolPriceFormat, SymbolRow, type SymbolSearchCache, type SymbolSearchHandle, type SymbolSearchOptions, THEME_ROLES, TIMEFRAME_MAX, TIMEFRAME_PRESETS, TIMEFRAME_PRESET_TOKENS, TIMEFRAME_UNITS, TIMEFRAME_UNIT_NAME, TIMEFRAME_UNIT_SECONDS, TIMEZONES, TOP_BAR_SLOTS, TemplateBody, TemplateMeta, type TextEditSession, type ThemeChangeListener, type ThemeController, type ThemeControllerOptions, type ThemeDeclaration, type ThemeDiagnostic, type ThemeDiagnosticCode, type ThemeMode, type ThemeOptions, type ThemeRole, type ThemeRoleFamily, type ThemeRoleId, type ThemeRoleKind, type ThemeRootStyle, type TimeRange, type Timeframe, type TimeframeGroup, type TimeframePickerHandle, type TimeframePickerOptions, type TimeframeRestrictions, type TimeframeUnit, type TimezoneRow, type ToolbarButton, type ToolbarButtonOptions, type ToolbarButtonState, type TopBarSlot, type TopBarUi, type TouchOptions, type TransitionOptions, type UdfDatafeedOptions, type UdfSymbolResponse, type UiConfig, type VenueMarkPainter, type WidgetEvents, ZOOM_FACTOR, type ZoneClock, allowedTimeframes, applyBar, applyPlotOverrides, arrangementName, arrangementOf, attachCompare, attachDrawings, attachIndicators, autoTimeframeFor, buildManifestPlots, canvasTheme, canvasToBlob, chartContextMenu, chartDictionaries, chartIconArtwork, clipToWindow, coerceChartStyle, coerceScaleMode, compareTimeframes, composeFormingBar, composeImage, createChart, createChartI18n, createSearchController, createSessionBands, createSymbolSearchCache, createThemeController, createUdfDatafeed, effectivePlotColor, exchangeTimezoneText, formatClock, formatDuration, formatTimeframe, frameRange, hasExtendedHours, imageFileName, imageHeaderRuns, imageLayoutHeaderRuns, imageTileRuns, indicatorHidden, isChartStyle, isCollapsed, isIntradayTimeframe, isSymbolPair, isTimezoneChoice, latestPlotValue, layerOverrides, looksLikeSpread, makeCrosshairTimeFormatter, makeTickMarkFormatter, manifestInputDefaults, marketStatus, marketStatusFor, marketStatusText, marketStatusTitle, matchSegments, memoryChartStorage, memoryRecents, mergeOverrides, mountContextMenu, mountSymbolSearch, mountTimeframePicker, nextSessionChange, openInputsEditor, openSymbolSearch, openTimeframePicker, overriddenManifest, parseSessionModel, parseTimeframe, pickCompareColor, placeableByWidget, planPaneOp, promoteRecent, rangeAvailable, rangePresetTip, rangeSpanSeconds, resolveDisplayTimezone, resolveInitialTf, scrolledPosition, seriesTargetOf, sessionStateAt, sessionTimeline, spreadExpression, spreadSearchQuery, subTimeframesFor, subsessionBarFilter, tfSeconds, tfToUdfResolution, timeframeAllowed, timeframeGroupUnit, timeframeLabel, timeframeOrder, timeframeSeconds, timezoneCity, timezoneLabel, timezoneListing, toolName, tzOffsetLabel, tzOffsetMinutes, udfPriceFormat, udfResolutionToTf, udfSymbolInfo, valueShaped, withFoldedHistory, zoneClock, zoomedBarSpacing };
|
|
5796
|
+
export { ARRANGEMENTS, type AccessPolicy, type ActiveSubsession, type Arrangement, type AttachDrawingsOptions, BRAND_DOWN, BRAND_UP, BUILT_IN_INDICATORS, BUILT_IN_LOCALES, type BuiltInIndicator, CHART_ICON_IDS, CHART_STYLES, COLLAPSED_H, COMPARE_COLORS, type CanvasTheme, type Capabilities, ChartBody, type ChartChrome, type ChartCompareApi, type ChartCustomLocale, ChartDatafeed, type ChartDictionary, type ChartDrawingsApi, type ChartEvents, type ChartExtension, type ChartExtensionChart, type ChartExtensionCommand, type ChartExtensionContext, type ChartExtensionHandle, type ChartExtensionIcon, type ChartExtensionIconPath, type ChartExtensionMenuBuilder, type ChartExtensionMenuContext, type ChartExtensionMenuItem, type ChartExtensionPane, type ChartExtensionPriceLine, type ChartExtensionReplayState, type ChartExtensionScope, type ChartExtensionSeries, type ChartHandle, type ChartHistoryApi, type ChartI18n, type ChartI18nOptions, type ChartIconArtwork, type ChartIconContext, type ChartIconDiagnostic, type ChartIconFactory, type ChartIconFailure, type ChartIconId, type ChartIcons, type ChartLegendRow, type ChartLocale, type ChartLocaleCode, type ChartMenuAction, type ChartMenuContext, type ChartMenuIcon, type ChartMenuRow, ChartMessageKey, ChartMeta, type ChartOverrides, type ChartPaneSyncApi, type ChartPreferences, type ChartPriceFormatter, type ChartReplayApi, ChartSaveLoadAdapter, type ChartSaveLoadApi, type ChartStorage, type ChartStyleId, type ChartTimezone, type ChartTranslate, type ChartWidget, type ChartWidgetOptions, type CommandRegistry, type CommandResult, type CommandScope, type CommandSpec, type CompareDeps, type CompareEntry, type CompareHandle, type ComparePlacement, type CompareSnapshot, type CompareSymbol, type ContextMenuHandle, type CrosshairUi, type CustomThemes, DEFAULT_OVERRIDES, DEFAULT_SUBSESSION, DEFAULT_TIMEZONE, type DataSourceMarkPainter, DataStatus, DatafeedSearchOptions, type DrawingApplyOutcome, DrawingAssetPort, DrawingContextKind, type DrawingDocumentApi, type DrawingDocumentPort, type DrawingDocumentRefusal, type DrawingEvent, type DrawingInks, type DrawingOwner, DrawingPreferences, type DrawingPresets, type DrawingReadOutcome, type DrawingRejection, type DrawingRejectionReason, DrawingResourceContext, DrawingsBody, type DrawingsEvents, type DrawingsHandle, DrawingsMeta, type DrawingsWorkflow, EXCHANGE_TIMEZONE, type FeatureConfig, FeedBar, type FetchLike, FillBetweenPrimitive, type FullscreenApi, type FullscreenOptions, type HistoryChange, type HistoryEventState, IMAGE_HEADER_H, type ImageApi, type ImageEvent, type ImageHeader, type ImageOptions, type ImageTextRun, type ImageTile, type IndicatorCategory, type IndicatorDefinition, type IndicatorEvent, type IndicatorFill, type IndicatorInstance, type IndicatorLevel, type IndicatorManifest, type IndicatorOverrides, type IndicatorPickerAction, type IndicatorPickerBuiltInState, type IndicatorPickerCollection, type IndicatorPickerItem, type IndicatorPickerSource, type IndicatorPlot, type IndicatorPlots, type IndicatorsApi, type IndicatorsRenderer, LAYOUT_MENU_ROWS, type LayoutApi, LayoutBody, type LayoutEvent, LayoutMeta, type LayoutOptions, type LayoutSaveLoadApi, type LayoutSyncFlags, type LegendUi, type LogicalRange, MAIN_MIN_H, MIN_BAR_SPACING, MIRRORED_ICONS, type ManifestFill, type ManifestInput, type ManifestLevel, type ManifestPlot, type ManifestRun, type MarkPainters, type MarketStatus, type MatchSegment, type MountedSymbolSearch, type MountedTimeframePicker, type OpenResource, PRICE_SCALE_MODE, type PaneOp, type PanePlan, type PaneRect, type PaneState, type PartialOverrides, type PlacedImage, type PlotArea, type PlotPoint, PriceFormat, PriceFormatter, RANGE_PRESETS, RECENT_SYMBOLS_CAP, REPLAY_SPEEDS, type RangeFrameTarget, type RangePreset, type RangeSpan, type RecentsPort, type ReplayEventState, type ReplaySpeed, type ResourceLoadOutcome, ResourceRef, type ResourceRemoveOutcome, type ResourceSaveOutcome, ResourceStore, SCALE_MODES, SCALE_MODE_OPTIONS, SCROLL_STEP_BARS, SESSION_DOT, SESSION_LABEL, SESSION_STATE_TITLE, SPREAD_OPERATORS, type SaveConflictInfo, type ScaleMode, type SearchClassFilter, SearchClassNode, type SearchController, type SearchControllerOptions, type SearchDisplayOptions, SearchPage, type SearchScope, type SearchState, type SelectedDrawing, type SemanticTheme, type SessionBandsPrimitive, type SessionModel, type SessionSchedule, type SessionSegment, type SessionSource, type SessionState, type SessionTimeline, type SettingsMenuUi, ShadePrimitive, type SpreadOperator, type SpreadOperatorId, type SubsessionSource, SymbolInfo, type SymbolMarkPainter, type SymbolPriceFormat, SymbolRow, type SymbolSearchCache, type SymbolSearchHandle, type SymbolSearchOptions, THEME_ROLES, TIMEFRAME_MAX, TIMEFRAME_PRESETS, TIMEFRAME_PRESET_TOKENS, TIMEFRAME_UNITS, TIMEFRAME_UNIT_NAME, TIMEFRAME_UNIT_SECONDS, TIMEZONES, TOP_BAR_SLOTS, TemplateBody, TemplateMeta, TextDraft, TextEditFrame, type TextEditSession, type TextInlineEdit, type ThemeChangeListener, type ThemeController, type ThemeControllerOptions, type ThemeDeclaration, type ThemeDiagnostic, type ThemeDiagnosticCode, type ThemeMode, type ThemeOptions, type ThemeRole, type ThemeRoleFamily, type ThemeRoleId, type ThemeRoleKind, type ThemeRootStyle, type TimeRange, type Timeframe, type TimeframeGroup, type TimeframePickerHandle, type TimeframePickerOptions, type TimeframeRestrictions, type TimeframeUnit, type TimezoneRow, type ToolbarButton, type ToolbarButtonOptions, type ToolbarButtonState, type TopBarSlot, type TopBarUi, type TouchOptions, type TransitionOptions, type UdfDatafeedOptions, type UdfSymbolResponse, type UiConfig, type VenueMarkPainter, type WidgetEvents, ZOOM_FACTOR, type ZoneClock, allowedTimeframes, applyBar, applyPlotOverrides, arrangementName, arrangementOf, attachCompare, attachDrawings, attachIndicators, autoTimeframeFor, buildManifestPlots, canvasTheme, canvasToBlob, chartContextMenu, chartDictionaries, chartIconArtwork, clipToWindow, coerceChartStyle, coerceScaleMode, compareTimeframes, composeFormingBar, composeImage, createChart, createChartI18n, createSearchController, createSessionBands, createSymbolSearchCache, createThemeController, createUdfDatafeed, effectivePlotColor, exchangeTimezoneText, formatClock, formatDuration, formatTimeframe, frameRange, hasExtendedHours, imageFileName, imageHeaderRuns, imageLayoutHeaderRuns, imageTileRuns, indicatorHidden, isChartStyle, isCollapsed, isIntradayTimeframe, isSymbolPair, isTimezoneChoice, latestPlotValue, layerOverrides, looksLikeSpread, makeCrosshairTimeFormatter, makeTickMarkFormatter, manifestInputDefaults, marketStatus, marketStatusFor, marketStatusText, marketStatusTitle, matchSegments, memoryChartStorage, memoryRecents, mergeOverrides, mountContextMenu, mountSymbolSearch, mountTimeframePicker, nextSessionChange, openInputsEditor, openSymbolSearch, openTimeframePicker, overriddenManifest, parseSessionModel, parseTimeframe, pickCompareColor, placeableByWidget, planPaneOp, promoteRecent, rangeAvailable, rangePresetTip, rangeSpanSeconds, resolveDisplayTimezone, resolveInitialTf, scrolledPosition, seriesTargetOf, sessionStateAt, sessionTimeline, spreadExpression, spreadSearchQuery, subTimeframesFor, subsessionBarFilter, tfSeconds, tfToUdfResolution, timeframeAllowed, timeframeGroupUnit, timeframeLabel, timeframeOrder, timeframeSeconds, timezoneCity, timezoneLabel, timezoneListing, toolName, tzOffsetLabel, tzOffsetMinutes, udfPriceFormat, udfResolutionToTf, udfSymbolInfo, valueShaped, withFoldedHistory, zoneClock, zoomedBarSpacing };
|