wickra-wasm 0.9.0 → 0.9.2

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
@@ -18,12 +18,13 @@
18
18
  [![OpenSSF Best Practices](https://raw.githubusercontent.com/wickra-lib/.github/main/profile/badges/best-practices.svg)](https://www.bestpractices.dev/projects/13094)
19
19
  [![Build provenance](https://raw.githubusercontent.com/wickra-lib/.github/main/profile/badges/provenance.svg)](https://github.com/wickra-lib/wickra/attestations)
20
20
  [![Docs](https://raw.githubusercontent.com/wickra-lib/.github/main/profile/badges/docs.svg)](https://docs.wickra.org)
21
+ [![Verified across 10 languages](https://raw.githubusercontent.com/wickra-lib/.github/main/profile/badges/verified.svg)](https://docs.wickra.org/FAQ#do-all-the-language-bindings-compute-the-same-values)
21
22
 
22
23
  **Streaming-first technical indicators. Install with `pip install wickra` — no system dependencies.**
23
24
 
24
25
  Wickra is a multi-language technical-analysis library with a Rust core and
25
- native bindings for Python, Node.js and WebAssembly, plus a C ABI that C, C++,
26
- C# / .NET, Go, Java, R and any other C-capable language links against. Every indicator is a
26
+ native bindings for Python, Node.js and WASM, plus a C ABI that C, C++,
27
+ C#, Go, Java, R and any other C-capable language links against. Every indicator is a
27
28
  state machine that updates in O(1) per new data point, so live trading bots and
28
29
  historical backtests share the exact same implementation.
29
30
 
@@ -53,6 +54,7 @@ Full documentation lives at **[docs.wickra.org](https://docs.wickra.org)**:
53
54
  [Node](https://docs.wickra.org/Quickstart-Node),
54
55
  [WASM](https://docs.wickra.org/Quickstart-WASM),
55
56
  [C](https://docs.wickra.org/Quickstart-C),
57
+ [C++](https://docs.wickra.org/Quickstart-C),
56
58
  [C#](https://docs.wickra.org/Quickstart-CSharp),
57
59
  [Go](https://docs.wickra.org/Quickstart-Go),
58
60
  [Java](https://docs.wickra.org/Quickstart-Java),
@@ -81,14 +83,19 @@ times to get there.
81
83
  breadth, Renko/Kagi/Point&Figure bars, Ehlers DSP cycles, risk/performance
82
84
  metrics — every single one updating in **O(1) per tick**. TA-Lib ships ~150 and
83
85
  none of them stream.
84
- - **One Rust core, five first-class targets.** Native **Python · Node.js ·
85
- WebAssembly · Rust** plus a **C ABI** for C / C++, C# / .NET, Go, Java, R and any other C-capable language —
86
+ - **One Rust core, five first-class targets.** Native **Rust · Python · Node.js ·
87
+ WASM** plus a **C ABI** for C, C++, C#, Go, Java, R and any other C-capable language —
86
88
  identical math, identical results, zero per-language reimplementation and zero
87
89
  GIL bottleneck.
88
90
  - **Correct by construction, not by hope.** Every `update` validates its input,
89
91
  runs a real warmup, and returns an `Option` so a single bad tick can't silently
90
92
  poison state. `batch == streaming` is **bit-exact, fuzzed and 100 %-line-covered
91
93
  for all 514 indicators**.
94
+ - **Identical across every language — proven, not promised.** All 514 indicators
95
+ are replayed through **all 10 languages** (Rust · Python · Node.js · WASM · C ·
96
+ C++ · C# · Go · Java · R) and checked **bit-for-bit against the Rust reference**
97
+ via shared golden fixtures in CI. The math is verifiably the same everywhere —
98
+ this very check caught and fixed two real cross-language marshalling bugs.
92
99
  - **Orders of magnitude faster where it counts.** In streaming Wickra is **11–56×**
93
100
  faster than the only other incremental peer and **thousands of times** faster
94
101
  than recompute-on-every-tick libraries. On batch it wins several rows outright
@@ -106,7 +113,7 @@ Every other library forces one of those compromises. Wickra doesn't:
106
113
 
107
114
  | Library | Install | Streaming | Languages | Indicators | Active |
108
115
  |------------------|-------------|-------------|-----------------------------|-----------:|--------|
109
- | **★ Wickra**| **clean** | **yes, O(1)** | **Rust · Python · Node · WASM · C · C# · Go · Java · R** | **514** | **yes** |
116
+ | **★ Wickra**| **clean** | **yes, O(1)** | **Rust · Python · Node.js · WASM · C · C++ · C# · Go · Java · R** | **514** | **yes** |
110
117
  | kand | clean | yes | Python · WASM · Rust | ~60 | yes |
111
118
  | ta-rs | clean | yes | Rust only | ~30 | stale |
112
119
  | yata | clean | partial | Rust only | ~35 | yes |
@@ -137,12 +144,38 @@ elsewhere for `None`-warmup, NaN-safety and bit-exact `batch == streaming`.
137
144
  Full tables (Rust + Python, streaming + batch) and how to reproduce them live in
138
145
  **[BENCHMARKS.md](BENCHMARKS.md)**.
139
146
 
147
+ ### Pick your language with eyes open — per-binding throughput
148
+
149
+ Every binding calls the **same** Rust core, so this is **not** a speed claim — it
150
+ is the raw cost of crossing each language's FFI boundary (`SMA(20)`, 200 000 bars,
151
+ Ryzen 9 9950X, million updates/sec). **Batch is near-core everywhere; streaming is
152
+ where the boundary shows** — so if you stream tick-by-tick, the table tells you
153
+ which binding keeps up and which to avoid for hot loops.
154
+
155
+ | Language | streaming (Mupd/s) | batch (Mupd/s) |
156
+ |-----------------|-------------------:|---------------:|
157
+ | Rust (no FFI) | 391 | 500 |
158
+ | C / C++ | 383 | 330 |
159
+ | C# | 337 | 244 |
160
+ | Python | 33 | 488 |
161
+ | Java | 28 | 175 |
162
+ | Go | 24 | 400 |
163
+ | WASM | 19 | 167 |
164
+ | Node.js | 17 | 10 |
165
+ | R | 0.1 | 193 |
166
+
167
+ All ten share one verified implementation (see the verification badge above), so
168
+ the *numbers* differ but the *values* are bit-for-bit identical. Methodology and
169
+ the per-indicator breakdown are in [BENCHMARKS.md](BENCHMARKS.md#3-per-binding-throughput--the-cost-of-the-boundary).
170
+
140
171
  ## Indicators
141
172
 
142
173
  514 streaming-first indicators across twenty-four families. Every one passes the
143
174
  `batch == streaming` equivalence test, reference-value tests, and reset
144
- semantics tests. Each has a per-indicator deep dive (formula, parameters,
145
- warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
175
+ semantics tests and is replayed through **all 10 languages** and checked
176
+ bit-for-bit against the Rust reference (golden fixtures, in CI). Each has a
177
+ per-indicator deep dive (formula, parameters, warmup) at
178
+ [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
146
179
 
147
180
  | Family | Indicators |
148
181
  |--------|-----------|
@@ -153,7 +186,7 @@ warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
153
186
  | Volatility & Bands | ATR, Bollinger Bands, Keltner Channels, Donchian Channels, NATR, StdDev, Ulcer Index, Historical Volatility, Bollinger Bandwidth, %B, True Range, Chaikin Volatility, RVI (Relative Volatility Index), Parkinson Volatility, Garman-Klass Volatility, Rogers-Satchell Volatility, Yang-Zhang Volatility, Volatility Cone |
154
187
  | Bands & Channels | MA Envelope, Acceleration Bands, STARC Bands, ATR Bands, Hurst Channel, LinReg Channel, Standard Error Bands, Double Bollinger Bands, TTM Squeeze, Fractal Chaos Bands, VWAP StdDev Bands, Quartile Bands, Bomar Bands, Median Channel, Projection Bands, Projection Oscillator |
155
188
  | Trailing Stops | Parabolic SAR, Parabolic SAR Extended (SAREXT), SuperTrend, Chandelier Exit, Chande Kroll Stop, ATR Trailing Stop, HiLo Activator, Volty Stop, Yo-Yo Exit, Donchian Channel Stop, Percentage Trailing Stop, Step Trailing Stop, Renko Trailing Stop, Kase DevStop, Elder SafeZone, ATR Ratchet, NRTR, Time-Based Stop, Modified MA Stop |
156
- | 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 |
189
+ | 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 Oscillator, Anchored VWAP, Demand Index, TSV, VZO, Market Facilitation Index, Volume RSI, Williams Accumulation/Distribution, Twiggs Money Flow, Trade Volume Index, Intraday Intensity, Better Volume, Volume-Weighted MACD |
157
190
  | 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 |
158
191
  | 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 |
159
192
  | 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 |
@@ -190,7 +223,7 @@ it — regenerate from the core).
190
223
  | Browser / WASM | `npm install wickra-wasm` | `examples/wasm/index.html` |
191
224
  | Rust | `cargo add wickra` | `examples/rust/src/bin/backtest.rs` |
192
225
  | C / C++ (C ABI) | header + library, see [`bindings/c`](bindings/c) | `examples/c/streaming.c` |
193
- | C# / .NET (C ABI) | `dotnet add package Wickra`, see [`bindings/csharp`](bindings/csharp) | `examples/csharp/streaming` |
226
+ | C# (C ABI) | `dotnet add package Wickra`, see [`bindings/csharp`](bindings/csharp) | `examples/csharp/streaming` |
194
227
  | Go (cgo, C ABI) | `go get github.com/wickra-lib/wickra/bindings/go`, see [`bindings/go`](bindings/go) | `examples/go/streaming` |
195
228
  | Java (FFM, C ABI) | Maven Central `org.wickra:wickra`, see [`bindings/java`](bindings/java) | `examples/java` (`Streaming`) |
196
229
  | R (`.Call`, C ABI) | `R CMD INSTALL bindings/r`, see [`bindings/r`](bindings/r) | `examples/r/streaming.R` |
@@ -202,6 +235,29 @@ The wickra-core crate is `unsafe`-forbidden, so the native bindings are
202
235
  memory-safe end to end. The C ABI runs the same safe core; only its thin FFI
203
236
  boundary uses `unsafe`, and the caller owns handle lifetimes (`_new` / `_free`).
204
237
 
238
+ ## Requirements
239
+
240
+ The minimum supported version per language. Prebuilt packages (Rust, Python,
241
+ Node.js, WASM, C#) need only the runtime; the C-ABI bindings that compile on
242
+ install — Go (cgo) and R (`.Call`) — also need a C compiler, and Java runs with
243
+ `--enable-native-access=ALL-UNNAMED`.
244
+
245
+ | Language | Package | Minimum supported |
246
+ |-------------|--------------------------------------|----------------------------|
247
+ | Rust | crates.io · `wickra` | 1.86 (MSRV) |
248
+ | Python | PyPI · `wickra` (abi3 wheel) | 3.9 (tested through 3.13) |
249
+ | Node.js | npm · `wickra` (N-API 8) | 20 (tested on 22 · 24 LTS) |
250
+ | WASM | npm · `wickra-wasm` | any modern JS engine |
251
+ | C | `wickra.h` + library (releases) | C99 compiler |
252
+ | C++ | `wickra.hpp` over the C ABI | C++14 compiler |
253
+ | C# | NuGet · `Wickra` | .NET 8 (`net8.0`) |
254
+ | Go | module · `wickra-lib/wickra-go` | Go 1.23 (cgo) |
255
+ | Java | Maven Central · `org.wickra:wickra` | Java 22 (FFM / Panama) |
256
+ | R | source package | R ≥ 2.10 (Rtools on Win.) |
257
+
258
+ Full per-language detail (runtime vs. build-from-source) is on the
259
+ [Requirements page](https://docs.wickra.org/Requirements) in the docs.
260
+
205
261
  ## Rust API
206
262
 
207
263
  ```rust
@@ -247,8 +303,8 @@ while let Some(event) = stream.next_event().await? {
247
303
  }
248
304
  ```
249
305
 
250
- A Python live-trading example using the public `websockets` package lives at
251
- `examples/python/live_trading.py`.
306
+ A Python live Binance feed example using the public `websockets` package lives at
307
+ `examples/python/live_binance.py`.
252
308
 
253
309
  ## Project layout
254
310
 
@@ -264,15 +320,15 @@ wickra/
264
320
  │ ├── node/ napi-rs (publishes on npm)
265
321
  │ ├── wasm/ wasm-bindgen (browsers, bundlers, Node)
266
322
  │ ├── c/ C ABI (cdylib + staticlib) + generated include/wickra.h
267
- │ ├── csharp/ .NET binding over the C ABI (publishes on NuGet)
323
+ │ ├── csharp/ C# binding over the C ABI (publishes on NuGet)
268
324
  │ ├── go/ Go binding over the C ABI via cgo (module tag)
269
325
  │ ├── r/ R binding over the C ABI via .Call (R package)
270
326
  │ └── java/ Java binding over the C ABI via the FFM API (Maven Central)
271
327
  ├── examples/ examples/README.md indexes every language
272
328
  │ ├── data/ real BTCUSDT OHLCV datasets, one per timeframe
273
329
  │ ├── rust/ Rust workspace member (`wickra-examples`)
274
- │ ├── python/ backtest, live trading, parallel assets, multi-tf
275
- │ ├── node/ streaming, backtest, live trading (load `wickra`)
330
+ │ ├── python/ backtest, live Binance feed, parallel assets, multi-tf
331
+ │ ├── node/ streaming, backtest, live Binance feed (load `wickra`)
276
332
  │ ├── wasm/ browser demo for `wickra-wasm`
277
333
  │ ├── c/ C smoke + streaming, C++ RAII wrapper
278
334
  │ ├── csharp/ streaming, backtest, strategies (load `Wickra`)
@@ -312,7 +368,7 @@ cargo build -p wickra-c --release
312
368
  cmake -S examples/c -B examples/c/build -DWICKRA_LIB_DIR="$PWD/target/release"
313
369
  cmake --build examples/c/build && ctest --test-dir examples/c/build --output-on-failure
314
370
 
315
- # C# / .NET binding (requires the .NET 8 SDK; links the C ABI above)
371
+ # C# binding (requires the .NET 8 SDK; links the C ABI above)
316
372
  dotnet test bindings/csharp/Wickra.Tests/Wickra.Tests.csproj
317
373
 
318
374
  # Go binding (requires a C compiler for cgo; links the C ABI above)
@@ -358,11 +414,15 @@ Every layer is covered; run the suites with the commands in
358
414
  - `bindings/java`: JUnit cases covering one indicator per FFI archetype
359
415
  (scalar/batch, multi-output, bars, profile, array input) plus batch equivalence.
360
416
 
361
- The four C-ABI bindings (C#, Go, Java, R) additionally replay a shared,
362
- language-neutral golden fixture (`testdata/golden/*.csv`, generated by
363
- `cargo run -p wickra-examples --bin gen_golden`) and assert exact parity with the
364
- Rust reference outputs across every archetype (SMA, EMA, RSI, ATR, MACD, ADX,
365
- Beta), catching FFI wiring bugs the math-only core tests cannot see.
417
+ On top of those per-binding tests, **all 10 languages** (Rust, Python, Node.js,
418
+ WASM, C, C++, C#, Go, Java, R) replay a shared, language-neutral golden fixture
419
+ (`testdata/golden/*.csv`, generated by
420
+ `cargo run -p wickra-examples --bin gen_golden`) and assert **bit-for-bit parity
421
+ with the Rust reference for every one of the 514 indicators** across every
422
+ archetype (scalar, multi-output, pairwise, derivatives-tick, cross-section,
423
+ order-book, trade, profile, alt-chart bars, footprint). This catches FFI wiring
424
+ bugs the math-only core tests cannot see — it has already found and fixed real
425
+ cross-language marshalling bugs in the Java and R bindings.
366
426
 
367
427
  ## Contributing
368
428
 
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.9.0",
8
+ "version": "0.9.2",
9
9
  "license": "MIT OR Apache-2.0",
10
10
  "repository": {
11
11
  "type": "git",
package/wickra_wasm.d.ts CHANGED
@@ -30,6 +30,15 @@ export class ADL {
30
30
  update(high: number, low: number, close: number, volume: number): number | undefined;
31
31
  }
32
32
 
33
+ export class ADOSC {
34
+ free(): void;
35
+ [Symbol.dispose](): void;
36
+ batch(high: Float64Array, low: Float64Array, close: Float64Array): Float64Array;
37
+ constructor();
38
+ reset(): void;
39
+ update(high: number, low: number, close: number): number | undefined;
40
+ }
41
+
33
42
  export class ADX {
34
43
  free(): void;
35
44
  [Symbol.dispose](): void;
@@ -5705,15 +5714,6 @@ export class WickRatio {
5705
5714
  update(open: number, high: number, low: number, close: number): number | undefined;
5706
5715
  }
5707
5716
 
5708
- export class WilliamsAD {
5709
- free(): void;
5710
- [Symbol.dispose](): void;
5711
- batch(high: Float64Array, low: Float64Array, close: Float64Array): Float64Array;
5712
- constructor();
5713
- reset(): void;
5714
- update(high: number, low: number, close: number): number | undefined;
5715
- }
5716
-
5717
5717
  export class WilliamsFractals {
5718
5718
  free(): void;
5719
5719
  [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, 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, BurkeRatio, Butterfly, CCI, CFO, CMO, CTI, CalendarSpread, CalmarRatio, Camarilla, CandleVolume, CenterOfGravity, CentralPivotRange, ChaikinMoneyFlow, ChaikinOscillator, ChaikinVolatility, ChandeKrollStop, ChandelierExit, ChoppinessIndex, ClassicPivots, CloseVsOpen, ClosingMarubozu, CoefficientOfVariation, Cointegration, CommonSenseRatio, CompositeProfile, 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, DollarBars, Donchian, DonchianStop, DoubleBollinger, DoubleTopBottom, DownsideGapThreeMethods, DragonflyDoji, DrawdownDuration, DumplingTop, DynamicMomentumIndex, EHMA, EMA, EVENBETTERSINE, EVWMA, EaseOfMovement, EffectiveSpread, EhlersStochastic, ElderImpulse, ElderRay, ElderSafeZone, EmpiricalModeDecomposition, Engulfing, Equivolume, EstimatedLeverageRatio, EveningDojiStar, EwmaVolatility, Expectancy, FAMA, FRAMA, FallingThreeMethods, FibArcs, FibChannel, FibConfluence, FibExtension, FibFan, FibProjection, FibRetracement, FibTimeZones, FibonacciPivots, FisherRSI, FisherTransform, FlagPennant, Footprint, ForceIndex, FractalChaosBands, FryPanBottom, FundingBasis, FundingImpliedApr, FundingRate, FundingRateMean, FundingRateZScore, GD, GMA, GainLossRatio, GainToPainRatio, GapSideBySideWhite, Garch11, GarmanKlassVolatility, Gartley, GatorOscillator, GoldenPocket, GrangerCausality, GravestoneDoji, HIGHPASS, HMA, HT_DCPHASE, HT_PHASOR, HT_TRENDMODE, Hammer, HangingMan, Harami, HaramiCross, HasbrouckInformationShare, HeadAndShoulders, HeikinAshi, HeikinAshiOscillator, HiLoActivator, HighLowIndex, HighLowRange, HighLowVolumeNodes, HighWave, Hikkake, HikkakeModified, HilbertDominantCycle, HistoricalVolatility, HoltWinters, HomingPigeon, HurstChannel, HurstExponent, IMI, Ichimoku, IdenticalThreeCrows, ImbalanceBars, InNeck, Inertia, InformationRatio, InitialBalance, InstantaneousTrendline, IntradayIntensity, IntradayVolatilityProfile, InverseFisherTransform, InvertedHammer, JARQUEBERA, JMA, JumpIndicator, KAMA, KRatio, 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, M2Measure, MACD, MACDEXT, MACDFIX, MAMA, MFI, MIDPOINT, MIDPRICE, MINUS_DI, MINUS_DM, MOM, MaEnvelope, MacdHistogram, MarketFacilitationIndex, MartinRatio, Marubozu, MassIndex, MatHold, MatchingLow, MaxDrawdown, McClellanOscillator, McClellanSummationIndex, McGinleyDynamic, MedianAbsoluteDeviation, MedianChannel, MedianMA, MedianPrice, Microprice, ModifiedMaStop, MorningDojiStar, MorningEveningStar, MurreyMathLines, NATR, NVI, NakedPoc, NewHighsNewLows, NewPriceLines, Nrtr, OBV, OIPriceDivergence, OIWeighted, OiToVolumeRatio, OmegaRatio, OnNeck, OpenInterestDelta, OpenInterestMomentum, 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, PerpetualPremiumIndex, PiercingDarkCloud, Pin, PivotReversal, PointAndFigureBars, PpoHistogram, ProfileShape, ProfitFactor, ProjectionBands, ProjectionOscillator, QQE, Qstick, QuartileBands, QuotedSpread, REFLEX, RMI, ROC, ROCP, ROCR, ROCR100, ROLLINGMINMAX, RSI, RSX, RSquared, RVI, RVIVolatility, RWI, RangeBars, RealizedSpread, RealizedVolatility, RecoveryFactor, RectangleRange, RegimeLabel, RelativeStrengthAB, RenkoBars, RenkoTrailingStop, RickshawMan, RisingThreeMethods, RogersSatchellVolatility, RollMeasure, RollingCorrelation, RollingCovariance, RollingIqr, RollingPercentileRank, RollingQuantile, RollingVWAP, RoofingFilter, RunBars, SAMPLEENT, SAREXT, SHANNONENT, SMA, SMI, SMMA, STC, SWMA, SeasonalZScore, SeparatingLines, SessionHighLow, SessionRange, SessionVwap, Shark, SharpeRatio, ShootingStar, ShortLine, SignedVolume, SineWave, SinglePrints, Skewness, SmoothedHeikinAshi, SortinoRatio, SpearmanCorrelation, SpinningTop, SpreadAr1Coefficient, SpreadBollingerBands, SpreadHurst, StalledPattern, StandardError, StandardErrorBands, StarcBands, StdDev, StepTrailingStop, SterlingRatio, StickSandwich, StochRSI, Stochastic, StochasticCCI, SuperSmoother, SuperTrend, T3, TDCamouflage, TDClop, TDClopwin, TDCombo, TDCountdown, TDDWave, TDDeMarker, TDDifferential, TDLines, TDMovingAverage, TDOpen, TDPressure, TDPropulsion, TDREI, TDRangeProjection, TDRiskLevel, TDSequential, TDSetup, TDTrap, TEMA, TII, TRENDFLEX, TREND_STRENGTH_INDEX, TRIMA, TRIX, TSF, TSI, TSV, TTM_TREND, TailRatio, TakerBuySellRatio, Takuri, TasukiGap, TermStructureBasis, ThreeDrives, ThreeInside, ThreeLineBreak, ThreeLineBreakBars, ThreeLineStrike, ThreeOutside, ThreeSoldiersOrCrows, ThreeStarsInSouth, Thrusting, TickBars, TickIndex, TimeBasedStop, TimeOfDayReturnProfile, TowerTopBottom, TpoProfile, TradeImbalance, TradeSignAutocorrelation, TradeVolumeIndex, TrendLabel, TreynorRatio, Triangle, Trin, TripleTopBottom, Tristar, TrueRange, TsfOscillator, TtmSqueeze, TurnOfMonth, Tweezer, TwiggsMoneyFlow, TwoCrows, TypicalPrice, UNIVERSALOSC, UlcerIndex, UltimateOscillator, UniqueThreeRiver, UpDownVolumeRatio, UpsideGapThreeMethods, UpsideGapTwoCrows, UpsidePotentialRatio, VIDYA, VWAP, VWMA, VZO, ValueArea, ValueAtRisk, Variance, VarianceRatio, VerticalHorizontalFilter, VolatilityCone, VolatilityOfVolatility, VolatilityRatio, VoltyStop, VolumeBars, 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
8
+ ADAPTIVECCI, ADAPTIVERSI, ADL, ADOSC, 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, BurkeRatio, Butterfly, CCI, CFO, CMO, CTI, CalendarSpread, CalmarRatio, Camarilla, CandleVolume, CenterOfGravity, CentralPivotRange, ChaikinMoneyFlow, ChaikinOscillator, ChaikinVolatility, ChandeKrollStop, ChandelierExit, ChoppinessIndex, ClassicPivots, CloseVsOpen, ClosingMarubozu, CoefficientOfVariation, Cointegration, CommonSenseRatio, CompositeProfile, 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, DollarBars, Donchian, DonchianStop, DoubleBollinger, DoubleTopBottom, DownsideGapThreeMethods, DragonflyDoji, DrawdownDuration, DumplingTop, DynamicMomentumIndex, EHMA, EMA, EVENBETTERSINE, EVWMA, EaseOfMovement, EffectiveSpread, EhlersStochastic, ElderImpulse, ElderRay, ElderSafeZone, EmpiricalModeDecomposition, Engulfing, Equivolume, EstimatedLeverageRatio, EveningDojiStar, EwmaVolatility, Expectancy, FAMA, FRAMA, FallingThreeMethods, FibArcs, FibChannel, FibConfluence, FibExtension, FibFan, FibProjection, FibRetracement, FibTimeZones, FibonacciPivots, FisherRSI, FisherTransform, FlagPennant, Footprint, ForceIndex, FractalChaosBands, FryPanBottom, FundingBasis, FundingImpliedApr, FundingRate, FundingRateMean, FundingRateZScore, GD, GMA, GainLossRatio, GainToPainRatio, GapSideBySideWhite, Garch11, GarmanKlassVolatility, Gartley, GatorOscillator, GoldenPocket, GrangerCausality, GravestoneDoji, HIGHPASS, HMA, HT_DCPHASE, HT_PHASOR, HT_TRENDMODE, Hammer, HangingMan, Harami, HaramiCross, HasbrouckInformationShare, HeadAndShoulders, HeikinAshi, HeikinAshiOscillator, HiLoActivator, HighLowIndex, HighLowRange, HighLowVolumeNodes, HighWave, Hikkake, HikkakeModified, HilbertDominantCycle, HistoricalVolatility, HoltWinters, HomingPigeon, HurstChannel, HurstExponent, IMI, Ichimoku, IdenticalThreeCrows, ImbalanceBars, InNeck, Inertia, InformationRatio, InitialBalance, InstantaneousTrendline, IntradayIntensity, IntradayVolatilityProfile, InverseFisherTransform, InvertedHammer, JARQUEBERA, JMA, JumpIndicator, KAMA, KRatio, 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, M2Measure, MACD, MACDEXT, MACDFIX, MAMA, MFI, MIDPOINT, MIDPRICE, MINUS_DI, MINUS_DM, MOM, MaEnvelope, MacdHistogram, MarketFacilitationIndex, MartinRatio, Marubozu, MassIndex, MatHold, MatchingLow, MaxDrawdown, McClellanOscillator, McClellanSummationIndex, McGinleyDynamic, MedianAbsoluteDeviation, MedianChannel, MedianMA, MedianPrice, Microprice, ModifiedMaStop, MorningDojiStar, MorningEveningStar, MurreyMathLines, NATR, NVI, NakedPoc, NewHighsNewLows, NewPriceLines, Nrtr, OBV, OIPriceDivergence, OIWeighted, OiToVolumeRatio, OmegaRatio, OnNeck, OpenInterestDelta, OpenInterestMomentum, 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, PerpetualPremiumIndex, PiercingDarkCloud, Pin, PivotReversal, PointAndFigureBars, PpoHistogram, ProfileShape, ProfitFactor, ProjectionBands, ProjectionOscillator, QQE, Qstick, QuartileBands, QuotedSpread, REFLEX, RMI, ROC, ROCP, ROCR, ROCR100, ROLLINGMINMAX, RSI, RSX, RSquared, RVI, RVIVolatility, RWI, RangeBars, RealizedSpread, RealizedVolatility, RecoveryFactor, RectangleRange, RegimeLabel, RelativeStrengthAB, RenkoBars, RenkoTrailingStop, RickshawMan, RisingThreeMethods, RogersSatchellVolatility, RollMeasure, RollingCorrelation, RollingCovariance, RollingIqr, RollingPercentileRank, RollingQuantile, RollingVWAP, RoofingFilter, RunBars, SAMPLEENT, SAREXT, SHANNONENT, SMA, SMI, SMMA, STC, SWMA, SeasonalZScore, SeparatingLines, SessionHighLow, SessionRange, SessionVwap, Shark, SharpeRatio, ShootingStar, ShortLine, SignedVolume, SineWave, SinglePrints, Skewness, SmoothedHeikinAshi, SortinoRatio, SpearmanCorrelation, SpinningTop, SpreadAr1Coefficient, SpreadBollingerBands, SpreadHurst, StalledPattern, StandardError, StandardErrorBands, StarcBands, StdDev, StepTrailingStop, SterlingRatio, StickSandwich, StochRSI, Stochastic, StochasticCCI, SuperSmoother, SuperTrend, T3, TDCamouflage, TDClop, TDClopwin, TDCombo, TDCountdown, TDDWave, TDDeMarker, TDDifferential, TDLines, TDMovingAverage, TDOpen, TDPressure, TDPropulsion, TDREI, TDRangeProjection, TDRiskLevel, TDSequential, TDSetup, TDTrap, TEMA, TII, TRENDFLEX, TREND_STRENGTH_INDEX, TRIMA, TRIX, TSF, TSI, TSV, TTM_TREND, TailRatio, TakerBuySellRatio, Takuri, TasukiGap, TermStructureBasis, ThreeDrives, ThreeInside, ThreeLineBreak, ThreeLineBreakBars, ThreeLineStrike, ThreeOutside, ThreeSoldiersOrCrows, ThreeStarsInSouth, Thrusting, TickBars, TickIndex, TimeBasedStop, TimeOfDayReturnProfile, TowerTopBottom, TpoProfile, TradeImbalance, TradeSignAutocorrelation, TradeVolumeIndex, TrendLabel, TreynorRatio, Triangle, Trin, TripleTopBottom, Tristar, TrueRange, TsfOscillator, TtmSqueeze, TurnOfMonth, Tweezer, TwiggsMoneyFlow, TwoCrows, TypicalPrice, UNIVERSALOSC, UlcerIndex, UltimateOscillator, UniqueThreeRiver, UpDownVolumeRatio, UpsideGapThreeMethods, UpsideGapTwoCrows, UpsidePotentialRatio, VIDYA, VWAP, VWMA, VZO, ValueArea, ValueAtRisk, Variance, VarianceRatio, VerticalHorizontalFilter, VolatilityCone, VolatilityOfVolatility, VolatilityRatio, VoltyStop, VolumeBars, VolumeByTimeProfile, VolumeOscillator, VolumePriceTrend, VolumeProfile, VolumeRsi, VolumeWeightedMacd, VolumeWeightedSr, Vortex, Vpin, VwapStdDevBands, WAVE_PM, WMA, Wad, WaveTrend, Wedge, WeightedClose, WickRatio, 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
@@ -236,6 +236,78 @@ export class ADL {
236
236
  }
237
237
  if (Symbol.dispose) ADL.prototype[Symbol.dispose] = ADL.prototype.free;
238
238
 
239
+ export class ADOSC {
240
+ __destroy_into_raw() {
241
+ const ptr = this.__wbg_ptr;
242
+ this.__wbg_ptr = 0;
243
+ ADOSCFinalization.unregister(this);
244
+ return ptr;
245
+ }
246
+ free() {
247
+ const ptr = this.__destroy_into_raw();
248
+ wasm.__wbg_adosc_free(ptr, 0);
249
+ }
250
+ /**
251
+ * @param {Float64Array} high
252
+ * @param {Float64Array} low
253
+ * @param {Float64Array} close
254
+ * @returns {Float64Array}
255
+ */
256
+ batch(high, low, close) {
257
+ try {
258
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
259
+ const ptr0 = passArrayF64ToWasm0(high, wasm.__wbindgen_export3);
260
+ const len0 = WASM_VECTOR_LEN;
261
+ const ptr1 = passArrayF64ToWasm0(low, wasm.__wbindgen_export3);
262
+ const len1 = WASM_VECTOR_LEN;
263
+ const ptr2 = passArrayF64ToWasm0(close, wasm.__wbindgen_export3);
264
+ const len2 = WASM_VECTOR_LEN;
265
+ wasm.adosc_batch(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);
266
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
267
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
268
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
269
+ if (r2) {
270
+ throw takeObject(r1);
271
+ }
272
+ return takeObject(r0);
273
+ } finally {
274
+ wasm.__wbindgen_add_to_stack_pointer(16);
275
+ }
276
+ }
277
+ constructor() {
278
+ const ret = wasm.adosc_new();
279
+ this.__wbg_ptr = ret;
280
+ ADOSCFinalization.register(this, this.__wbg_ptr, this);
281
+ return this;
282
+ }
283
+ reset() {
284
+ wasm.adosc_reset(this.__wbg_ptr);
285
+ }
286
+ /**
287
+ * @param {number} high
288
+ * @param {number} low
289
+ * @param {number} close
290
+ * @returns {number | undefined}
291
+ */
292
+ update(high, low, close) {
293
+ try {
294
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-32);
295
+ wasm.adosc_update(retptr, this.__wbg_ptr, high, low, close);
296
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
297
+ var r2 = getDataViewMemory0().getFloat64(retptr + 8 * 1, true);
298
+ var r4 = getDataViewMemory0().getInt32(retptr + 4 * 4, true);
299
+ var r5 = getDataViewMemory0().getInt32(retptr + 4 * 5, true);
300
+ if (r5) {
301
+ throw takeObject(r4);
302
+ }
303
+ return r0 === 0 ? undefined : r2;
304
+ } finally {
305
+ wasm.__wbindgen_add_to_stack_pointer(32);
306
+ }
307
+ }
308
+ }
309
+ if (Symbol.dispose) ADOSC.prototype[Symbol.dispose] = ADOSC.prototype.free;
310
+
239
311
  export class ADX {
240
312
  __destroy_into_raw() {
241
313
  const ptr = this.__wbg_ptr;
@@ -41612,78 +41684,6 @@ export class WickRatio {
41612
41684
  }
41613
41685
  if (Symbol.dispose) WickRatio.prototype[Symbol.dispose] = WickRatio.prototype.free;
41614
41686
 
41615
- export class WilliamsAD {
41616
- __destroy_into_raw() {
41617
- const ptr = this.__wbg_ptr;
41618
- this.__wbg_ptr = 0;
41619
- WilliamsADFinalization.unregister(this);
41620
- return ptr;
41621
- }
41622
- free() {
41623
- const ptr = this.__destroy_into_raw();
41624
- wasm.__wbg_williamsad_free(ptr, 0);
41625
- }
41626
- /**
41627
- * @param {Float64Array} high
41628
- * @param {Float64Array} low
41629
- * @param {Float64Array} close
41630
- * @returns {Float64Array}
41631
- */
41632
- batch(high, low, close) {
41633
- try {
41634
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
41635
- const ptr0 = passArrayF64ToWasm0(high, wasm.__wbindgen_export3);
41636
- const len0 = WASM_VECTOR_LEN;
41637
- const ptr1 = passArrayF64ToWasm0(low, wasm.__wbindgen_export3);
41638
- const len1 = WASM_VECTOR_LEN;
41639
- const ptr2 = passArrayF64ToWasm0(close, wasm.__wbindgen_export3);
41640
- const len2 = WASM_VECTOR_LEN;
41641
- wasm.williamsad_batch(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);
41642
- var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
41643
- var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
41644
- var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
41645
- if (r2) {
41646
- throw takeObject(r1);
41647
- }
41648
- return takeObject(r0);
41649
- } finally {
41650
- wasm.__wbindgen_add_to_stack_pointer(16);
41651
- }
41652
- }
41653
- constructor() {
41654
- const ret = wasm.williamsad_new();
41655
- this.__wbg_ptr = ret;
41656
- WilliamsADFinalization.register(this, this.__wbg_ptr, this);
41657
- return this;
41658
- }
41659
- reset() {
41660
- wasm.williamsad_reset(this.__wbg_ptr);
41661
- }
41662
- /**
41663
- * @param {number} high
41664
- * @param {number} low
41665
- * @param {number} close
41666
- * @returns {number | undefined}
41667
- */
41668
- update(high, low, close) {
41669
- try {
41670
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-32);
41671
- wasm.williamsad_update(retptr, this.__wbg_ptr, high, low, close);
41672
- var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
41673
- var r2 = getDataViewMemory0().getFloat64(retptr + 8 * 1, true);
41674
- var r4 = getDataViewMemory0().getInt32(retptr + 4 * 4, true);
41675
- var r5 = getDataViewMemory0().getInt32(retptr + 4 * 5, true);
41676
- if (r5) {
41677
- throw takeObject(r4);
41678
- }
41679
- return r0 === 0 ? undefined : r2;
41680
- } finally {
41681
- wasm.__wbindgen_add_to_stack_pointer(32);
41682
- }
41683
- }
41684
- }
41685
- if (Symbol.dispose) WilliamsAD.prototype[Symbol.dispose] = WilliamsAD.prototype.free;
41686
-
41687
41687
  export class WilliamsFractals {
41688
41688
  __destroy_into_raw() {
41689
41689
  const ptr = this.__wbg_ptr;
@@ -42659,9 +42659,9 @@ const AccelerationBandsFinalization = (typeof FinalizationRegistry === 'undefine
42659
42659
  const AcceleratorOscillatorFinalization = (typeof FinalizationRegistry === 'undefined')
42660
42660
  ? { register: () => {}, unregister: () => {} }
42661
42661
  : new FinalizationRegistry(ptr => wasm.__wbg_acceleratoroscillator_free(ptr, 1));
42662
- const WilliamsADFinalization = (typeof FinalizationRegistry === 'undefined')
42662
+ const ADOSCFinalization = (typeof FinalizationRegistry === 'undefined')
42663
42663
  ? { register: () => {}, unregister: () => {} }
42664
- : new FinalizationRegistry(ptr => wasm.__wbg_williamsad_free(ptr, 1));
42664
+ : new FinalizationRegistry(ptr => wasm.__wbg_adosc_free(ptr, 1));
42665
42665
  const AdVolumeLineFinalization = (typeof FinalizationRegistry === 'undefined')
42666
42666
  ? { register: () => {}, unregister: () => {} }
42667
42667
  : new FinalizationRegistry(ptr => wasm.__wbg_advolumeline_free(ptr, 1));
Binary file