wickra-wasm 0.6.5 → 0.6.6

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="https://wickra.org"><img src="https://raw.githubusercontent.com/wickra-lib/.github/main/profile/wickra-banner.webp?v=462" alt="Wickra — streaming-first technical indicators" width="100%"></a>
2
+ <a href="https://wickra.org"><img src="https://raw.githubusercontent.com/wickra-lib/.github/main/profile/wickra-banner.webp?v=467" alt="Wickra — streaming-first technical indicators" width="100%"></a>
3
3
  </p>
4
4
 
5
5
  [![CI](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml/badge.svg)](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml)
@@ -48,7 +48,7 @@ Full documentation lives at **[docs.wickra.org](https://docs.wickra.org)**:
48
48
  [Node](https://docs.wickra.org/Quickstart-Node),
49
49
  [WASM](https://docs.wickra.org/Quickstart-WASM).
50
50
  - **Indicators** — a per-indicator deep dive (formula, parameters, warmup) for
51
- every one of the 462 indicators; start at the
51
+ every one of the 467 indicators; start at the
52
52
  [indicators overview](https://docs.wickra.org/Indicators-Overview).
53
53
  - **Reference** — [warmup periods](https://docs.wickra.org/Warmup-Periods),
54
54
  [streaming vs batch](https://docs.wickra.org/Streaming-vs-Batch),
@@ -58,19 +58,44 @@ Full documentation lives at **[docs.wickra.org](https://docs.wickra.org)**:
58
58
  [TA-Lib migration](https://docs.wickra.org/TA-Lib-Migration),
59
59
  [FAQ](https://docs.wickra.org/FAQ).
60
60
 
61
- ## Why Wickra exists
62
-
63
- Wickra started as a personal itch. The existing TA libraries never quite fit the
64
- projects I was building, so I decided to build one from the ground up — partly to
65
- learn, partly because I genuinely enjoy taking something that already exists and
66
- trying to do it differently (and, ideally, better). It's open source because the
67
- useful version of that itch is the one other people can build on too.
68
-
69
- Plenty of TA libraries are fast. Each one forces a trade-off Wickra does not:
61
+ ## Why Wickra
62
+
63
+ Most TA libraries are fast, *or* multi-language, *or* broad. Wickra refuses to
64
+ pick. It's the streaming-first engine built for the workload the others treat as
65
+ an afterthought **live, tick-by-tick data** without giving up the breadth of
66
+ a full batch library, and without making you reimplement your indicators four
67
+ times to get there.
68
+
69
+ - **The biggest streaming-native catalogue, period.** 467 indicators across 24
70
+ families — candlesticks, harmonic & chart patterns, market profile, market
71
+ breadth, Renko/Kagi/Point&Figure bars, Ehlers DSP cycles, risk/performance
72
+ metrics — every single one updating in **O(1) per tick**. TA-Lib ships ~150 and
73
+ none of them stream.
74
+ - **One Rust core, four first-class targets.** Native **Python · Node.js ·
75
+ WebAssembly · Rust** — identical math, identical results, zero per-language
76
+ reimplementation and zero GIL bottleneck.
77
+ - **Correct by construction, not by hope.** Every `update` validates its input,
78
+ runs a real warmup, and returns an `Option` so a single bad tick can't silently
79
+ poison state. `batch == streaming` is **bit-exact, fuzzed and 100 %-line-covered
80
+ for all 467 indicators**.
81
+ - **Orders of magnitude faster where it counts.** In streaming Wickra is **9–58×**
82
+ faster than the only other incremental peer and **thousands of times** faster
83
+ than recompute-on-every-tick libraries. On batch it wins several rows outright
84
+ and trades the simple recurrences (SMA, EMA, MACD) for its guarantees — and
85
+ the losses are shown, not hidden.
86
+ - **Install in one line, anywhere.** `pip install wickra` / `npm install wickra` —
87
+ precompiled wheels and binaries, **no C toolchain, none of TA-Lib's setup pain**.
88
+ macOS · Linux · Windows.
89
+ - **Batteries included.** Indicator chaining, a streaming OHLCV CSV reader, and a
90
+ live Binance kline feed ship in the box.
91
+ - **Truly permissive.** **MIT OR Apache-2.0** — drop it straight into commercial
92
+ and closed-source work.
93
+
94
+ Every other library forces one of those compromises. Wickra doesn't:
70
95
 
71
96
  | Library | Install | Streaming | Languages | Indicators | Active |
72
97
  |------------------|-------------|-------------|-----------------------------|-----------:|--------|
73
- | **★&nbsp;Wickra**| **clean** | **yes, O(1)** | **Python · Node · WASM · Rust** | **423** | **yes** |
98
+ | **★&nbsp;Wickra**| **clean** | **yes, O(1)** | **Python · Node · WASM · Rust** | **467** | **yes** |
74
99
  | kand | clean | yes | Python · WASM · Rust | ~60 | yes |
75
100
  | ta-rs | clean | yes | Rust only | ~30 | stale |
76
101
  | yata | clean | partial | Rust only | ~35 | yes |
@@ -79,116 +104,31 @@ Plenty of TA libraries are fast. Each one forces a trade-off Wickra does not:
79
104
  | finta | clean | no | Python | ~80 | stale |
80
105
  | talipp | clean | yes | Python | ~40 | yes |
81
106
 
82
- Wickra's edge is **breadth with reach**: 462 indicators that all update in O(1)
83
- per tick and ship natively to Python, Node.js, WebAssembly and Rust from a
84
- single engine.
85
-
86
- **On speed — and why Wickra isn't the fastest.** It deliberately isn't. The
87
- leaner Rust crates (kand, ta-rs) win several of the micro-benchmarks below, and
88
- those losses are shown rather than hidden. The gap is a *choice*, not a ceiling:
89
- every `update` validates its input, runs a real warmup before it emits a value,
90
- and returns an `Option` so a single bad tick can't silently poison the state.
91
- ta-rs, by contrast, hands back a bare `f64` from the first tick with no
92
- validation. If Wickra threw all of that away — raw `f64` out, no checks, no
93
- warmup contract — it would match or beat the leanest crate on every row. It
94
- keeps the guarantees instead, and still wins RSI, Bollinger and ATR against kand.
95
- What no other library matches is the *combination*: catalogue size, native O(1)
96
- streaming, NaN-safety, and four first-class language targets at once.
107
+ Broad, multi-language, streaming-native **and** honest about its trade-offs at
108
+ the same time. That's the combination no one else ships.
109
+
110
+ ## Why Wickra exists
111
+
112
+ Wickra started as a personal itch. The existing TA libraries never quite fit the
113
+ projects I was building, so I decided to build one from the ground up — partly to
114
+ learn, partly because I genuinely enjoy taking something that already exists and
115
+ trying to do it differently (and, ideally, better). It's open source because the
116
+ useful version of that itch is the one other people can build on too.
97
117
 
98
118
  ## Benchmarks
99
119
 
100
- Three comparisons, split by layer and mode. Read them as **relative** speedups
101
- on identical inputabsolute µs depend on CPU, memory clock and OS scheduler,
102
- not a universal contract.
103
-
104
- - **Reproduced on:** Windows 11 Pro 26200, AMD Ryzen 9 9950X, 64 GB DDR5,
105
- Rust 1.92 (release: `lto = "fat"`, `codegen-units = 1`), Python 3.12.
106
- - **Reproduce yourself:**
107
- - Rust core vs Rust crates: `cargo bench -p wickra-bench`
108
- - Python vs Python libs: `pip install -e bindings/python[bench]` then
109
- `python -m benchmarks.compare_libraries` (auto-detects installed peers).
110
-
111
- ### 1. Rust core vs the other Rust TA crates
112
-
113
- Like-for-like, no language-binding overhead, over a 50 000-bar series (µs for
114
- the whole series, lower = faster). This is the honest engine comparison —
115
- Wickra wins some and loses some, and both are shown.
116
-
117
- **Streaming** (one value fed per `update`):
118
-
119
- | Indicator | **★&nbsp;Wickra** | kand | ta-rs | yata |
120
- |------------------|------------------:|-----:|------:|-----:|
121
- | SMA(20) | 50 | 38 | 47 | 38 |
122
- | EMA(20) | 154 | 69 | 56 | 69 |
123
- | RSI(14) | 164 | 216 | 74 | — |
124
- | MACD(12, 26, 9) | 275 | 143 | 66 | — |
125
- | Bollinger(20, 2) | **128 ★** | 248 | 168 | — |
126
- | ATR(14) | 152 | 166 | 61 | — |
127
-
128
- **Batch** (whole series at once). Only Wickra and kand expose a batch API;
129
- ta-rs and yata are streaming-only.
130
-
131
- | Indicator | **★&nbsp;Wickra** | kand |
132
- |------------------|------------------:|-----:|
133
- | SMA(20) | 82 | 42 |
134
- | EMA(20) | 159 | 74 |
135
- | RSI(14) | **253 ★** | 274 |
136
- | MACD(12, 26, 9) | 681 | 283 |
137
- | Bollinger(20, 2) | **445 ★** | 462 |
138
- | ATR(14) | 175 | 173 |
139
-
140
- ta-rs is the per-indicator speed champion on almost every row — it returns a
141
- bare `f64` with no warmup state and no input validation, trading away the
142
- `None`-warmup and NaN-safety semantics Wickra keeps. Against kand, Wickra wins
143
- streaming RSI, Bollinger and ATR (and batch RSI + Bollinger); Bollinger is the
144
- one row where Wickra is the outright fastest of all four. The leaner crates
145
- still win the pure recurrences (EMA, MACD) and SMA. yata exposes only SMA/EMA as
146
- raw-value methods, so its other rows are omitted rather than faked.
147
-
148
- ### 2. Python vs the Python TA ecosystem — batch
149
-
150
- Full pass over a 20 000-bar series, µs/op (lower = faster). **★** per row.
151
-
152
- | Indicator | **★&nbsp;Wickra** | finta | TA-Lib | tulipy |
153
- |------------------|------------------:|---------------------|--------|--------|
154
- | SMA(20) | **59.6 ★** | 354.2 (5.9× slower) | ⧗ | ⧗ |
155
- | EMA(20) | **88.4 ★** | 309.3 (3.5× slower) | ⧗ | ⧗ |
156
- | RSI(14) | **77.3 ★** | 1 283 (16.6× slower)| ⧗ | ⧗ |
157
- | MACD(12, 26, 9) | **116.4 ★** | 529.5 (4.6× slower) | ⧗ | ⧗ |
158
- | Bollinger(20, 2) | **146.0 ★** | 1 246 (8.5× slower) | ⧗ | ⧗ |
159
- | ATR(14) | **135.8 ★** | 3 812 (28× slower) | ⧗ | ⧗ |
160
-
161
- > ⧗ = published by the CI Linux job. TA-Lib and tulipy ship C extensions that
162
- > don't build cleanly on every desktop, so their canonical numbers come from the
163
- > `cross-library-bench` workflow rather than this local table. pandas-ta needs
164
- > Python ≥ 3.12 and isn't in the 3.11 CI matrix. The script auto-detects
165
- > whichever peers are installed in your environment.
166
-
167
- ### 3. Python — streaming (per-tick latency)
168
-
169
- Seed 5 000 bars, then feed ticks one at a time. talipp is the only Python peer
170
- with a true incremental API; batch-only libraries like TA-Lib must recompute the
171
- entire history on every tick — Wickra updates in O(1).
172
-
173
- | Indicator | **★&nbsp;Wickra (per tick)** | talipp (per tick) |
174
- |------------------|------------------------------:|-------------------------|
175
- | SMA(20) | **0.067 µs ★** | 0.63 µs (9.4× slower) |
176
- | EMA(20) | **0.051 µs ★** | 0.63 µs (12.2× slower) |
177
- | RSI(14) | **0.053 µs ★** | 1.00 µs (19.1× slower) |
178
- | MACD(12, 26, 9) | **0.071 µs ★** | 3.64 µs (51.5× slower) |
179
- | Bollinger(20, 2) | **0.085 µs ★** | 4.87 µs (57.2× slower) |
180
-
181
- Run the suite yourself:
120
+ Wickra updates every indicator in **O(1)** per tick. In **streaming** — the
121
+ workload it is built for it is **9–58× faster** than the only other incremental
122
+ peer and **thousands of times** faster than recompute-on-every-tick libraries.
123
+ **Batch** is competitive: it wins several rows outright and trades a few µs
124
+ elsewhere for `None`-warmup, NaN-safety and bit-exact `batch == streaming`.
182
125
 
183
- ```bash
184
- cargo bench -p wickra-bench # Rust core vs kand / ta-rs / yata
185
- pip install -e bindings/python[bench] # Python peers
186
- python -m benchmarks.compare_libraries
187
- ```
126
+ Full tables (Rust + Python, streaming + batch) and how to reproduce them live in
127
+ **[BENCHMARKS.md](BENCHMARKS.md)**.
188
128
 
189
129
  ## Indicators
190
130
 
191
- 462 streaming-first indicators across twenty-four families. Every one passes the
131
+ 467 streaming-first indicators across twenty-four families. Every one passes the
192
132
  `batch == streaming` equivalence test, reference-value tests, and reset
193
133
  semantics tests. Each has a per-indicator deep dive (formula, parameters,
194
134
  warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
@@ -205,7 +145,7 @@ warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
205
145
  | Volume | OBV, VWAP (cumulative + rolling), ADL, Volume-Price Trend, Chaikin Money Flow, Chaikin Oscillator, Force Index, Ease of Movement, Klinger Volume Oscillator, Volume Oscillator, NVI, PVI, Williams A/D, Anchored VWAP, Demand Index, TSV, VZO, Market Facilitation Index, Volume RSI, Williams Accumulation/Distribution, Twiggs Money Flow, Trade Volume Index, Intraday Intensity Index, Better Volume, Volume-Weighted MACD |
206
146
  | Price Statistics | Typical Price, Median Price, Weighted Close, Linear Regression, Linear Regression Slope, Z-Score, Linear Regression Angle, Variance, Coefficient of Variation, Skewness, Kurtosis, Standard Error, Detrended StdDev, R², Median Absolute Deviation, Autocorrelation, Hurst Exponent, Pearson Correlation, Beta, Pairwise Beta, Pair Spread Z-Score, Lead-Lag Cross-Correlation, Cointegration, Relative Strength A-vs-B, Spearman Correlation, Mid Price, Mid Point, Average Price, Linear Regression Intercept, Time Series Forecast, Rolling Correlation, Rolling Covariance, OU Half-Life, Spread Hurst, Distance SSD, Beta-Neutral Spread, Variance Ratio, Granger Causality, Kalman Hedge Ratio, Spread Bollinger Bands, Spread AR(1) Coefficient, Jarque-Bera, Rolling Min-Max Scaler, Shannon Entropy, Sample Entropy, Kendall Tau |
207
147
  | Ehlers / Cycle (DSP) | MAMA, FAMA, Fisher Transform, Inverse Fisher Transform, SuperSmoother, Hilbert Dominant Cycle, Hilbert Phasor, Hilbert DC Phase, Hilbert Trend Mode, Sine Wave, Decycler, Decycler Oscillator, Roofing Filter, Center of Gravity, Cybernetic Cycle, Adaptive Cycle, Empirical Mode Decomposition, Ehlers Stochastic, Instantaneous Trendline, Highpass Filter, Reflex, Trendflex, Correlation Trend Indicator, Adaptive RSI, Universal Oscillator, Adaptive CCI, Bandpass Filter, Even Better Sinewave, Autocorrelation Periodogram |
208
- | Pivots & S/R | Classic Pivots, Fibonacci Pivots, Camarilla, Woodie Pivots, DeMark Pivots, Williams Fractals, ZigZag |
148
+ | Pivots & S/R | Classic Pivots, Fibonacci Pivots, Camarilla, Woodie Pivots, DeMark Pivots, Williams Fractals, ZigZag, Central Pivot Range, Murrey Math Lines, Andrews Pitchfork, Volume-Weighted Support/Resistance, Pivot Reversal |
209
149
  | DeMark | TD Setup, TD Sequential, TD DeMarker, TD REI, TD Pressure, TD Combo, TD Countdown, TD Lines, TD Range Projection, TD Differential, TD Open, TD Risk Level |
210
150
  | Ichimoku & Charts | Ichimoku Kinko Hyo (Tenkan, Kijun, Senkou A/B, Chikou), Heikin-Ashi |
211
151
  | Alt-Chart Bars | Renko (box-size bricks), Kagi (reversal-amount lines), Point & Figure (X/O columns) |
@@ -297,7 +237,7 @@ A Python live-trading example using the public `websockets` package lives at
297
237
  ```
298
238
  wickra/
299
239
  ├── crates/
300
- │ ├── wickra-core/ core engine + all 462 indicators
240
+ │ ├── wickra-core/ core engine + all 467 indicators
301
241
  │ ├── wickra/ top-level facade crate (publishes on crates.io) + benches/
302
242
  │ ├── wickra-data/ CSV reader, tick aggregator, live exchange feeds
303
243
  │ └── wickra-bench/ internal cross-library benchmark harness (not published)
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "kingchenc <support@wickra.org>"
6
6
  ],
7
7
  "description": "WASM bindings for the Wickra streaming-first technical indicators library.",
8
- "version": "0.6.5",
8
+ "version": "0.6.6",
9
9
  "license": "MIT OR Apache-2.0",
10
10
  "repository": {
11
11
  "type": "git",
package/wickra_wasm.d.ts CHANGED
@@ -287,6 +287,17 @@ export class AnchoredVWAP {
287
287
  update(high: number, low: number, close: number, volume: number): number | undefined;
288
288
  }
289
289
 
290
+ export class AndrewsPitchfork {
291
+ free(): void;
292
+ [Symbol.dispose](): void;
293
+ batch(high: Float64Array, low: Float64Array): Float64Array;
294
+ isReady(): boolean;
295
+ constructor(strength: number);
296
+ reset(): void;
297
+ update(high: number, low: number): any;
298
+ warmupPeriod(): number;
299
+ }
300
+
290
301
  export class Aroon {
291
302
  free(): void;
292
303
  [Symbol.dispose](): void;
@@ -680,6 +691,17 @@ export class CenterOfGravity {
680
691
  warmupPeriod(): number;
681
692
  }
682
693
 
694
+ export class CentralPivotRange {
695
+ free(): void;
696
+ [Symbol.dispose](): void;
697
+ batch(high: Float64Array, low: Float64Array, close: Float64Array): Float64Array;
698
+ isReady(): boolean;
699
+ constructor();
700
+ reset(): void;
701
+ update(high: number, low: number, close: number): any;
702
+ warmupPeriod(): number;
703
+ }
704
+
683
705
  export class ChaikinMoneyFlow {
684
706
  free(): void;
685
707
  [Symbol.dispose](): void;
@@ -2810,6 +2832,17 @@ export class MorningEveningStar {
2810
2832
  warmupPeriod(): number;
2811
2833
  }
2812
2834
 
2835
+ export class MurreyMathLines {
2836
+ free(): void;
2837
+ [Symbol.dispose](): void;
2838
+ batch(high: Float64Array, low: Float64Array): Float64Array;
2839
+ isReady(): boolean;
2840
+ constructor(period: number);
2841
+ reset(): void;
2842
+ update(high: number, low: number): any;
2843
+ warmupPeriod(): number;
2844
+ }
2845
+
2813
2846
  export class NATR {
2814
2847
  free(): void;
2815
2848
  [Symbol.dispose](): void;
@@ -3209,6 +3242,17 @@ export class PiercingDarkCloud {
3209
3242
  warmupPeriod(): number;
3210
3243
  }
3211
3244
 
3245
+ export class PivotReversal {
3246
+ free(): void;
3247
+ [Symbol.dispose](): void;
3248
+ batch(high: Float64Array, low: Float64Array, close: Float64Array): Float64Array;
3249
+ isReady(): boolean;
3250
+ constructor(left: number, right: number);
3251
+ reset(): void;
3252
+ update(high: number, low: number, close: number): number | undefined;
3253
+ warmupPeriod(): number;
3254
+ }
3255
+
3212
3256
  export class PointAndFigureBars {
3213
3257
  free(): void;
3214
3258
  [Symbol.dispose](): void;
@@ -5013,6 +5057,17 @@ export class VolumeWeightedMacd {
5013
5057
  warmupPeriod(): number;
5014
5058
  }
5015
5059
 
5060
+ export class VolumeWeightedSr {
5061
+ free(): void;
5062
+ [Symbol.dispose](): void;
5063
+ batch(high: Float64Array, low: Float64Array, volume: Float64Array): Float64Array;
5064
+ isReady(): boolean;
5065
+ constructor(period: number);
5066
+ reset(): void;
5067
+ update(high: number, low: number, volume: number): any;
5068
+ warmupPeriod(): number;
5069
+ }
5070
+
5016
5071
  export class Vortex {
5017
5072
  free(): void;
5018
5073
  [Symbol.dispose](): void;
package/wickra_wasm.js CHANGED
@@ -5,5 +5,5 @@ import { __wbg_set_wasm } from "./wickra_wasm_bg.js";
5
5
  __wbg_set_wasm(wasm);
6
6
 
7
7
  export {
8
- ADAPTIVECCI, ADAPTIVERSI, ADL, ADX, ADXR, ALMA, APO, ATR, AUTOCORRPGRAM, AVGPRICE, AbandonedBaby, Abcd, AbsoluteBreadthIndex, AccelerationBands, AcceleratorOscillator, AdVolumeLine, AdaptiveCycle, AdaptiveLaguerre, AdvanceBlock, AdvanceDecline, AdvanceDeclineRatio, Alligator, Alpha, AmihudIlliquidity, AnchoredRSI, AnchoredVWAP, Aroon, AroonOscillator, AtrBands, AtrRatchet, AtrTrailingStop, AutoFib, Autocorrelation, AverageDailyRange, AverageDrawdown, AwesomeOscillator, AwesomeOscillatorHistogram, BANDPASS, BalanceOfPower, Bat, BeltHold, Beta, BetaNeutralSpread, BetterVolume, BipowerVariation, BodySizePct, BollingerBands, BollingerBandwidth, BomarBands, BreadthThrust, Breakaway, BullishPercentIndex, Butterfly, CCI, CFO, CMO, CTI, CalendarSpread, CalmarRatio, Camarilla, CenterOfGravity, ChaikinMoneyFlow, ChaikinOscillator, ChaikinVolatility, ChandeKrollStop, ChandelierExit, ChoppinessIndex, ClassicPivots, CloseVsOpen, ClosingMarubozu, CoefficientOfVariation, Cointegration, ConcealingBabySwallow, ConditionalValueAtRisk, ConnorsRSI, Coppock, Counterattack, Crab, CumulativeVolumeDelta, CumulativeVolumeIndex, CupAndHandle, CyberneticCycle, Cypher, DEMA, DPO, DX, DayOfWeekProfile, Decycler, DecyclerOscillator, DemandIndex, DemarkPivots, DepthSlope, DerivativeOscillator, DetrendedStdDev, DisparityIndex, DistanceSsd, Doji, DojiStar, Donchian, DonchianStop, DoubleBollinger, DoubleTopBottom, DownsideGapThreeMethods, DragonflyDoji, DrawdownDuration, DynamicMomentumIndex, EHMA, EMA, EVENBETTERSINE, EVWMA, EaseOfMovement, EffectiveSpread, EhlersStochastic, ElderImpulse, ElderRay, ElderSafeZone, EmpiricalModeDecomposition, Engulfing, EveningDojiStar, EwmaVolatility, Expectancy, FAMA, FRAMA, FallingThreeMethods, FibArcs, FibChannel, FibConfluence, FibExtension, FibFan, FibProjection, FibRetracement, FibTimeZones, FibonacciPivots, FisherRSI, FisherTransform, FlagPennant, Footprint, ForceIndex, FractalChaosBands, FundingBasis, FundingRate, FundingRateMean, FundingRateZScore, GD, GMA, GainLossRatio, GapSideBySideWhite, Garch11, GarmanKlassVolatility, Gartley, GatorOscillator, GoldenPocket, GrangerCausality, GravestoneDoji, HIGHPASS, HMA, HT_DCPHASE, HT_PHASOR, HT_TRENDMODE, Hammer, HangingMan, Harami, HeadAndShoulders, HeikinAshi, HiLoActivator, HighLowIndex, HighLowRange, HighWave, Hikkake, HikkakeModified, HilbertDominantCycle, HistoricalVolatility, HoltWinters, HomingPigeon, HurstChannel, HurstExponent, IMI, Ichimoku, IdenticalThreeCrows, InNeck, Inertia, InformationRatio, InitialBalance, InstantaneousTrendline, IntradayIntensity, IntradayVolatilityProfile, InverseFisherTransform, InvertedHammer, JARQUEBERA, JMA, JumpIndicator, KAMA, KST, KVO, KagiBars, KalmanHedgeRatio, KaseDevStop, KasePermissionStochastic, KellyCriterion, Keltner, KendallTau, Kicking, KickingByLength, Kurtosis, KylesLambda, LINEARREG_INTERCEPT, LadderBottom, LaguerreRSI, LeadLagCrossCorrelation, LinRegAngle, LinRegChannel, LinRegSlope, LinearRegression, LiquidationFeatures, LogReturn, LongLeggedDoji, LongLine, LongShortRatio, MACD, MACDEXT, MACDFIX, MAMA, MFI, MIDPOINT, MIDPRICE, MINUS_DI, MINUS_DM, MOM, MaEnvelope, MacdHistogram, MarketFacilitationIndex, Marubozu, MassIndex, MatHold, MatchingLow, MaxDrawdown, McClellanOscillator, McClellanSummationIndex, McGinleyDynamic, MedianAbsoluteDeviation, MedianChannel, MedianMA, MedianPrice, Microprice, ModifiedMaStop, MorningDojiStar, MorningEveningStar, NATR, NVI, NewHighsNewLows, Nrtr, OBV, OIPriceDivergence, OIWeighted, OmegaRatio, OnNeck, OpenInterestDelta, OpeningMarubozu, OpeningRange, OrderBookImbalanceFull, OrderBookImbalanceTop1, OrderBookImbalanceTopN, OrderFlowImbalance, OuHalfLife, OvernightGap, OvernightIntradayReturn, PGO, PLUS_DI, PLUS_DM, PMO, POLARIZED_FRACTAL_EFFICIENCY, PPO, PSAR, PVI, PainIndex, PairSpreadZScore, PairwiseBeta, ParkinsonVolatility, PearsonCorrelation, PercentAboveMa, PercentB, PercentageTrailingStop, PiercingDarkCloud, PointAndFigureBars, PpoHistogram, ProfitFactor, ProjectionBands, ProjectionOscillator, QQE, Qstick, QuartileBands, QuotedSpread, REFLEX, RMI, ROC, ROCP, ROCR, ROCR100, ROLLINGMINMAX, RSI, RSX, RSquared, RVI, RVIVolatility, RWI, RealizedSpread, RealizedVolatility, RecoveryFactor, RectangleRange, RegimeLabel, RelativeStrengthAB, RenkoBars, RenkoTrailingStop, RickshawMan, RisingThreeMethods, RogersSatchellVolatility, RollMeasure, RollingCorrelation, RollingCovariance, RollingIqr, RollingPercentileRank, RollingQuantile, RollingVWAP, RoofingFilter, SAMPLEENT, SAREXT, SHANNONENT, SMA, SMI, SMMA, STC, SWMA, SeasonalZScore, SeparatingLines, SessionHighLow, SessionRange, SessionVwap, Shark, SharpeRatio, ShootingStar, ShortLine, SignedVolume, SineWave, Skewness, SortinoRatio, SpearmanCorrelation, SpinningTop, SpreadAr1Coefficient, SpreadBollingerBands, SpreadHurst, StalledPattern, StandardError, StandardErrorBands, StarcBands, StdDev, StepTrailingStop, StickSandwich, StochRSI, Stochastic, StochasticCCI, SuperSmoother, SuperTrend, T3, TDCombo, TDCountdown, TDDeMarker, TDDifferential, TDLines, TDOpen, TDPressure, TDREI, TDRangeProjection, TDRiskLevel, TDSequential, TDSetup, TEMA, TII, TRENDFLEX, TREND_STRENGTH_INDEX, TRIMA, TRIX, TSF, TSI, TSV, TTM_TREND, TakerBuySellRatio, Takuri, TasukiGap, TermStructureBasis, ThreeDrives, ThreeInside, ThreeLineStrike, ThreeOutside, ThreeSoldiersOrCrows, ThreeStarsInSouth, Thrusting, TickIndex, TimeBasedStop, TimeOfDayReturnProfile, TpoProfile, TradeImbalance, TradeVolumeIndex, TrendLabel, TreynorRatio, Triangle, Trin, TripleTopBottom, TrueRange, TsfOscillator, TtmSqueeze, TurnOfMonth, Tweezer, TwiggsMoneyFlow, TwoCrows, TypicalPrice, UNIVERSALOSC, UlcerIndex, UltimateOscillator, UniqueThreeRiver, UpDownVolumeRatio, UpsideGapThreeMethods, UpsideGapTwoCrows, VIDYA, VWAP, VWMA, VZO, ValueArea, ValueAtRisk, Variance, VarianceRatio, VerticalHorizontalFilter, VolatilityCone, VolatilityOfVolatility, VolatilityRatio, VoltyStop, VolumeByTimeProfile, VolumeOscillator, VolumePriceTrend, VolumeProfile, VolumeRsi, VolumeWeightedMacd, Vortex, Vpin, VwapStdDevBands, WAVE_PM, WMA, Wad, WaveTrend, Wedge, WeightedClose, WickRatio, WilliamsAD, WilliamsFractals, WilliamsR, WinRate, WoodiePivots, YangZhangVolatility, YoyoExit, ZLEMA, ZScore, ZeroLagMACD, ZigZag, installPanicHook, version
8
+ ADAPTIVECCI, ADAPTIVERSI, ADL, ADX, ADXR, ALMA, APO, ATR, AUTOCORRPGRAM, AVGPRICE, AbandonedBaby, Abcd, AbsoluteBreadthIndex, AccelerationBands, AcceleratorOscillator, AdVolumeLine, AdaptiveCycle, AdaptiveLaguerre, AdvanceBlock, AdvanceDecline, AdvanceDeclineRatio, Alligator, Alpha, AmihudIlliquidity, AnchoredRSI, AnchoredVWAP, AndrewsPitchfork, Aroon, AroonOscillator, AtrBands, AtrRatchet, AtrTrailingStop, AutoFib, Autocorrelation, AverageDailyRange, AverageDrawdown, AwesomeOscillator, AwesomeOscillatorHistogram, BANDPASS, BalanceOfPower, Bat, BeltHold, Beta, BetaNeutralSpread, BetterVolume, BipowerVariation, BodySizePct, BollingerBands, BollingerBandwidth, BomarBands, BreadthThrust, Breakaway, BullishPercentIndex, Butterfly, CCI, CFO, CMO, CTI, CalendarSpread, CalmarRatio, Camarilla, CenterOfGravity, CentralPivotRange, ChaikinMoneyFlow, ChaikinOscillator, ChaikinVolatility, ChandeKrollStop, ChandelierExit, ChoppinessIndex, ClassicPivots, CloseVsOpen, ClosingMarubozu, CoefficientOfVariation, Cointegration, ConcealingBabySwallow, ConditionalValueAtRisk, ConnorsRSI, Coppock, Counterattack, Crab, CumulativeVolumeDelta, CumulativeVolumeIndex, CupAndHandle, CyberneticCycle, Cypher, DEMA, DPO, DX, DayOfWeekProfile, Decycler, DecyclerOscillator, DemandIndex, DemarkPivots, DepthSlope, DerivativeOscillator, DetrendedStdDev, DisparityIndex, DistanceSsd, Doji, DojiStar, Donchian, DonchianStop, DoubleBollinger, DoubleTopBottom, DownsideGapThreeMethods, DragonflyDoji, DrawdownDuration, DynamicMomentumIndex, EHMA, EMA, EVENBETTERSINE, EVWMA, EaseOfMovement, EffectiveSpread, EhlersStochastic, ElderImpulse, ElderRay, ElderSafeZone, EmpiricalModeDecomposition, Engulfing, EveningDojiStar, EwmaVolatility, Expectancy, FAMA, FRAMA, FallingThreeMethods, FibArcs, FibChannel, FibConfluence, FibExtension, FibFan, FibProjection, FibRetracement, FibTimeZones, FibonacciPivots, FisherRSI, FisherTransform, FlagPennant, Footprint, ForceIndex, FractalChaosBands, FundingBasis, FundingRate, FundingRateMean, FundingRateZScore, GD, GMA, GainLossRatio, GapSideBySideWhite, Garch11, GarmanKlassVolatility, Gartley, GatorOscillator, GoldenPocket, GrangerCausality, GravestoneDoji, HIGHPASS, HMA, HT_DCPHASE, HT_PHASOR, HT_TRENDMODE, Hammer, HangingMan, Harami, HeadAndShoulders, HeikinAshi, HiLoActivator, HighLowIndex, HighLowRange, HighWave, Hikkake, HikkakeModified, HilbertDominantCycle, HistoricalVolatility, HoltWinters, HomingPigeon, HurstChannel, HurstExponent, IMI, Ichimoku, IdenticalThreeCrows, InNeck, Inertia, InformationRatio, InitialBalance, InstantaneousTrendline, IntradayIntensity, IntradayVolatilityProfile, InverseFisherTransform, InvertedHammer, JARQUEBERA, JMA, JumpIndicator, KAMA, KST, KVO, KagiBars, KalmanHedgeRatio, KaseDevStop, KasePermissionStochastic, KellyCriterion, Keltner, KendallTau, Kicking, KickingByLength, Kurtosis, KylesLambda, LINEARREG_INTERCEPT, LadderBottom, LaguerreRSI, LeadLagCrossCorrelation, LinRegAngle, LinRegChannel, LinRegSlope, LinearRegression, LiquidationFeatures, LogReturn, LongLeggedDoji, LongLine, LongShortRatio, MACD, MACDEXT, MACDFIX, MAMA, MFI, MIDPOINT, MIDPRICE, MINUS_DI, MINUS_DM, MOM, MaEnvelope, MacdHistogram, MarketFacilitationIndex, Marubozu, MassIndex, MatHold, MatchingLow, MaxDrawdown, McClellanOscillator, McClellanSummationIndex, McGinleyDynamic, MedianAbsoluteDeviation, MedianChannel, MedianMA, MedianPrice, Microprice, ModifiedMaStop, MorningDojiStar, MorningEveningStar, MurreyMathLines, NATR, NVI, NewHighsNewLows, Nrtr, OBV, OIPriceDivergence, OIWeighted, OmegaRatio, OnNeck, OpenInterestDelta, OpeningMarubozu, OpeningRange, OrderBookImbalanceFull, OrderBookImbalanceTop1, OrderBookImbalanceTopN, OrderFlowImbalance, OuHalfLife, OvernightGap, OvernightIntradayReturn, PGO, PLUS_DI, PLUS_DM, PMO, POLARIZED_FRACTAL_EFFICIENCY, PPO, PSAR, PVI, PainIndex, PairSpreadZScore, PairwiseBeta, ParkinsonVolatility, PearsonCorrelation, PercentAboveMa, PercentB, PercentageTrailingStop, PiercingDarkCloud, PivotReversal, PointAndFigureBars, PpoHistogram, ProfitFactor, ProjectionBands, ProjectionOscillator, QQE, Qstick, QuartileBands, QuotedSpread, REFLEX, RMI, ROC, ROCP, ROCR, ROCR100, ROLLINGMINMAX, RSI, RSX, RSquared, RVI, RVIVolatility, RWI, RealizedSpread, RealizedVolatility, RecoveryFactor, RectangleRange, RegimeLabel, RelativeStrengthAB, RenkoBars, RenkoTrailingStop, RickshawMan, RisingThreeMethods, RogersSatchellVolatility, RollMeasure, RollingCorrelation, RollingCovariance, RollingIqr, RollingPercentileRank, RollingQuantile, RollingVWAP, RoofingFilter, SAMPLEENT, SAREXT, SHANNONENT, SMA, SMI, SMMA, STC, SWMA, SeasonalZScore, SeparatingLines, SessionHighLow, SessionRange, SessionVwap, Shark, SharpeRatio, ShootingStar, ShortLine, SignedVolume, SineWave, Skewness, SortinoRatio, SpearmanCorrelation, SpinningTop, SpreadAr1Coefficient, SpreadBollingerBands, SpreadHurst, StalledPattern, StandardError, StandardErrorBands, StarcBands, StdDev, StepTrailingStop, StickSandwich, StochRSI, Stochastic, StochasticCCI, SuperSmoother, SuperTrend, T3, TDCombo, TDCountdown, TDDeMarker, TDDifferential, TDLines, TDOpen, TDPressure, TDREI, TDRangeProjection, TDRiskLevel, TDSequential, TDSetup, TEMA, TII, TRENDFLEX, TREND_STRENGTH_INDEX, TRIMA, TRIX, TSF, TSI, TSV, TTM_TREND, TakerBuySellRatio, Takuri, TasukiGap, TermStructureBasis, ThreeDrives, ThreeInside, ThreeLineStrike, ThreeOutside, ThreeSoldiersOrCrows, ThreeStarsInSouth, Thrusting, TickIndex, TimeBasedStop, TimeOfDayReturnProfile, TpoProfile, TradeImbalance, TradeVolumeIndex, TrendLabel, TreynorRatio, Triangle, Trin, TripleTopBottom, TrueRange, TsfOscillator, TtmSqueeze, TurnOfMonth, Tweezer, TwiggsMoneyFlow, TwoCrows, TypicalPrice, UNIVERSALOSC, UlcerIndex, UltimateOscillator, UniqueThreeRiver, UpDownVolumeRatio, UpsideGapThreeMethods, UpsideGapTwoCrows, VIDYA, VWAP, VWMA, VZO, ValueArea, ValueAtRisk, Variance, VarianceRatio, VerticalHorizontalFilter, VolatilityCone, VolatilityOfVolatility, VolatilityRatio, VoltyStop, VolumeByTimeProfile, VolumeOscillator, VolumePriceTrend, VolumeProfile, VolumeRsi, VolumeWeightedMacd, VolumeWeightedSr, Vortex, Vpin, VwapStdDevBands, WAVE_PM, WMA, Wad, WaveTrend, Wedge, WeightedClose, WickRatio, WilliamsAD, WilliamsFractals, WilliamsR, WinRate, WoodiePivots, YangZhangVolatility, YoyoExit, ZLEMA, ZScore, ZeroLagMACD, ZigZag, installPanicHook, version
9
9
  } from "./wickra_wasm_bg.js";
package/wickra_wasm_bg.js CHANGED
@@ -2104,6 +2104,101 @@ export class AnchoredVWAP {
2104
2104
  }
2105
2105
  if (Symbol.dispose) AnchoredVWAP.prototype[Symbol.dispose] = AnchoredVWAP.prototype.free;
2106
2106
 
2107
+ export class AndrewsPitchfork {
2108
+ __destroy_into_raw() {
2109
+ const ptr = this.__wbg_ptr;
2110
+ this.__wbg_ptr = 0;
2111
+ AndrewsPitchforkFinalization.unregister(this);
2112
+ return ptr;
2113
+ }
2114
+ free() {
2115
+ const ptr = this.__destroy_into_raw();
2116
+ wasm.__wbg_andrewspitchfork_free(ptr, 0);
2117
+ }
2118
+ /**
2119
+ * @param {Float64Array} high
2120
+ * @param {Float64Array} low
2121
+ * @returns {Float64Array}
2122
+ */
2123
+ batch(high, low) {
2124
+ try {
2125
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2126
+ const ptr0 = passArrayF64ToWasm0(high, wasm.__wbindgen_export3);
2127
+ const len0 = WASM_VECTOR_LEN;
2128
+ const ptr1 = passArrayF64ToWasm0(low, wasm.__wbindgen_export3);
2129
+ const len1 = WASM_VECTOR_LEN;
2130
+ wasm.andrewspitchfork_batch(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);
2131
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2132
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2133
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
2134
+ if (r2) {
2135
+ throw takeObject(r1);
2136
+ }
2137
+ return takeObject(r0);
2138
+ } finally {
2139
+ wasm.__wbindgen_add_to_stack_pointer(16);
2140
+ }
2141
+ }
2142
+ /**
2143
+ * @returns {boolean}
2144
+ */
2145
+ isReady() {
2146
+ const ret = wasm.andrewspitchfork_isReady(this.__wbg_ptr);
2147
+ return ret !== 0;
2148
+ }
2149
+ /**
2150
+ * @param {number} strength
2151
+ */
2152
+ constructor(strength) {
2153
+ try {
2154
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2155
+ wasm.andrewspitchfork_new(retptr, strength);
2156
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2157
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2158
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
2159
+ if (r2) {
2160
+ throw takeObject(r1);
2161
+ }
2162
+ this.__wbg_ptr = r0;
2163
+ AndrewsPitchforkFinalization.register(this, this.__wbg_ptr, this);
2164
+ return this;
2165
+ } finally {
2166
+ wasm.__wbindgen_add_to_stack_pointer(16);
2167
+ }
2168
+ }
2169
+ reset() {
2170
+ wasm.andrewspitchfork_reset(this.__wbg_ptr);
2171
+ }
2172
+ /**
2173
+ * @param {number} high
2174
+ * @param {number} low
2175
+ * @returns {any}
2176
+ */
2177
+ update(high, low) {
2178
+ try {
2179
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2180
+ wasm.andrewspitchfork_update(retptr, this.__wbg_ptr, high, low);
2181
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2182
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2183
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
2184
+ if (r2) {
2185
+ throw takeObject(r1);
2186
+ }
2187
+ return takeObject(r0);
2188
+ } finally {
2189
+ wasm.__wbindgen_add_to_stack_pointer(16);
2190
+ }
2191
+ }
2192
+ /**
2193
+ * @returns {number}
2194
+ */
2195
+ warmupPeriod() {
2196
+ const ret = wasm.andrewspitchfork_warmupPeriod(this.__wbg_ptr);
2197
+ return ret >>> 0;
2198
+ }
2199
+ }
2200
+ if (Symbol.dispose) AndrewsPitchfork.prototype[Symbol.dispose] = AndrewsPitchfork.prototype.free;
2201
+
2107
2202
  export class Aroon {
2108
2203
  __destroy_into_raw() {
2109
2204
  const ptr = this.__wbg_ptr;
@@ -5001,6 +5096,91 @@ export class CenterOfGravity {
5001
5096
  }
5002
5097
  if (Symbol.dispose) CenterOfGravity.prototype[Symbol.dispose] = CenterOfGravity.prototype.free;
5003
5098
 
5099
+ export class CentralPivotRange {
5100
+ __destroy_into_raw() {
5101
+ const ptr = this.__wbg_ptr;
5102
+ this.__wbg_ptr = 0;
5103
+ CentralPivotRangeFinalization.unregister(this);
5104
+ return ptr;
5105
+ }
5106
+ free() {
5107
+ const ptr = this.__destroy_into_raw();
5108
+ wasm.__wbg_centralpivotrange_free(ptr, 0);
5109
+ }
5110
+ /**
5111
+ * @param {Float64Array} high
5112
+ * @param {Float64Array} low
5113
+ * @param {Float64Array} close
5114
+ * @returns {Float64Array}
5115
+ */
5116
+ batch(high, low, close) {
5117
+ try {
5118
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5119
+ const ptr0 = passArrayF64ToWasm0(high, wasm.__wbindgen_export3);
5120
+ const len0 = WASM_VECTOR_LEN;
5121
+ const ptr1 = passArrayF64ToWasm0(low, wasm.__wbindgen_export3);
5122
+ const len1 = WASM_VECTOR_LEN;
5123
+ const ptr2 = passArrayF64ToWasm0(close, wasm.__wbindgen_export3);
5124
+ const len2 = WASM_VECTOR_LEN;
5125
+ wasm.centralpivotrange_batch(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);
5126
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
5127
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
5128
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
5129
+ if (r2) {
5130
+ throw takeObject(r1);
5131
+ }
5132
+ return takeObject(r0);
5133
+ } finally {
5134
+ wasm.__wbindgen_add_to_stack_pointer(16);
5135
+ }
5136
+ }
5137
+ /**
5138
+ * @returns {boolean}
5139
+ */
5140
+ isReady() {
5141
+ const ret = wasm.centralpivotrange_isReady(this.__wbg_ptr);
5142
+ return ret !== 0;
5143
+ }
5144
+ constructor() {
5145
+ const ret = wasm.centralpivotrange_new();
5146
+ this.__wbg_ptr = ret;
5147
+ CentralPivotRangeFinalization.register(this, this.__wbg_ptr, this);
5148
+ return this;
5149
+ }
5150
+ reset() {
5151
+ wasm.centralpivotrange_reset(this.__wbg_ptr);
5152
+ }
5153
+ /**
5154
+ * @param {number} high
5155
+ * @param {number} low
5156
+ * @param {number} close
5157
+ * @returns {any}
5158
+ */
5159
+ update(high, low, close) {
5160
+ try {
5161
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5162
+ wasm.centralpivotrange_update(retptr, this.__wbg_ptr, high, low, close);
5163
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
5164
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
5165
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
5166
+ if (r2) {
5167
+ throw takeObject(r1);
5168
+ }
5169
+ return takeObject(r0);
5170
+ } finally {
5171
+ wasm.__wbindgen_add_to_stack_pointer(16);
5172
+ }
5173
+ }
5174
+ /**
5175
+ * @returns {number}
5176
+ */
5177
+ warmupPeriod() {
5178
+ const ret = wasm.centralpivotrange_warmupPeriod(this.__wbg_ptr);
5179
+ return ret >>> 0;
5180
+ }
5181
+ }
5182
+ if (Symbol.dispose) CentralPivotRange.prototype[Symbol.dispose] = CentralPivotRange.prototype.free;
5183
+
5004
5184
  export class ChaikinMoneyFlow {
5005
5185
  __destroy_into_raw() {
5006
5186
  const ptr = this.__wbg_ptr;
@@ -20187,6 +20367,101 @@ export class MorningEveningStar {
20187
20367
  }
20188
20368
  if (Symbol.dispose) MorningEveningStar.prototype[Symbol.dispose] = MorningEveningStar.prototype.free;
20189
20369
 
20370
+ export class MurreyMathLines {
20371
+ __destroy_into_raw() {
20372
+ const ptr = this.__wbg_ptr;
20373
+ this.__wbg_ptr = 0;
20374
+ MurreyMathLinesFinalization.unregister(this);
20375
+ return ptr;
20376
+ }
20377
+ free() {
20378
+ const ptr = this.__destroy_into_raw();
20379
+ wasm.__wbg_murreymathlines_free(ptr, 0);
20380
+ }
20381
+ /**
20382
+ * @param {Float64Array} high
20383
+ * @param {Float64Array} low
20384
+ * @returns {Float64Array}
20385
+ */
20386
+ batch(high, low) {
20387
+ try {
20388
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
20389
+ const ptr0 = passArrayF64ToWasm0(high, wasm.__wbindgen_export3);
20390
+ const len0 = WASM_VECTOR_LEN;
20391
+ const ptr1 = passArrayF64ToWasm0(low, wasm.__wbindgen_export3);
20392
+ const len1 = WASM_VECTOR_LEN;
20393
+ wasm.murreymathlines_batch(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);
20394
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
20395
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
20396
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
20397
+ if (r2) {
20398
+ throw takeObject(r1);
20399
+ }
20400
+ return takeObject(r0);
20401
+ } finally {
20402
+ wasm.__wbindgen_add_to_stack_pointer(16);
20403
+ }
20404
+ }
20405
+ /**
20406
+ * @returns {boolean}
20407
+ */
20408
+ isReady() {
20409
+ const ret = wasm.murreymathlines_isReady(this.__wbg_ptr);
20410
+ return ret !== 0;
20411
+ }
20412
+ /**
20413
+ * @param {number} period
20414
+ */
20415
+ constructor(period) {
20416
+ try {
20417
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
20418
+ wasm.murreymathlines_new(retptr, period);
20419
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
20420
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
20421
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
20422
+ if (r2) {
20423
+ throw takeObject(r1);
20424
+ }
20425
+ this.__wbg_ptr = r0;
20426
+ MurreyMathLinesFinalization.register(this, this.__wbg_ptr, this);
20427
+ return this;
20428
+ } finally {
20429
+ wasm.__wbindgen_add_to_stack_pointer(16);
20430
+ }
20431
+ }
20432
+ reset() {
20433
+ wasm.murreymathlines_reset(this.__wbg_ptr);
20434
+ }
20435
+ /**
20436
+ * @param {number} high
20437
+ * @param {number} low
20438
+ * @returns {any}
20439
+ */
20440
+ update(high, low) {
20441
+ try {
20442
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
20443
+ wasm.murreymathlines_update(retptr, this.__wbg_ptr, high, low);
20444
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
20445
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
20446
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
20447
+ if (r2) {
20448
+ throw takeObject(r1);
20449
+ }
20450
+ return takeObject(r0);
20451
+ } finally {
20452
+ wasm.__wbindgen_add_to_stack_pointer(16);
20453
+ }
20454
+ }
20455
+ /**
20456
+ * @returns {number}
20457
+ */
20458
+ warmupPeriod() {
20459
+ const ret = wasm.murreymathlines_warmupPeriod(this.__wbg_ptr);
20460
+ return ret >>> 0;
20461
+ }
20462
+ }
20463
+ if (Symbol.dispose) MurreyMathLines.prototype[Symbol.dispose] = MurreyMathLines.prototype.free;
20464
+
20190
20465
  export class NATR {
20191
20466
  __destroy_into_raw() {
20192
20467
  const ptr = this.__wbg_ptr;
@@ -23091,6 +23366,107 @@ export class PiercingDarkCloud {
23091
23366
  }
23092
23367
  if (Symbol.dispose) PiercingDarkCloud.prototype[Symbol.dispose] = PiercingDarkCloud.prototype.free;
23093
23368
 
23369
+ export class PivotReversal {
23370
+ __destroy_into_raw() {
23371
+ const ptr = this.__wbg_ptr;
23372
+ this.__wbg_ptr = 0;
23373
+ PivotReversalFinalization.unregister(this);
23374
+ return ptr;
23375
+ }
23376
+ free() {
23377
+ const ptr = this.__destroy_into_raw();
23378
+ wasm.__wbg_pivotreversal_free(ptr, 0);
23379
+ }
23380
+ /**
23381
+ * @param {Float64Array} high
23382
+ * @param {Float64Array} low
23383
+ * @param {Float64Array} close
23384
+ * @returns {Float64Array}
23385
+ */
23386
+ batch(high, low, close) {
23387
+ try {
23388
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
23389
+ const ptr0 = passArrayF64ToWasm0(high, wasm.__wbindgen_export3);
23390
+ const len0 = WASM_VECTOR_LEN;
23391
+ const ptr1 = passArrayF64ToWasm0(low, wasm.__wbindgen_export3);
23392
+ const len1 = WASM_VECTOR_LEN;
23393
+ const ptr2 = passArrayF64ToWasm0(close, wasm.__wbindgen_export3);
23394
+ const len2 = WASM_VECTOR_LEN;
23395
+ wasm.pivotreversal_batch(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);
23396
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
23397
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
23398
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
23399
+ if (r2) {
23400
+ throw takeObject(r1);
23401
+ }
23402
+ return takeObject(r0);
23403
+ } finally {
23404
+ wasm.__wbindgen_add_to_stack_pointer(16);
23405
+ }
23406
+ }
23407
+ /**
23408
+ * @returns {boolean}
23409
+ */
23410
+ isReady() {
23411
+ const ret = wasm.pivotreversal_isReady(this.__wbg_ptr);
23412
+ return ret !== 0;
23413
+ }
23414
+ /**
23415
+ * @param {number} left
23416
+ * @param {number} right
23417
+ */
23418
+ constructor(left, right) {
23419
+ try {
23420
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
23421
+ wasm.pivotreversal_new(retptr, left, right);
23422
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
23423
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
23424
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
23425
+ if (r2) {
23426
+ throw takeObject(r1);
23427
+ }
23428
+ this.__wbg_ptr = r0;
23429
+ PivotReversalFinalization.register(this, this.__wbg_ptr, this);
23430
+ return this;
23431
+ } finally {
23432
+ wasm.__wbindgen_add_to_stack_pointer(16);
23433
+ }
23434
+ }
23435
+ reset() {
23436
+ wasm.pivotreversal_reset(this.__wbg_ptr);
23437
+ }
23438
+ /**
23439
+ * @param {number} high
23440
+ * @param {number} low
23441
+ * @param {number} close
23442
+ * @returns {number | undefined}
23443
+ */
23444
+ update(high, low, close) {
23445
+ try {
23446
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-32);
23447
+ wasm.pivotreversal_update(retptr, this.__wbg_ptr, high, low, close);
23448
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
23449
+ var r2 = getDataViewMemory0().getFloat64(retptr + 8 * 1, true);
23450
+ var r4 = getDataViewMemory0().getInt32(retptr + 4 * 4, true);
23451
+ var r5 = getDataViewMemory0().getInt32(retptr + 4 * 5, true);
23452
+ if (r5) {
23453
+ throw takeObject(r4);
23454
+ }
23455
+ return r0 === 0 ? undefined : r2;
23456
+ } finally {
23457
+ wasm.__wbindgen_add_to_stack_pointer(32);
23458
+ }
23459
+ }
23460
+ /**
23461
+ * @returns {number}
23462
+ */
23463
+ warmupPeriod() {
23464
+ const ret = wasm.pivotreversal_warmupPeriod(this.__wbg_ptr);
23465
+ return ret >>> 0;
23466
+ }
23467
+ }
23468
+ if (Symbol.dispose) PivotReversal.prototype[Symbol.dispose] = PivotReversal.prototype.free;
23469
+
23094
23470
  export class PointAndFigureBars {
23095
23471
  __destroy_into_raw() {
23096
23472
  const ptr = this.__wbg_ptr;
@@ -36306,6 +36682,105 @@ export class VolumeWeightedMacd {
36306
36682
  }
36307
36683
  if (Symbol.dispose) VolumeWeightedMacd.prototype[Symbol.dispose] = VolumeWeightedMacd.prototype.free;
36308
36684
 
36685
+ export class VolumeWeightedSr {
36686
+ __destroy_into_raw() {
36687
+ const ptr = this.__wbg_ptr;
36688
+ this.__wbg_ptr = 0;
36689
+ VolumeWeightedSrFinalization.unregister(this);
36690
+ return ptr;
36691
+ }
36692
+ free() {
36693
+ const ptr = this.__destroy_into_raw();
36694
+ wasm.__wbg_volumeweightedsr_free(ptr, 0);
36695
+ }
36696
+ /**
36697
+ * @param {Float64Array} high
36698
+ * @param {Float64Array} low
36699
+ * @param {Float64Array} volume
36700
+ * @returns {Float64Array}
36701
+ */
36702
+ batch(high, low, volume) {
36703
+ try {
36704
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
36705
+ const ptr0 = passArrayF64ToWasm0(high, wasm.__wbindgen_export3);
36706
+ const len0 = WASM_VECTOR_LEN;
36707
+ const ptr1 = passArrayF64ToWasm0(low, wasm.__wbindgen_export3);
36708
+ const len1 = WASM_VECTOR_LEN;
36709
+ const ptr2 = passArrayF64ToWasm0(volume, wasm.__wbindgen_export3);
36710
+ const len2 = WASM_VECTOR_LEN;
36711
+ wasm.volumeweightedsr_batch(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);
36712
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
36713
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
36714
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
36715
+ if (r2) {
36716
+ throw takeObject(r1);
36717
+ }
36718
+ return takeObject(r0);
36719
+ } finally {
36720
+ wasm.__wbindgen_add_to_stack_pointer(16);
36721
+ }
36722
+ }
36723
+ /**
36724
+ * @returns {boolean}
36725
+ */
36726
+ isReady() {
36727
+ const ret = wasm.volumeweightedsr_isReady(this.__wbg_ptr);
36728
+ return ret !== 0;
36729
+ }
36730
+ /**
36731
+ * @param {number} period
36732
+ */
36733
+ constructor(period) {
36734
+ try {
36735
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
36736
+ wasm.volumeweightedsr_new(retptr, period);
36737
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
36738
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
36739
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
36740
+ if (r2) {
36741
+ throw takeObject(r1);
36742
+ }
36743
+ this.__wbg_ptr = r0;
36744
+ VolumeWeightedSrFinalization.register(this, this.__wbg_ptr, this);
36745
+ return this;
36746
+ } finally {
36747
+ wasm.__wbindgen_add_to_stack_pointer(16);
36748
+ }
36749
+ }
36750
+ reset() {
36751
+ wasm.volumeweightedsr_reset(this.__wbg_ptr);
36752
+ }
36753
+ /**
36754
+ * @param {number} high
36755
+ * @param {number} low
36756
+ * @param {number} volume
36757
+ * @returns {any}
36758
+ */
36759
+ update(high, low, volume) {
36760
+ try {
36761
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
36762
+ wasm.volumeweightedsr_update(retptr, this.__wbg_ptr, high, low, volume);
36763
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
36764
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
36765
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
36766
+ if (r2) {
36767
+ throw takeObject(r1);
36768
+ }
36769
+ return takeObject(r0);
36770
+ } finally {
36771
+ wasm.__wbindgen_add_to_stack_pointer(16);
36772
+ }
36773
+ }
36774
+ /**
36775
+ * @returns {number}
36776
+ */
36777
+ warmupPeriod() {
36778
+ const ret = wasm.volumeweightedsr_warmupPeriod(this.__wbg_ptr);
36779
+ return ret >>> 0;
36780
+ }
36781
+ }
36782
+ if (Symbol.dispose) VolumeWeightedSr.prototype[Symbol.dispose] = VolumeWeightedSr.prototype.free;
36783
+
36309
36784
  export class Vortex {
36310
36785
  __destroy_into_raw() {
36311
36786
  const ptr = this.__wbg_ptr;
@@ -38259,6 +38734,9 @@ const AnchoredRSIFinalization = (typeof FinalizationRegistry === 'undefined')
38259
38734
  const AnchoredVWAPFinalization = (typeof FinalizationRegistry === 'undefined')
38260
38735
  ? { register: () => {}, unregister: () => {} }
38261
38736
  : new FinalizationRegistry(ptr => wasm.__wbg_anchoredvwap_free(ptr, 1));
38737
+ const AndrewsPitchforkFinalization = (typeof FinalizationRegistry === 'undefined')
38738
+ ? { register: () => {}, unregister: () => {} }
38739
+ : new FinalizationRegistry(ptr => wasm.__wbg_andrewspitchfork_free(ptr, 1));
38262
38740
  const AwesomeOscillatorFinalization = (typeof FinalizationRegistry === 'undefined')
38263
38741
  ? { register: () => {}, unregister: () => {} }
38264
38742
  : new FinalizationRegistry(ptr => wasm.__wbg_awesomeoscillator_free(ptr, 1));
@@ -38367,6 +38845,9 @@ const CCIFinalization = (typeof FinalizationRegistry === 'undefined')
38367
38845
  const CenterOfGravityFinalization = (typeof FinalizationRegistry === 'undefined')
38368
38846
  ? { register: () => {}, unregister: () => {} }
38369
38847
  : new FinalizationRegistry(ptr => wasm.__wbg_centerofgravity_free(ptr, 1));
38848
+ const CentralPivotRangeFinalization = (typeof FinalizationRegistry === 'undefined')
38849
+ ? { register: () => {}, unregister: () => {} }
38850
+ : new FinalizationRegistry(ptr => wasm.__wbg_centralpivotrange_free(ptr, 1));
38370
38851
  const CFOFinalization = (typeof FinalizationRegistry === 'undefined')
38371
38852
  ? { register: () => {}, unregister: () => {} }
38372
38853
  : new FinalizationRegistry(ptr => wasm.__wbg_cfo_free(ptr, 1));
@@ -38934,6 +39415,9 @@ const MorningDojiStarFinalization = (typeof FinalizationRegistry === 'undefined'
38934
39415
  const MorningEveningStarFinalization = (typeof FinalizationRegistry === 'undefined')
38935
39416
  ? { register: () => {}, unregister: () => {} }
38936
39417
  : new FinalizationRegistry(ptr => wasm.__wbg_morningeveningstar_free(ptr, 1));
39418
+ const MurreyMathLinesFinalization = (typeof FinalizationRegistry === 'undefined')
39419
+ ? { register: () => {}, unregister: () => {} }
39420
+ : new FinalizationRegistry(ptr => wasm.__wbg_murreymathlines_free(ptr, 1));
38937
39421
  const NATRFinalization = (typeof FinalizationRegistry === 'undefined')
38938
39422
  ? { register: () => {}, unregister: () => {} }
38939
39423
  : new FinalizationRegistry(ptr => wasm.__wbg_natr_free(ptr, 1));
@@ -39021,6 +39505,9 @@ const PGOFinalization = (typeof FinalizationRegistry === 'undefined')
39021
39505
  const PiercingDarkCloudFinalization = (typeof FinalizationRegistry === 'undefined')
39022
39506
  ? { register: () => {}, unregister: () => {} }
39023
39507
  : new FinalizationRegistry(ptr => wasm.__wbg_piercingdarkcloud_free(ptr, 1));
39508
+ const PivotReversalFinalization = (typeof FinalizationRegistry === 'undefined')
39509
+ ? { register: () => {}, unregister: () => {} }
39510
+ : new FinalizationRegistry(ptr => wasm.__wbg_pivotreversal_free(ptr, 1));
39024
39511
  const PLUS_DIFinalization = (typeof FinalizationRegistry === 'undefined')
39025
39512
  ? { register: () => {}, unregister: () => {} }
39026
39513
  : new FinalizationRegistry(ptr => wasm.__wbg_plus_di_free(ptr, 1));
@@ -39507,6 +39994,9 @@ const VolumeRsiFinalization = (typeof FinalizationRegistry === 'undefined')
39507
39994
  const VolumeWeightedMacdFinalization = (typeof FinalizationRegistry === 'undefined')
39508
39995
  ? { register: () => {}, unregister: () => {} }
39509
39996
  : new FinalizationRegistry(ptr => wasm.__wbg_volumeweightedmacd_free(ptr, 1));
39997
+ const VolumeWeightedSrFinalization = (typeof FinalizationRegistry === 'undefined')
39998
+ ? { register: () => {}, unregister: () => {} }
39999
+ : new FinalizationRegistry(ptr => wasm.__wbg_volumeweightedsr_free(ptr, 1));
39510
40000
  const VortexFinalization = (typeof FinalizationRegistry === 'undefined')
39511
40001
  ? { register: () => {}, unregister: () => {} }
39512
40002
  : new FinalizationRegistry(ptr => wasm.__wbg_vortex_free(ptr, 1));
Binary file