@363045841yyt/klinechart 0.6.9 → 0.6.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/index.cjs +5 -5
- package/dist/index.js +3824 -2564
- package/dist/klinechart.css +1 -1
- package/dist/src/api/data/baostock.d.ts +4 -0
- package/dist/src/components/IndicatorSelector.vue.d.ts +0 -9
- package/dist/src/core/chart.d.ts +38 -5
- 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/indicators/atrState.d.ts +16 -0
- package/dist/src/core/indicators/calculators.d.ts +67 -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/hmaState.d.ts +16 -0
- package/dist/src/core/indicators/indicatorRuntime.d.ts +20 -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/sarState.d.ts +26 -0
- package/dist/src/core/indicators/scheduler.d.ts +46 -2
- package/dist/src/core/indicators/stateComposer.d.ts +30 -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/wmaState.d.ts +16 -0
- package/dist/src/core/indicators/workerProtocol.d.ts +111 -1
- 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/dema.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/donchian.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/hma.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/index.d.ts +2 -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/sar.d.ts +5 -0
- package/dist/src/core/renderers/Indicator/scale/atr_scale.d.ts +11 -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/wma.d.ts +5 -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 +36 -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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PluginHost } from '../../plugin';
|
|
2
2
|
import { KLineData } from '../../types/price';
|
|
3
|
-
import { BOLLSchedulerConfig, EXPMASchedulerConfig, ENESchedulerConfig, RSISchedulerConfig, CCISchedulerConfig, STOCHSchedulerConfig, MOMSchedulerConfig, WMSRSchedulerConfig, KSTSchedulerConfig, FASTKSchedulerConfig, MACDSchedulerConfig } from './workerProtocol';
|
|
3
|
+
import { BOLLSchedulerConfig, EXPMASchedulerConfig, ENESchedulerConfig, RSISchedulerConfig, CCISchedulerConfig, STOCHSchedulerConfig, MOMSchedulerConfig, WMSRSchedulerConfig, KSTSchedulerConfig, FASTKSchedulerConfig, MACDSchedulerConfig, ATRSchedulerConfig, WMASchedulerConfig, DEMASchedulerConfig, TEMASchedulerConfig, HMASchedulerConfig, KAMASchedulerConfig, SARSchedulerConfig, SuperTrendSchedulerConfig, KeltnerSchedulerConfig, DonchianSchedulerConfig } from './workerProtocol';
|
|
4
4
|
import { MAFlags } from './calculators';
|
|
5
5
|
/**
|
|
6
6
|
* 可见范围
|
|
@@ -9,7 +9,7 @@ interface VisibleRange {
|
|
|
9
9
|
start: number;
|
|
10
10
|
end: number;
|
|
11
11
|
}
|
|
12
|
-
export type { BOLLSchedulerConfig, EXPMASchedulerConfig, ENESchedulerConfig, RSISchedulerConfig, CCISchedulerConfig, STOCHSchedulerConfig, MOMSchedulerConfig, WMSRSchedulerConfig, KSTSchedulerConfig, FASTKSchedulerConfig, MACDSchedulerConfig, };
|
|
12
|
+
export type { BOLLSchedulerConfig, EXPMASchedulerConfig, ENESchedulerConfig, RSISchedulerConfig, CCISchedulerConfig, STOCHSchedulerConfig, MOMSchedulerConfig, WMSRSchedulerConfig, KSTSchedulerConfig, FASTKSchedulerConfig, MACDSchedulerConfig, ATRSchedulerConfig, WMASchedulerConfig, DEMASchedulerConfig, TEMASchedulerConfig, HMASchedulerConfig, KAMASchedulerConfig, SARSchedulerConfig, SuperTrendSchedulerConfig, KeltnerSchedulerConfig, DonchianSchedulerConfig, };
|
|
13
13
|
/**
|
|
14
14
|
* IndicatorScheduler - 主线程 facade
|
|
15
15
|
*/
|
|
@@ -41,6 +41,10 @@ export declare class IndicatorScheduler {
|
|
|
41
41
|
* 设置重绘回调
|
|
42
42
|
*/
|
|
43
43
|
setInvalidateCallback(callback: () => void): void;
|
|
44
|
+
/**
|
|
45
|
+
* 副图增删后通知 scheduler 刷新 active mask
|
|
46
|
+
*/
|
|
47
|
+
onSubPaneChanged(): void;
|
|
44
48
|
/**
|
|
45
49
|
* 设置活跃副图 paneId 提供者(来自 Chart.getSubPaneIndicators)
|
|
46
50
|
*/
|
|
@@ -118,6 +122,46 @@ export declare class IndicatorScheduler {
|
|
|
118
122
|
* MACD 配置变更
|
|
119
123
|
*/
|
|
120
124
|
updateMACDConfig(config: Partial<MACDSchedulerConfig>, paneId?: string): void;
|
|
125
|
+
/**
|
|
126
|
+
* ATR 配置变更
|
|
127
|
+
*/
|
|
128
|
+
updateATRConfig(config: Partial<ATRSchedulerConfig>, paneId?: string): void;
|
|
129
|
+
/**
|
|
130
|
+
* WMA 配置变更
|
|
131
|
+
*/
|
|
132
|
+
updateWMAConfig(config: Partial<WMASchedulerConfig>, paneId?: string): void;
|
|
133
|
+
/**
|
|
134
|
+
* DEMA 配置变更
|
|
135
|
+
*/
|
|
136
|
+
updateDEMAConfig(config: Partial<DEMASchedulerConfig>, paneId?: string): void;
|
|
137
|
+
/**
|
|
138
|
+
* TEMA 配置变更
|
|
139
|
+
*/
|
|
140
|
+
updateTEMAConfig(config: Partial<TEMASchedulerConfig>, paneId?: string): void;
|
|
141
|
+
/**
|
|
142
|
+
* HMA 配置变更
|
|
143
|
+
*/
|
|
144
|
+
updateHMAConfig(config: Partial<HMASchedulerConfig>, paneId?: string): void;
|
|
145
|
+
/**
|
|
146
|
+
* KAMA 配置变更
|
|
147
|
+
*/
|
|
148
|
+
updateKAMAConfig(config: Partial<KAMASchedulerConfig>, paneId?: string): void;
|
|
149
|
+
/**
|
|
150
|
+
* SAR 配置变更
|
|
151
|
+
*/
|
|
152
|
+
updateSARConfig(config: Partial<SARSchedulerConfig>, paneId?: string): void;
|
|
153
|
+
/**
|
|
154
|
+
* SuperTrend 配置变更
|
|
155
|
+
*/
|
|
156
|
+
updateSuperTrendConfig(config: Partial<SuperTrendSchedulerConfig>, paneId?: string): void;
|
|
157
|
+
/**
|
|
158
|
+
* Keltner 配置变更
|
|
159
|
+
*/
|
|
160
|
+
updateKeltnerConfig(config: Partial<KeltnerSchedulerConfig>, paneId?: string): void;
|
|
161
|
+
/**
|
|
162
|
+
* Donchian 配置变更
|
|
163
|
+
*/
|
|
164
|
+
updateDonchianConfig(config: Partial<DonchianSchedulerConfig>, paneId?: string): void;
|
|
121
165
|
/**
|
|
122
166
|
* 设置当前激活的主图指标
|
|
123
167
|
*/
|
|
@@ -10,6 +10,16 @@ import { WMSRRenderState } from './wmsrState';
|
|
|
10
10
|
import { KSTRenderState } from './kstState';
|
|
11
11
|
import { FASTKRenderState } from './fastkState';
|
|
12
12
|
import { MACDRenderState } from './macdState';
|
|
13
|
+
import { ATRRenderState } from './atrState';
|
|
14
|
+
import { WMARenderState } from './wmaState';
|
|
15
|
+
import { DEMARenderState } from './demaState';
|
|
16
|
+
import { TEMARenderState } from './temaState';
|
|
17
|
+
import { HMARenderState } from './hmaState';
|
|
18
|
+
import { KAMARenderState } from './kamaState';
|
|
19
|
+
import { SARRenderState } from './sarState';
|
|
20
|
+
import { SuperTrendRenderState } from './supertrendState';
|
|
21
|
+
import { KeltnerRenderState } from './keltnerState';
|
|
22
|
+
import { DonchianRenderState } from './donchianState';
|
|
13
23
|
import { IndicatorSeriesBundle } from './workerProtocol';
|
|
14
24
|
/**
|
|
15
25
|
* 可见范围
|
|
@@ -27,6 +37,16 @@ type VisibleSubIndicatorStates = {
|
|
|
27
37
|
kst: KSTRenderState;
|
|
28
38
|
fastk: FASTKRenderState;
|
|
29
39
|
macd: MACDRenderState;
|
|
40
|
+
atr: ATRRenderState;
|
|
41
|
+
wma: WMARenderState;
|
|
42
|
+
dema: DEMARenderState;
|
|
43
|
+
tema: TEMARenderState;
|
|
44
|
+
hma: HMARenderState;
|
|
45
|
+
kama: KAMARenderState;
|
|
46
|
+
sar: SARRenderState;
|
|
47
|
+
supertrend: SuperTrendRenderState;
|
|
48
|
+
keltner: KeltnerRenderState;
|
|
49
|
+
donchian: DonchianRenderState;
|
|
30
50
|
};
|
|
31
51
|
type VisibleSubIndicatorMask = {
|
|
32
52
|
rsi?: boolean;
|
|
@@ -37,6 +57,16 @@ type VisibleSubIndicatorMask = {
|
|
|
37
57
|
kst?: boolean;
|
|
38
58
|
fastk?: boolean;
|
|
39
59
|
macd?: boolean;
|
|
60
|
+
atr?: boolean;
|
|
61
|
+
wma?: boolean;
|
|
62
|
+
dema?: boolean;
|
|
63
|
+
tema?: boolean;
|
|
64
|
+
hma?: boolean;
|
|
65
|
+
kama?: boolean;
|
|
66
|
+
sar?: boolean;
|
|
67
|
+
supertrend?: boolean;
|
|
68
|
+
keltner?: boolean;
|
|
69
|
+
donchian?: boolean;
|
|
40
70
|
};
|
|
41
71
|
type ComposedRenderStates = VisibleSubIndicatorStates & {
|
|
42
72
|
ma: MARenderState;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseIndicatorState } from '../../plugin';
|
|
2
|
+
export interface SuperTrendPoint {
|
|
3
|
+
value: number;
|
|
4
|
+
trend: 'up' | 'down';
|
|
5
|
+
}
|
|
6
|
+
export interface SuperTrendRenderState extends BaseIndicatorState {
|
|
7
|
+
timestamp: number;
|
|
8
|
+
series: (SuperTrendPoint | undefined)[];
|
|
9
|
+
params: {
|
|
10
|
+
atrPeriod: number;
|
|
11
|
+
multiplier: number;
|
|
12
|
+
showSuperTrend: boolean;
|
|
13
|
+
};
|
|
14
|
+
valueMin: number;
|
|
15
|
+
valueMax: number;
|
|
16
|
+
visibleMin: number;
|
|
17
|
+
visibleMax: number;
|
|
18
|
+
}
|
|
19
|
+
export declare const createSuperTrendStateKey: (paneId: string) => `indicator:${string}:${string}`;
|
|
20
|
+
export declare const DEFAULT_SUPERTREND_ATR_PERIOD = 10;
|
|
21
|
+
export declare const DEFAULT_SUPERTREND_MULTIPLIER = 3;
|
|
22
|
+
export declare const EMPTY_SUPERTREND_STATE: SuperTrendRenderState;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseIndicatorState } from '../../plugin';
|
|
2
|
+
export interface TEMARenderState extends BaseIndicatorState {
|
|
3
|
+
timestamp: number;
|
|
4
|
+
series: (number | undefined)[];
|
|
5
|
+
params: {
|
|
6
|
+
period: number;
|
|
7
|
+
showTEMA: boolean;
|
|
8
|
+
};
|
|
9
|
+
valueMin: number;
|
|
10
|
+
valueMax: number;
|
|
11
|
+
visibleMin: number;
|
|
12
|
+
visibleMax: number;
|
|
13
|
+
}
|
|
14
|
+
export declare const createTEMAStateKey: (paneId: string) => `indicator:${string}:${string}`;
|
|
15
|
+
export declare const DEFAULT_TEMA_PERIOD = 20;
|
|
16
|
+
export declare const EMPTY_TEMA_STATE: TEMARenderState;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseIndicatorState } from '../../plugin';
|
|
2
|
+
export interface WMARenderState extends BaseIndicatorState {
|
|
3
|
+
timestamp: number;
|
|
4
|
+
series: (number | undefined)[];
|
|
5
|
+
params: {
|
|
6
|
+
period: number;
|
|
7
|
+
showWMA: boolean;
|
|
8
|
+
};
|
|
9
|
+
valueMin: number;
|
|
10
|
+
valueMax: number;
|
|
11
|
+
visibleMin: number;
|
|
12
|
+
visibleMax: number;
|
|
13
|
+
}
|
|
14
|
+
export declare const createWMAStateKey: (paneId: string) => `indicator:${string}:${string}`;
|
|
15
|
+
export declare const DEFAULT_WMA_PERIOD = 9;
|
|
16
|
+
export declare const EMPTY_WMA_STATE: WMARenderState;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { KLineData } from '../../types/price';
|
|
2
|
-
import { MAFlags, BOLLPoint, EXPMAPoint, ENEPoint, STOCHPoint, KSTPoint, MACDPoint } from './calculators';
|
|
2
|
+
import { MAFlags, BOLLPoint, EXPMAPoint, ENEPoint, STOCHPoint, KSTPoint, MACDPoint, SARPoint, SuperTrendPoint, KeltnerPoint, DonchianPoint } from './calculators';
|
|
3
3
|
export interface BOLLSchedulerConfig {
|
|
4
4
|
period: number;
|
|
5
5
|
multiplier: number;
|
|
@@ -63,6 +63,56 @@ export interface MACDSchedulerConfig {
|
|
|
63
63
|
showDEA: boolean;
|
|
64
64
|
showBAR: boolean;
|
|
65
65
|
}
|
|
66
|
+
export interface ATRSchedulerConfig {
|
|
67
|
+
period: number;
|
|
68
|
+
showATR: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface WMASchedulerConfig {
|
|
71
|
+
period: number;
|
|
72
|
+
showWMA: boolean;
|
|
73
|
+
}
|
|
74
|
+
export interface DEMASchedulerConfig {
|
|
75
|
+
period: number;
|
|
76
|
+
showDEMA: boolean;
|
|
77
|
+
}
|
|
78
|
+
export interface TEMASchedulerConfig {
|
|
79
|
+
period: number;
|
|
80
|
+
showTEMA: boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface HMASchedulerConfig {
|
|
83
|
+
period: number;
|
|
84
|
+
showHMA: boolean;
|
|
85
|
+
}
|
|
86
|
+
export interface KAMASchedulerConfig {
|
|
87
|
+
period: number;
|
|
88
|
+
fastPeriod: number;
|
|
89
|
+
slowPeriod: number;
|
|
90
|
+
showKAMA: boolean;
|
|
91
|
+
}
|
|
92
|
+
export interface SARSchedulerConfig {
|
|
93
|
+
step: number;
|
|
94
|
+
maxStep: number;
|
|
95
|
+
showSAR: boolean;
|
|
96
|
+
}
|
|
97
|
+
export interface SuperTrendSchedulerConfig {
|
|
98
|
+
atrPeriod: number;
|
|
99
|
+
multiplier: number;
|
|
100
|
+
showSuperTrend: boolean;
|
|
101
|
+
}
|
|
102
|
+
export interface KeltnerSchedulerConfig {
|
|
103
|
+
emaPeriod: number;
|
|
104
|
+
atrPeriod: number;
|
|
105
|
+
multiplier: number;
|
|
106
|
+
showUpper: boolean;
|
|
107
|
+
showMiddle: boolean;
|
|
108
|
+
showLower: boolean;
|
|
109
|
+
}
|
|
110
|
+
export interface DonchianSchedulerConfig {
|
|
111
|
+
period: number;
|
|
112
|
+
showUpper: boolean;
|
|
113
|
+
showMiddle: boolean;
|
|
114
|
+
showLower: boolean;
|
|
115
|
+
}
|
|
66
116
|
export interface InitRequest {
|
|
67
117
|
type: 'init';
|
|
68
118
|
protocolVersion: number;
|
|
@@ -123,6 +173,16 @@ export interface IndicatorConfigSnapshot {
|
|
|
123
173
|
kst: KSTSchedulerConfig;
|
|
124
174
|
fastk: FASTKSchedulerConfig;
|
|
125
175
|
macd: MACDSchedulerConfig;
|
|
176
|
+
atr: ATRSchedulerConfig;
|
|
177
|
+
wma: WMASchedulerConfig;
|
|
178
|
+
dema: DEMASchedulerConfig;
|
|
179
|
+
tema: TEMASchedulerConfig;
|
|
180
|
+
hma: HMASchedulerConfig;
|
|
181
|
+
kama: KAMASchedulerConfig;
|
|
182
|
+
sar: SARSchedulerConfig;
|
|
183
|
+
supertrend: SuperTrendSchedulerConfig;
|
|
184
|
+
keltner: KeltnerSchedulerConfig;
|
|
185
|
+
donchian: DonchianSchedulerConfig;
|
|
126
186
|
rsiPaneId: string;
|
|
127
187
|
cciPaneId: string;
|
|
128
188
|
stochPaneId: string;
|
|
@@ -131,6 +191,16 @@ export interface IndicatorConfigSnapshot {
|
|
|
131
191
|
kstPaneId: string;
|
|
132
192
|
fastkPaneId: string;
|
|
133
193
|
macdPaneId: string;
|
|
194
|
+
atrPaneId: string;
|
|
195
|
+
wmaPaneId: string;
|
|
196
|
+
demaPaneId: string;
|
|
197
|
+
temaPaneId: string;
|
|
198
|
+
hmaPaneId: string;
|
|
199
|
+
kamaPaneId: string;
|
|
200
|
+
sarPaneId: string;
|
|
201
|
+
supertrendPaneId: string;
|
|
202
|
+
keltnerPaneId: string;
|
|
203
|
+
donchianPaneId: string;
|
|
134
204
|
}
|
|
135
205
|
export interface IndicatorSeriesBundle {
|
|
136
206
|
ma: {
|
|
@@ -182,6 +252,46 @@ export interface IndicatorSeriesBundle {
|
|
|
182
252
|
series: MACDPoint[];
|
|
183
253
|
params: MACDSchedulerConfig;
|
|
184
254
|
};
|
|
255
|
+
atr: {
|
|
256
|
+
series: (number | undefined)[];
|
|
257
|
+
params: ATRSchedulerConfig;
|
|
258
|
+
};
|
|
259
|
+
wma: {
|
|
260
|
+
series: (number | undefined)[];
|
|
261
|
+
params: WMASchedulerConfig;
|
|
262
|
+
};
|
|
263
|
+
dema: {
|
|
264
|
+
series: (number | undefined)[];
|
|
265
|
+
params: DEMASchedulerConfig;
|
|
266
|
+
};
|
|
267
|
+
tema: {
|
|
268
|
+
series: (number | undefined)[];
|
|
269
|
+
params: TEMASchedulerConfig;
|
|
270
|
+
};
|
|
271
|
+
hma: {
|
|
272
|
+
series: (number | undefined)[];
|
|
273
|
+
params: HMASchedulerConfig;
|
|
274
|
+
};
|
|
275
|
+
kama: {
|
|
276
|
+
series: (number | undefined)[];
|
|
277
|
+
params: KAMASchedulerConfig;
|
|
278
|
+
};
|
|
279
|
+
sar: {
|
|
280
|
+
series: (SARPoint | undefined)[];
|
|
281
|
+
params: SARSchedulerConfig;
|
|
282
|
+
};
|
|
283
|
+
supertrend: {
|
|
284
|
+
series: (SuperTrendPoint | undefined)[];
|
|
285
|
+
params: SuperTrendSchedulerConfig;
|
|
286
|
+
};
|
|
287
|
+
keltner: {
|
|
288
|
+
series: (KeltnerPoint | undefined)[];
|
|
289
|
+
params: KeltnerSchedulerConfig;
|
|
290
|
+
};
|
|
291
|
+
donchian: {
|
|
292
|
+
series: (DonchianPoint | undefined)[];
|
|
293
|
+
params: DonchianSchedulerConfig;
|
|
294
|
+
};
|
|
185
295
|
/** 本次计算中实际变更的指标列表 */
|
|
186
296
|
_changed: string[];
|
|
187
297
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CandleWebGLSurface, LineWebGLSurface } from './renderers/webgl/candleSurface';
|
|
2
|
+
import { SharedWebGLSurface, WebGLRegion } from './renderers/webgl/sharedWebGLSurface';
|
|
2
3
|
export type PaneRendererDom = {
|
|
3
4
|
mainCanvas: HTMLCanvasElement;
|
|
4
5
|
overlayCanvas: HTMLCanvasElement;
|
|
@@ -24,13 +25,14 @@ export declare class PaneRenderer {
|
|
|
24
25
|
private opt;
|
|
25
26
|
private contexts;
|
|
26
27
|
private webgl;
|
|
27
|
-
constructor(dom: PaneRendererDom, pane: import('./layout/pane').Pane, opt: PaneRendererOptions);
|
|
28
|
+
constructor(dom: PaneRendererDom, pane: import('./layout/pane').Pane, opt: PaneRendererOptions, sharedWebGLSurface: SharedWebGLSurface);
|
|
28
29
|
/** 获取关联的 Pane 实例 */
|
|
29
30
|
getPane(): import('./layout/pane').Pane;
|
|
30
31
|
/** 获取 DOM 元素 */
|
|
31
32
|
getDom(): PaneRendererDom;
|
|
32
33
|
getContexts(): PaneRendererContexts;
|
|
33
34
|
getWebGL(): PaneRendererWebGLHandles;
|
|
35
|
+
setWebGLRegion(region: WebGLRegion): void;
|
|
34
36
|
/**
|
|
35
37
|
* 调整 Canvas 尺寸
|
|
36
38
|
* @param width pane 宽度(逻辑像素)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { RendererPluginWithHost, PluginHost } from '../../../plugin';
|
|
2
|
+
export interface ATRRendererOptions {
|
|
3
|
+
paneId?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function createATRRendererPlugin(options?: ATRRendererOptions): RendererPluginWithHost;
|
|
6
|
+
/**
|
|
7
|
+
* 获取 ATR 标题信息(供 paneTitle 使用)
|
|
8
|
+
*/
|
|
9
|
+
export declare function getATRTitleInfo(index: number, period: number, pluginHost: PluginHost, paneId?: string): {
|
|
10
|
+
name: string;
|
|
11
|
+
params: number[];
|
|
12
|
+
values: Array<{
|
|
13
|
+
label: string;
|
|
14
|
+
value: number;
|
|
15
|
+
color: string;
|
|
16
|
+
}>;
|
|
17
|
+
} | null;
|
|
@@ -13,10 +13,11 @@ export { createMOMRendererPlugin, type MOMRendererOptions, getMOMTitleInfo } fro
|
|
|
13
13
|
export { createWMSRRendererPlugin, type WMSRRendererOptions, getWMSRTitleInfo } from './wmsr';
|
|
14
14
|
export { createKSTRendererPlugin, type KSTRendererOptions, getKSTTitleInfo } from './kst';
|
|
15
15
|
export { createFASTKRendererPlugin, type FASTKRendererOptions, getFASTKTitleInfo } from './fastk';
|
|
16
|
+
export { createATRRendererPlugin, type ATRRendererOptions, getATRTitleInfo } from './atr';
|
|
16
17
|
/**
|
|
17
18
|
* 副图指标类型
|
|
18
19
|
*/
|
|
19
|
-
export type SubIndicatorType = 'VOLUME' | 'MACD' | 'RSI' | 'CCI' | 'STOCH' | 'MOM' | 'WMSR' | 'KST' | 'FASTK';
|
|
20
|
+
export type SubIndicatorType = 'VOLUME' | 'MACD' | 'RSI' | 'CCI' | 'STOCH' | 'MOM' | 'WMSR' | 'KST' | 'FASTK' | 'ATR';
|
|
20
21
|
/**
|
|
21
22
|
* 渲染器工厂选项
|
|
22
23
|
*/
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ParamConfig } from '../../../components/IndicatorParams.vue';
|
|
2
|
+
export interface Indicator {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
name: string;
|
|
6
|
+
pane: 'main' | 'sub';
|
|
7
|
+
description?: string;
|
|
8
|
+
params?: ParamConfig[];
|
|
9
|
+
}
|
|
10
|
+
export declare const mainIndicators: Indicator[];
|
|
11
|
+
export declare const subIndicators: Indicator[];
|
|
12
|
+
export declare function findIndicator(id: string): Indicator | undefined;
|
|
13
|
+
export declare function isSubIndicatorId(id: string): boolean;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RendererPluginWithHost } from '../../../../plugin';
|
|
2
|
+
export declare function createAtrScaleRendererPlugin(options: {
|
|
3
|
+
axisWidth: number;
|
|
4
|
+
paneId: string;
|
|
5
|
+
yPaddingPx?: number;
|
|
6
|
+
getCrosshair?: () => {
|
|
7
|
+
y: number;
|
|
8
|
+
price: number;
|
|
9
|
+
activePaneId: string | null;
|
|
10
|
+
} | null;
|
|
11
|
+
}): RendererPluginWithHost;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TitleInfo } from '../paneTitle';
|
|
2
|
+
import { PluginHost } from '../../../plugin';
|
|
3
|
+
import { SubIndicatorType } from '.';
|
|
4
|
+
export interface SubPaneIndicatorConfig {
|
|
5
|
+
defaultParams: Record<string, number | boolean>;
|
|
6
|
+
getTitleInfo: (data: any[], index: number | null, params: Record<string, number | boolean>, pluginHost: PluginHost, paneId: string) => TitleInfo | null;
|
|
7
|
+
}
|
|
8
|
+
export declare const SUB_PANE_INDICATOR_CONFIGS: Record<SubIndicatorType, SubPaneIndicatorConfig>;
|
|
9
|
+
export declare const SUB_PANE_INDICATORS: SubIndicatorType[];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SharedWebGLSurface, WebGLCompositeOptions, WebGLRegion } from './sharedWebGLSurface';
|
|
1
2
|
type Rect = {
|
|
2
3
|
x: number;
|
|
3
4
|
y: number;
|
|
@@ -25,18 +26,21 @@ type FilledBand = {
|
|
|
25
26
|
}>;
|
|
26
27
|
};
|
|
27
28
|
export declare class CandleWebGLSurface {
|
|
28
|
-
private
|
|
29
|
+
private shared;
|
|
29
30
|
private handles;
|
|
30
31
|
private logicalWidth;
|
|
31
32
|
private logicalHeight;
|
|
32
33
|
private available;
|
|
33
34
|
private rectCapacity;
|
|
34
35
|
private rectScratch;
|
|
35
|
-
|
|
36
|
+
private region;
|
|
37
|
+
constructor(shared: SharedWebGLSurface);
|
|
36
38
|
isAvailable(): boolean;
|
|
37
39
|
getCanvas(): HTMLCanvasElement;
|
|
38
|
-
|
|
40
|
+
setRegion(region: WebGLRegion): void;
|
|
41
|
+
resize(width: number, height: number, _dpr: number): void;
|
|
39
42
|
clear(): void;
|
|
43
|
+
compositeTo(ctx: CanvasRenderingContext2D, options?: WebGLCompositeOptions): void;
|
|
40
44
|
/** 直接传入已打包的 Float32Array:每 4 个元素为一组 (x, y, width, height) */
|
|
41
45
|
drawRectBuffer(rectData: Float32Array, rectCount: number, color: string, scrollLeft: number): boolean;
|
|
42
46
|
drawRects(rects: Rect[], color: string, scrollLeft: number): boolean;
|
|
@@ -44,7 +48,7 @@ export declare class CandleWebGLSurface {
|
|
|
44
48
|
private initRectHandles;
|
|
45
49
|
}
|
|
46
50
|
export declare class LineWebGLSurface {
|
|
47
|
-
private
|
|
51
|
+
private shared;
|
|
48
52
|
private handles;
|
|
49
53
|
private logicalWidth;
|
|
50
54
|
private logicalHeight;
|
|
@@ -53,17 +57,24 @@ export declare class LineWebGLSurface {
|
|
|
53
57
|
private vertexCapacity;
|
|
54
58
|
private fillScratch;
|
|
55
59
|
private lineScratch;
|
|
60
|
+
private region;
|
|
61
|
+
private msaaTargets;
|
|
56
62
|
private geoCache;
|
|
57
|
-
constructor(
|
|
63
|
+
constructor(shared: SharedWebGLSurface);
|
|
58
64
|
isAvailable(): boolean;
|
|
59
65
|
getCanvas(): HTMLCanvasElement;
|
|
66
|
+
setRegion(region: WebGLRegion): void;
|
|
60
67
|
resize(width: number, height: number, dpr: number): void;
|
|
61
68
|
clear(): void;
|
|
69
|
+
compositeTo(ctx: CanvasRenderingContext2D, options?: WebGLCompositeOptions): void;
|
|
62
70
|
drawLineStrips(lines: ColoredLineStrip[], scrollLeft: number): boolean;
|
|
63
71
|
private getThinLineVertices;
|
|
64
72
|
private getLineGeometry;
|
|
65
73
|
drawFilledBand(band: FilledBand, color: string, scrollLeft: number): boolean;
|
|
66
74
|
destroy(): void;
|
|
75
|
+
private ensureLineMsaaTargets;
|
|
76
|
+
private destroyLineMsaaTargets;
|
|
77
|
+
private resolveLineMsaaToSharedRegion;
|
|
67
78
|
private initLineHandles;
|
|
68
79
|
}
|
|
69
80
|
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type WebGLRegion = {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
dpr: number;
|
|
7
|
+
};
|
|
8
|
+
export type WebGLCompositeOptions = {
|
|
9
|
+
alpha?: number;
|
|
10
|
+
imageSmoothingEnabled?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type PhysicalRegion = {
|
|
13
|
+
sourceX: number;
|
|
14
|
+
sourceY: number;
|
|
15
|
+
widthPx: number;
|
|
16
|
+
heightPx: number;
|
|
17
|
+
};
|
|
18
|
+
export declare class SharedWebGLSurface {
|
|
19
|
+
private canvas;
|
|
20
|
+
private gl;
|
|
21
|
+
constructor(canvas?: HTMLCanvasElement);
|
|
22
|
+
isAvailable(): boolean;
|
|
23
|
+
getGL(): WebGL2RenderingContext | null;
|
|
24
|
+
getCanvas(): HTMLCanvasElement;
|
|
25
|
+
resize(width: number, height: number, dpr: number): void;
|
|
26
|
+
getPhysicalRegion(region: WebGLRegion): PhysicalRegion | null;
|
|
27
|
+
bindRegion(region: WebGLRegion): boolean;
|
|
28
|
+
clearRegion(region: WebGLRegion): void;
|
|
29
|
+
compositeRegionTo(ctx: CanvasRenderingContext2D, region: WebGLRegion, options?: WebGLCompositeOptions): void;
|
|
30
|
+
destroy(): void;
|
|
31
|
+
private toPhysicalRegion;
|
|
32
|
+
private initContext;
|
|
33
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Chart } from './chart';
|
|
2
|
+
import { SubIndicatorType } from './renderers/Indicator';
|
|
3
|
+
export interface SubPaneEntry {
|
|
4
|
+
paneId: string;
|
|
5
|
+
indicatorId: SubIndicatorType;
|
|
6
|
+
params: Record<string, unknown>;
|
|
7
|
+
rendererName: string;
|
|
8
|
+
scaleRendererName: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class SubPaneManager {
|
|
11
|
+
private entries;
|
|
12
|
+
create(chart: Chart, paneId: string, indicatorId: SubIndicatorType, params: Record<string, unknown>): boolean;
|
|
13
|
+
remove(chart: Chart, paneId: string): void;
|
|
14
|
+
replaceIndicator(chart: Chart, paneId: string, newIndicatorId: SubIndicatorType, newParams: Record<string, unknown>): void;
|
|
15
|
+
updateParams(chart: Chart, paneId: string, params: Record<string, unknown>): void;
|
|
16
|
+
getByPaneId(paneId: string): SubPaneEntry | undefined;
|
|
17
|
+
getAll(): SubPaneEntry[];
|
|
18
|
+
getPaneIds(): string[];
|
|
19
|
+
clear(chart: Chart): void;
|
|
20
|
+
private syncSchedulerConfig;
|
|
21
|
+
private mountScaleRenderer;
|
|
22
|
+
}
|
|
@@ -104,6 +104,42 @@ export interface SubIndicatorParams {
|
|
|
104
104
|
FASTK?: {
|
|
105
105
|
period?: number;
|
|
106
106
|
};
|
|
107
|
+
ATR?: {
|
|
108
|
+
period?: number;
|
|
109
|
+
};
|
|
110
|
+
WMA?: {
|
|
111
|
+
period?: number;
|
|
112
|
+
};
|
|
113
|
+
DEMA?: {
|
|
114
|
+
period?: number;
|
|
115
|
+
};
|
|
116
|
+
TEMA?: {
|
|
117
|
+
period?: number;
|
|
118
|
+
};
|
|
119
|
+
HMA?: {
|
|
120
|
+
period?: number;
|
|
121
|
+
};
|
|
122
|
+
KAMA?: {
|
|
123
|
+
period?: number;
|
|
124
|
+
fastPeriod?: number;
|
|
125
|
+
slowPeriod?: number;
|
|
126
|
+
};
|
|
127
|
+
SAR?: {
|
|
128
|
+
step?: number;
|
|
129
|
+
maxStep?: number;
|
|
130
|
+
};
|
|
131
|
+
SUPERTREND?: {
|
|
132
|
+
atrPeriod?: number;
|
|
133
|
+
multiplier?: number;
|
|
134
|
+
};
|
|
135
|
+
KELTNER?: {
|
|
136
|
+
emaPeriod?: number;
|
|
137
|
+
atrPeriod?: number;
|
|
138
|
+
multiplier?: number;
|
|
139
|
+
};
|
|
140
|
+
DONCHIAN?: {
|
|
141
|
+
period?: number;
|
|
142
|
+
};
|
|
107
143
|
}
|
|
108
144
|
/** 副图指标类型 */
|
|
109
145
|
export type SubIndicatorType = keyof SubIndicatorParams;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@363045841yyt/klinechart",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.10",
|
|
4
4
|
"description": "A lightweight financial K-line charting library with first-class AI Agent support, crisp ResizeObserver-driven rendering, and plugin-based architecture. Focused on quantitative trading scenarios with TradingView-level interaction experience.",
|
|
5
5
|
"author": "363045841 <slslswbsy@qq.com>",
|
|
6
6
|
"license": "MIT",
|
|
File without changes
|