qntjs-lib 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +695 -0
- package/README.md +60 -0
- package/dist/arr/arr.d.ts +81 -0
- package/dist/bundle/index.d.ts +1573 -0
- package/dist/bundle/index.js +3169 -0
- package/dist/index.d.ts +4 -0
- package/dist/math/basic.d.ts +174 -0
- package/dist/math/index.d.ts +11 -0
- package/dist/math/linalg.d.ts +36 -0
- package/dist/math/minmax.d.ts +81 -0
- package/dist/math/prod.d.ts +20 -0
- package/dist/math/random.d.ts +22 -0
- package/dist/math/sum.d.ts +26 -0
- package/dist/stats/index.d.ts +10 -0
- package/dist/stats/mean.d.ts +53 -0
- package/dist/stats/quantile.d.ts +42 -0
- package/dist/stats/sampling.d.ts +23 -0
- package/dist/stats/skew.d.ts +26 -0
- package/dist/stats/transforms.d.ts +48 -0
- package/dist/stats/var.d.ts +42 -0
- package/dist/ta/index.d.ts +13 -0
- package/dist/ta/momentum-oscillators/ao.d.ts +11 -0
- package/dist/ta/momentum-oscillators/apo.d.ts +11 -0
- package/dist/ta/momentum-oscillators/aroon.d.ts +11 -0
- package/dist/ta/momentum-oscillators/cmo.d.ts +10 -0
- package/dist/ta/momentum-oscillators/index.d.ts +14 -0
- package/dist/ta/momentum-oscillators/kst.d.ts +29 -0
- package/dist/ta/momentum-oscillators/macd.d.ts +12 -0
- package/dist/ta/momentum-oscillators/mom.d.ts +9 -0
- package/dist/ta/momentum-oscillators/ppo.d.ts +11 -0
- package/dist/ta/momentum-oscillators/roc.d.ts +18 -0
- package/dist/ta/momentum-oscillators/rsi.d.ts +14 -0
- package/dist/ta/momentum-oscillators/stoch.d.ts +14 -0
- package/dist/ta/momentum-oscillators/stochrsi.d.ts +9 -0
- package/dist/ta/momentum-oscillators/ultosc.d.ts +17 -0
- package/dist/ta/momentum-oscillators/wpr.d.ts +12 -0
- package/dist/ta/moving-averages/dema.d.ts +10 -0
- package/dist/ta/moving-averages/ema.d.ts +10 -0
- package/dist/ta/moving-averages/hma.d.ts +10 -0
- package/dist/ta/moving-averages/index.d.ts +11 -0
- package/dist/ta/moving-averages/kama.d.ts +14 -0
- package/dist/ta/moving-averages/rma.d.ts +11 -0
- package/dist/ta/moving-averages/sma.d.ts +11 -0
- package/dist/ta/moving-averages/t3.d.ts +24 -0
- package/dist/ta/moving-averages/tema.d.ts +10 -0
- package/dist/ta/moving-averages/trima.d.ts +9 -0
- package/dist/ta/moving-averages/vwma.d.ts +17 -0
- package/dist/ta/moving-averages/wma.d.ts +11 -0
- package/dist/ta/trend/cci.d.ts +13 -0
- package/dist/ta/trend/di.d.ts +36 -0
- package/dist/ta/trend/dpo.d.ts +10 -0
- package/dist/ta/trend/ichimoku.d.ts +20 -0
- package/dist/ta/trend/index.d.ts +6 -0
- package/dist/ta/trend/psar.d.ts +10 -0
- package/dist/ta/trend/supertrend.d.ts +14 -0
- package/dist/ta/util.d.ts +53 -0
- package/dist/ta/volatility/atr.d.ts +23 -0
- package/dist/ta/volatility/bb.d.ts +11 -0
- package/dist/ta/volatility/bbw.d.ts +10 -0
- package/dist/ta/volatility/donchian.d.ts +11 -0
- package/dist/ta/volatility/index.d.ts +5 -0
- package/dist/ta/volatility/keltner.d.ts +12 -0
- package/dist/ta/volume-money-flow/ad.d.ts +12 -0
- package/dist/ta/volume-money-flow/adosc.d.ts +15 -0
- package/dist/ta/volume-money-flow/index.d.ts +6 -0
- package/dist/ta/volume-money-flow/mfi.d.ts +12 -0
- package/dist/ta/volume-money-flow/obv.d.ts +9 -0
- package/dist/ta/volume-money-flow/pnvi.d.ts +10 -0
- package/dist/ta/volume-money-flow/wad.d.ts +11 -0
- package/dist/untyped/index.d.ts +1194 -0
- package/dist/untyped/index.js +29 -0
- package/package.json +58 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Absolute Price Oscillator (APO).
|
|
3
|
+
* Computes the difference between a short and a long EMA of `src`.
|
|
4
|
+
* Skips NaNs and seeds EMAs on the first valid value; returns NaN
|
|
5
|
+
* for indices before both EMAs have filled.
|
|
6
|
+
* @param src Input series
|
|
7
|
+
* @param shortPeriod Short EMA period
|
|
8
|
+
* @param longPeriod Long EMA period
|
|
9
|
+
* @returns Float64Array of APO values (NaN where undefined)
|
|
10
|
+
*/
|
|
11
|
+
export declare function apo(src: ArrayLike<number>, shortPeriod: number, longPeriod: number): Float64Array;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aroon indicator: returns `[up, down]` arrays in percentage form (0-100)
|
|
3
|
+
* describing the time since the highest/lowest value within the lookback
|
|
4
|
+
* `period`. Supports NaN-aware and dense fast-paths.
|
|
5
|
+
* @param high High price series
|
|
6
|
+
* @param low Low price series
|
|
7
|
+
* @param period Lookback period (>0)
|
|
8
|
+
* @param skipna When true ignore NaNs in windows; false forces dense path
|
|
9
|
+
* @returns Tuple `[up, down]` Float64Array indicators
|
|
10
|
+
*/
|
|
11
|
+
export declare function aroon(high: ArrayLike<number>, low: ArrayLike<number>, period: number, skipna?: boolean): [Float64Array, Float64Array];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chande Momentum Oscillator (CMO).
|
|
3
|
+
* Computes CMO over `period` using percent scaling in [-100, 100].
|
|
4
|
+
* Ignores NaNs in the input deltas; positions before the first
|
|
5
|
+
* computable value are NaN.
|
|
6
|
+
* @param src Input series
|
|
7
|
+
* @param period Period over which to compute the oscillator
|
|
8
|
+
* @returns Float64Array of CMO values (NaN where undefined)
|
|
9
|
+
*/
|
|
10
|
+
export declare function cmo(src: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './ao.js';
|
|
2
|
+
export * from './apo.js';
|
|
3
|
+
export * from './cmo.js';
|
|
4
|
+
export * from './macd.js';
|
|
5
|
+
export * from './mom.js';
|
|
6
|
+
export * from './ppo.js';
|
|
7
|
+
export * from './roc.js';
|
|
8
|
+
export * from './rsi.js';
|
|
9
|
+
export * from './stoch.js';
|
|
10
|
+
export * from './stochrsi.js';
|
|
11
|
+
export * from './ultosc.js';
|
|
12
|
+
export * from './wpr.js';
|
|
13
|
+
export * from './aroon.js';
|
|
14
|
+
export * from './kst.js';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Know Sure Thing (KST) momentum oscillator
|
|
3
|
+
* Default parameters match common KST configuration
|
|
4
|
+
*/
|
|
5
|
+
export type KstOptions = {
|
|
6
|
+
r1?: number;
|
|
7
|
+
r2?: number;
|
|
8
|
+
r3?: number;
|
|
9
|
+
r4?: number;
|
|
10
|
+
n1?: number;
|
|
11
|
+
n2?: number;
|
|
12
|
+
n3?: number;
|
|
13
|
+
n4?: number;
|
|
14
|
+
w1?: number;
|
|
15
|
+
w2?: number;
|
|
16
|
+
w3?: number;
|
|
17
|
+
w4?: number;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Know Sure Thing (KST) momentum oscillator.
|
|
21
|
+
* Computes a weighted sum of smoothed rate-of-change series.
|
|
22
|
+
* Parameters may be supplied via the `options` object or defaults are used.
|
|
23
|
+
* The output length equals `src.length`; positions before the required
|
|
24
|
+
* lookback periods are NaN.
|
|
25
|
+
* @param src Input series
|
|
26
|
+
* @param options Optional parameters for ROC and smoothing windows
|
|
27
|
+
* @returns Float64Array of KST values (NaN where insufficient data)
|
|
28
|
+
*/
|
|
29
|
+
export declare function kst(src: ArrayLike<number>, options?: KstOptions): Float64Array;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Moving Average Convergence Divergence (MACD).
|
|
3
|
+
* Produces the MACD line (short EMA - long EMA), the signal line (EMA of MACD),
|
|
4
|
+
* and the histogram (MACD - signal). Skips NaNs and seeds EMAs on first valid
|
|
5
|
+
* value; outputs are NaN until the EMAs and signal have seeded.
|
|
6
|
+
* @param src Input series
|
|
7
|
+
* @param shortPeriod Short EMA period
|
|
8
|
+
* @param longPeriod Long EMA period
|
|
9
|
+
* @param signalPeriod Signal EMA period
|
|
10
|
+
* @returns Tuple `[macdLine, signalLine, histogram]` as Float64Array
|
|
11
|
+
*/
|
|
12
|
+
export declare function macd(src: ArrayLike<number>, shortPeriod: number, longPeriod: number, signalPeriod: number): [Float64Array, Float64Array, Float64Array];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Momentum (difference) indicator.
|
|
3
|
+
* Computes `src[i] - src[i - period]` for each index; positions where
|
|
4
|
+
* the lagged value is not available are NaN.
|
|
5
|
+
* @param src Input series
|
|
6
|
+
* @param period Lag period (must be > 0)
|
|
7
|
+
* @returns Float64Array of momentum values (NaN where undefined)
|
|
8
|
+
*/
|
|
9
|
+
export declare function mom(src: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Percentage Price Oscillator (PPO).
|
|
3
|
+
* PPO = 100 * (EMA_short - EMA_long) / EMA_long.
|
|
4
|
+
* Skips NaNs and seeds EMAs on first valid value; outputs are NaN until the
|
|
5
|
+
* long EMA has enough data. When EMA_long is zero, returns 0 to avoid division.
|
|
6
|
+
* @param src Input series
|
|
7
|
+
* @param shortPeriod Short EMA period
|
|
8
|
+
* @param longPeriod Long EMA period
|
|
9
|
+
* @returns Float64Array of PPO values (NaN where undefined)
|
|
10
|
+
*/
|
|
11
|
+
export declare function ppo(src: ArrayLike<number>, shortPeriod: number, longPeriod: number): Float64Array;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple change over `period`.
|
|
3
|
+
* Computes `src[i] - src[i-period]` for each index `i >= period`.
|
|
4
|
+
* Outputs NaN for indices before `period` and propagates NaNs for invalid pairs.
|
|
5
|
+
* @param src Input series
|
|
6
|
+
* @param period Lookback period (must be > 0)
|
|
7
|
+
* @returns Float64Array of simple change values (NaN where undefined)
|
|
8
|
+
*/
|
|
9
|
+
export declare function change(src: ArrayLike<number>, period: number): Float64Array;
|
|
10
|
+
/**
|
|
11
|
+
* Percentage Rate-of-Change (ROC).
|
|
12
|
+
* Returns 100 * (src[i] - src[i-period]) / src[i-period]. NaN is returned
|
|
13
|
+
* for indices before `period` or when a denominator is NaN/zero.
|
|
14
|
+
* @param src Input series
|
|
15
|
+
* @param period Lookback period (must be > 0)
|
|
16
|
+
* @returns Float64Array of ROC values (NaN where undefined)
|
|
17
|
+
*/
|
|
18
|
+
export declare function roc(src: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Relative Strength Index (RSI) with optional NaN-aware behavior.
|
|
3
|
+
* - `skipna=false` (dense path): assumes inputs contain no NaNs or that NaN
|
|
4
|
+
* propagation is desired; uses a dense fast-path implementation.
|
|
5
|
+
* - `skipna=true` (NaN-aware): skips NaNs when computing deltas and preserves
|
|
6
|
+
* gaps in the output where insufficient valid data exists.
|
|
7
|
+
* Seeding: the implementation seeds on the first valid value and uses Wilder
|
|
8
|
+
* smoothing once the initial window is filled.
|
|
9
|
+
* @param src Input series
|
|
10
|
+
* @param period Lookback period for RSI (must be > 0)
|
|
11
|
+
* @param skipna Whether to ignore NaNs during computation (default: true)
|
|
12
|
+
* @returns Float64Array of RSI values (NaN where undefined)
|
|
13
|
+
*/
|
|
14
|
+
export declare function rsi(src: ArrayLike<number>, period: number, skipna?: boolean): Float64Array;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stochastic oscillator (fast %K and %D smoothed outputs).
|
|
3
|
+
* Computes fast %K based on rolling highest/lowest over `kPeriod`, then
|
|
4
|
+
* smooths with `kSlow` and `dPeriod` using dense SMA. Assumes input series
|
|
5
|
+
* length equality and returns NaN when insufficient data exists.
|
|
6
|
+
* @param high High price series
|
|
7
|
+
* @param low Low price series
|
|
8
|
+
* @param close Close price series
|
|
9
|
+
* @param kPeriod %K lookback period
|
|
10
|
+
* @param kSlow Smoothing period for %K
|
|
11
|
+
* @param dPeriod Smoothing period for %D
|
|
12
|
+
* @returns Tuple `[slowK, slowD]` as Float64Array
|
|
13
|
+
*/
|
|
14
|
+
export declare function stoch(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, kPeriod: number, kSlow: number, dPeriod: number): [Float64Array, Float64Array];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stochastic RSI.
|
|
3
|
+
* Applies a stochastic calculation to the RSI series, producing values in [0,1].
|
|
4
|
+
* This implementation is NaN-aware and maintains deques over valid RSI samples.
|
|
5
|
+
* @param close Close price series
|
|
6
|
+
* @param period RSI lookback period
|
|
7
|
+
* @returns Float64Array of StochRSI values (NaN where undefined)
|
|
8
|
+
*/
|
|
9
|
+
export declare function stochrsi(close: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type UltoscOptions = {
|
|
2
|
+
s1?: number;
|
|
3
|
+
s2?: number;
|
|
4
|
+
s3?: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Ultimate Oscillator (ULTOSC).
|
|
8
|
+
* Combines short-, mid-, and long-term averages of the buying pressure / true range
|
|
9
|
+
* to produce a bounded oscillator in [0,100]. Preserves NaN inputs and returns
|
|
10
|
+
* NaN for indices before the longest lookback has sufficient data.
|
|
11
|
+
* @param high High price series
|
|
12
|
+
* @param low Low price series
|
|
13
|
+
* @param close Close price series
|
|
14
|
+
* @param options Optional periods for short/mid/long (s1,s2,s3)
|
|
15
|
+
* @returns Float64Array of Ultimate Oscillator values (NaN where undefined)
|
|
16
|
+
*/
|
|
17
|
+
export declare function ultosc(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, options?: UltoscOptions): Float64Array;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Williams %R (WPR).
|
|
3
|
+
* Computes %R = (highestHigh - close) / (highestHigh - lowestLow) * -100
|
|
4
|
+
* over a rolling `period`. Uses `rollminmax` to compute window extrema and
|
|
5
|
+
* returns NaN for indices before `period` or when the range is zero.
|
|
6
|
+
* @param high High price series
|
|
7
|
+
* @param low Low price series
|
|
8
|
+
* @param close Close price series
|
|
9
|
+
* @param period Lookback period (must be > 0)
|
|
10
|
+
* @returns Float64Array of %R values (NaN where undefined)
|
|
11
|
+
*/
|
|
12
|
+
export declare function wpr(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Double Exponential Moving Average (DEMA).
|
|
3
|
+
* DEMA reduces lag by combining a single EMA and a double-smoothed EMA:
|
|
4
|
+
* DEMA = 2 * EMA(source, period) - EMA(EMA(source, period), period).
|
|
5
|
+
* Preserves NaN gaps and follows the same seeding semantics as `ema`.
|
|
6
|
+
* @param source Input series
|
|
7
|
+
* @param period Smoothing period (must be > 0)
|
|
8
|
+
* @returns Float64Array of DEMA values (NaN where undefined)
|
|
9
|
+
*/
|
|
10
|
+
export declare function dema(source: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exponential Moving Average (EMA).
|
|
3
|
+
* Seeds on the first non-NaN value and uses the standard EMA recurrence.
|
|
4
|
+
* Preserves NaN gaps in the input: outputs are NaN until enough valid samples
|
|
5
|
+
* have been seen to initialize the EMA.
|
|
6
|
+
* @param source Input series
|
|
7
|
+
* @param period Smoothing period (must be > 0)
|
|
8
|
+
* @returns Float64Array of EMA values (NaN where undefined)
|
|
9
|
+
*/
|
|
10
|
+
export declare function ema(source: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hull Moving Average (HMA).
|
|
3
|
+
* Computes a lower-lag smoothing by combining WMAs at different lengths
|
|
4
|
+
* and then applying a final WMA on the derived series. Pine-compatible
|
|
5
|
+
* and NaN-aware: NaNs propagate where insufficient valid samples exist.
|
|
6
|
+
* @param source Input series
|
|
7
|
+
* @param period Window length (must be > 0)
|
|
8
|
+
* @returns Float64Array of HMA values (NaN where undefined)
|
|
9
|
+
*/
|
|
10
|
+
export declare function hma(source: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './sma.js';
|
|
2
|
+
export * from './ema.js';
|
|
3
|
+
export * from './wma.js';
|
|
4
|
+
export * from './vwma.js';
|
|
5
|
+
export * from './dema.js';
|
|
6
|
+
export * from './trima.js';
|
|
7
|
+
export * from './tema.js';
|
|
8
|
+
export * from './hma.js';
|
|
9
|
+
export * from './kama.js';
|
|
10
|
+
export * from './rma.js';
|
|
11
|
+
export * from './t3.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kaufman Adaptive Moving Average (KAMA).
|
|
3
|
+
* Adapts smoothing based on the efficiency ratio (market noise vs direction).
|
|
4
|
+
* This implementation supports NaN-aware and dense fast-paths; when NaNs are
|
|
5
|
+
* present the compacting + mapping strategy is used, otherwise an O(n)
|
|
6
|
+
* incremental volatility approach is used for speed.
|
|
7
|
+
* @param source Input series
|
|
8
|
+
* @param period Efficiency smoothing lookback (must be > 0)
|
|
9
|
+
* @param fastPeriod Fast smoothing period (default: 2)
|
|
10
|
+
* @param slowPeriod Slow smoothing period (default: 30)
|
|
11
|
+
* @param skipna Whether to ignore NaNs (default: true)
|
|
12
|
+
* @returns Float64Array of KAMA values (NaN where undefined)
|
|
13
|
+
*/
|
|
14
|
+
export declare function kama(source: ArrayLike<number>, period: number, fastPeriod?: number, slowPeriod?: number, skipna?: boolean): Float64Array;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wilder's Moving Average / RMA.
|
|
3
|
+
* Implements the Wilder smoothing recurrence (rma = (rma*(period-1) + x)/period).
|
|
4
|
+
* When `skipna` is true NaNs are ignored during seeding and updates; otherwise
|
|
5
|
+
* a dense fast-path is used for NaN-free inputs.
|
|
6
|
+
* @param source Input series
|
|
7
|
+
* @param period Smoothing period (must be > 0)
|
|
8
|
+
* @param skipna Whether to ignore NaNs during computation (default: true)
|
|
9
|
+
* @returns Float64Array of RMA values (NaN before window fills)
|
|
10
|
+
*/
|
|
11
|
+
export declare function rma(source: ArrayLike<number>, period: number, skipna?: boolean): Float64Array;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Moving Average (SMA).
|
|
3
|
+
* Computes the arithmetic mean over a sliding window.
|
|
4
|
+
* When `skipna` is true, NaNs inside the window are ignored; when false
|
|
5
|
+
* a dense fast-path is used (assumes no NaNs).
|
|
6
|
+
* @param source Input series
|
|
7
|
+
* @param period Window length (must be > 0)
|
|
8
|
+
* @param skipna Whether to ignore NaNs inside windows (default: true)
|
|
9
|
+
* @returns Float64Array of SMA values (NaN before window fills)
|
|
10
|
+
*/
|
|
11
|
+
export declare function sma(source: ArrayLike<number>, period: number, skipna?: boolean): Float64Array;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triple Exponential Moving Average (T3)
|
|
3
|
+
*
|
|
4
|
+
* T3 is a triple-smoothed moving average developed by Tim Tillson that reduces lag
|
|
5
|
+
* and smoothing compared to traditional EMAs while maintaining responsiveness to price changes.
|
|
6
|
+
*
|
|
7
|
+
* @param source - Input data array
|
|
8
|
+
* @param period - Smoothing period (default: 5)
|
|
9
|
+
* @param volumeFactor - Volume factor for smoothing (default: 0.7)
|
|
10
|
+
* @returns T3 values
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Triple Exponential Moving Average (T3)
|
|
14
|
+
*
|
|
15
|
+
* Implemented following TA‑Lib's algorithm (see TA_T3 C implementation).
|
|
16
|
+
* This inlines the nested EMA seeding (e1..e6) and performs a single-pass
|
|
17
|
+
* update, which is significantly faster than calling `ema()` six times.
|
|
18
|
+
*
|
|
19
|
+
* Notes:
|
|
20
|
+
* - Lookback = 6 * (period - 1)
|
|
21
|
+
* - For inputs containing NaNs we propagate NaN outputs where we cannot
|
|
22
|
+
* compute valid seeds or updates.
|
|
23
|
+
*/
|
|
24
|
+
export declare function t3(source: ArrayLike<number>, period: number, volumeFactor: number): Float64Array;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triple Exponential Moving Average (TEMA).
|
|
3
|
+
* Combines three nested EMAs to reduce lag while smoothing:
|
|
4
|
+
* TEMA = 3*EMA1 - 3*EMA2 + EMA3. Preserves NaN gaps and seeds
|
|
5
|
+
* each EMA before emitting values.
|
|
6
|
+
* @param source Input series
|
|
7
|
+
* @param period Smoothing period (must be > 0)
|
|
8
|
+
* @returns Float64Array of TEMA values (NaN where undefined)
|
|
9
|
+
*/
|
|
10
|
+
export declare function tema(source: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triangular Moving Average (TRIMA).
|
|
3
|
+
* A triangular-weighted moving average implemented via two `sma` passes.
|
|
4
|
+
* Preserves NaN handling by delegating to `sma` implementations.
|
|
5
|
+
* @param source Input series
|
|
6
|
+
* @param period Window length (must be > 0)
|
|
7
|
+
* @returns Float64Array of TRIMA values (NaN where undefined)
|
|
8
|
+
*/
|
|
9
|
+
export declare function trima(source: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Volume Weighted Moving Average (VWMA).
|
|
3
|
+
* Computes pvSum / vSum over a sliding window, NaN-aware. When `skipna` is
|
|
4
|
+
* true NaNs in either series are ignored within the window; when false a
|
|
5
|
+
* dense fast-path is used (assumes no NaNs).
|
|
6
|
+
* @param price Price series
|
|
7
|
+
* @param volume Volume series
|
|
8
|
+
* @param period Window length (>0)
|
|
9
|
+
* @param skipna Whether to ignore NaNs inside windows (default: true)
|
|
10
|
+
* @returns Float64Array of VWMA values (NaN before window fills)
|
|
11
|
+
*/
|
|
12
|
+
export declare function vwma(price: ArrayLike<number>, volume: ArrayLike<number>, period: number, skipna?: boolean): Float64Array;
|
|
13
|
+
/**
|
|
14
|
+
* Fast VWMA for dense data (no NaNs).
|
|
15
|
+
* O(n) sliding window: classic pvSum / vSum.
|
|
16
|
+
*/
|
|
17
|
+
export declare function vwmaDense(price: ArrayLike<number>, volume: ArrayLike<number>, period: number, result: Float64Array): Float64Array;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Weighted Moving Average (WMA).
|
|
3
|
+
* Computes a linearly-weighted average over a sliding window with weights
|
|
4
|
+
* 1..period (oldest..newest). When `skipna` is true NaNs are ignored
|
|
5
|
+
* within the window; when false a dense fast-path is used.
|
|
6
|
+
* @param source Input series
|
|
7
|
+
* @param period Window length (must be > 0)
|
|
8
|
+
* @param skipna Whether to ignore NaNs inside windows (default: true)
|
|
9
|
+
* @returns Float64Array of WMA values (NaN before window fills)
|
|
10
|
+
*/
|
|
11
|
+
export declare function wma(source: ArrayLike<number>, period: number, skipna?: boolean): Float64Array;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Commodity Channel Index (CCI).
|
|
3
|
+
* Computes the typical price (TP) and compares to a moving average and
|
|
4
|
+
* mean absolute deviation (MAD) scaled by 0.015. Positions before the
|
|
5
|
+
* full lookback or with invalid inputs are NaN.
|
|
6
|
+
* Performance: O(n*p) due to MAD recomputation per window.
|
|
7
|
+
* @param high High price series
|
|
8
|
+
* @param low Low price series
|
|
9
|
+
* @param close Close price series
|
|
10
|
+
* @param period Lookback period (must be > 0)
|
|
11
|
+
* @returns Float64Array of CCI values (NaN where undefined)
|
|
12
|
+
*/
|
|
13
|
+
export declare function cci(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directional Indicators (DI+ and DI-).
|
|
3
|
+
* @param high High price series
|
|
4
|
+
* @param low Low price series
|
|
5
|
+
* @param close Close price series
|
|
6
|
+
* @param period Lookback period (must be > 0)
|
|
7
|
+
* @returns Tuple `[diplus, diminus]` as Float64Array
|
|
8
|
+
*/
|
|
9
|
+
export declare function di(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, period: number): [Float64Array, Float64Array];
|
|
10
|
+
/**
|
|
11
|
+
* DX (Directional Movement Index).
|
|
12
|
+
* @param high High price series
|
|
13
|
+
* @param low Low price series
|
|
14
|
+
* @param close Close price series
|
|
15
|
+
* @param period Lookback period (must be > 0)
|
|
16
|
+
* @returns Float64Array of DX values (NaN where undefined)
|
|
17
|
+
*/
|
|
18
|
+
export declare function dx(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, period: number): Float64Array;
|
|
19
|
+
/**
|
|
20
|
+
* Average Directional Index (ADX).
|
|
21
|
+
* @param high High price series
|
|
22
|
+
* @param low Low price series
|
|
23
|
+
* @param close Close price series
|
|
24
|
+
* @param period Lookback period (must be > 0)
|
|
25
|
+
* @returns Float64Array of ADX values (NaN where undefined)
|
|
26
|
+
*/
|
|
27
|
+
export declare function adx(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, period: number): Float64Array;
|
|
28
|
+
/**
|
|
29
|
+
* ADXR (Average DX Rating) - smoothed ADX.
|
|
30
|
+
* @param high High price series
|
|
31
|
+
* @param low Low price series
|
|
32
|
+
* @param close Close price series
|
|
33
|
+
* @param period Lookback period (must be > 0)
|
|
34
|
+
* @returns Float64Array of ADXR values (NaN where undefined)
|
|
35
|
+
*/
|
|
36
|
+
export declare function adxr(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detrended Price Oscillator (DPO).
|
|
3
|
+
* Computes DPO[i] = source[i - shift] - SMA(source, period)[i], where
|
|
4
|
+
* shift = floor(period/2) + 1. Outputs are NaN for indices before the
|
|
5
|
+
* shift or when insufficient data exists.
|
|
6
|
+
* @param source Input series
|
|
7
|
+
* @param period Lookback period (must be > 0)
|
|
8
|
+
* @returns Float64Array of DPO values (NaN where undefined)
|
|
9
|
+
*/
|
|
10
|
+
export declare function dpo(source: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type IchimokuOptions = {
|
|
2
|
+
tenkan?: number;
|
|
3
|
+
kijun?: number;
|
|
4
|
+
senkouB?: number;
|
|
5
|
+
};
|
|
6
|
+
export declare const DEFAULT_TENKAN = 9;
|
|
7
|
+
export declare const DEFAULT_KIJUN = 26;
|
|
8
|
+
export declare const DEFAULT_SENKOUB = 52;
|
|
9
|
+
/**
|
|
10
|
+
* Ichimoku Kinko Hyo indicator components.
|
|
11
|
+
* Returns `[tenkan, kijun, senkouA, senkouB, chikou]` where senkou lines
|
|
12
|
+
* are shifted forward by the `kijun` displacement and chikou is the close
|
|
13
|
+
* shifted backward. NaN is produced where rolling inputs are invalid.
|
|
14
|
+
* @param high High price series
|
|
15
|
+
* @param low Low price series
|
|
16
|
+
* @param close Close price series
|
|
17
|
+
* @param options Optional periods `{ tenkan, kijun, senkouB }`
|
|
18
|
+
* @returns Tuple of Float64Array: `[tenkan, kijun, senkouA, senkouB, chikou]`
|
|
19
|
+
*/
|
|
20
|
+
export declare function ichimoku(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, options?: IchimokuOptions): [Float64Array, Float64Array, Float64Array, Float64Array, Float64Array];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parabolic SAR (PSAR) indicator.
|
|
3
|
+
* @param high High price series
|
|
4
|
+
* @param low Low price series
|
|
5
|
+
* @param step Acceleration step increment (>0)
|
|
6
|
+
* @param maxStep Maximum acceleration value (>= step)
|
|
7
|
+
* @param skipna When true ignore NaNs; when false use dense fast-path
|
|
8
|
+
* @returns Float64Array PSAR values (NaN for undefined positions)
|
|
9
|
+
*/
|
|
10
|
+
export declare function psar(high: ArrayLike<number>, low: ArrayLike<number>, step: number, maxStep: number, skipna?: boolean): Float64Array;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supertrend indicator.
|
|
3
|
+
* Returns `[supertrend, finalUpper, finalLower, isUpMask]`.
|
|
4
|
+
* `supertrend` contains the plotted trend line (either finalLower when up or finalUpper when down),
|
|
5
|
+
* `finalUpper`/`finalLower` are the band values, and `isUpMask` is a Uint8Array mask (1 when up).
|
|
6
|
+
* NaNs are preserved for invalid inputs or before enough data is available.
|
|
7
|
+
* @param high High price series
|
|
8
|
+
* @param low Low price series
|
|
9
|
+
* @param close Close price series
|
|
10
|
+
* @param period ATR lookback period
|
|
11
|
+
* @param mult Multiplier applied to ATR to form bands
|
|
12
|
+
* @returns Tuple `[supertrend, finalUpper, finalLower, isUpMask]`
|
|
13
|
+
*/
|
|
14
|
+
export declare function supertrend(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, period: number, mult: number): [Float64Array, Float64Array, Float64Array, Uint8Array];
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TA utility helpers for small boolean/rolling operations used by indicators.
|
|
3
|
+
* Includes functions for detecting rising/falling masks and crosses with
|
|
4
|
+
* strict NaN-aware semantics by default.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Determine whether global dense optimization should be skipped. Useful for
|
|
8
|
+
* tests that need to exercise NaN-aware code paths by setting
|
|
9
|
+
* `SKIP_DENSE_OPTIMIZATION=true` in the environment.
|
|
10
|
+
* @returns `true` when dense optimizations should be skipped
|
|
11
|
+
*/
|
|
12
|
+
export declare function shouldSkipDenseOptimization(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Rising mask: returns a Uint8Array where `1` indicates `source[i]` is
|
|
15
|
+
* strictly greater than the value `length` periods ago (NaN-aware).
|
|
16
|
+
* When `skipna` is true, NaNs are tolerated and preserved; when false a
|
|
17
|
+
* dense fast-path is used (assumes no NaNs).
|
|
18
|
+
* @param source Input numeric series
|
|
19
|
+
* @param length Lookback length (>0)
|
|
20
|
+
* @param skipna Whether to ignore NaNs during computation (default: true)
|
|
21
|
+
* @returns Uint8Array mask with 0/1 values
|
|
22
|
+
*/
|
|
23
|
+
export declare function rising(source: ArrayLike<number>, length: number, skipna?: boolean): Uint8Array;
|
|
24
|
+
/**
|
|
25
|
+
* Falling mask: returns a Uint8Array where `1` indicates `source[i]` is
|
|
26
|
+
* strictly less than the value `length` periods ago (NaN-aware).
|
|
27
|
+
* When `skipna` is true, NaNs are tolerated and preserved; when false a
|
|
28
|
+
* dense fast-path is used (assumes no NaNs).
|
|
29
|
+
* @param source Input numeric series
|
|
30
|
+
* @param length Lookback length (>0)
|
|
31
|
+
* @param skipna Whether to ignore NaNs during computation (default: true)
|
|
32
|
+
* @returns Uint8Array mask with 0/1 values
|
|
33
|
+
*/
|
|
34
|
+
export declare function falling(source: ArrayLike<number>, length: number, skipna?: boolean): Uint8Array;
|
|
35
|
+
/**
|
|
36
|
+
* Test whether series `a` crosses `b` (or a scalar) between the previous and
|
|
37
|
+
* current index. By default uses a symmetric cross test that detects both
|
|
38
|
+
* upward and downward crossings. Comparisons are strict and require non-NaN
|
|
39
|
+
* current and previous values for both operands.
|
|
40
|
+
* @param a Left series
|
|
41
|
+
* @param b Right series or scalar
|
|
42
|
+
* @param test Optional custom comparator receiving (ai, aim1, bi, bim1)
|
|
43
|
+
* @returns Uint8Array mask where 1 indicates a crossing at that index
|
|
44
|
+
*/
|
|
45
|
+
export declare function cross(a: ArrayLike<number>, b: ArrayLike<number> | number, test?: (ai: number, aim1: number, bi: number, bim1: number) => boolean): Uint8Array;
|
|
46
|
+
/**
|
|
47
|
+
* Detect an upward crossover (a crosses above b).
|
|
48
|
+
*/
|
|
49
|
+
export declare function crossover(a: ArrayLike<number>, b: ArrayLike<number> | number): Uint8Array;
|
|
50
|
+
/**
|
|
51
|
+
* Detect a downward crossunder (a crosses below b).
|
|
52
|
+
*/
|
|
53
|
+
export declare function crossunder(a: ArrayLike<number>, b: ArrayLike<number> | number): Uint8Array;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True Range (TR).
|
|
3
|
+
* TR[i] = max(high[i]-low[i], |high[i]-close[i-1]|, |low[i]-close[i-1]|).
|
|
4
|
+
* Preserves NaNs and returns NaN where inputs are invalid.
|
|
5
|
+
* @param high High price series
|
|
6
|
+
* @param low Low price series
|
|
7
|
+
* @param close Close price series
|
|
8
|
+
* @returns Float64Array of TR values
|
|
9
|
+
*/
|
|
10
|
+
export declare function tr(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>): Float64Array;
|
|
11
|
+
/**
|
|
12
|
+
* Average True Range (ATR).
|
|
13
|
+
* Computes ATR using Wilder's RMA over the true-range series. Handles NaNs
|
|
14
|
+
* via the `rma` NaN-aware implementation; returns NaN for indices before the
|
|
15
|
+
* lookback is filled.
|
|
16
|
+
* @param high High price series
|
|
17
|
+
* @param low Low price series
|
|
18
|
+
* @param close Close price series
|
|
19
|
+
* @param period Lookback period (must be > 0)
|
|
20
|
+
* @returns Float64Array of ATR values
|
|
21
|
+
*/
|
|
22
|
+
export declare function atr(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, period: number): Float64Array;
|
|
23
|
+
export declare function natr(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, period: number): Float64Array;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bollinger Bands (BB).
|
|
3
|
+
* Returns `[middle, upper, lower]` where `middle` is the SMA, and `upper`/`lower`
|
|
4
|
+
* are `middle ± mult * stddev`. Uses a NaN-aware or dense `rollstdev` depending
|
|
5
|
+
* on input; positions before the window fills are NaN.
|
|
6
|
+
* @param source Input series
|
|
7
|
+
* @param period Window length (must be > 0)
|
|
8
|
+
* @param mult Standard-deviation multiplier
|
|
9
|
+
* @returns Tuple `[middle, upper, lower]` as Float64Array
|
|
10
|
+
*/
|
|
11
|
+
export declare function bb(source: ArrayLike<number>, period: number, mult: number): [Float64Array, Float64Array, Float64Array];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bollinger Band Width (BBW).
|
|
3
|
+
* Returns the normalized width of the Bollinger Bands as percentage: `100*(upper-lower)/middle`.
|
|
4
|
+
* NaNs propagate and positions with `middle === 0` leave the output unchanged (NaN or 0).
|
|
5
|
+
* @param source Input series
|
|
6
|
+
* @param period Window length
|
|
7
|
+
* @param mult Standard-deviation multiplier used for BB
|
|
8
|
+
* @returns Float64Array of BB width percentages
|
|
9
|
+
*/
|
|
10
|
+
export declare function bbw(source: ArrayLike<number>, period: number, mult: number): Float64Array;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Donchian Channels.
|
|
3
|
+
* Returns `[upper, lower, middle]` where `upper` is the highest high
|
|
4
|
+
* and `lower` the lowest low over the lookback `period`. `middle` is the
|
|
5
|
+
* midpoint. NaNs propagate when inputs are invalid.
|
|
6
|
+
* @param high High price series
|
|
7
|
+
* @param low Low price series
|
|
8
|
+
* @param period Lookback period (must be > 0)
|
|
9
|
+
* @returns Tuple `[upper, lower, middle]` as Float64Array
|
|
10
|
+
*/
|
|
11
|
+
export declare function donchian(high: ArrayLike<number>, low: ArrayLike<number>, period: number): [Float64Array, Float64Array, Float64Array];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keltner Channels.
|
|
3
|
+
* Returns `[middle(EMA of typical price), upper, lower]` where upper/lower are `middle ± mult * ATR`.
|
|
4
|
+
* Preserves NaNs when inputs are invalid.
|
|
5
|
+
* @param high High price series
|
|
6
|
+
* @param low Low price series
|
|
7
|
+
* @param close Close price series
|
|
8
|
+
* @param period Lookback period (must be > 0)
|
|
9
|
+
* @param mult Multiplier applied to ATR
|
|
10
|
+
* @returns Tuple `[middle, upper, lower]` as Float64Array
|
|
11
|
+
*/
|
|
12
|
+
export declare function keltner(high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>, period: number, mult: number): [Float64Array, Float64Array, Float64Array];
|