stock-indicator
Version:
Stock Indicator Library
35 lines (32 loc) • 871 B
text/typescript
import {
checkArrayOfNumbers,
checkNumber,
funEMA,
funMA,
funRound,
TMixed,
} from "../common";
export function TRIX(
CLOSE: number[],
N: number = 12,
M: number = 9
): { TRIX: TMixed[]; MATRIX: TMixed[] } {
// check input data
checkArrayOfNumbers(CLOSE, "CLOSE");
// check n and m parameters
checkNumber(N, 2, CLOSE, "N", "CLOSE");
checkNumber(M, 2, CLOSE, "M", "CLOSE");
const MTR: TMixed[] = funEMA(funEMA(funEMA(CLOSE, N), N), N);
const TRIX: TMixed[] = [null];
for (let i = 1; i < MTR.length; i++) {
TRIX.push(
MTR[i] !== null && MTR[i - 1] !== null
? (((MTR[i] as number) - (MTR[i - 1] as number)) /
(MTR[i - 1] as number)) *
100
: null
);
}
const MATRIX: TMixed[] = funMA(TRIX, M).map((v) => funRound(v, 3));
return { TRIX: TRIX.map((v) => funRound(v, 3)), MATRIX };
}