wickchart 1.4.0 → 1.6.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/types/core.d.ts CHANGED
@@ -294,6 +294,91 @@ export declare function calcMACD(closes: number[], fast?: number, slow?: number,
294
294
  signal: Array<number | null>;
295
295
  hist: Array<number | null>;
296
296
  };
297
+ /** True range: max(h−l, |h−prev close|, |l−prev close|); first bar is h−l.
298
+ * @param {Bar[]} bars
299
+ * @returns {Array<number|null>}
300
+ */
301
+ export declare function calcTrueRange(bars: Bar[]): Array<number | null>;
302
+ /**
303
+ * Average True Range (Wilder smoothing; seeded with the SMA of the first
304
+ * `period` true ranges).
305
+ * @param {Bar[]} bars
306
+ * @param {number} period
307
+ * @returns {Array<number|null>}
308
+ */
309
+ export declare function calcATR(bars: Bar[], period?: number): Array<number | null>;
310
+ /**
311
+ * Volume-weighted average price over the hlc3 typical price, anchored to
312
+ * each UTC day (resets at the session boundary).
313
+ * @param {Bar[]} bars
314
+ * @returns {Array<number|null>}
315
+ */
316
+ export declare function calcVWAP(bars: Bar[]): Array<number | null>;
317
+ /**
318
+ * On-balance volume: cumulative volume signed by close-to-close direction.
319
+ * @param {Bar[]} bars
320
+ * @returns {Array<number|null>}
321
+ */
322
+ export declare function calcOBV(bars: Bar[]): Array<number | null>;
323
+ /**
324
+ * Stochastic oscillator (slow): raw %K over `period`, smoothed by `smooth`;
325
+ * %D is the SMA of %K.
326
+ * @param {Bar[]} bars
327
+ * @param {number} period
328
+ * @param {number} smooth
329
+ * @returns {{k:Array<number|null>, d:Array<number|null>}}
330
+ */
331
+ export declare function calcStoch(bars: Bar[], period?: number, smooth?: number): {
332
+ k: Array<number | null>;
333
+ d: Array<number | null>;
334
+ };
335
+ /**
336
+ * Commodity Channel Index: typical price vs its SMA, scaled by mean deviation.
337
+ * @param {Bar[]} bars
338
+ * @param {number} period
339
+ * @returns {Array<number|null>}
340
+ */
341
+ export declare function calcCCI(bars: Bar[], period?: number): Array<number | null>;
342
+ /**
343
+ * Williams %R: −100 at the period low, 0 at the period high.
344
+ * @param {Bar[]} bars
345
+ * @param {number} period
346
+ * @returns {Array<number|null>}
347
+ */
348
+ export declare function calcWilliamsR(bars: Bar[], period?: number): Array<number | null>;
349
+ /**
350
+ * Donchian channels: highest high / lowest low over `period`, plus mid.
351
+ * @param {Bar[]} bars
352
+ * @param {number} period
353
+ * @returns {{upper:Array<number|null>, mid:Array<number|null>, lower:Array<number|null>}}
354
+ */
355
+ export declare function calcDonchian(bars: Bar[], period?: number): {
356
+ upper: Array<number | null>;
357
+ mid: Array<number | null>;
358
+ lower: Array<number | null>;
359
+ };
360
+ /**
361
+ * Keltner channels: EMA mid ± mult × ATR.
362
+ * @param {Bar[]} bars
363
+ * @param {number} period
364
+ * @param {number} [mult]
365
+ * @returns {{upper:Array<number|null>, mid:Array<number|null>, lower:Array<number|null>}}
366
+ */
367
+ export declare function calcKeltner(bars: Bar[], period?: number, mult?: number): {
368
+ upper: Array<number | null>;
369
+ mid: Array<number | null>;
370
+ lower: Array<number | null>;
371
+ };
372
+ /**
373
+ * SuperTrend: ATR bands that flip with the trend. Returns the trend line
374
+ * (support in uptrends, resistance in downtrends) with a one-bar null gap
375
+ * at flips so the renderer breaks the line.
376
+ * @param {Bar[]} bars
377
+ * @param {number} period
378
+ * @param {number} [mult]
379
+ * @returns {Array<number|null>}
380
+ */
381
+ export declare function calcSuperTrend(bars: Bar[], period?: number, mult?: number): Array<number | null>;
297
382
  /**
298
383
  * Merge older (backfilled) bars in front of `existing`.
299
384
  * Dedupes by time (existing bars win); only strictly older bars are prepended.
@@ -435,11 +520,12 @@ export declare const BUILTIN_INDICATORS: Map<string, {
435
520
  fast?: undefined;
436
521
  slow?: undefined;
437
522
  signal?: undefined;
523
+ smooth?: undefined;
438
524
  };
439
525
  compute: (bars: any, p: any) => number[];
440
- range?: undefined;
441
526
  color?: undefined;
442
527
  guides?: undefined;
528
+ range?: undefined;
443
529
  fmt?: undefined;
444
530
  } | {
445
531
  kind: string;
@@ -449,11 +535,27 @@ export declare const BUILTIN_INDICATORS: Map<string, {
449
535
  fast?: undefined;
450
536
  slow?: undefined;
451
537
  signal?: undefined;
538
+ smooth?: undefined;
452
539
  };
453
540
  compute: (bars: any, p: any) => number[];
541
+ color?: undefined;
542
+ guides?: undefined;
454
543
  range?: undefined;
544
+ fmt?: undefined;
545
+ } | {
546
+ kind: string;
547
+ params: {
548
+ mult?: undefined;
549
+ fast?: undefined;
550
+ slow?: undefined;
551
+ signal?: undefined;
552
+ smooth?: undefined;
553
+ period?: undefined;
554
+ };
555
+ compute: (bars: any) => number[];
455
556
  color?: undefined;
456
557
  guides?: undefined;
558
+ range?: undefined;
457
559
  fmt?: undefined;
458
560
  } | {
459
561
  kind: string;
@@ -463,6 +565,22 @@ export declare const BUILTIN_INDICATORS: Map<string, {
463
565
  fast?: undefined;
464
566
  slow?: undefined;
465
567
  signal?: undefined;
568
+ smooth?: undefined;
569
+ };
570
+ compute: (bars: any, p: any) => number[];
571
+ color?: undefined;
572
+ guides?: undefined;
573
+ range?: undefined;
574
+ fmt?: undefined;
575
+ } | {
576
+ kind: string;
577
+ params: {
578
+ period: number;
579
+ mult?: undefined;
580
+ fast?: undefined;
581
+ slow?: undefined;
582
+ signal?: undefined;
583
+ smooth?: undefined;
466
584
  };
467
585
  compute: (bars: any, p: any) => {
468
586
  lines: {
@@ -470,9 +588,49 @@ export declare const BUILTIN_INDICATORS: Map<string, {
470
588
  values: number[];
471
589
  }[];
472
590
  };
591
+ color?: undefined;
592
+ guides?: undefined;
473
593
  range?: undefined;
594
+ fmt?: undefined;
595
+ } | {
596
+ kind: string;
597
+ params: {
598
+ period: number;
599
+ mult: number;
600
+ fast?: undefined;
601
+ slow?: undefined;
602
+ signal?: undefined;
603
+ smooth?: undefined;
604
+ };
605
+ compute: (bars: any, p: any) => {
606
+ lines: {
607
+ name: string;
608
+ values: number[];
609
+ }[];
610
+ };
474
611
  color?: undefined;
475
612
  guides?: undefined;
613
+ range?: undefined;
614
+ fmt?: undefined;
615
+ } | {
616
+ kind: string;
617
+ params: {
618
+ period: number;
619
+ mult: number;
620
+ fast?: undefined;
621
+ slow?: undefined;
622
+ signal?: undefined;
623
+ smooth?: undefined;
624
+ };
625
+ compute: (bars: any, p: any) => {
626
+ lines: {
627
+ name: string;
628
+ values: number[];
629
+ }[];
630
+ };
631
+ color?: undefined;
632
+ guides?: undefined;
633
+ range?: undefined;
476
634
  fmt?: undefined;
477
635
  } | {
478
636
  kind: string;
@@ -482,6 +640,7 @@ export declare const BUILTIN_INDICATORS: Map<string, {
482
640
  fast?: undefined;
483
641
  slow?: undefined;
484
642
  signal?: undefined;
643
+ smooth?: undefined;
485
644
  };
486
645
  guides: number[];
487
646
  range: number[];
@@ -489,15 +648,15 @@ export declare const BUILTIN_INDICATORS: Map<string, {
489
648
  color: string;
490
649
  compute: (bars: any, p: any) => number[];
491
650
  } | {
492
- range?: undefined;
493
651
  color?: undefined;
494
652
  kind: string;
495
653
  params: {
496
654
  mult?: undefined;
497
- period?: undefined;
498
655
  fast: number;
499
656
  slow: number;
500
657
  signal: number;
658
+ smooth?: undefined;
659
+ period?: undefined;
501
660
  };
502
661
  guides: number[];
503
662
  fmt: string;
@@ -508,6 +667,87 @@ export declare const BUILTIN_INDICATORS: Map<string, {
508
667
  }[];
509
668
  histogram: number[];
510
669
  };
670
+ range?: undefined;
671
+ } | {
672
+ color?: undefined;
673
+ kind: string;
674
+ params: {
675
+ mult?: undefined;
676
+ fast?: undefined;
677
+ slow?: undefined;
678
+ signal?: undefined;
679
+ period: number;
680
+ smooth?: undefined;
681
+ };
682
+ fmt: string;
683
+ compute: (bars: any, p: any) => number[];
684
+ guides?: undefined;
685
+ range?: undefined;
686
+ } | {
687
+ color?: undefined;
688
+ kind: string;
689
+ params: {
690
+ mult?: undefined;
691
+ fast?: undefined;
692
+ slow?: undefined;
693
+ signal?: undefined;
694
+ period: number;
695
+ smooth: number;
696
+ };
697
+ guides: number[];
698
+ range: number[];
699
+ fmt: string;
700
+ compute: (bars: any, p: any) => {
701
+ lines: {
702
+ name: string;
703
+ values: number[];
704
+ }[];
705
+ };
706
+ } | {
707
+ color?: undefined;
708
+ kind: string;
709
+ params: {
710
+ mult?: undefined;
711
+ fast?: undefined;
712
+ slow?: undefined;
713
+ signal?: undefined;
714
+ smooth?: undefined;
715
+ period?: undefined;
716
+ };
717
+ fmt: string;
718
+ compute: (bars: any) => number[];
719
+ guides?: undefined;
720
+ range?: undefined;
721
+ } | {
722
+ color?: undefined;
723
+ kind: string;
724
+ params: {
725
+ mult?: undefined;
726
+ fast?: undefined;
727
+ slow?: undefined;
728
+ signal?: undefined;
729
+ smooth?: undefined;
730
+ period: number;
731
+ };
732
+ guides: number[];
733
+ fmt: string;
734
+ compute: (bars: any, p: any) => number[];
735
+ range?: undefined;
736
+ } | {
737
+ color?: undefined;
738
+ kind: string;
739
+ params: {
740
+ mult?: undefined;
741
+ fast?: undefined;
742
+ slow?: undefined;
743
+ signal?: undefined;
744
+ smooth?: undefined;
745
+ period: number;
746
+ };
747
+ guides: number[];
748
+ range: number[];
749
+ fmt: string;
750
+ compute: (bars: any, p: any) => number[];
511
751
  }>;
512
752
  /**
513
753
  * Parse an `indicators` attribute string against a registry.
@@ -46,6 +46,10 @@ declare class WickChart extends HTMLElementBase {
46
46
  y1: number;
47
47
  h: number;
48
48
  }[];
49
+ dock: {
50
+ y0: number;
51
+ h: number;
52
+ };
49
53
  };
50
54
  _cache: {
51
55
  v: number;
@@ -246,11 +250,12 @@ declare class WickChart extends HTMLElementBase {
246
250
  fast?: undefined;
247
251
  slow?: undefined;
248
252
  signal?: undefined;
253
+ smooth?: undefined;
249
254
  };
250
255
  compute: (bars: any, p: any) => number[];
251
- range?: undefined;
252
256
  color?: undefined;
253
257
  guides?: undefined;
258
+ range?: undefined;
254
259
  fmt?: undefined;
255
260
  } | {
256
261
  kind: string;
@@ -260,11 +265,62 @@ declare class WickChart extends HTMLElementBase {
260
265
  fast?: undefined;
261
266
  slow?: undefined;
262
267
  signal?: undefined;
268
+ smooth?: undefined;
269
+ };
270
+ compute: (bars: any, p: any) => number[];
271
+ color?: undefined;
272
+ guides?: undefined;
273
+ range?: undefined;
274
+ fmt?: undefined;
275
+ } | {
276
+ kind: string;
277
+ params: {
278
+ mult?: undefined;
279
+ fast?: undefined;
280
+ slow?: undefined;
281
+ signal?: undefined;
282
+ smooth?: undefined;
283
+ period?: undefined;
284
+ };
285
+ compute: (bars: any) => number[];
286
+ color?: undefined;
287
+ guides?: undefined;
288
+ range?: undefined;
289
+ fmt?: undefined;
290
+ } | {
291
+ kind: string;
292
+ params: {
293
+ period: number;
294
+ mult: number;
295
+ fast?: undefined;
296
+ slow?: undefined;
297
+ signal?: undefined;
298
+ smooth?: undefined;
263
299
  };
264
300
  compute: (bars: any, p: any) => number[];
301
+ color?: undefined;
302
+ guides?: undefined;
265
303
  range?: undefined;
304
+ fmt?: undefined;
305
+ } | {
306
+ kind: string;
307
+ params: {
308
+ period: number;
309
+ mult?: undefined;
310
+ fast?: undefined;
311
+ slow?: undefined;
312
+ signal?: undefined;
313
+ smooth?: undefined;
314
+ };
315
+ compute: (bars: any, p: any) => {
316
+ lines: {
317
+ name: string;
318
+ values: number[];
319
+ }[];
320
+ };
266
321
  color?: undefined;
267
322
  guides?: undefined;
323
+ range?: undefined;
268
324
  fmt?: undefined;
269
325
  } | {
270
326
  kind: string;
@@ -274,6 +330,7 @@ declare class WickChart extends HTMLElementBase {
274
330
  fast?: undefined;
275
331
  slow?: undefined;
276
332
  signal?: undefined;
333
+ smooth?: undefined;
277
334
  };
278
335
  compute: (bars: any, p: any) => {
279
336
  lines: {
@@ -281,9 +338,29 @@ declare class WickChart extends HTMLElementBase {
281
338
  values: number[];
282
339
  }[];
283
340
  };
341
+ color?: undefined;
342
+ guides?: undefined;
284
343
  range?: undefined;
344
+ fmt?: undefined;
345
+ } | {
346
+ kind: string;
347
+ params: {
348
+ period: number;
349
+ mult: number;
350
+ fast?: undefined;
351
+ slow?: undefined;
352
+ signal?: undefined;
353
+ smooth?: undefined;
354
+ };
355
+ compute: (bars: any, p: any) => {
356
+ lines: {
357
+ name: string;
358
+ values: number[];
359
+ }[];
360
+ };
285
361
  color?: undefined;
286
362
  guides?: undefined;
363
+ range?: undefined;
287
364
  fmt?: undefined;
288
365
  } | {
289
366
  kind: string;
@@ -293,6 +370,7 @@ declare class WickChart extends HTMLElementBase {
293
370
  fast?: undefined;
294
371
  slow?: undefined;
295
372
  signal?: undefined;
373
+ smooth?: undefined;
296
374
  };
297
375
  guides: number[];
298
376
  range: number[];
@@ -300,15 +378,15 @@ declare class WickChart extends HTMLElementBase {
300
378
  color: string;
301
379
  compute: (bars: any, p: any) => number[];
302
380
  } | {
303
- range?: undefined;
304
381
  color?: undefined;
305
382
  kind: string;
306
383
  params: {
307
384
  mult?: undefined;
308
- period?: undefined;
309
385
  fast: number;
310
386
  slow: number;
311
387
  signal: number;
388
+ smooth?: undefined;
389
+ period?: undefined;
312
390
  };
313
391
  guides: number[];
314
392
  fmt: string;
@@ -319,6 +397,87 @@ declare class WickChart extends HTMLElementBase {
319
397
  }[];
320
398
  histogram: number[];
321
399
  };
400
+ range?: undefined;
401
+ } | {
402
+ color?: undefined;
403
+ kind: string;
404
+ params: {
405
+ mult?: undefined;
406
+ fast?: undefined;
407
+ slow?: undefined;
408
+ signal?: undefined;
409
+ period: number;
410
+ smooth?: undefined;
411
+ };
412
+ fmt: string;
413
+ compute: (bars: any, p: any) => number[];
414
+ guides?: undefined;
415
+ range?: undefined;
416
+ } | {
417
+ color?: undefined;
418
+ kind: string;
419
+ params: {
420
+ mult?: undefined;
421
+ fast?: undefined;
422
+ slow?: undefined;
423
+ signal?: undefined;
424
+ period: number;
425
+ smooth: number;
426
+ };
427
+ guides: number[];
428
+ range: number[];
429
+ fmt: string;
430
+ compute: (bars: any, p: any) => {
431
+ lines: {
432
+ name: string;
433
+ values: number[];
434
+ }[];
435
+ };
436
+ } | {
437
+ color?: undefined;
438
+ kind: string;
439
+ params: {
440
+ mult?: undefined;
441
+ fast?: undefined;
442
+ slow?: undefined;
443
+ signal?: undefined;
444
+ smooth?: undefined;
445
+ period?: undefined;
446
+ };
447
+ fmt: string;
448
+ compute: (bars: any) => number[];
449
+ guides?: undefined;
450
+ range?: undefined;
451
+ } | {
452
+ color?: undefined;
453
+ kind: string;
454
+ params: {
455
+ mult?: undefined;
456
+ fast?: undefined;
457
+ slow?: undefined;
458
+ signal?: undefined;
459
+ smooth?: undefined;
460
+ period: number;
461
+ };
462
+ guides: number[];
463
+ fmt: string;
464
+ compute: (bars: any, p: any) => number[];
465
+ range?: undefined;
466
+ } | {
467
+ color?: undefined;
468
+ kind: string;
469
+ params: {
470
+ mult?: undefined;
471
+ fast?: undefined;
472
+ slow?: undefined;
473
+ signal?: undefined;
474
+ smooth?: undefined;
475
+ period: number;
476
+ };
477
+ guides: number[];
478
+ range: number[];
479
+ fmt: string;
480
+ compute: (bars: any, p: any) => number[];
322
481
  }>;
323
482
  /**
324
483
  * Register a custom indicator.
@@ -636,7 +795,13 @@ declare class WickChart extends HTMLElementBase {
636
795
  * layer then receives that pointer's move/up/cancel events (plus a
637
796
  * 'cancel' on Escape) and the chart suppresses its own pan/measure/brush
638
797
  * for the duration.
639
- * @param {{id?: string, draw: Function, onPointer?: Function}} layer
798
+ *
799
+ * A layer may also declare `insetBottom` (px, 0..160): the largest
800
+ * declared inset reserves a docked strip at the very bottom of the
801
+ * canvas — all chart content (panes + time axis) shrinks above it and
802
+ * the strip is handed to layers as `api.layout.dock = { y0, h }`
803
+ * (used by the wickchart-navigator plugin).
804
+ * @param {{id?: string, draw: Function, onPointer?: Function, insetBottom?: number}} layer
640
805
  * @returns {object|null} the normalized layer handle (with `id`), or null
641
806
  * if the layer was rejected (no draw fn, or 16 layers already added)
642
807
  */
@@ -644,6 +809,7 @@ declare class WickChart extends HTMLElementBase {
644
809
  id?: string;
645
810
  draw: Function;
646
811
  onPointer?: Function;
812
+ insetBottom?: number;
647
813
  }): object | null;
648
814
  /**
649
815
  * Remove a layer added via addLayer (pass the returned handle or its id).
@@ -655,6 +821,11 @@ declare class WickChart extends HTMLElementBase {
655
821
  requestDraw(): void;
656
822
  /** Paint every registered layer. Called from _render with live state. */
657
823
  _drawLayers(ctx: any, pal: any, ly: any, d: any): void;
824
+ /**
825
+ * Bottom space reserved by plugin layers: the largest declared
826
+ * `insetBottom` (px, clamped 0..160 at addLayer time), or 0.
827
+ */
828
+ _dockInset(): number;
658
829
  /** Ask layers, in order, whether one claims this pointerdown. */
659
830
  _layerHit(e: any, pt: any): any;
660
831
  /** Deliver a pointer event to a claiming layer; never throws outward. */