@363045841yyt/klinechart 0.6.9 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/favicon.ico +0 -0
- package/dist/index.cjs +5 -5
- package/dist/index.js +8980 -2945
- package/dist/klinechart.css +1 -1
- package/dist/mock-stock-data.json +1 -0
- package/dist/src/api/data/baostock.d.ts +4 -0
- package/dist/src/components/IndicatorSelector.vue.d.ts +0 -10
- package/dist/src/components/KLineChart.vue.d.ts +1 -1
- package/dist/src/config/chartSettings.d.ts +6 -0
- package/dist/src/core/chart.d.ts +43 -10
- package/dist/src/core/controller/interaction.d.ts +2 -30
- package/dist/src/core/controller/markerInteraction.d.ts +28 -0
- package/dist/src/core/controller/pinchTracker.d.ts +18 -0
- package/dist/src/core/controller/tooltipPosition.d.ts +21 -0
- package/dist/src/core/drawing/plugin.d.ts +19 -0
- package/dist/src/core/indicators/atrState.d.ts +16 -0
- package/dist/src/core/indicators/calculators.d.ts +196 -0
- package/dist/src/core/indicators/chaikinVolState.d.ts +18 -0
- package/dist/src/core/indicators/cmfState.d.ts +16 -0
- package/dist/src/core/indicators/demaState.d.ts +16 -0
- package/dist/src/core/indicators/donchianState.d.ts +23 -0
- package/dist/src/core/indicators/fibState.d.ts +26 -0
- package/dist/src/core/indicators/hmaState.d.ts +16 -0
- package/dist/src/core/indicators/hvState.d.ts +18 -0
- package/dist/src/core/indicators/ichimokuState.d.ts +44 -0
- package/dist/src/core/indicators/indicatorRuntime.d.ts +55 -0
- package/dist/src/core/indicators/kamaState.d.ts +20 -0
- package/dist/src/core/indicators/keltnerState.d.ts +27 -0
- package/dist/src/core/indicators/mfiState.d.ts +16 -0
- package/dist/src/core/indicators/obvState.d.ts +14 -0
- package/dist/src/core/indicators/parkinsonState.d.ts +18 -0
- package/dist/src/core/indicators/pivotState.d.ts +29 -0
- package/dist/src/core/indicators/pvtState.d.ts +14 -0
- package/dist/src/core/indicators/rocState.d.ts +16 -0
- package/dist/src/core/indicators/sarState.d.ts +26 -0
- package/dist/src/core/indicators/scheduler.d.ts +100 -2
- package/dist/src/core/indicators/stateComposer.d.ts +81 -0
- package/dist/src/core/indicators/structureState.d.ts +43 -0
- package/dist/src/core/indicators/supertrendState.d.ts +22 -0
- package/dist/src/core/indicators/temaState.d.ts +16 -0
- package/dist/src/core/indicators/trixState.d.ts +20 -0
- package/dist/src/core/indicators/vmaState.d.ts +16 -0
- package/dist/src/core/indicators/volumeProfileState.d.ts +34 -0
- package/dist/src/core/indicators/vwapState.d.ts +16 -0
- package/dist/src/core/indicators/wmaState.d.ts +16 -0
- package/dist/src/core/indicators/workerProtocol.d.ts +308 -1
- package/dist/src/core/indicators/zonesState.d.ts +26 -0
- package/dist/src/core/paneRenderer.d.ts +3 -1
- package/dist/src/core/renderers/Indicator/atr.d.ts +17 -0
- package/dist/src/core/renderers/Indicator/chaikinVol.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/cmf.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/dema.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/donchian.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/fib.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/hma.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/hv.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/ichimoku.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/index.d.ts +28 -1
- package/dist/src/core/renderers/Indicator/indicatorData.d.ts +13 -0
- package/dist/src/core/renderers/Indicator/kama.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/keltner.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/mfi.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/obv.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/parkinson.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/pivot.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/pvt.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/roc.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/sar.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/scale/atr_scale.d.ts +11 -0
- package/dist/src/core/renderers/Indicator/structure.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/subPaneConfig.d.ts +9 -0
- package/dist/src/core/renderers/Indicator/supertrend.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/tema.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/trix.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/vma.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/volumeProfile.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/vwap.d.ts +4 -0
- package/dist/src/core/renderers/Indicator/wma.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/zones.d.ts +4 -0
- package/dist/src/core/renderers/webgl/candleSurface.d.ts +16 -5
- package/dist/src/core/renderers/webgl/sharedWebGLSurface.d.ts +33 -0
- package/dist/src/core/subPaneManager.d.ts +22 -0
- package/dist/src/semantic/types.d.ts +95 -0
- package/dist/src/test-setup.d.ts +6 -0
- package/package.json +1 -1
- /package/dist/src/api/data/{baostock.test.d.ts → baostock.integration.test.d.ts} +0 -0
package/dist/src/core/chart.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { PaneRenderer } from './paneRenderer';
|
|
|
6
6
|
import { MarkerManager, CustomMarkerEntity } from './marker/registry';
|
|
7
7
|
import { getPhysicalKLineConfig, calcKWidthPx } from './utils/klineConfig';
|
|
8
8
|
import { IndicatorScheduler } from './indicators/scheduler';
|
|
9
|
+
import { SubPaneEntry } from './subPaneManager';
|
|
9
10
|
import { PluginHostImpl, RendererPlugin, RendererPluginWithHost, PaneRole, PaneCapabilities } from '../plugin';
|
|
10
11
|
import { SubIndicatorType } from './renderers/Indicator';
|
|
11
12
|
export { getPhysicalKLineConfig, calcKWidthPx };
|
|
@@ -123,6 +124,8 @@ export declare class Chart {
|
|
|
123
124
|
private onViewportChange?;
|
|
124
125
|
/** 共享 X 轴上下文缓存 */
|
|
125
126
|
private xAxisCtx;
|
|
127
|
+
/** Chart 级共享 WebGL canvas/context */
|
|
128
|
+
private sharedWebGLSurface;
|
|
126
129
|
/** pane 布局回流回调(Chart -> UI 单向) */
|
|
127
130
|
private onPaneLayoutChange?;
|
|
128
131
|
/** 数据变化回调(供外部同步 dataLength) */
|
|
@@ -139,17 +142,19 @@ export declare class Chart {
|
|
|
139
142
|
private lastVisibleRange;
|
|
140
143
|
/** Overlay 帧复用的最近主渲染结果 */
|
|
141
144
|
private cachedDrawFrame;
|
|
145
|
+
/** 副图管理器 */
|
|
146
|
+
private subPaneManager;
|
|
142
147
|
/** 当前激活的主图指标列表(如 ['boll', 'ma']) */
|
|
143
148
|
private activeMainIndicators;
|
|
144
149
|
/** 主图指标参数配置 */
|
|
145
150
|
private mainIndicatorParams;
|
|
146
151
|
/**
|
|
147
152
|
* 启用主图指标
|
|
148
|
-
* @param indicatorId 指标ID
|
|
153
|
+
* @param indicatorId 指标ID
|
|
149
154
|
* @param params 可选的指标参数
|
|
150
155
|
* @returns 是否成功启用
|
|
151
156
|
*/
|
|
152
|
-
enableMainIndicator(indicatorId: string, params?: Record<string, number | boolean>): boolean;
|
|
157
|
+
enableMainIndicator(indicatorId: string, params?: Record<string, number | boolean | string>): boolean;
|
|
153
158
|
/**
|
|
154
159
|
* 禁用主图指标
|
|
155
160
|
* @param indicatorId 指标ID
|
|
@@ -177,12 +182,12 @@ export declare class Chart {
|
|
|
177
182
|
* @param indicatorId 指标ID
|
|
178
183
|
* @param params 参数对象
|
|
179
184
|
*/
|
|
180
|
-
updateMainIndicatorParams(indicatorId: string, params: Record<string, number | boolean>): void;
|
|
185
|
+
updateMainIndicatorParams(indicatorId: string, params: Record<string, number | boolean | string>): void;
|
|
181
186
|
/**
|
|
182
187
|
* 获取主图指标参数
|
|
183
188
|
* @param indicatorId 指标ID
|
|
184
189
|
*/
|
|
185
|
-
getMainIndicatorParams(indicatorId: string): Record<string, number | boolean> | null;
|
|
190
|
+
getMainIndicatorParams(indicatorId: string): Record<string, number | boolean | string> | null;
|
|
186
191
|
/**
|
|
187
192
|
* 清除所有主图指标
|
|
188
193
|
*/
|
|
@@ -237,6 +242,9 @@ export declare class Chart {
|
|
|
237
242
|
* @param level 更新级别,决定渲染哪些层
|
|
238
243
|
*/
|
|
239
244
|
draw(level?: UpdateLevel): void;
|
|
245
|
+
private prepareFrameData;
|
|
246
|
+
private renderPanes;
|
|
247
|
+
private renderXAxis;
|
|
240
248
|
/**
|
|
241
249
|
* 应用渲染状态(由 Vue/Store 层在状态更新后调用)
|
|
242
250
|
* Chart 不拥有业务 SSOT,只负责接收参数并渲染
|
|
@@ -281,7 +289,7 @@ export declare class Chart {
|
|
|
281
289
|
setPaneDefinitions(defs: PaneSpec[]): void;
|
|
282
290
|
upsertPane(def: PaneSpec): void;
|
|
283
291
|
removePaneDefinition(paneId: string): void;
|
|
284
|
-
bindIndicatorToPane(paneId: string, indicatorId: SubIndicatorType, params?: Record<string, number | boolean>): void;
|
|
292
|
+
bindIndicatorToPane(paneId: string, indicatorId: SubIndicatorType, params?: Record<string, number | boolean | string>): void;
|
|
285
293
|
/** 更新绘图对象 */
|
|
286
294
|
setDrawings(drawings: import('../plugin').DrawingObject[]): void;
|
|
287
295
|
/** 更新选中的绘图 ID */
|
|
@@ -308,28 +316,53 @@ export declare class Chart {
|
|
|
308
316
|
* @param paneId pane 标识符
|
|
309
317
|
*/
|
|
310
318
|
hasPane(paneId: string): boolean;
|
|
311
|
-
/** 副图渲染器名称前缀 */
|
|
312
|
-
private static readonly SUB_PANE_PREFIX;
|
|
313
319
|
/**
|
|
314
320
|
* 创建副图面板并注册指标渲染器
|
|
321
|
+
* @param paneId 副图实例标识符(如 'RSI_0', 'MACD_0')
|
|
315
322
|
* @param indicatorId 指标类型
|
|
316
323
|
* @param params 指标参数
|
|
317
324
|
* @returns 是否创建成功
|
|
318
325
|
*/
|
|
319
|
-
createSubPane(indicatorId: SubIndicatorType, params?: Record<string, number | boolean>): boolean;
|
|
326
|
+
createSubPane(paneId: string, indicatorId: SubIndicatorType, params?: Record<string, number | boolean | string>): boolean;
|
|
320
327
|
/**
|
|
321
328
|
* 移除副图面板及其渲染器
|
|
322
|
-
* @param
|
|
329
|
+
* @param paneId 副图实例标识符
|
|
330
|
+
*/
|
|
331
|
+
removeSubPane(paneId: string): void;
|
|
332
|
+
/**
|
|
333
|
+
* 替换副图的指标类型
|
|
334
|
+
* @param paneId 副图实例标识符
|
|
335
|
+
* @param newIndicatorId 新的指标类型
|
|
336
|
+
* @param params 新指标参数
|
|
337
|
+
*/
|
|
338
|
+
replaceSubPaneIndicator(paneId: string, newIndicatorId: SubIndicatorType, params?: Record<string, number | boolean | string>): void;
|
|
339
|
+
/**
|
|
340
|
+
* 更新副图指标参数
|
|
341
|
+
* @param paneId 副图实例标识符
|
|
342
|
+
* @param params 新参数
|
|
323
343
|
*/
|
|
324
|
-
|
|
344
|
+
updateSubPaneParams(paneId: string, params: Record<string, unknown>): void;
|
|
325
345
|
/**
|
|
326
346
|
* 清除所有副图面板
|
|
327
347
|
*/
|
|
328
348
|
clearSubPanes(): void;
|
|
329
349
|
/**
|
|
330
350
|
* 获取当前所有副图指标类型
|
|
351
|
+
* @deprecated 使用 getSubPaneEntries 获取完整信息
|
|
331
352
|
*/
|
|
332
353
|
getSubPaneIndicators(): SubIndicatorType[];
|
|
354
|
+
/**
|
|
355
|
+
* 获取所有副图条目
|
|
356
|
+
*/
|
|
357
|
+
getSubPaneEntries(): SubPaneEntry[];
|
|
358
|
+
/**
|
|
359
|
+
* 根据 paneId 获取副图条目
|
|
360
|
+
* @param paneId 副图实例标识符
|
|
361
|
+
*/
|
|
362
|
+
getSubPaneEntry(paneId: string): SubPaneEntry | undefined;
|
|
363
|
+
private getDefaultSubPaneParams;
|
|
364
|
+
/** 副图渲染器名称前缀(保留向后兼容) */
|
|
365
|
+
private static readonly SUB_PANE_PREFIX;
|
|
333
366
|
/**
|
|
334
367
|
* 平移价格轴(用于主图区域上下拖动)
|
|
335
368
|
* @param paneId 目标 pane ID
|
|
@@ -43,13 +43,7 @@ export declare class InteractionController {
|
|
|
43
43
|
private hoveredRightAxisPaneId;
|
|
44
44
|
/** [触屏]:触摸会话标记,避免触摸触发的模拟 mouse 事件干扰 */
|
|
45
45
|
private isTouchSession;
|
|
46
|
-
|
|
47
|
-
private activePointers;
|
|
48
|
-
private lastPinchDistance;
|
|
49
|
-
private pinchCenter;
|
|
50
|
-
private isPinching;
|
|
51
|
-
/** 捏合缩放回调 */
|
|
52
|
-
private onPinchZoomCallback?;
|
|
46
|
+
private pinchTracker;
|
|
53
47
|
/** 十字线位置 */
|
|
54
48
|
crosshairPos: {
|
|
55
49
|
x: number;
|
|
@@ -81,24 +75,7 @@ export declare class InteractionController {
|
|
|
81
75
|
private onInteractionChangeCallback?;
|
|
82
76
|
/** 用户设置 */
|
|
83
77
|
private settings;
|
|
84
|
-
|
|
85
|
-
hoveredMarkerId: string | null;
|
|
86
|
-
/** 当前点击的 marker ID */
|
|
87
|
-
clickedMarkerId: string | null;
|
|
88
|
-
/** 当前 hover 的 marker 数据(供外部显示 tooltip 使用) */
|
|
89
|
-
hoveredMarkerData: MarkerEntity | null;
|
|
90
|
-
/** 当前点击的 marker 数据(供外部显示 tooltip 使用) */
|
|
91
|
-
clickedMarkerData: MarkerEntity | null;
|
|
92
|
-
/** marker hover 回调函数 */
|
|
93
|
-
private onMarkerHoverCallback?;
|
|
94
|
-
/** marker click 回调函数 */
|
|
95
|
-
private onMarkerClickCallback?;
|
|
96
|
-
/** 当前 hover 的自定义标记 */
|
|
97
|
-
hoveredCustomMarker: CustomMarkerEntity | null;
|
|
98
|
-
/** 自定义标记 hover 回调 */
|
|
99
|
-
private onCustomMarkerHoverCallback?;
|
|
100
|
-
/** 自定义标记 click 回调 */
|
|
101
|
-
private onCustomMarkerClickCallback?;
|
|
78
|
+
private markerState;
|
|
102
79
|
/** 当前帧的 K 线起始 x 坐标数组 */
|
|
103
80
|
private kLinePositions;
|
|
104
81
|
/** 当前帧的可见 K 线索引范围 */
|
|
@@ -108,7 +85,6 @@ export declare class InteractionController {
|
|
|
108
85
|
/** K 线宽度(物理像素),用于计算 K 线中心偏移 */
|
|
109
86
|
private kWidthPx;
|
|
110
87
|
constructor(chart: Chart);
|
|
111
|
-
/** 设置捏合缩放回调 */
|
|
112
88
|
setOnPinchZoom(callback: (delta: number, centerX: number) => void): void;
|
|
113
89
|
/** 更新用户设置 */
|
|
114
90
|
updateSettings(settings: ChartSettings): void;
|
|
@@ -163,13 +139,9 @@ export declare class InteractionController {
|
|
|
163
139
|
onRightAxisPointerLeave(e: PointerEvent): void;
|
|
164
140
|
/** 检查是否正在拖拽 */
|
|
165
141
|
isDraggingState(): boolean;
|
|
166
|
-
/** 设置 marker hover 回调 */
|
|
167
142
|
setOnMarkerHover(callback: (marker: MarkerEntity | null) => void): void;
|
|
168
|
-
/** 设置 marker click 回调 */
|
|
169
143
|
setOnMarkerClick(callback: (marker: MarkerEntity) => void): void;
|
|
170
|
-
/** 设置自定义标记 hover 回调 */
|
|
171
144
|
setOnCustomMarkerHover(callback: (marker: CustomMarkerEntity | null) => void): void;
|
|
172
|
-
/** 设置自定义标记 click 回调 */
|
|
173
145
|
setOnCustomMarkerClick(callback: (marker: CustomMarkerEntity) => void): void;
|
|
174
146
|
/** 命中可拖拽分隔线(返回上方 paneId) */
|
|
175
147
|
private hitTestPaneSeparator;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { MarkerEntity, CustomMarkerEntity, MarkerManager } from '../marker/registry';
|
|
2
|
+
/** Marker交互状态,管理标记 hover/click 状态和回调,与 InteractionController 正交。 */
|
|
3
|
+
export declare class MarkerInteractionState {
|
|
4
|
+
hoveredMarkerId: string | null;
|
|
5
|
+
clickedMarkerId: string | null;
|
|
6
|
+
hoveredMarkerData: MarkerEntity | null;
|
|
7
|
+
clickedMarkerData: MarkerEntity | null;
|
|
8
|
+
hoveredCustomMarker: CustomMarkerEntity | null;
|
|
9
|
+
private onMarkerHoverCallback?;
|
|
10
|
+
private onMarkerClickCallback?;
|
|
11
|
+
private onCustomMarkerHoverCallback?;
|
|
12
|
+
private onCustomMarkerClickCallback?;
|
|
13
|
+
setOnMarkerHover(callback: (marker: MarkerEntity | null) => void): void;
|
|
14
|
+
setOnMarkerClick(callback: (marker: MarkerEntity) => void): void;
|
|
15
|
+
setOnCustomMarkerHover(callback: (marker: CustomMarkerEntity | null) => void): void;
|
|
16
|
+
setOnCustomMarkerClick(callback: (marker: CustomMarkerEntity) => void): void;
|
|
17
|
+
handleClick(hitMarker: MarkerEntity): void;
|
|
18
|
+
/** 从坐标更新 hover 状态。返回 true 表示命中 marker/custom-marker,调用方应跳过后续 hover 逻辑。 */
|
|
19
|
+
updateHoverFromPoint(worldX: number, mouseX: number, mouseY: number, markerManager: MarkerManager): boolean;
|
|
20
|
+
private enterMarkerHover;
|
|
21
|
+
private leaveMarkerHover;
|
|
22
|
+
private enterCustomMarkerHover;
|
|
23
|
+
private leaveCustomMarkerHover;
|
|
24
|
+
/** 清空 hover 状态并触发回调(拖拽/离开时调用)。需要 markerManager 以便同步清除 Native hover。 */
|
|
25
|
+
clearAll(markerManager: MarkerManager): void;
|
|
26
|
+
/** 全量重置(数据更新时调用,不触发热点回调) */
|
|
27
|
+
reset(): void;
|
|
28
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** 触屏双指捏合跟踪,与 InteractionController 正交。 */
|
|
2
|
+
export declare class PinchTracker {
|
|
3
|
+
private activePointers;
|
|
4
|
+
private lastPinchDistance;
|
|
5
|
+
private pinchCenter;
|
|
6
|
+
private isPinching;
|
|
7
|
+
private onPinchZoomCallback?;
|
|
8
|
+
setOnPinchZoom(callback: (delta: number, centerX: number) => void): void;
|
|
9
|
+
getIsPinching(): boolean;
|
|
10
|
+
getPointerCount(): number;
|
|
11
|
+
/** Returns true if pinch started (caller should early-return, not process drag). */
|
|
12
|
+
handlePointerDown(e: PointerEvent, isTouchSession: boolean): boolean;
|
|
13
|
+
handlePointerUp(e: PointerEvent): void;
|
|
14
|
+
handlePointerLeave(e: PointerEvent): void;
|
|
15
|
+
/** Returns true if pinch zoom was processed (caller should skip further pointer-move handling). */
|
|
16
|
+
handlePointerMove(e: PointerEvent): boolean;
|
|
17
|
+
reset(): void;
|
|
18
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface TooltipPositionInput {
|
|
2
|
+
mouseX: number;
|
|
3
|
+
mouseY: number;
|
|
4
|
+
viewWidth: number;
|
|
5
|
+
viewHeight: number;
|
|
6
|
+
plotWidth: number;
|
|
7
|
+
plotHeight: number;
|
|
8
|
+
tooltipSize: {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
};
|
|
12
|
+
useAnchorPositioning: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface TooltipPositionOutput {
|
|
15
|
+
pos: {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
};
|
|
19
|
+
anchorPlacement?: 'right-bottom' | 'left-bottom';
|
|
20
|
+
}
|
|
21
|
+
export declare function computeTooltipPosition(input: TooltipPositionInput): TooltipPositionOutput;
|
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
import { RendererPlugin } from '../../plugin';
|
|
2
2
|
import { DrawingStore, DrawingDefinitionRegistry, PrimitiveRendererSet } from './index';
|
|
3
|
+
/**
|
|
4
|
+
* 创建绘图渲染器插件(主层,负责绘制 shape)
|
|
5
|
+
* 注意:此插件不再推送轴标签,标签由 createDrawingLabelOverlayPlugin 负责
|
|
6
|
+
*/
|
|
3
7
|
export declare function createDrawingRendererPlugin(options: {
|
|
4
8
|
store: DrawingStore;
|
|
5
9
|
paneId?: string;
|
|
6
10
|
definitions?: DrawingDefinitionRegistry;
|
|
7
11
|
renderers?: PrimitiveRendererSet;
|
|
8
12
|
}): RendererPlugin;
|
|
13
|
+
/**
|
|
14
|
+
* 创建绘图标签 Overlay 插件
|
|
15
|
+
*
|
|
16
|
+
* ⚠️ 警告:此插件必须在 All 和 Overlay 更新级别运行
|
|
17
|
+
* 当前代码库中没有 UpdateLevel.Main 的触发点,因此此插件设置为 layer: 'overlay' 是安全的
|
|
18
|
+
* 如果将来添加 Main 级别的更新,此插件会被跳过,导致选中绘图的轴标签消失
|
|
19
|
+
*
|
|
20
|
+
* 解决方案:如果将来需要使用 Main 级别,请将此插件改为同时在 main 和 overlay 层注册,
|
|
21
|
+
* 或移除分层过滤让此插件在所有级别运行
|
|
22
|
+
*/
|
|
23
|
+
export declare function createDrawingLabelOverlayPlugin(options: {
|
|
24
|
+
store: DrawingStore;
|
|
25
|
+
paneId?: string;
|
|
26
|
+
definitions?: DrawingDefinitionRegistry;
|
|
27
|
+
}): RendererPlugin;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseIndicatorState } from '../../plugin';
|
|
2
|
+
export interface ATRRenderState extends BaseIndicatorState {
|
|
3
|
+
timestamp: number;
|
|
4
|
+
series: (number | undefined)[];
|
|
5
|
+
params: {
|
|
6
|
+
period: number;
|
|
7
|
+
showATR: boolean;
|
|
8
|
+
};
|
|
9
|
+
valueMin: number;
|
|
10
|
+
valueMax: number;
|
|
11
|
+
visibleMin: number;
|
|
12
|
+
visibleMax: number;
|
|
13
|
+
}
|
|
14
|
+
export declare const createATRStateKey: (paneId: string) => `indicator:${string}:${string}`;
|
|
15
|
+
export declare const DEFAULT_ATR_PERIOD = 14;
|
|
16
|
+
export declare const EMPTY_ATR_STATE: ATRRenderState;
|
|
@@ -267,3 +267,199 @@ export declare function calcFASTKDataSoA(layout: KLineSoALayout, period: number)
|
|
|
267
267
|
* @returns MACD 数据点数组
|
|
268
268
|
*/
|
|
269
269
|
export declare function calcMACDDataSoA(layout: KLineSoALayout, fastPeriod: number, slowPeriod: number, signalPeriod: number): MACDPoint[];
|
|
270
|
+
export declare const DEFAULT_ATR_PERIOD = 14;
|
|
271
|
+
/**
|
|
272
|
+
* 计算 Wilder ATR。
|
|
273
|
+
* TR(0) = H(0) - L(0)
|
|
274
|
+
* TR(t) = max(H(t) - L(t), |H(t) - C(t-1)|, |L(t) - C(t-1)|)
|
|
275
|
+
* ATR(period-1) = mean(TR[0..period-1])
|
|
276
|
+
* ATR(t) = ((period-1) * ATR(t-1) + TR(t)) / period for t >= period
|
|
277
|
+
*
|
|
278
|
+
* @param data K 线数组
|
|
279
|
+
* @param period 周期,需 >= 1;若 <= 0 或 data.length < period,返回全 undefined
|
|
280
|
+
*/
|
|
281
|
+
export declare function calcATRData(data: KLineData[], period: number): (number | undefined)[];
|
|
282
|
+
/**
|
|
283
|
+
* 从 SoA 布局计算 ATR(包装函数,对齐其他指标的 SoA 入口)
|
|
284
|
+
*/
|
|
285
|
+
export declare function calcATRDataSoA(layout: KLineSoALayout, period: number): (number | undefined)[];
|
|
286
|
+
export declare const DEFAULT_WMA_PERIOD = 9;
|
|
287
|
+
export declare function calcWMAData(data: KLineData[], period: number): (number | undefined)[];
|
|
288
|
+
export declare function calcWMADataSoA(layout: KLineSoALayout, period: number): (number | undefined)[];
|
|
289
|
+
export declare const DEFAULT_DEMA_PERIOD = 20;
|
|
290
|
+
export declare function calcDEMAData(data: KLineData[], period: number): (number | undefined)[];
|
|
291
|
+
export declare function calcDEMADataSoA(layout: KLineSoALayout, period: number): (number | undefined)[];
|
|
292
|
+
export declare const DEFAULT_TEMA_PERIOD = 20;
|
|
293
|
+
export declare function calcTEMAData(data: KLineData[], period: number): (number | undefined)[];
|
|
294
|
+
export declare function calcTEMADataSoA(layout: KLineSoALayout, period: number): (number | undefined)[];
|
|
295
|
+
export declare const DEFAULT_HMA_PERIOD = 9;
|
|
296
|
+
export declare function calcHMAData(data: KLineData[], period: number): (number | undefined)[];
|
|
297
|
+
export declare function calcHMADataSoA(layout: KLineSoALayout, period: number): (number | undefined)[];
|
|
298
|
+
export declare const DEFAULT_KAMA_PERIOD = 10;
|
|
299
|
+
export declare const DEFAULT_KAMA_FAST_PERIOD = 2;
|
|
300
|
+
export declare const DEFAULT_KAMA_SLOW_PERIOD = 30;
|
|
301
|
+
export declare function calcKAMAData(data: KLineData[], period: number, fastPeriod: number, slowPeriod: number): (number | undefined)[];
|
|
302
|
+
export declare function calcKAMADataSoA(layout: KLineSoALayout, period: number, fastPeriod: number, slowPeriod: number): (number | undefined)[];
|
|
303
|
+
export interface SARPoint {
|
|
304
|
+
value: number;
|
|
305
|
+
trend: 'up' | 'down';
|
|
306
|
+
}
|
|
307
|
+
export declare const DEFAULT_SAR_STEP = 0.02;
|
|
308
|
+
export declare const DEFAULT_SAR_MAX_STEP = 0.2;
|
|
309
|
+
export declare function calcSARData(data: KLineData[], step: number, maxStep: number): (SARPoint | undefined)[];
|
|
310
|
+
export declare function calcSARDataSoA(layout: KLineSoALayout, step: number, maxStep: number): (SARPoint | undefined)[];
|
|
311
|
+
export interface SuperTrendPoint {
|
|
312
|
+
value: number;
|
|
313
|
+
trend: 'up' | 'down';
|
|
314
|
+
}
|
|
315
|
+
export declare const DEFAULT_SUPERTREND_ATR_PERIOD = 10;
|
|
316
|
+
export declare const DEFAULT_SUPERTREND_MULTIPLIER = 3;
|
|
317
|
+
export declare function calcSuperTrendData(data: KLineData[], atrPeriod: number, multiplier: number): (SuperTrendPoint | undefined)[];
|
|
318
|
+
export declare function calcSuperTrendDataSoA(layout: KLineSoALayout, atrPeriod: number, multiplier: number): (SuperTrendPoint | undefined)[];
|
|
319
|
+
export interface KeltnerPoint {
|
|
320
|
+
upper: number;
|
|
321
|
+
middle: number;
|
|
322
|
+
lower: number;
|
|
323
|
+
}
|
|
324
|
+
export declare const DEFAULT_KELTNER_EMA_PERIOD = 20;
|
|
325
|
+
export declare const DEFAULT_KELTNER_ATR_PERIOD = 10;
|
|
326
|
+
export declare const DEFAULT_KELTNER_MULTIPLIER = 2;
|
|
327
|
+
export declare function calcKeltnerData(data: KLineData[], emaPeriod: number, atrPeriod: number, multiplier: number): (KeltnerPoint | undefined)[];
|
|
328
|
+
export declare function calcKeltnerDataSoA(layout: KLineSoALayout, emaPeriod: number, atrPeriod: number, multiplier: number): (KeltnerPoint | undefined)[];
|
|
329
|
+
export interface DonchianPoint {
|
|
330
|
+
upper: number;
|
|
331
|
+
middle: number;
|
|
332
|
+
lower: number;
|
|
333
|
+
}
|
|
334
|
+
export declare const DEFAULT_DONCHIAN_PERIOD = 20;
|
|
335
|
+
export declare function calcDonchianData(data: KLineData[], period: number): (DonchianPoint | undefined)[];
|
|
336
|
+
export declare function calcDonchianDataSoA(layout: KLineSoALayout, period: number): (DonchianPoint | undefined)[];
|
|
337
|
+
export interface IchimokuPoint {
|
|
338
|
+
tenkan?: number;
|
|
339
|
+
kijun?: number;
|
|
340
|
+
spanA?: number;
|
|
341
|
+
spanB?: number;
|
|
342
|
+
chikou?: number;
|
|
343
|
+
}
|
|
344
|
+
export declare const DEFAULT_ICHIMOKU_TENKAN = 9;
|
|
345
|
+
export declare const DEFAULT_ICHIMOKU_KIJUN = 26;
|
|
346
|
+
export declare const DEFAULT_ICHIMOKU_SPAN_B = 52;
|
|
347
|
+
export declare const DEFAULT_ICHIMOKU_DISPLACEMENT = 26;
|
|
348
|
+
export declare function calcIchimokuData(data: KLineData[], tenkanPeriod: number, kijunPeriod: number, spanBPeriod: number, displacement: number): (IchimokuPoint | undefined)[];
|
|
349
|
+
export declare function calcIchimokuDataSoA(layout: KLineSoALayout, tenkanPeriod: number, kijunPeriod: number, spanBPeriod: number, displacement: number): (IchimokuPoint | undefined)[];
|
|
350
|
+
export declare const DEFAULT_ROC_PERIOD = 12;
|
|
351
|
+
export declare function calcROCData(data: KLineData[], period: number): (number | undefined)[];
|
|
352
|
+
export declare function calcROCDataSoA(layout: KLineSoALayout, period: number): (number | undefined)[];
|
|
353
|
+
export interface TRIXResult {
|
|
354
|
+
series: (number | undefined)[];
|
|
355
|
+
signalSeries: (number | undefined)[];
|
|
356
|
+
}
|
|
357
|
+
export declare const DEFAULT_TRIX_PERIOD = 15;
|
|
358
|
+
export declare const DEFAULT_TRIX_SIGNAL_PERIOD = 9;
|
|
359
|
+
export declare function calcTRIXData(data: KLineData[], period: number, signalPeriod: number): TRIXResult;
|
|
360
|
+
export declare function calcTRIXDataSoA(layout: KLineSoALayout, period: number, signalPeriod: number): TRIXResult;
|
|
361
|
+
export declare const DEFAULT_HV_PERIOD = 20;
|
|
362
|
+
export declare const DEFAULT_HV_ANNUALIZATION = 252;
|
|
363
|
+
export declare function calcHVData(data: KLineData[], period: number, annualizationFactor: number): (number | undefined)[];
|
|
364
|
+
export declare function calcHVDataSoA(layout: KLineSoALayout, period: number, annualizationFactor: number): (number | undefined)[];
|
|
365
|
+
export declare const DEFAULT_PARKINSON_PERIOD = 20;
|
|
366
|
+
export declare const DEFAULT_PARKINSON_ANNUALIZATION = 252;
|
|
367
|
+
export declare function calcParkinsonData(data: KLineData[], period: number, annualizationFactor: number): (number | undefined)[];
|
|
368
|
+
export declare function calcParkinsonDataSoA(layout: KLineSoALayout, period: number, annualizationFactor: number): (number | undefined)[];
|
|
369
|
+
export declare const DEFAULT_CHAIKIN_VOL_EMA_PERIOD = 10;
|
|
370
|
+
export declare const DEFAULT_CHAIKIN_VOL_ROC_PERIOD = 10;
|
|
371
|
+
export declare function calcChaikinVolData(data: KLineData[], emaPeriod: number, rocPeriod: number): (number | undefined)[];
|
|
372
|
+
export declare function calcChaikinVolDataSoA(layout: KLineSoALayout, emaPeriod: number, rocPeriod: number): (number | undefined)[];
|
|
373
|
+
export declare const DEFAULT_VMA_PERIOD = 5;
|
|
374
|
+
export declare function calcVMAData(data: KLineData[], period: number): (number | undefined)[];
|
|
375
|
+
export declare function calcVMADataSoA(layout: KLineSoALayout, period: number): (number | undefined)[];
|
|
376
|
+
export declare function calcOBVData(data: KLineData[]): (number | undefined)[];
|
|
377
|
+
export declare function calcOBVDataSoA(layout: KLineSoALayout): (number | undefined)[];
|
|
378
|
+
export declare function calcPVTData(data: KLineData[]): (number | undefined)[];
|
|
379
|
+
export declare function calcPVTDataSoA(layout: KLineSoALayout): (number | undefined)[];
|
|
380
|
+
export declare const DEFAULT_VWAP_SESSION_GAP_MS = 0;
|
|
381
|
+
export declare function calcVWAPData(data: KLineData[], sessionResetGapMs: number): (number | undefined)[];
|
|
382
|
+
export declare function calcVWAPDataSoA(layout: KLineSoALayout, sessionResetGapMs: number): (number | undefined)[];
|
|
383
|
+
export declare const DEFAULT_CMF_PERIOD = 20;
|
|
384
|
+
export declare function calcCMFData(data: KLineData[], period: number): (number | undefined)[];
|
|
385
|
+
export declare function calcCMFDataSoA(layout: KLineSoALayout, period: number): (number | undefined)[];
|
|
386
|
+
export declare const DEFAULT_MFI_PERIOD = 14;
|
|
387
|
+
export declare function calcMFIData(data: KLineData[], period: number): (number | undefined)[];
|
|
388
|
+
export declare function calcMFIDataSoA(layout: KLineSoALayout, period: number): (number | undefined)[];
|
|
389
|
+
export interface PivotPoint {
|
|
390
|
+
pp: number;
|
|
391
|
+
r1: number;
|
|
392
|
+
r2: number;
|
|
393
|
+
r3: number;
|
|
394
|
+
s1: number;
|
|
395
|
+
s2: number;
|
|
396
|
+
s3: number;
|
|
397
|
+
}
|
|
398
|
+
export declare function calcPivotData(data: KLineData[]): (PivotPoint | undefined)[];
|
|
399
|
+
export declare function calcPivotDataSoA(layout: KLineSoALayout): (PivotPoint | undefined)[];
|
|
400
|
+
export interface FibPoint {
|
|
401
|
+
high: number;
|
|
402
|
+
low: number;
|
|
403
|
+
direction: 'up' | 'down';
|
|
404
|
+
level236: number;
|
|
405
|
+
level382: number;
|
|
406
|
+
level500: number;
|
|
407
|
+
level618: number;
|
|
408
|
+
level786: number;
|
|
409
|
+
}
|
|
410
|
+
export declare const DEFAULT_FIB_PERIOD = 50;
|
|
411
|
+
export declare function calcFibData(data: KLineData[], period: number): (FibPoint | undefined)[];
|
|
412
|
+
export declare function calcFibDataSoA(layout: KLineSoALayout, period: number): (FibPoint | undefined)[];
|
|
413
|
+
export interface SwingPoint {
|
|
414
|
+
index: number;
|
|
415
|
+
price: number;
|
|
416
|
+
kind: 'high' | 'low';
|
|
417
|
+
label: 'HH' | 'HL' | 'LH' | 'LL';
|
|
418
|
+
confirmed: boolean;
|
|
419
|
+
}
|
|
420
|
+
export type StructureEventKind = 'BOS' | 'CHOCH';
|
|
421
|
+
export interface StructureEvent {
|
|
422
|
+
kind: StructureEventKind;
|
|
423
|
+
index: number;
|
|
424
|
+
triggerPrice: number;
|
|
425
|
+
brokenLevel: number;
|
|
426
|
+
brokenSwingIndex: number;
|
|
427
|
+
direction: 'up' | 'down';
|
|
428
|
+
}
|
|
429
|
+
export interface StructureSnapshot {
|
|
430
|
+
swings: SwingPoint[];
|
|
431
|
+
events: StructureEvent[];
|
|
432
|
+
trend: 'up' | 'down' | 'range';
|
|
433
|
+
}
|
|
434
|
+
export declare const DEFAULT_STRUCTURE_LEFT = 2;
|
|
435
|
+
export declare const DEFAULT_STRUCTURE_RIGHT = 2;
|
|
436
|
+
export declare function calcStructureData(data: KLineData[], leftWindow: number, rightWindow: number, breakoutSource: 'close' | 'wick'): StructureSnapshot;
|
|
437
|
+
export declare function calcStructureDataSoA(layout: KLineSoALayout, leftWindow: number, rightWindow: number, breakoutSource: 'close' | 'wick'): StructureSnapshot;
|
|
438
|
+
export type ZoneKind = 'FVG_BULL' | 'FVG_BEAR' | 'OB_BULL' | 'OB_BEAR';
|
|
439
|
+
export interface Zone {
|
|
440
|
+
kind: ZoneKind;
|
|
441
|
+
startIndex: number;
|
|
442
|
+
endIndex?: number;
|
|
443
|
+
high: number;
|
|
444
|
+
low: number;
|
|
445
|
+
}
|
|
446
|
+
export declare const DEFAULT_ZONES_OB_LOOKBACK = 5;
|
|
447
|
+
export declare function calcZonesData(data: KLineData[], obLookback: number, structureLeftWindow: number, structureRightWindow: number, breakoutSource: 'close' | 'wick'): Zone[];
|
|
448
|
+
export declare function calcZonesDataSoA(layout: KLineSoALayout, obLookback: number, structureLeftWindow: number, structureRightWindow: number, breakoutSource: 'close' | 'wick'): Zone[];
|
|
449
|
+
export interface VolumeProfileBin {
|
|
450
|
+
priceLow: number;
|
|
451
|
+
priceHigh: number;
|
|
452
|
+
volume: number;
|
|
453
|
+
}
|
|
454
|
+
export interface VolumeProfileResult {
|
|
455
|
+
bins: VolumeProfileBin[];
|
|
456
|
+
poc: number;
|
|
457
|
+
vah: number;
|
|
458
|
+
val: number;
|
|
459
|
+
totalVolume: number;
|
|
460
|
+
}
|
|
461
|
+
export declare const DEFAULT_VP_BINS = 24;
|
|
462
|
+
export declare const DEFAULT_VP_LOOKBACK = 0;
|
|
463
|
+
export declare const DEFAULT_VP_VALUE_AREA = 0.7;
|
|
464
|
+
export declare function calcVolumeProfileData(data: KLineData[], bins: number, lookback: number, valueAreaPercent: number): VolumeProfileResult;
|
|
465
|
+
export declare function calcVolumeProfileDataSoA(layout: KLineSoALayout, bins: number, lookback: number, valueAreaPercent: number): VolumeProfileResult;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseIndicatorState } from '../../plugin';
|
|
2
|
+
export interface ChaikinVolRenderState extends BaseIndicatorState {
|
|
3
|
+
timestamp: number;
|
|
4
|
+
series: (number | undefined)[];
|
|
5
|
+
params: {
|
|
6
|
+
emaPeriod: number;
|
|
7
|
+
rocPeriod: number;
|
|
8
|
+
showChaikinVol: boolean;
|
|
9
|
+
};
|
|
10
|
+
valueMin: number;
|
|
11
|
+
valueMax: number;
|
|
12
|
+
visibleMin: number;
|
|
13
|
+
visibleMax: number;
|
|
14
|
+
}
|
|
15
|
+
export declare const createChaikinVolStateKey: (paneId: string) => `indicator:${string}:${string}`;
|
|
16
|
+
export declare const DEFAULT_CHAIKIN_VOL_EMA_PERIOD = 10;
|
|
17
|
+
export declare const DEFAULT_CHAIKIN_VOL_ROC_PERIOD = 10;
|
|
18
|
+
export declare const EMPTY_CHAIKIN_VOL_STATE: ChaikinVolRenderState;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseIndicatorState } from '../../plugin';
|
|
2
|
+
export interface CMFRenderState extends BaseIndicatorState {
|
|
3
|
+
timestamp: number;
|
|
4
|
+
series: (number | undefined)[];
|
|
5
|
+
params: {
|
|
6
|
+
period: number;
|
|
7
|
+
showCMF: boolean;
|
|
8
|
+
};
|
|
9
|
+
valueMin: number;
|
|
10
|
+
valueMax: number;
|
|
11
|
+
visibleMin: number;
|
|
12
|
+
visibleMax: number;
|
|
13
|
+
}
|
|
14
|
+
export declare const createCMFStateKey: (paneId: string) => `indicator:${string}:${string}`;
|
|
15
|
+
export declare const DEFAULT_CMF_PERIOD = 20;
|
|
16
|
+
export declare const EMPTY_CMF_STATE: CMFRenderState;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseIndicatorState } from '../../plugin';
|
|
2
|
+
export interface DEMARenderState extends BaseIndicatorState {
|
|
3
|
+
timestamp: number;
|
|
4
|
+
series: (number | undefined)[];
|
|
5
|
+
params: {
|
|
6
|
+
period: number;
|
|
7
|
+
showDEMA: boolean;
|
|
8
|
+
};
|
|
9
|
+
valueMin: number;
|
|
10
|
+
valueMax: number;
|
|
11
|
+
visibleMin: number;
|
|
12
|
+
visibleMax: number;
|
|
13
|
+
}
|
|
14
|
+
export declare const createDEMAStateKey: (paneId: string) => `indicator:${string}:${string}`;
|
|
15
|
+
export declare const DEFAULT_DEMA_PERIOD = 20;
|
|
16
|
+
export declare const EMPTY_DEMA_STATE: DEMARenderState;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BaseIndicatorState } from '../../plugin';
|
|
2
|
+
export interface DonchianPoint {
|
|
3
|
+
upper: number;
|
|
4
|
+
middle: number;
|
|
5
|
+
lower: number;
|
|
6
|
+
}
|
|
7
|
+
export interface DonchianRenderState extends BaseIndicatorState {
|
|
8
|
+
timestamp: number;
|
|
9
|
+
series: (DonchianPoint | undefined)[];
|
|
10
|
+
params: {
|
|
11
|
+
period: number;
|
|
12
|
+
showUpper: boolean;
|
|
13
|
+
showMiddle: boolean;
|
|
14
|
+
showLower: boolean;
|
|
15
|
+
};
|
|
16
|
+
valueMin: number;
|
|
17
|
+
valueMax: number;
|
|
18
|
+
visibleMin: number;
|
|
19
|
+
visibleMax: number;
|
|
20
|
+
}
|
|
21
|
+
export declare const createDonchianStateKey: (paneId: string) => `indicator:${string}:${string}`;
|
|
22
|
+
export declare const DEFAULT_DONCHIAN_PERIOD = 20;
|
|
23
|
+
export declare const EMPTY_DONCHIAN_STATE: DonchianRenderState;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BaseIndicatorState } from '../../plugin';
|
|
2
|
+
export interface FibPoint {
|
|
3
|
+
high: number;
|
|
4
|
+
low: number;
|
|
5
|
+
direction: 'up' | 'down';
|
|
6
|
+
level236: number;
|
|
7
|
+
level382: number;
|
|
8
|
+
level500: number;
|
|
9
|
+
level618: number;
|
|
10
|
+
level786: number;
|
|
11
|
+
}
|
|
12
|
+
export interface FibRenderState extends BaseIndicatorState {
|
|
13
|
+
timestamp: number;
|
|
14
|
+
series: (FibPoint | undefined)[];
|
|
15
|
+
params: {
|
|
16
|
+
period: number;
|
|
17
|
+
showLevels: boolean;
|
|
18
|
+
};
|
|
19
|
+
valueMin: number;
|
|
20
|
+
valueMax: number;
|
|
21
|
+
visibleMin: number;
|
|
22
|
+
visibleMax: number;
|
|
23
|
+
}
|
|
24
|
+
export declare const createFibStateKey: (paneId: string) => `indicator:${string}:${string}`;
|
|
25
|
+
export declare const DEFAULT_FIB_PERIOD = 50;
|
|
26
|
+
export declare const EMPTY_FIB_STATE: FibRenderState;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseIndicatorState } from '../../plugin';
|
|
2
|
+
export interface HMARenderState extends BaseIndicatorState {
|
|
3
|
+
timestamp: number;
|
|
4
|
+
series: (number | undefined)[];
|
|
5
|
+
params: {
|
|
6
|
+
period: number;
|
|
7
|
+
showHMA: boolean;
|
|
8
|
+
};
|
|
9
|
+
valueMin: number;
|
|
10
|
+
valueMax: number;
|
|
11
|
+
visibleMin: number;
|
|
12
|
+
visibleMax: number;
|
|
13
|
+
}
|
|
14
|
+
export declare const createHMAStateKey: (paneId: string) => `indicator:${string}:${string}`;
|
|
15
|
+
export declare const DEFAULT_HMA_PERIOD = 9;
|
|
16
|
+
export declare const EMPTY_HMA_STATE: HMARenderState;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseIndicatorState } from '../../plugin';
|
|
2
|
+
export interface HVRenderState extends BaseIndicatorState {
|
|
3
|
+
timestamp: number;
|
|
4
|
+
series: (number | undefined)[];
|
|
5
|
+
params: {
|
|
6
|
+
period: number;
|
|
7
|
+
annualizationFactor: number;
|
|
8
|
+
showHV: boolean;
|
|
9
|
+
};
|
|
10
|
+
valueMin: number;
|
|
11
|
+
valueMax: number;
|
|
12
|
+
visibleMin: number;
|
|
13
|
+
visibleMax: number;
|
|
14
|
+
}
|
|
15
|
+
export declare const createHVStateKey: (paneId: string) => `indicator:${string}:${string}`;
|
|
16
|
+
export declare const DEFAULT_HV_PERIOD = 20;
|
|
17
|
+
export declare const DEFAULT_HV_ANNUALIZATION = 252;
|
|
18
|
+
export declare const EMPTY_HV_STATE: HVRenderState;
|