wickra 0.4.3 → 0.4.4

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=232" 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=289" 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)
@@ -47,7 +47,7 @@ Full documentation lives at **[docs.wickra.org](https://docs.wickra.org)**:
47
47
  [Node](https://docs.wickra.org/Quickstart-Node),
48
48
  [WASM](https://docs.wickra.org/Quickstart-WASM).
49
49
  - **Indicators** — a per-indicator deep dive (formula, parameters, warmup) for
50
- every one of the 232 indicators; start at the
50
+ every one of the 289 indicators; start at the
51
51
  [indicators overview](https://docs.wickra.org/Indicators-Overview).
52
52
  - **Reference** — [warmup periods](https://docs.wickra.org/Warmup-Periods),
53
53
  [streaming vs batch](https://docs.wickra.org/Streaming-vs-Batch),
@@ -135,7 +135,7 @@ python -m benchmarks.compare_libraries
135
135
 
136
136
  ## Indicators
137
137
 
138
- 232 streaming-first indicators across seventeen families. Every one passes the
138
+ 289 streaming-first indicators across eighteen families. Every one passes the
139
139
  `batch == streaming` equivalence test, reference-value tests, and reset
140
140
  semantics tests. Each has a per-indicator deep dive (formula, parameters,
141
141
  warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
@@ -155,8 +155,9 @@ warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
155
155
  | Pivots & S/R | Classic Pivots, Fibonacci Pivots, Camarilla, Woodie Pivots, DeMark Pivots, Williams Fractals, ZigZag |
156
156
  | 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 |
157
157
  | Ichimoku & Charts | Ichimoku Kinko Hyo (Tenkan, Kijun, Senkou A/B, Chikou), Heikin-Ashi |
158
- | 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 |
158
+ | 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 |
159
159
  | Microstructure | Order-Book Imbalance (Top-1 / Top-N / Full), Microprice, Quoted Spread, Depth Slope, Signed Volume, Cumulative Volume Delta, Trade Imbalance, Effective Spread, Realized Spread, Kyle's Lambda, Footprint |
160
+ | Derivatives | Funding Rate, Funding Rate Mean, Funding Rate Z-Score, Funding Basis, Open-Interest Delta, OI / Price Divergence, OI-Weighted Price, Long/Short Ratio, Taker Buy/Sell Ratio, Liquidation Features, Term-Structure Basis, Calendar Spread |
160
161
  | Market Profile | Value Area (POC / VAH / VAL), Initial Balance, Opening Range |
161
162
  | Risk / Performance | Sharpe Ratio, Sortino Ratio, Calmar Ratio, Omega Ratio, Max Drawdown, Average Drawdown, Drawdown Duration, Pain Index, Value at Risk, Conditional Value at Risk (CVaR), Profit Factor, Gain/Loss Ratio, Recovery Factor, Kelly Criterion, Treynor Ratio, Information Ratio, Alpha (Jensen) |
162
163
 
@@ -237,7 +238,7 @@ A Python live-trading example using the public `websockets` package lives at
237
238
  ```
238
239
  wickra/
239
240
  ├── crates/
240
- │ ├── wickra-core/ core engine + all 232 indicators
241
+ │ ├── wickra-core/ core engine + all 289 indicators
241
242
  │ ├── wickra/ top-level facade crate (publishes on crates.io) + benches/
242
243
  │ └── wickra-data/ CSV reader, tick aggregator, live exchange feeds
243
244
  ├── bindings/
package/index.d.ts CHANGED
@@ -292,6 +292,14 @@ export interface FootprintLevelValue {
292
292
  bidVol: number
293
293
  askVol: number
294
294
  }
295
+ /** The liquidation feature vector for one tick. */
296
+ export interface LiquidationFeaturesValue {
297
+ long: number
298
+ short: number
299
+ net: number
300
+ total: number
301
+ imbalance: number
302
+ }
295
303
  export type SmaNode = SMA
296
304
  export declare class SMA {
297
305
  constructor(period: number)
@@ -2202,6 +2210,411 @@ export declare class ThreeOutside {
2202
2210
  isReady(): boolean
2203
2211
  warmupPeriod(): number
2204
2212
  }
2213
+ export type TwoCrowsNode = TwoCrows
2214
+ export declare class TwoCrows {
2215
+ constructor()
2216
+ update(open: number, high: number, low: number, close: number): number | null
2217
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2218
+ reset(): void
2219
+ isReady(): boolean
2220
+ warmupPeriod(): number
2221
+ }
2222
+ export type UpsideGapTwoCrowsNode = UpsideGapTwoCrows
2223
+ export declare class UpsideGapTwoCrows {
2224
+ constructor()
2225
+ update(open: number, high: number, low: number, close: number): number | null
2226
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2227
+ reset(): void
2228
+ isReady(): boolean
2229
+ warmupPeriod(): number
2230
+ }
2231
+ export type IdenticalThreeCrowsNode = IdenticalThreeCrows
2232
+ export declare class IdenticalThreeCrows {
2233
+ constructor()
2234
+ update(open: number, high: number, low: number, close: number): number | null
2235
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2236
+ reset(): void
2237
+ isReady(): boolean
2238
+ warmupPeriod(): number
2239
+ }
2240
+ export type ThreeLineStrikeNode = ThreeLineStrike
2241
+ export declare class ThreeLineStrike {
2242
+ constructor()
2243
+ update(open: number, high: number, low: number, close: number): number | null
2244
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2245
+ reset(): void
2246
+ isReady(): boolean
2247
+ warmupPeriod(): number
2248
+ }
2249
+ export type ThreeStarsInSouthNode = ThreeStarsInSouth
2250
+ export declare class ThreeStarsInSouth {
2251
+ constructor()
2252
+ update(open: number, high: number, low: number, close: number): number | null
2253
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2254
+ reset(): void
2255
+ isReady(): boolean
2256
+ warmupPeriod(): number
2257
+ }
2258
+ export type AbandonedBabyNode = AbandonedBaby
2259
+ export declare class AbandonedBaby {
2260
+ constructor()
2261
+ update(open: number, high: number, low: number, close: number): number | null
2262
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2263
+ reset(): void
2264
+ isReady(): boolean
2265
+ warmupPeriod(): number
2266
+ }
2267
+ export type AdvanceBlockNode = AdvanceBlock
2268
+ export declare class AdvanceBlock {
2269
+ constructor()
2270
+ update(open: number, high: number, low: number, close: number): number | null
2271
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2272
+ reset(): void
2273
+ isReady(): boolean
2274
+ warmupPeriod(): number
2275
+ }
2276
+ export type BeltHoldNode = BeltHold
2277
+ export declare class BeltHold {
2278
+ constructor()
2279
+ update(open: number, high: number, low: number, close: number): number | null
2280
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2281
+ reset(): void
2282
+ isReady(): boolean
2283
+ warmupPeriod(): number
2284
+ }
2285
+ export type BreakawayNode = Breakaway
2286
+ export declare class Breakaway {
2287
+ constructor()
2288
+ update(open: number, high: number, low: number, close: number): number | null
2289
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2290
+ reset(): void
2291
+ isReady(): boolean
2292
+ warmupPeriod(): number
2293
+ }
2294
+ export type CounterattackNode = Counterattack
2295
+ export declare class Counterattack {
2296
+ constructor()
2297
+ update(open: number, high: number, low: number, close: number): number | null
2298
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2299
+ reset(): void
2300
+ isReady(): boolean
2301
+ warmupPeriod(): number
2302
+ }
2303
+ export type DojiStarNode = DojiStar
2304
+ export declare class DojiStar {
2305
+ constructor()
2306
+ update(open: number, high: number, low: number, close: number): number | null
2307
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2308
+ reset(): void
2309
+ isReady(): boolean
2310
+ warmupPeriod(): number
2311
+ }
2312
+ export type DragonflyDojiNode = DragonflyDoji
2313
+ export declare class DragonflyDoji {
2314
+ constructor()
2315
+ update(open: number, high: number, low: number, close: number): number | null
2316
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2317
+ reset(): void
2318
+ isReady(): boolean
2319
+ warmupPeriod(): number
2320
+ }
2321
+ export type GravestoneDojiNode = GravestoneDoji
2322
+ export declare class GravestoneDoji {
2323
+ constructor()
2324
+ update(open: number, high: number, low: number, close: number): number | null
2325
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2326
+ reset(): void
2327
+ isReady(): boolean
2328
+ warmupPeriod(): number
2329
+ }
2330
+ export type LongLeggedDojiNode = LongLeggedDoji
2331
+ export declare class LongLeggedDoji {
2332
+ constructor()
2333
+ update(open: number, high: number, low: number, close: number): number | null
2334
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2335
+ reset(): void
2336
+ isReady(): boolean
2337
+ warmupPeriod(): number
2338
+ }
2339
+ export type RickshawManNode = RickshawMan
2340
+ export declare class RickshawMan {
2341
+ constructor()
2342
+ update(open: number, high: number, low: number, close: number): number | null
2343
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2344
+ reset(): void
2345
+ isReady(): boolean
2346
+ warmupPeriod(): number
2347
+ }
2348
+ export type EveningDojiStarNode = EveningDojiStar
2349
+ export declare class EveningDojiStar {
2350
+ constructor()
2351
+ update(open: number, high: number, low: number, close: number): number | null
2352
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2353
+ reset(): void
2354
+ isReady(): boolean
2355
+ warmupPeriod(): number
2356
+ }
2357
+ export type MorningDojiStarNode = MorningDojiStar
2358
+ export declare class MorningDojiStar {
2359
+ constructor()
2360
+ update(open: number, high: number, low: number, close: number): number | null
2361
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2362
+ reset(): void
2363
+ isReady(): boolean
2364
+ warmupPeriod(): number
2365
+ }
2366
+ export type GapSideBySideWhiteNode = GapSideBySideWhite
2367
+ export declare class GapSideBySideWhite {
2368
+ constructor()
2369
+ update(open: number, high: number, low: number, close: number): number | null
2370
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2371
+ reset(): void
2372
+ isReady(): boolean
2373
+ warmupPeriod(): number
2374
+ }
2375
+ export type HighWaveNode = HighWave
2376
+ export declare class HighWave {
2377
+ constructor()
2378
+ update(open: number, high: number, low: number, close: number): number | null
2379
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2380
+ reset(): void
2381
+ isReady(): boolean
2382
+ warmupPeriod(): number
2383
+ }
2384
+ export type HikkakeNode = Hikkake
2385
+ export declare class Hikkake {
2386
+ constructor()
2387
+ update(open: number, high: number, low: number, close: number): number | null
2388
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2389
+ reset(): void
2390
+ isReady(): boolean
2391
+ warmupPeriod(): number
2392
+ }
2393
+ export type HikkakeModifiedNode = HikkakeModified
2394
+ export declare class HikkakeModified {
2395
+ constructor()
2396
+ update(open: number, high: number, low: number, close: number): number | null
2397
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2398
+ reset(): void
2399
+ isReady(): boolean
2400
+ warmupPeriod(): number
2401
+ }
2402
+ export type HomingPigeonNode = HomingPigeon
2403
+ export declare class HomingPigeon {
2404
+ constructor()
2405
+ update(open: number, high: number, low: number, close: number): number | null
2406
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2407
+ reset(): void
2408
+ isReady(): boolean
2409
+ warmupPeriod(): number
2410
+ }
2411
+ export type OnNeckNode = OnNeck
2412
+ export declare class OnNeck {
2413
+ constructor()
2414
+ update(open: number, high: number, low: number, close: number): number | null
2415
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2416
+ reset(): void
2417
+ isReady(): boolean
2418
+ warmupPeriod(): number
2419
+ }
2420
+ export type InNeckNode = InNeck
2421
+ export declare class InNeck {
2422
+ constructor()
2423
+ update(open: number, high: number, low: number, close: number): number | null
2424
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2425
+ reset(): void
2426
+ isReady(): boolean
2427
+ warmupPeriod(): number
2428
+ }
2429
+ export type ThrustingNode = Thrusting
2430
+ export declare class Thrusting {
2431
+ constructor()
2432
+ update(open: number, high: number, low: number, close: number): number | null
2433
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2434
+ reset(): void
2435
+ isReady(): boolean
2436
+ warmupPeriod(): number
2437
+ }
2438
+ export type SeparatingLinesNode = SeparatingLines
2439
+ export declare class SeparatingLines {
2440
+ constructor()
2441
+ update(open: number, high: number, low: number, close: number): number | null
2442
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2443
+ reset(): void
2444
+ isReady(): boolean
2445
+ warmupPeriod(): number
2446
+ }
2447
+ export type KickingNode = Kicking
2448
+ export declare class Kicking {
2449
+ constructor()
2450
+ update(open: number, high: number, low: number, close: number): number | null
2451
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2452
+ reset(): void
2453
+ isReady(): boolean
2454
+ warmupPeriod(): number
2455
+ }
2456
+ export type KickingByLengthNode = KickingByLength
2457
+ export declare class KickingByLength {
2458
+ constructor()
2459
+ update(open: number, high: number, low: number, close: number): number | null
2460
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2461
+ reset(): void
2462
+ isReady(): boolean
2463
+ warmupPeriod(): number
2464
+ }
2465
+ export type LadderBottomNode = LadderBottom
2466
+ export declare class LadderBottom {
2467
+ constructor()
2468
+ update(open: number, high: number, low: number, close: number): number | null
2469
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2470
+ reset(): void
2471
+ isReady(): boolean
2472
+ warmupPeriod(): number
2473
+ }
2474
+ export type MatHoldNode = MatHold
2475
+ export declare class MatHold {
2476
+ constructor()
2477
+ update(open: number, high: number, low: number, close: number): number | null
2478
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2479
+ reset(): void
2480
+ isReady(): boolean
2481
+ warmupPeriod(): number
2482
+ }
2483
+ export type MatchingLowNode = MatchingLow
2484
+ export declare class MatchingLow {
2485
+ constructor()
2486
+ update(open: number, high: number, low: number, close: number): number | null
2487
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2488
+ reset(): void
2489
+ isReady(): boolean
2490
+ warmupPeriod(): number
2491
+ }
2492
+ export type LongLineNode = LongLine
2493
+ export declare class LongLine {
2494
+ constructor()
2495
+ update(open: number, high: number, low: number, close: number): number | null
2496
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2497
+ reset(): void
2498
+ isReady(): boolean
2499
+ warmupPeriod(): number
2500
+ }
2501
+ export type ShortLineNode = ShortLine
2502
+ export declare class ShortLine {
2503
+ constructor()
2504
+ update(open: number, high: number, low: number, close: number): number | null
2505
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2506
+ reset(): void
2507
+ isReady(): boolean
2508
+ warmupPeriod(): number
2509
+ }
2510
+ export type RisingThreeMethodsNode = RisingThreeMethods
2511
+ export declare class RisingThreeMethods {
2512
+ constructor()
2513
+ update(open: number, high: number, low: number, close: number): number | null
2514
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2515
+ reset(): void
2516
+ isReady(): boolean
2517
+ warmupPeriod(): number
2518
+ }
2519
+ export type FallingThreeMethodsNode = FallingThreeMethods
2520
+ export declare class FallingThreeMethods {
2521
+ constructor()
2522
+ update(open: number, high: number, low: number, close: number): number | null
2523
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2524
+ reset(): void
2525
+ isReady(): boolean
2526
+ warmupPeriod(): number
2527
+ }
2528
+ export type UpsideGapThreeMethodsNode = UpsideGapThreeMethods
2529
+ export declare class UpsideGapThreeMethods {
2530
+ constructor()
2531
+ update(open: number, high: number, low: number, close: number): number | null
2532
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2533
+ reset(): void
2534
+ isReady(): boolean
2535
+ warmupPeriod(): number
2536
+ }
2537
+ export type DownsideGapThreeMethodsNode = DownsideGapThreeMethods
2538
+ export declare class DownsideGapThreeMethods {
2539
+ constructor()
2540
+ update(open: number, high: number, low: number, close: number): number | null
2541
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2542
+ reset(): void
2543
+ isReady(): boolean
2544
+ warmupPeriod(): number
2545
+ }
2546
+ export type StalledPatternNode = StalledPattern
2547
+ export declare class StalledPattern {
2548
+ constructor()
2549
+ update(open: number, high: number, low: number, close: number): number | null
2550
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2551
+ reset(): void
2552
+ isReady(): boolean
2553
+ warmupPeriod(): number
2554
+ }
2555
+ export type StickSandwichNode = StickSandwich
2556
+ export declare class StickSandwich {
2557
+ constructor()
2558
+ update(open: number, high: number, low: number, close: number): number | null
2559
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2560
+ reset(): void
2561
+ isReady(): boolean
2562
+ warmupPeriod(): number
2563
+ }
2564
+ export type TakuriNode = Takuri
2565
+ export declare class Takuri {
2566
+ constructor()
2567
+ update(open: number, high: number, low: number, close: number): number | null
2568
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2569
+ reset(): void
2570
+ isReady(): boolean
2571
+ warmupPeriod(): number
2572
+ }
2573
+ export type ClosingMarubozuNode = ClosingMarubozu
2574
+ export declare class ClosingMarubozu {
2575
+ constructor()
2576
+ update(open: number, high: number, low: number, close: number): number | null
2577
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2578
+ reset(): void
2579
+ isReady(): boolean
2580
+ warmupPeriod(): number
2581
+ }
2582
+ export type OpeningMarubozuNode = OpeningMarubozu
2583
+ export declare class OpeningMarubozu {
2584
+ constructor()
2585
+ update(open: number, high: number, low: number, close: number): number | null
2586
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2587
+ reset(): void
2588
+ isReady(): boolean
2589
+ warmupPeriod(): number
2590
+ }
2591
+ export type TasukiGapNode = TasukiGap
2592
+ export declare class TasukiGap {
2593
+ constructor()
2594
+ update(open: number, high: number, low: number, close: number): number | null
2595
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2596
+ reset(): void
2597
+ isReady(): boolean
2598
+ warmupPeriod(): number
2599
+ }
2600
+ export type UniqueThreeRiverNode = UniqueThreeRiver
2601
+ export declare class UniqueThreeRiver {
2602
+ constructor()
2603
+ update(open: number, high: number, low: number, close: number): number | null
2604
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2605
+ reset(): void
2606
+ isReady(): boolean
2607
+ warmupPeriod(): number
2608
+ }
2609
+ export type ConcealingBabySwallowNode = ConcealingBabySwallow
2610
+ export declare class ConcealingBabySwallow {
2611
+ constructor()
2612
+ update(open: number, high: number, low: number, close: number): number | null
2613
+ batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
2614
+ reset(): void
2615
+ isReady(): boolean
2616
+ warmupPeriod(): number
2617
+ }
2205
2618
  export type OrderBookImbalanceTop1Node = OrderBookImbalanceTop1
2206
2619
  export declare class OrderBookImbalanceTop1 {
2207
2620
  constructor()
@@ -2319,6 +2732,114 @@ export declare class Footprint {
2319
2732
  isReady(): boolean
2320
2733
  warmupPeriod(): number
2321
2734
  }
2735
+ export type FundingRateNode = FundingRate
2736
+ export declare class FundingRate {
2737
+ constructor()
2738
+ update(fundingRate: number): number | null
2739
+ batch(fundingRate: Array<number>): Array<number>
2740
+ reset(): void
2741
+ isReady(): boolean
2742
+ warmupPeriod(): number
2743
+ }
2744
+ export type FundingRateMeanNode = FundingRateMean
2745
+ export declare class FundingRateMean {
2746
+ constructor(window: number)
2747
+ update(fundingRate: number): number | null
2748
+ batch(fundingRate: Array<number>): Array<number>
2749
+ reset(): void
2750
+ isReady(): boolean
2751
+ warmupPeriod(): number
2752
+ }
2753
+ export type FundingRateZScoreNode = FundingRateZScore
2754
+ export declare class FundingRateZScore {
2755
+ constructor(window: number)
2756
+ update(fundingRate: number): number | null
2757
+ batch(fundingRate: Array<number>): Array<number>
2758
+ reset(): void
2759
+ isReady(): boolean
2760
+ warmupPeriod(): number
2761
+ }
2762
+ export type FundingBasisNode = FundingBasis
2763
+ export declare class FundingBasis {
2764
+ constructor()
2765
+ update(markPrice: number, indexPrice: number): number | null
2766
+ batch(markPrice: Array<number>, indexPrice: Array<number>): Array<number>
2767
+ reset(): void
2768
+ isReady(): boolean
2769
+ warmupPeriod(): number
2770
+ }
2771
+ export type OpenInterestDeltaNode = OpenInterestDelta
2772
+ export declare class OpenInterestDelta {
2773
+ constructor()
2774
+ update(openInterest: number): number | null
2775
+ batch(openInterest: Array<number>): Array<number>
2776
+ reset(): void
2777
+ isReady(): boolean
2778
+ warmupPeriod(): number
2779
+ }
2780
+ export type OIPriceDivergenceNode = OIPriceDivergence
2781
+ export declare class OIPriceDivergence {
2782
+ constructor(window: number)
2783
+ update(openInterest: number, markPrice: number): number | null
2784
+ batch(openInterest: Array<number>, markPrice: Array<number>): Array<number>
2785
+ reset(): void
2786
+ isReady(): boolean
2787
+ warmupPeriod(): number
2788
+ }
2789
+ export type OIWeightedNode = OIWeighted
2790
+ export declare class OIWeighted {
2791
+ constructor()
2792
+ update(markPrice: number, openInterest: number): number | null
2793
+ batch(markPrice: Array<number>, openInterest: Array<number>): Array<number>
2794
+ reset(): void
2795
+ isReady(): boolean
2796
+ warmupPeriod(): number
2797
+ }
2798
+ export type LongShortRatioNode = LongShortRatio
2799
+ export declare class LongShortRatio {
2800
+ constructor()
2801
+ update(longSize: number, shortSize: number): number | null
2802
+ batch(longSize: Array<number>, shortSize: Array<number>): Array<number>
2803
+ reset(): void
2804
+ isReady(): boolean
2805
+ warmupPeriod(): number
2806
+ }
2807
+ export type TakerBuySellRatioNode = TakerBuySellRatio
2808
+ export declare class TakerBuySellRatio {
2809
+ constructor()
2810
+ update(takerBuyVolume: number, takerSellVolume: number): number | null
2811
+ batch(takerBuyVolume: Array<number>, takerSellVolume: Array<number>): Array<number>
2812
+ reset(): void
2813
+ isReady(): boolean
2814
+ warmupPeriod(): number
2815
+ }
2816
+ export type LiquidationFeaturesNode = LiquidationFeatures
2817
+ export declare class LiquidationFeatures {
2818
+ constructor()
2819
+ update(longLiquidation: number, shortLiquidation: number): LiquidationFeaturesValue | null
2820
+ batch(longLiquidation: Array<number>, shortLiquidation: Array<number>): Array<number>
2821
+ reset(): void
2822
+ isReady(): boolean
2823
+ warmupPeriod(): number
2824
+ }
2825
+ export type TermStructureBasisNode = TermStructureBasis
2826
+ export declare class TermStructureBasis {
2827
+ constructor()
2828
+ update(futuresPrice: number, indexPrice: number): number | null
2829
+ batch(futuresPrice: Array<number>, indexPrice: Array<number>): Array<number>
2830
+ reset(): void
2831
+ isReady(): boolean
2832
+ warmupPeriod(): number
2833
+ }
2834
+ export type CalendarSpreadNode = CalendarSpread
2835
+ export declare class CalendarSpread {
2836
+ constructor()
2837
+ update(futuresPrice: number, markPrice: number): number | null
2838
+ batch(futuresPrice: Array<number>, markPrice: Array<number>): Array<number>
2839
+ reset(): void
2840
+ isReady(): boolean
2841
+ warmupPeriod(): number
2842
+ }
2322
2843
  export type SharpeRatioNode = SharpeRatio
2323
2844
  export declare class SharpeRatio {
2324
2845
  constructor(period: number, riskFree: number)
package/index.js CHANGED
@@ -310,7 +310,7 @@ if (!nativeBinding) {
310
310
  throw new Error(`Failed to load native binding`)
311
311
  }
312
312
 
313
- const { version, SMA, EMA, WMA, RSI, DEMA, TEMA, HMA, ROC, TRIX, SMMA, TRIMA, ZLEMA, MOM, CMO, DPO, StdDev, UlcerIndex, VerticalHorizontalFilter, ZScore, McGinleyDynamic, FRAMA, SuperSmoother, FisherTransform, Decycler, CenterOfGravity, CyberneticCycle, InstantaneousTrendline, EhlersStochastic, RVIVolatility, Variance, CoefficientOfVariation, Skewness, Kurtosis, StandardError, DetrendedStdDev, RSquared, MedianAbsoluteDeviation, Autocorrelation, HurstExponent, PearsonCorrelation, Beta, PairwiseBeta, SpearmanCorrelation, PairSpreadZScore, LeadLagCrossCorrelation, Cointegration, RelativeStrengthAB, MACD, BollingerBands, ATR, Stochastic, OBV, ADX, ADXR, CCI, WilliamsR, MFI, PSAR, Keltner, Donchian, VWAP, RollingVWAP, AwesomeOscillator, Aroon, Inertia, ConnorsRSI, LaguerreRSI, SMI, KST, PGO, RVI, AwesomeOscillatorHistogram, STC, ElderImpulse, ZeroLagMACD, CFO, APO, KAMA, EVWMA, Alligator, JMA, VIDYA, ALMA, T3, TSI, PMO, TII, ADL, VolumePriceTrend, ChaikinMoneyFlow, ChaikinOscillator, ForceIndex, NVI, PVI, VolumeOscillator, KVO, WilliamsAD, AnchoredVWAP, DemandIndex, TSV, VZO, MarketFacilitationIndex, EaseOfMovement, SuperTrend, ChandelierExit, ChandeKrollStop, AtrTrailingStop, HiLoActivator, VoltyStop, YoyoExit, DonchianStop, PercentageTrailingStop, StepTrailingStop, RenkoTrailingStop, TypicalPrice, MedianPrice, WeightedClose, LinearRegression, LinRegSlope, AcceleratorOscillator, BalanceOfPower, ChoppinessIndex, TrueRange, ChaikinVolatility, YangZhangVolatility, RogersSatchellVolatility, GarmanKlassVolatility, ParkinsonVolatility, LinRegAngle, BollingerBandwidth, PercentB, NATR, HistoricalVolatility, AroonOscillator, WaveTrend, RWI, Vortex, MassIndex, StochRSI, UltimateOscillator, PPO, Coppock, VWMA, MaEnvelope, AccelerationBands, StarcBands, AtrBands, HurstChannel, LinRegChannel, StandardErrorBands, DoubleBollinger, TtmSqueeze, FractalChaosBands, VwapStdDevBands, ClassicPivots, FibonacciPivots, Camarilla, WoodiePivots, DemarkPivots, WilliamsFractals, ZigZag, TDSetup, TDSequential, TDDeMarker, TDREI, TDPressure, TDCombo, TDCountdown, TDLines, TDRangeProjection, TDDifferential, TDOpen, TDRiskLevel, InverseFisherTransform, DecyclerOscillator, RoofingFilter, EmpiricalModeDecomposition, HilbertDominantCycle, AdaptiveCycle, SineWave, MAMA, FAMA, Ichimoku, HeikinAshi, ValueArea, InitialBalance, OpeningRange, Doji, Hammer, InvertedHammer, HangingMan, ShootingStar, Engulfing, Harami, MorningEveningStar, ThreeSoldiersOrCrows, PiercingDarkCloud, Marubozu, Tweezer, SpinningTop, ThreeInside, ThreeOutside, OrderBookImbalanceTop1, OrderBookImbalanceFull, Microprice, QuotedSpread, DepthSlope, OrderBookImbalanceTopN, SignedVolume, CumulativeVolumeDelta, TradeImbalance, EffectiveSpread, RealizedSpread, KylesLambda, Footprint, SharpeRatio, SortinoRatio, CalmarRatio, OmegaRatio, MaxDrawdown, AverageDrawdown, DrawdownDuration, PainIndex, ValueAtRisk, ConditionalValueAtRisk, ProfitFactor, GainLossRatio, RecoveryFactor, KellyCriterion, TreynorRatio, InformationRatio, Alpha } = nativeBinding
313
+ const { version, SMA, EMA, WMA, RSI, DEMA, TEMA, HMA, ROC, TRIX, SMMA, TRIMA, ZLEMA, MOM, CMO, DPO, StdDev, UlcerIndex, VerticalHorizontalFilter, ZScore, McGinleyDynamic, FRAMA, SuperSmoother, FisherTransform, Decycler, CenterOfGravity, CyberneticCycle, InstantaneousTrendline, EhlersStochastic, RVIVolatility, Variance, CoefficientOfVariation, Skewness, Kurtosis, StandardError, DetrendedStdDev, RSquared, MedianAbsoluteDeviation, Autocorrelation, HurstExponent, PearsonCorrelation, Beta, PairwiseBeta, SpearmanCorrelation, PairSpreadZScore, LeadLagCrossCorrelation, Cointegration, RelativeStrengthAB, MACD, BollingerBands, ATR, Stochastic, OBV, ADX, ADXR, CCI, WilliamsR, MFI, PSAR, Keltner, Donchian, VWAP, RollingVWAP, AwesomeOscillator, Aroon, Inertia, ConnorsRSI, LaguerreRSI, SMI, KST, PGO, RVI, AwesomeOscillatorHistogram, STC, ElderImpulse, ZeroLagMACD, CFO, APO, KAMA, EVWMA, Alligator, JMA, VIDYA, ALMA, T3, TSI, PMO, TII, ADL, VolumePriceTrend, ChaikinMoneyFlow, ChaikinOscillator, ForceIndex, NVI, PVI, VolumeOscillator, KVO, WilliamsAD, AnchoredVWAP, DemandIndex, TSV, VZO, MarketFacilitationIndex, EaseOfMovement, SuperTrend, ChandelierExit, ChandeKrollStop, AtrTrailingStop, HiLoActivator, VoltyStop, YoyoExit, DonchianStop, PercentageTrailingStop, StepTrailingStop, RenkoTrailingStop, TypicalPrice, MedianPrice, WeightedClose, LinearRegression, LinRegSlope, AcceleratorOscillator, BalanceOfPower, ChoppinessIndex, TrueRange, ChaikinVolatility, YangZhangVolatility, RogersSatchellVolatility, GarmanKlassVolatility, ParkinsonVolatility, LinRegAngle, BollingerBandwidth, PercentB, NATR, HistoricalVolatility, AroonOscillator, WaveTrend, RWI, Vortex, MassIndex, StochRSI, UltimateOscillator, PPO, Coppock, VWMA, MaEnvelope, AccelerationBands, StarcBands, AtrBands, HurstChannel, LinRegChannel, StandardErrorBands, DoubleBollinger, TtmSqueeze, FractalChaosBands, VwapStdDevBands, ClassicPivots, FibonacciPivots, Camarilla, WoodiePivots, DemarkPivots, WilliamsFractals, ZigZag, TDSetup, TDSequential, TDDeMarker, TDREI, TDPressure, TDCombo, TDCountdown, TDLines, TDRangeProjection, TDDifferential, TDOpen, TDRiskLevel, InverseFisherTransform, DecyclerOscillator, RoofingFilter, EmpiricalModeDecomposition, HilbertDominantCycle, AdaptiveCycle, SineWave, MAMA, FAMA, Ichimoku, HeikinAshi, ValueArea, InitialBalance, OpeningRange, Doji, Hammer, InvertedHammer, HangingMan, ShootingStar, Engulfing, Harami, MorningEveningStar, ThreeSoldiersOrCrows, PiercingDarkCloud, Marubozu, Tweezer, SpinningTop, ThreeInside, ThreeOutside, TwoCrows, UpsideGapTwoCrows, IdenticalThreeCrows, ThreeLineStrike, ThreeStarsInSouth, AbandonedBaby, AdvanceBlock, BeltHold, Breakaway, Counterattack, DojiStar, DragonflyDoji, GravestoneDoji, LongLeggedDoji, RickshawMan, EveningDojiStar, MorningDojiStar, GapSideBySideWhite, HighWave, Hikkake, HikkakeModified, HomingPigeon, OnNeck, InNeck, Thrusting, SeparatingLines, Kicking, KickingByLength, LadderBottom, MatHold, MatchingLow, LongLine, ShortLine, RisingThreeMethods, FallingThreeMethods, UpsideGapThreeMethods, DownsideGapThreeMethods, StalledPattern, StickSandwich, Takuri, ClosingMarubozu, OpeningMarubozu, TasukiGap, UniqueThreeRiver, ConcealingBabySwallow, OrderBookImbalanceTop1, OrderBookImbalanceFull, Microprice, QuotedSpread, DepthSlope, OrderBookImbalanceTopN, SignedVolume, CumulativeVolumeDelta, TradeImbalance, EffectiveSpread, RealizedSpread, KylesLambda, Footprint, FundingRate, FundingRateMean, FundingRateZScore, FundingBasis, OpenInterestDelta, OIPriceDivergence, OIWeighted, LongShortRatio, TakerBuySellRatio, LiquidationFeatures, TermStructureBasis, CalendarSpread, SharpeRatio, SortinoRatio, CalmarRatio, OmegaRatio, MaxDrawdown, AverageDrawdown, DrawdownDuration, PainIndex, ValueAtRisk, ConditionalValueAtRisk, ProfitFactor, GainLossRatio, RecoveryFactor, KellyCriterion, TreynorRatio, InformationRatio, Alpha } = nativeBinding
314
314
 
315
315
  module.exports.version = version
316
316
  module.exports.SMA = SMA
@@ -515,6 +515,51 @@ module.exports.Tweezer = Tweezer
515
515
  module.exports.SpinningTop = SpinningTop
516
516
  module.exports.ThreeInside = ThreeInside
517
517
  module.exports.ThreeOutside = ThreeOutside
518
+ module.exports.TwoCrows = TwoCrows
519
+ module.exports.UpsideGapTwoCrows = UpsideGapTwoCrows
520
+ module.exports.IdenticalThreeCrows = IdenticalThreeCrows
521
+ module.exports.ThreeLineStrike = ThreeLineStrike
522
+ module.exports.ThreeStarsInSouth = ThreeStarsInSouth
523
+ module.exports.AbandonedBaby = AbandonedBaby
524
+ module.exports.AdvanceBlock = AdvanceBlock
525
+ module.exports.BeltHold = BeltHold
526
+ module.exports.Breakaway = Breakaway
527
+ module.exports.Counterattack = Counterattack
528
+ module.exports.DojiStar = DojiStar
529
+ module.exports.DragonflyDoji = DragonflyDoji
530
+ module.exports.GravestoneDoji = GravestoneDoji
531
+ module.exports.LongLeggedDoji = LongLeggedDoji
532
+ module.exports.RickshawMan = RickshawMan
533
+ module.exports.EveningDojiStar = EveningDojiStar
534
+ module.exports.MorningDojiStar = MorningDojiStar
535
+ module.exports.GapSideBySideWhite = GapSideBySideWhite
536
+ module.exports.HighWave = HighWave
537
+ module.exports.Hikkake = Hikkake
538
+ module.exports.HikkakeModified = HikkakeModified
539
+ module.exports.HomingPigeon = HomingPigeon
540
+ module.exports.OnNeck = OnNeck
541
+ module.exports.InNeck = InNeck
542
+ module.exports.Thrusting = Thrusting
543
+ module.exports.SeparatingLines = SeparatingLines
544
+ module.exports.Kicking = Kicking
545
+ module.exports.KickingByLength = KickingByLength
546
+ module.exports.LadderBottom = LadderBottom
547
+ module.exports.MatHold = MatHold
548
+ module.exports.MatchingLow = MatchingLow
549
+ module.exports.LongLine = LongLine
550
+ module.exports.ShortLine = ShortLine
551
+ module.exports.RisingThreeMethods = RisingThreeMethods
552
+ module.exports.FallingThreeMethods = FallingThreeMethods
553
+ module.exports.UpsideGapThreeMethods = UpsideGapThreeMethods
554
+ module.exports.DownsideGapThreeMethods = DownsideGapThreeMethods
555
+ module.exports.StalledPattern = StalledPattern
556
+ module.exports.StickSandwich = StickSandwich
557
+ module.exports.Takuri = Takuri
558
+ module.exports.ClosingMarubozu = ClosingMarubozu
559
+ module.exports.OpeningMarubozu = OpeningMarubozu
560
+ module.exports.TasukiGap = TasukiGap
561
+ module.exports.UniqueThreeRiver = UniqueThreeRiver
562
+ module.exports.ConcealingBabySwallow = ConcealingBabySwallow
518
563
  module.exports.OrderBookImbalanceTop1 = OrderBookImbalanceTop1
519
564
  module.exports.OrderBookImbalanceFull = OrderBookImbalanceFull
520
565
  module.exports.Microprice = Microprice
@@ -528,6 +573,18 @@ module.exports.EffectiveSpread = EffectiveSpread
528
573
  module.exports.RealizedSpread = RealizedSpread
529
574
  module.exports.KylesLambda = KylesLambda
530
575
  module.exports.Footprint = Footprint
576
+ module.exports.FundingRate = FundingRate
577
+ module.exports.FundingRateMean = FundingRateMean
578
+ module.exports.FundingRateZScore = FundingRateZScore
579
+ module.exports.FundingBasis = FundingBasis
580
+ module.exports.OpenInterestDelta = OpenInterestDelta
581
+ module.exports.OIPriceDivergence = OIPriceDivergence
582
+ module.exports.OIWeighted = OIWeighted
583
+ module.exports.LongShortRatio = LongShortRatio
584
+ module.exports.TakerBuySellRatio = TakerBuySellRatio
585
+ module.exports.LiquidationFeatures = LiquidationFeatures
586
+ module.exports.TermStructureBasis = TermStructureBasis
587
+ module.exports.CalendarSpread = CalendarSpread
531
588
  module.exports.SharpeRatio = SharpeRatio
532
589
  module.exports.SortinoRatio = SortinoRatio
533
590
  module.exports.CalmarRatio = CalmarRatio
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-darwin-arm64",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Native binding for wickra (macOS Apple Silicon). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.darwin-arm64.node",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-darwin-x64",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Native binding for wickra (macOS Intel). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.darwin-x64.node",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-linux-arm64-gnu",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Native binding for wickra (linux arm64 GNU). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.linux-arm64-gnu.node",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-linux-x64-gnu",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Native binding for wickra (linux x64 GNU). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.linux-x64-gnu.node",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-win32-arm64-msvc",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Native binding for wickra (Windows arm64 MSVC). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.win32-arm64-msvc.node",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra-win32-x64-msvc",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Native binding for wickra (Windows x64 MSVC). Installed automatically as an optional dependency of wickra on matching platforms.",
5
5
  "main": "wickra.win32-x64-msvc.node",
6
6
  "files": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickra",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Streaming-first technical indicators: incremental, fast, install-free. Node bindings powered by Rust.",
5
5
  "author": "kingchenc <support@wickra.org>",
6
6
  "main": "index.js",
@@ -47,12 +47,12 @@
47
47
  "node": ">= 18"
48
48
  },
49
49
  "optionalDependencies": {
50
- "wickra-linux-x64-gnu": "0.4.3",
51
- "wickra-linux-arm64-gnu": "0.4.3",
52
- "wickra-darwin-x64": "0.4.3",
53
- "wickra-darwin-arm64": "0.4.3",
54
- "wickra-win32-x64-msvc": "0.4.3",
55
- "wickra-win32-arm64-msvc": "0.4.3"
50
+ "wickra-linux-x64-gnu": "0.4.4",
51
+ "wickra-linux-arm64-gnu": "0.4.4",
52
+ "wickra-darwin-x64": "0.4.4",
53
+ "wickra-darwin-arm64": "0.4.4",
54
+ "wickra-win32-x64-msvc": "0.4.4",
55
+ "wickra-win32-arm64-msvc": "0.4.4"
56
56
  },
57
57
  "scripts": {
58
58
  "build": "napi build --platform --release",
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file