wickra-wasm 0.7.3 → 0.7.5

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=507" 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=514" 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)
@@ -18,8 +18,9 @@
18
18
  **Streaming-first technical indicators. Install with `pip install wickra` — no system dependencies.**
19
19
 
20
20
  Wickra is a multi-language technical-analysis library with a Rust core and
21
- bindings for Python, Node.js, and WebAssembly. Every indicator is a state
22
- machine that updates in O(1) per new data point, so live trading bots and
21
+ native bindings for Python, Node.js and WebAssembly, plus a C ABI that any
22
+ C-capable language (C, C++, and beyond) links against. Every indicator is a
23
+ state machine that updates in O(1) per new data point, so live trading bots and
23
24
  historical backtests share the exact same implementation.
24
25
 
25
26
  ```python
@@ -48,7 +49,7 @@ Full documentation lives at **[docs.wickra.org](https://docs.wickra.org)**:
48
49
  [Node](https://docs.wickra.org/Quickstart-Node),
49
50
  [WASM](https://docs.wickra.org/Quickstart-WASM).
50
51
  - **Indicators** — a per-indicator deep dive (formula, parameters, warmup) for
51
- every one of the 507 indicators; start at the
52
+ every one of the 514 indicators; start at the
52
53
  [indicators overview](https://docs.wickra.org/Indicators-Overview).
53
54
  - **Reference** — [warmup periods](https://docs.wickra.org/Warmup-Periods),
54
55
  [streaming vs batch](https://docs.wickra.org/Streaming-vs-Batch),
@@ -66,18 +67,19 @@ an afterthought — **live, tick-by-tick data** — without giving up the breadt
66
67
  a full batch library, and without making you reimplement your indicators four
67
68
  times to get there.
68
69
 
69
- - **The biggest streaming-native catalogue, period.** 507 indicators across 24
70
+ - **The biggest streaming-native catalogue, period.** 514 indicators across 24
70
71
  families — candlesticks, harmonic & chart patterns, market profile, market
71
72
  breadth, Renko/Kagi/Point&Figure bars, Ehlers DSP cycles, risk/performance
72
73
  metrics — every single one updating in **O(1) per tick**. TA-Lib ships ~150 and
73
74
  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.
75
+ - **One Rust core, five first-class targets.** Native **Python · Node.js ·
76
+ WebAssembly · Rust** plus a **C ABI** for C / C++ and any C-capable language
77
+ identical math, identical results, zero per-language reimplementation and zero
78
+ GIL bottleneck.
77
79
  - **Correct by construction, not by hope.** Every `update` validates its input,
78
80
  runs a real warmup, and returns an `Option` so a single bad tick can't silently
79
81
  poison state. `batch == streaming` is **bit-exact, fuzzed and 100 %-line-covered
80
- for all 507 indicators**.
82
+ for all 514 indicators**.
81
83
  - **Orders of magnitude faster where it counts.** In streaming Wickra is **11–56×**
82
84
  faster than the only other incremental peer and **thousands of times** faster
83
85
  than recompute-on-every-tick libraries. On batch it wins several rows outright
@@ -95,7 +97,7 @@ Every other library forces one of those compromises. Wickra doesn't:
95
97
 
96
98
  | Library | Install | Streaming | Languages | Indicators | Active |
97
99
  |------------------|-------------|-------------|-----------------------------|-----------:|--------|
98
- | **★&nbsp;Wickra**| **clean** | **yes, O(1)** | **Python · Node · WASM · Rust** | **507** | **yes** |
100
+ | **★&nbsp;Wickra**| **clean** | **yes, O(1)** | **Python · Node · WASM · Rust · C** | **514** | **yes** |
99
101
  | kand | clean | yes | Python · WASM · Rust | ~60 | yes |
100
102
  | ta-rs | clean | yes | Rust only | ~30 | stale |
101
103
  | yata | clean | partial | Rust only | ~35 | yes |
@@ -128,7 +130,7 @@ Full tables (Rust + Python, streaming + batch) and how to reproduce them live in
128
130
 
129
131
  ## Indicators
130
132
 
131
- 507 streaming-first indicators across twenty-four families. Every one passes the
133
+ 514 streaming-first indicators across twenty-four families. Every one passes the
132
134
  `batch == streaming` equivalence test, reference-value tests, and reset
133
135
  semantics tests. Each has a per-indicator deep dive (formula, parameters,
134
136
  warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
@@ -148,7 +150,7 @@ warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
148
150
  | 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 |
149
151
  | 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, TD Camouflage, TD Clop, TD Clopwin, TD Propulsion, TD Trap, TD D-Wave, TD Moving Averages |
150
152
  | Ichimoku & Charts | Ichimoku Kinko Hyo (Tenkan, Kijun, Senkou A/B, Chikou), Heikin-Ashi, Heikin-Ashi Oscillator, Three Line Break, Smoothed Heikin-Ashi, Equivolume, CandleVolume |
151
- | Alt-Chart Bars | Renko (box-size bricks), Kagi (reversal-amount lines), Point & Figure (X/O columns) |
153
+ | Alt-Chart Bars | Renko (box-size bricks), Kagi (reversal-amount lines), Point & Figure (X/O columns), Range, Tick, Volume, Dollar, Imbalance, Run, Three-Line Break |
152
154
  | Candlestick Patterns | Doji, Hammer, Inverted Hammer, Hanging Man, Shooting Star, Engulfing, Harami, Morning/Evening Star, Three White Soldiers/Black Crows, Piercing Line/Dark Cloud Cover, Marubozu, Tweezer, Spinning Top, Three Inside Up/Down, Three Outside Up/Down, Two Crows, Upside Gap Two Crows, Identical Three Crows, Three Line Strike, Three Stars in the South, Abandoned Baby, Advance Block, Belt-hold, Breakaway, Counterattack, Doji Star, Dragonfly Doji, Gravestone Doji, Long-Legged Doji, Rickshaw Man, Evening Doji Star, Morning Doji Star, Gap Side-by-Side White, High-Wave, Hikkake, Modified Hikkake, Homing Pigeon, On-Neck, In-Neck, Thrusting, Separating Lines, Kicking, Kicking by Length, Ladder Bottom, Mat Hold, Matching Low, Long Line, Short Line, Rising Three Methods, Falling Three Methods, Upside Gap Three Methods, Downside Gap Three Methods, Stalled Pattern, Stick Sandwich, Takuri, Closing Marubozu, Opening Marubozu, Tasuki Gap, Unique Three River, Concealing Baby Swallow, Tristar, Harami Cross, Tower Top/Bottom, Dumpling Top, New Price Lines, Frying Pan Bottom |
153
155
  | Chart Patterns | Double Top / Bottom, Triple Top / Bottom, Head and Shoulders, Triangle (asc/desc/sym), Wedge (rising/falling), Flag / Pennant, Rectangle / Range, Cup and Handle |
154
156
  | Harmonic Patterns | AB=CD, Gartley, Butterfly, Bat, Crab, Shark, Cypher, Three Drives |
@@ -166,8 +168,8 @@ as one column each. `Doji` is direction-less by default (`+1.0` / `0.0`);
166
168
  construct it in signed mode (`Doji::new().signed()`, `Doji(signed=True)`,
167
169
  `new Doji(true)`) for a dragonfly / gravestone `±1` reading.
168
170
 
169
- Adding a new indicator means implementing one trait in Rust; all four bindings
170
- inherit it automatically.
171
+ Adding a new indicator means implementing one trait in Rust; all five bindings
172
+ inherit it automatically (the C ABI is generated from the core).
171
173
 
172
174
  ## Languages
173
175
 
@@ -177,12 +179,14 @@ inherit it automatically.
177
179
  | Node.js (napi-rs) | `npm install wickra` | `examples/node/backtest.js` |
178
180
  | Browser / WASM | `npm install wickra-wasm` | `examples/wasm/index.html` |
179
181
  | Rust | `cargo add wickra` | `examples/rust/src/bin/backtest.rs` |
182
+ | C / C++ (C ABI) | header + library, see [`bindings/c`](bindings/c) | `examples/c/streaming.c` |
180
183
 
181
184
  Each binding ships several runnable examples (streaming, backtest, live feed);
182
185
  [`examples/README.md`](examples/README.md) is the full cross-language index.
183
186
 
184
- The wickra-core crate is `unsafe`-forbidden, so every binding inherits a
185
- memory-safe implementation.
187
+ The wickra-core crate is `unsafe`-forbidden, so the native bindings are
188
+ memory-safe end to end. The C ABI runs the same safe core; only its thin FFI
189
+ boundary uses `unsafe`, and the caller owns handle lifetimes (`_new` / `_free`).
186
190
 
187
191
  ## Rust API
188
192
 
@@ -237,20 +241,22 @@ A Python live-trading example using the public `websockets` package lives at
237
241
  ```
238
242
  wickra/
239
243
  ├── crates/
240
- │ ├── wickra-core/ core engine + all 507 indicators
244
+ │ ├── wickra-core/ core engine + all 514 indicators
241
245
  │ ├── wickra/ top-level facade crate (publishes on crates.io) + benches/
242
246
  │ ├── wickra-data/ CSV reader, tick aggregator, live exchange feeds
243
247
  │ └── wickra-bench/ internal cross-library benchmark harness (not published)
244
248
  ├── bindings/
245
249
  │ ├── python/ PyO3 + maturin (publishes on PyPI)
246
250
  │ ├── node/ napi-rs (publishes on npm)
247
- └── wasm/ wasm-bindgen (browsers, bundlers, Node)
251
+ ├── wasm/ wasm-bindgen (browsers, bundlers, Node)
252
+ │ └── c/ C ABI (cdylib + staticlib) + generated include/wickra.h
248
253
  ├── examples/ examples/README.md indexes every language
249
254
  │ ├── data/ real BTCUSDT OHLCV datasets, one per timeframe
250
255
  │ ├── rust/ Rust workspace member (`wickra-examples`)
251
256
  │ ├── python/ backtest, live trading, parallel assets, multi-tf
252
257
  │ ├── node/ streaming, backtest, live trading (load `wickra`)
253
- └── wasm/ browser demo for `wickra-wasm`
258
+ ├── wasm/ browser demo for `wickra-wasm`
259
+ │ └── c/ C smoke + streaming, C++ RAII wrapper
254
260
  └── .github/workflows/ CI and release pipelines
255
261
  ```
256
262
 
@@ -278,6 +284,11 @@ wasm-pack build bindings/wasm --target web --release --features panic-hook
278
284
 
279
285
  # Node binding (requires @napi-rs/cli)
280
286
  cd bindings/node && npm install && npm run build && npm test
287
+
288
+ # C ABI (cdylib + staticlib + generated header)
289
+ cargo build -p wickra-c --release
290
+ cmake -S examples/c -B examples/c/build -DWICKRA_LIB_DIR="$PWD/target/release"
291
+ cmake --build examples/c/build && ctest --test-dir examples/c/build --output-on-failure
281
292
  ```
282
293
 
283
294
  ## Testing
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.7.3",
8
+ "version": "0.7.5",
9
9
  "license": "MIT OR Apache-2.0",
10
10
  "repository": {
11
11
  "type": "git",
package/wickra_wasm.d.ts CHANGED
@@ -1159,6 +1159,18 @@ export class DojiStar {
1159
1159
  warmupPeriod(): number;
1160
1160
  }
1161
1161
 
1162
+ export class DollarBars {
1163
+ free(): void;
1164
+ [Symbol.dispose](): void;
1165
+ dollarPerBar(): number;
1166
+ constructor(dollar_per_bar: number);
1167
+ reset(): void;
1168
+ /**
1169
+ * Returns an array of `{ open, high, low, close, volume, dollar }` bars completed on this candle.
1170
+ */
1171
+ update(open: number, high: number, low: number, close: number, volume: number): Array<any>;
1172
+ }
1173
+
1162
1174
  export class Donchian {
1163
1175
  free(): void;
1164
1176
  [Symbol.dispose](): void;
@@ -2206,6 +2218,18 @@ export class IdenticalThreeCrows {
2206
2218
  warmupPeriod(): number;
2207
2219
  }
2208
2220
 
2221
+ export class ImbalanceBars {
2222
+ free(): void;
2223
+ [Symbol.dispose](): void;
2224
+ constructor(threshold: number);
2225
+ reset(): void;
2226
+ threshold(): number;
2227
+ /**
2228
+ * Returns an array of `{ open, high, low, close, imbalance, direction }` bars completed on this candle.
2229
+ */
2230
+ update(open: number, high: number, low: number, close: number): Array<any>;
2231
+ }
2232
+
2209
2233
  export class InNeck {
2210
2234
  free(): void;
2211
2235
  [Symbol.dispose](): void;
@@ -3776,6 +3800,19 @@ export class RWI {
3776
3800
  update(high: number, low: number, close: number): any;
3777
3801
  }
3778
3802
 
3803
+ export class RangeBars {
3804
+ free(): void;
3805
+ [Symbol.dispose](): void;
3806
+ batch(close: Float64Array): Array<any>;
3807
+ constructor(range: number);
3808
+ range(): number;
3809
+ reset(): void;
3810
+ /**
3811
+ * Returns an array of `{ open, close, direction }` bars completed on this close.
3812
+ */
3813
+ update(close: number): Array<any>;
3814
+ }
3815
+
3779
3816
  export class RealizedSpread {
3780
3817
  free(): void;
3781
3818
  [Symbol.dispose](): void;
@@ -3999,6 +4036,18 @@ export class RoofingFilter {
3999
4036
  warmupPeriod(): number;
4000
4037
  }
4001
4038
 
4039
+ export class RunBars {
4040
+ free(): void;
4041
+ [Symbol.dispose](): void;
4042
+ constructor(run_length: number);
4043
+ reset(): void;
4044
+ runLength(): number;
4045
+ /**
4046
+ * Returns an array of `{ open, high, low, close, length, direction }` bars completed on this candle.
4047
+ */
4048
+ update(open: number, high: number, low: number, close: number): Array<any>;
4049
+ }
4050
+
4002
4051
  export class SAMPLEENT {
4003
4052
  free(): void;
4004
4053
  [Symbol.dispose](): void;
@@ -4909,6 +4958,19 @@ export class ThreeLineBreak {
4909
4958
  warmupPeriod(): number;
4910
4959
  }
4911
4960
 
4961
+ export class ThreeLineBreakBars {
4962
+ free(): void;
4963
+ [Symbol.dispose](): void;
4964
+ batch(close: Float64Array): Array<any>;
4965
+ lines(): number;
4966
+ constructor(lines: number);
4967
+ reset(): void;
4968
+ /**
4969
+ * Returns an array of `{ open, close, direction }` bars completed on this close.
4970
+ */
4971
+ update(close: number): Array<any>;
4972
+ }
4973
+
4912
4974
  export class ThreeLineStrike {
4913
4975
  free(): void;
4914
4976
  [Symbol.dispose](): void;
@@ -4964,6 +5026,18 @@ export class Thrusting {
4964
5026
  warmupPeriod(): number;
4965
5027
  }
4966
5028
 
5029
+ export class TickBars {
5030
+ free(): void;
5031
+ [Symbol.dispose](): void;
5032
+ constructor(ticks: number);
5033
+ reset(): void;
5034
+ ticks(): number;
5035
+ /**
5036
+ * Returns an array of `{ open, high, low, close, volume }` bars completed on this candle.
5037
+ */
5038
+ update(open: number, high: number, low: number, close: number, volume: number): Array<any>;
5039
+ }
5040
+
4967
5041
  export class TickIndex {
4968
5042
  free(): void;
4969
5043
  [Symbol.dispose](): void;
@@ -5428,6 +5502,18 @@ export class VoltyStop {
5428
5502
  update(high: number, low: number, close: number): number | undefined;
5429
5503
  }
5430
5504
 
5505
+ export class VolumeBars {
5506
+ free(): void;
5507
+ [Symbol.dispose](): void;
5508
+ constructor(volume_per_bar: number);
5509
+ reset(): void;
5510
+ /**
5511
+ * Returns an array of `{ open, high, low, close, volume }` bars completed on this candle.
5512
+ */
5513
+ update(open: number, high: number, low: number, close: number, volume: number): Array<any>;
5514
+ volumePerBar(): number;
5515
+ }
5516
+
5431
5517
  export class VolumeByTimeProfile {
5432
5518
  free(): void;
5433
5519
  [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, 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, 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, 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, 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, ThreeLineStrike, ThreeOutside, ThreeSoldiersOrCrows, ThreeStarsInSouth, Thrusting, 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, 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, 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
9
9
  } from "./wickra_wasm_bg.js";
package/wickra_wasm_bg.js CHANGED
@@ -8585,6 +8585,74 @@ export class DojiStar {
8585
8585
  }
8586
8586
  if (Symbol.dispose) DojiStar.prototype[Symbol.dispose] = DojiStar.prototype.free;
8587
8587
 
8588
+ export class DollarBars {
8589
+ __destroy_into_raw() {
8590
+ const ptr = this.__wbg_ptr;
8591
+ this.__wbg_ptr = 0;
8592
+ DollarBarsFinalization.unregister(this);
8593
+ return ptr;
8594
+ }
8595
+ free() {
8596
+ const ptr = this.__destroy_into_raw();
8597
+ wasm.__wbg_dollarbars_free(ptr, 0);
8598
+ }
8599
+ /**
8600
+ * @returns {number}
8601
+ */
8602
+ dollarPerBar() {
8603
+ const ret = wasm.dollarbars_dollarPerBar(this.__wbg_ptr);
8604
+ return ret;
8605
+ }
8606
+ /**
8607
+ * @param {number} dollar_per_bar
8608
+ */
8609
+ constructor(dollar_per_bar) {
8610
+ try {
8611
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
8612
+ wasm.dollarbars_new(retptr, dollar_per_bar);
8613
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
8614
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
8615
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
8616
+ if (r2) {
8617
+ throw takeObject(r1);
8618
+ }
8619
+ this.__wbg_ptr = r0;
8620
+ DollarBarsFinalization.register(this, this.__wbg_ptr, this);
8621
+ return this;
8622
+ } finally {
8623
+ wasm.__wbindgen_add_to_stack_pointer(16);
8624
+ }
8625
+ }
8626
+ reset() {
8627
+ wasm.dollarbars_reset(this.__wbg_ptr);
8628
+ }
8629
+ /**
8630
+ * Returns an array of `{ open, high, low, close, volume, dollar }` bars completed on this candle.
8631
+ * @param {number} open
8632
+ * @param {number} high
8633
+ * @param {number} low
8634
+ * @param {number} close
8635
+ * @param {number} volume
8636
+ * @returns {Array<any>}
8637
+ */
8638
+ update(open, high, low, close, volume) {
8639
+ try {
8640
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
8641
+ wasm.dollarbars_update(retptr, this.__wbg_ptr, open, high, low, close, volume);
8642
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
8643
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
8644
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
8645
+ if (r2) {
8646
+ throw takeObject(r1);
8647
+ }
8648
+ return takeObject(r0);
8649
+ } finally {
8650
+ wasm.__wbindgen_add_to_stack_pointer(16);
8651
+ }
8652
+ }
8653
+ }
8654
+ if (Symbol.dispose) DollarBars.prototype[Symbol.dispose] = DollarBars.prototype.free;
8655
+
8588
8656
  export class Donchian {
8589
8657
  __destroy_into_raw() {
8590
8658
  const ptr = this.__wbg_ptr;
@@ -16110,6 +16178,73 @@ export class IdenticalThreeCrows {
16110
16178
  }
16111
16179
  if (Symbol.dispose) IdenticalThreeCrows.prototype[Symbol.dispose] = IdenticalThreeCrows.prototype.free;
16112
16180
 
16181
+ export class ImbalanceBars {
16182
+ __destroy_into_raw() {
16183
+ const ptr = this.__wbg_ptr;
16184
+ this.__wbg_ptr = 0;
16185
+ ImbalanceBarsFinalization.unregister(this);
16186
+ return ptr;
16187
+ }
16188
+ free() {
16189
+ const ptr = this.__destroy_into_raw();
16190
+ wasm.__wbg_imbalancebars_free(ptr, 0);
16191
+ }
16192
+ /**
16193
+ * @param {number} threshold
16194
+ */
16195
+ constructor(threshold) {
16196
+ try {
16197
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
16198
+ wasm.imbalancebars_new(retptr, threshold);
16199
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
16200
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
16201
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
16202
+ if (r2) {
16203
+ throw takeObject(r1);
16204
+ }
16205
+ this.__wbg_ptr = r0;
16206
+ ImbalanceBarsFinalization.register(this, this.__wbg_ptr, this);
16207
+ return this;
16208
+ } finally {
16209
+ wasm.__wbindgen_add_to_stack_pointer(16);
16210
+ }
16211
+ }
16212
+ reset() {
16213
+ wasm.imbalancebars_reset(this.__wbg_ptr);
16214
+ }
16215
+ /**
16216
+ * @returns {number}
16217
+ */
16218
+ threshold() {
16219
+ const ret = wasm.imbalancebars_threshold(this.__wbg_ptr);
16220
+ return ret;
16221
+ }
16222
+ /**
16223
+ * Returns an array of `{ open, high, low, close, imbalance, direction }` bars completed on this candle.
16224
+ * @param {number} open
16225
+ * @param {number} high
16226
+ * @param {number} low
16227
+ * @param {number} close
16228
+ * @returns {Array<any>}
16229
+ */
16230
+ update(open, high, low, close) {
16231
+ try {
16232
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
16233
+ wasm.imbalancebars_update(retptr, this.__wbg_ptr, open, high, low, close);
16234
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
16235
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
16236
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
16237
+ if (r2) {
16238
+ throw takeObject(r1);
16239
+ }
16240
+ return takeObject(r0);
16241
+ } finally {
16242
+ wasm.__wbindgen_add_to_stack_pointer(16);
16243
+ }
16244
+ }
16245
+ }
16246
+ if (Symbol.dispose) ImbalanceBars.prototype[Symbol.dispose] = ImbalanceBars.prototype.free;
16247
+
16113
16248
  export class InNeck {
16114
16249
  __destroy_into_raw() {
16115
16250
  const ptr = this.__wbg_ptr;
@@ -27273,6 +27408,91 @@ export class RWI {
27273
27408
  }
27274
27409
  if (Symbol.dispose) RWI.prototype[Symbol.dispose] = RWI.prototype.free;
27275
27410
 
27411
+ export class RangeBars {
27412
+ __destroy_into_raw() {
27413
+ const ptr = this.__wbg_ptr;
27414
+ this.__wbg_ptr = 0;
27415
+ RangeBarsFinalization.unregister(this);
27416
+ return ptr;
27417
+ }
27418
+ free() {
27419
+ const ptr = this.__destroy_into_raw();
27420
+ wasm.__wbg_rangebars_free(ptr, 0);
27421
+ }
27422
+ /**
27423
+ * @param {Float64Array} close
27424
+ * @returns {Array<any>}
27425
+ */
27426
+ batch(close) {
27427
+ try {
27428
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
27429
+ const ptr0 = passArrayF64ToWasm0(close, wasm.__wbindgen_export3);
27430
+ const len0 = WASM_VECTOR_LEN;
27431
+ wasm.rangebars_batch(retptr, this.__wbg_ptr, ptr0, len0);
27432
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
27433
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
27434
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
27435
+ if (r2) {
27436
+ throw takeObject(r1);
27437
+ }
27438
+ return takeObject(r0);
27439
+ } finally {
27440
+ wasm.__wbindgen_add_to_stack_pointer(16);
27441
+ }
27442
+ }
27443
+ /**
27444
+ * @param {number} range
27445
+ */
27446
+ constructor(range) {
27447
+ try {
27448
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
27449
+ wasm.rangebars_new(retptr, range);
27450
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
27451
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
27452
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
27453
+ if (r2) {
27454
+ throw takeObject(r1);
27455
+ }
27456
+ this.__wbg_ptr = r0;
27457
+ RangeBarsFinalization.register(this, this.__wbg_ptr, this);
27458
+ return this;
27459
+ } finally {
27460
+ wasm.__wbindgen_add_to_stack_pointer(16);
27461
+ }
27462
+ }
27463
+ /**
27464
+ * @returns {number}
27465
+ */
27466
+ range() {
27467
+ const ret = wasm.rangebars_range(this.__wbg_ptr);
27468
+ return ret;
27469
+ }
27470
+ reset() {
27471
+ wasm.rangebars_reset(this.__wbg_ptr);
27472
+ }
27473
+ /**
27474
+ * Returns an array of `{ open, close, direction }` bars completed on this close.
27475
+ * @param {number} close
27476
+ * @returns {Array<any>}
27477
+ */
27478
+ update(close) {
27479
+ try {
27480
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
27481
+ wasm.rangebars_update(retptr, this.__wbg_ptr, close);
27482
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
27483
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
27484
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
27485
+ if (r2) {
27486
+ throw takeObject(r1);
27487
+ }
27488
+ return takeObject(r0);
27489
+ } finally {
27490
+ wasm.__wbindgen_add_to_stack_pointer(16);
27491
+ }
27492
+ }
27493
+ }
27494
+ if (Symbol.dispose) RangeBars.prototype[Symbol.dispose] = RangeBars.prototype.free;
27495
+
27276
27496
  export class RealizedSpread {
27277
27497
  __destroy_into_raw() {
27278
27498
  const ptr = this.__wbg_ptr;
@@ -28848,6 +29068,73 @@ export class RoofingFilter {
28848
29068
  }
28849
29069
  if (Symbol.dispose) RoofingFilter.prototype[Symbol.dispose] = RoofingFilter.prototype.free;
28850
29070
 
29071
+ export class RunBars {
29072
+ __destroy_into_raw() {
29073
+ const ptr = this.__wbg_ptr;
29074
+ this.__wbg_ptr = 0;
29075
+ RunBarsFinalization.unregister(this);
29076
+ return ptr;
29077
+ }
29078
+ free() {
29079
+ const ptr = this.__destroy_into_raw();
29080
+ wasm.__wbg_runbars_free(ptr, 0);
29081
+ }
29082
+ /**
29083
+ * @param {number} run_length
29084
+ */
29085
+ constructor(run_length) {
29086
+ try {
29087
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
29088
+ wasm.runbars_new(retptr, run_length);
29089
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
29090
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
29091
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
29092
+ if (r2) {
29093
+ throw takeObject(r1);
29094
+ }
29095
+ this.__wbg_ptr = r0;
29096
+ RunBarsFinalization.register(this, this.__wbg_ptr, this);
29097
+ return this;
29098
+ } finally {
29099
+ wasm.__wbindgen_add_to_stack_pointer(16);
29100
+ }
29101
+ }
29102
+ reset() {
29103
+ wasm.runbars_reset(this.__wbg_ptr);
29104
+ }
29105
+ /**
29106
+ * @returns {number}
29107
+ */
29108
+ runLength() {
29109
+ const ret = wasm.runbars_runLength(this.__wbg_ptr);
29110
+ return ret >>> 0;
29111
+ }
29112
+ /**
29113
+ * Returns an array of `{ open, high, low, close, length, direction }` bars completed on this candle.
29114
+ * @param {number} open
29115
+ * @param {number} high
29116
+ * @param {number} low
29117
+ * @param {number} close
29118
+ * @returns {Array<any>}
29119
+ */
29120
+ update(open, high, low, close) {
29121
+ try {
29122
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
29123
+ wasm.runbars_update(retptr, this.__wbg_ptr, open, high, low, close);
29124
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
29125
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
29126
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
29127
+ if (r2) {
29128
+ throw takeObject(r1);
29129
+ }
29130
+ return takeObject(r0);
29131
+ } finally {
29132
+ wasm.__wbindgen_add_to_stack_pointer(16);
29133
+ }
29134
+ }
29135
+ }
29136
+ if (Symbol.dispose) RunBars.prototype[Symbol.dispose] = RunBars.prototype.free;
29137
+
28851
29138
  export class SAMPLEENT {
28852
29139
  __destroy_into_raw() {
28853
29140
  const ptr = this.__wbg_ptr;
@@ -35559,6 +35846,91 @@ export class ThreeLineBreak {
35559
35846
  }
35560
35847
  if (Symbol.dispose) ThreeLineBreak.prototype[Symbol.dispose] = ThreeLineBreak.prototype.free;
35561
35848
 
35849
+ export class ThreeLineBreakBars {
35850
+ __destroy_into_raw() {
35851
+ const ptr = this.__wbg_ptr;
35852
+ this.__wbg_ptr = 0;
35853
+ ThreeLineBreakBarsFinalization.unregister(this);
35854
+ return ptr;
35855
+ }
35856
+ free() {
35857
+ const ptr = this.__destroy_into_raw();
35858
+ wasm.__wbg_threelinebreakbars_free(ptr, 0);
35859
+ }
35860
+ /**
35861
+ * @param {Float64Array} close
35862
+ * @returns {Array<any>}
35863
+ */
35864
+ batch(close) {
35865
+ try {
35866
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
35867
+ const ptr0 = passArrayF64ToWasm0(close, wasm.__wbindgen_export3);
35868
+ const len0 = WASM_VECTOR_LEN;
35869
+ wasm.threelinebreakbars_batch(retptr, this.__wbg_ptr, ptr0, len0);
35870
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
35871
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
35872
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
35873
+ if (r2) {
35874
+ throw takeObject(r1);
35875
+ }
35876
+ return takeObject(r0);
35877
+ } finally {
35878
+ wasm.__wbindgen_add_to_stack_pointer(16);
35879
+ }
35880
+ }
35881
+ /**
35882
+ * @returns {number}
35883
+ */
35884
+ lines() {
35885
+ const ret = wasm.threelinebreakbars_lines(this.__wbg_ptr);
35886
+ return ret >>> 0;
35887
+ }
35888
+ /**
35889
+ * @param {number} lines
35890
+ */
35891
+ constructor(lines) {
35892
+ try {
35893
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
35894
+ wasm.threelinebreakbars_new(retptr, lines);
35895
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
35896
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
35897
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
35898
+ if (r2) {
35899
+ throw takeObject(r1);
35900
+ }
35901
+ this.__wbg_ptr = r0;
35902
+ ThreeLineBreakBarsFinalization.register(this, this.__wbg_ptr, this);
35903
+ return this;
35904
+ } finally {
35905
+ wasm.__wbindgen_add_to_stack_pointer(16);
35906
+ }
35907
+ }
35908
+ reset() {
35909
+ wasm.threelinebreakbars_reset(this.__wbg_ptr);
35910
+ }
35911
+ /**
35912
+ * Returns an array of `{ open, close, direction }` bars completed on this close.
35913
+ * @param {number} close
35914
+ * @returns {Array<any>}
35915
+ */
35916
+ update(close) {
35917
+ try {
35918
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
35919
+ wasm.threelinebreakbars_update(retptr, this.__wbg_ptr, close);
35920
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
35921
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
35922
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
35923
+ if (r2) {
35924
+ throw takeObject(r1);
35925
+ }
35926
+ return takeObject(r0);
35927
+ } finally {
35928
+ wasm.__wbindgen_add_to_stack_pointer(16);
35929
+ }
35930
+ }
35931
+ }
35932
+ if (Symbol.dispose) ThreeLineBreakBars.prototype[Symbol.dispose] = ThreeLineBreakBars.prototype.free;
35933
+
35562
35934
  export class ThreeLineStrike {
35563
35935
  __destroy_into_raw() {
35564
35936
  const ptr = this.__wbg_ptr;
@@ -36009,6 +36381,74 @@ export class Thrusting {
36009
36381
  }
36010
36382
  if (Symbol.dispose) Thrusting.prototype[Symbol.dispose] = Thrusting.prototype.free;
36011
36383
 
36384
+ export class TickBars {
36385
+ __destroy_into_raw() {
36386
+ const ptr = this.__wbg_ptr;
36387
+ this.__wbg_ptr = 0;
36388
+ TickBarsFinalization.unregister(this);
36389
+ return ptr;
36390
+ }
36391
+ free() {
36392
+ const ptr = this.__destroy_into_raw();
36393
+ wasm.__wbg_tickbars_free(ptr, 0);
36394
+ }
36395
+ /**
36396
+ * @param {number} ticks
36397
+ */
36398
+ constructor(ticks) {
36399
+ try {
36400
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
36401
+ wasm.tickbars_new(retptr, ticks);
36402
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
36403
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
36404
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
36405
+ if (r2) {
36406
+ throw takeObject(r1);
36407
+ }
36408
+ this.__wbg_ptr = r0;
36409
+ TickBarsFinalization.register(this, this.__wbg_ptr, this);
36410
+ return this;
36411
+ } finally {
36412
+ wasm.__wbindgen_add_to_stack_pointer(16);
36413
+ }
36414
+ }
36415
+ reset() {
36416
+ wasm.tickbars_reset(this.__wbg_ptr);
36417
+ }
36418
+ /**
36419
+ * @returns {number}
36420
+ */
36421
+ ticks() {
36422
+ const ret = wasm.tickbars_ticks(this.__wbg_ptr);
36423
+ return ret >>> 0;
36424
+ }
36425
+ /**
36426
+ * Returns an array of `{ open, high, low, close, volume }` bars completed on this candle.
36427
+ * @param {number} open
36428
+ * @param {number} high
36429
+ * @param {number} low
36430
+ * @param {number} close
36431
+ * @param {number} volume
36432
+ * @returns {Array<any>}
36433
+ */
36434
+ update(open, high, low, close, volume) {
36435
+ try {
36436
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
36437
+ wasm.tickbars_update(retptr, this.__wbg_ptr, open, high, low, close, volume);
36438
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
36439
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
36440
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
36441
+ if (r2) {
36442
+ throw takeObject(r1);
36443
+ }
36444
+ return takeObject(r0);
36445
+ } finally {
36446
+ wasm.__wbindgen_add_to_stack_pointer(16);
36447
+ }
36448
+ }
36449
+ }
36450
+ if (Symbol.dispose) TickBars.prototype[Symbol.dispose] = TickBars.prototype.free;
36451
+
36012
36452
  export class TickIndex {
36013
36453
  __destroy_into_raw() {
36014
36454
  const ptr = this.__wbg_ptr;
@@ -39626,6 +40066,74 @@ export class VoltyStop {
39626
40066
  }
39627
40067
  if (Symbol.dispose) VoltyStop.prototype[Symbol.dispose] = VoltyStop.prototype.free;
39628
40068
 
40069
+ export class VolumeBars {
40070
+ __destroy_into_raw() {
40071
+ const ptr = this.__wbg_ptr;
40072
+ this.__wbg_ptr = 0;
40073
+ VolumeBarsFinalization.unregister(this);
40074
+ return ptr;
40075
+ }
40076
+ free() {
40077
+ const ptr = this.__destroy_into_raw();
40078
+ wasm.__wbg_volumebars_free(ptr, 0);
40079
+ }
40080
+ /**
40081
+ * @param {number} volume_per_bar
40082
+ */
40083
+ constructor(volume_per_bar) {
40084
+ try {
40085
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
40086
+ wasm.volumebars_new(retptr, volume_per_bar);
40087
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
40088
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
40089
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
40090
+ if (r2) {
40091
+ throw takeObject(r1);
40092
+ }
40093
+ this.__wbg_ptr = r0;
40094
+ VolumeBarsFinalization.register(this, this.__wbg_ptr, this);
40095
+ return this;
40096
+ } finally {
40097
+ wasm.__wbindgen_add_to_stack_pointer(16);
40098
+ }
40099
+ }
40100
+ reset() {
40101
+ wasm.volumebars_reset(this.__wbg_ptr);
40102
+ }
40103
+ /**
40104
+ * Returns an array of `{ open, high, low, close, volume }` bars completed on this candle.
40105
+ * @param {number} open
40106
+ * @param {number} high
40107
+ * @param {number} low
40108
+ * @param {number} close
40109
+ * @param {number} volume
40110
+ * @returns {Array<any>}
40111
+ */
40112
+ update(open, high, low, close, volume) {
40113
+ try {
40114
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
40115
+ wasm.volumebars_update(retptr, this.__wbg_ptr, open, high, low, close, volume);
40116
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
40117
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
40118
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
40119
+ if (r2) {
40120
+ throw takeObject(r1);
40121
+ }
40122
+ return takeObject(r0);
40123
+ } finally {
40124
+ wasm.__wbindgen_add_to_stack_pointer(16);
40125
+ }
40126
+ }
40127
+ /**
40128
+ * @returns {number}
40129
+ */
40130
+ volumePerBar() {
40131
+ const ret = wasm.volumebars_volumePerBar(this.__wbg_ptr);
40132
+ return ret;
40133
+ }
40134
+ }
40135
+ if (Symbol.dispose) VolumeBars.prototype[Symbol.dispose] = VolumeBars.prototype.free;
40136
+
39629
40137
  export class VolumeByTimeProfile {
39630
40138
  __destroy_into_raw() {
39631
40139
  const ptr = this.__wbg_ptr;
@@ -42445,6 +42953,9 @@ const DojiFinalization = (typeof FinalizationRegistry === 'undefined')
42445
42953
  const DojiStarFinalization = (typeof FinalizationRegistry === 'undefined')
42446
42954
  ? { register: () => {}, unregister: () => {} }
42447
42955
  : new FinalizationRegistry(ptr => wasm.__wbg_dojistar_free(ptr, 1));
42956
+ const DollarBarsFinalization = (typeof FinalizationRegistry === 'undefined')
42957
+ ? { register: () => {}, unregister: () => {} }
42958
+ : new FinalizationRegistry(ptr => wasm.__wbg_dollarbars_free(ptr, 1));
42448
42959
  const DonchianFinalization = (typeof FinalizationRegistry === 'undefined')
42449
42960
  ? { register: () => {}, unregister: () => {} }
42450
42961
  : new FinalizationRegistry(ptr => wasm.__wbg_donchian_free(ptr, 1));
@@ -42721,6 +43232,9 @@ const IchimokuFinalization = (typeof FinalizationRegistry === 'undefined')
42721
43232
  const IdenticalThreeCrowsFinalization = (typeof FinalizationRegistry === 'undefined')
42722
43233
  ? { register: () => {}, unregister: () => {} }
42723
43234
  : new FinalizationRegistry(ptr => wasm.__wbg_identicalthreecrows_free(ptr, 1));
43235
+ const ImbalanceBarsFinalization = (typeof FinalizationRegistry === 'undefined')
43236
+ ? { register: () => {}, unregister: () => {} }
43237
+ : new FinalizationRegistry(ptr => wasm.__wbg_imbalancebars_free(ptr, 1));
42724
43238
  const IMIFinalization = (typeof FinalizationRegistry === 'undefined')
42725
43239
  ? { register: () => {}, unregister: () => {} }
42726
43240
  : new FinalizationRegistry(ptr => wasm.__wbg_imi_free(ptr, 1));
@@ -43102,6 +43616,9 @@ const QuotedSpreadFinalization = (typeof FinalizationRegistry === 'undefined')
43102
43616
  const RSquaredFinalization = (typeof FinalizationRegistry === 'undefined')
43103
43617
  ? { register: () => {}, unregister: () => {} }
43104
43618
  : new FinalizationRegistry(ptr => wasm.__wbg_rsquared_free(ptr, 1));
43619
+ const RangeBarsFinalization = (typeof FinalizationRegistry === 'undefined')
43620
+ ? { register: () => {}, unregister: () => {} }
43621
+ : new FinalizationRegistry(ptr => wasm.__wbg_rangebars_free(ptr, 1));
43105
43622
  const RealizedSpreadFinalization = (typeof FinalizationRegistry === 'undefined')
43106
43623
  ? { register: () => {}, unregister: () => {} }
43107
43624
  : new FinalizationRegistry(ptr => wasm.__wbg_realizedspread_free(ptr, 1));
@@ -43186,6 +43703,9 @@ const RSIFinalization = (typeof FinalizationRegistry === 'undefined')
43186
43703
  const RSXFinalization = (typeof FinalizationRegistry === 'undefined')
43187
43704
  ? { register: () => {}, unregister: () => {} }
43188
43705
  : new FinalizationRegistry(ptr => wasm.__wbg_rsx_free(ptr, 1));
43706
+ const RunBarsFinalization = (typeof FinalizationRegistry === 'undefined')
43707
+ ? { register: () => {}, unregister: () => {} }
43708
+ : new FinalizationRegistry(ptr => wasm.__wbg_runbars_free(ptr, 1));
43189
43709
  const RVIFinalization = (typeof FinalizationRegistry === 'undefined')
43190
43710
  ? { register: () => {}, unregister: () => {} }
43191
43711
  : new FinalizationRegistry(ptr => wasm.__wbg_rvi_free(ptr, 1));
@@ -43405,6 +43925,9 @@ const ThreeInsideFinalization = (typeof FinalizationRegistry === 'undefined')
43405
43925
  const ThreeLineBreakFinalization = (typeof FinalizationRegistry === 'undefined')
43406
43926
  ? { register: () => {}, unregister: () => {} }
43407
43927
  : new FinalizationRegistry(ptr => wasm.__wbg_threelinebreak_free(ptr, 1));
43928
+ const ThreeLineBreakBarsFinalization = (typeof FinalizationRegistry === 'undefined')
43929
+ ? { register: () => {}, unregister: () => {} }
43930
+ : new FinalizationRegistry(ptr => wasm.__wbg_threelinebreakbars_free(ptr, 1));
43408
43931
  const ThreeLineStrikeFinalization = (typeof FinalizationRegistry === 'undefined')
43409
43932
  ? { register: () => {}, unregister: () => {} }
43410
43933
  : new FinalizationRegistry(ptr => wasm.__wbg_threelinestrike_free(ptr, 1));
@@ -43420,6 +43943,9 @@ const ThreeStarsInSouthFinalization = (typeof FinalizationRegistry === 'undefine
43420
43943
  const ThrustingFinalization = (typeof FinalizationRegistry === 'undefined')
43421
43944
  ? { register: () => {}, unregister: () => {} }
43422
43945
  : new FinalizationRegistry(ptr => wasm.__wbg_thrusting_free(ptr, 1));
43946
+ const TickBarsFinalization = (typeof FinalizationRegistry === 'undefined')
43947
+ ? { register: () => {}, unregister: () => {} }
43948
+ : new FinalizationRegistry(ptr => wasm.__wbg_tickbars_free(ptr, 1));
43423
43949
  const TickIndexFinalization = (typeof FinalizationRegistry === 'undefined')
43424
43950
  ? { register: () => {}, unregister: () => {} }
43425
43951
  : new FinalizationRegistry(ptr => wasm.__wbg_tickindex_free(ptr, 1));
@@ -43567,6 +44093,9 @@ const VolatilityRatioFinalization = (typeof FinalizationRegistry === 'undefined'
43567
44093
  const VoltyStopFinalization = (typeof FinalizationRegistry === 'undefined')
43568
44094
  ? { register: () => {}, unregister: () => {} }
43569
44095
  : new FinalizationRegistry(ptr => wasm.__wbg_voltystop_free(ptr, 1));
44096
+ const VolumeBarsFinalization = (typeof FinalizationRegistry === 'undefined')
44097
+ ? { register: () => {}, unregister: () => {} }
44098
+ : new FinalizationRegistry(ptr => wasm.__wbg_volumebars_free(ptr, 1));
43570
44099
  const VolumeByTimeProfileFinalization = (typeof FinalizationRegistry === 'undefined')
43571
44100
  ? { register: () => {}, unregister: () => {} }
43572
44101
  : new FinalizationRegistry(ptr => wasm.__wbg_volumebytimeprofile_free(ptr, 1));
Binary file