UNPKG

stock-indicator

Version:

Stock Indicator Library

35 lines (32 loc) 871 B
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 }; }