UNPKG

sql-synergy

Version:

Synergy Wave TA

64 lines (63 loc) 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ZigZag = void 0; class ZigZag { constructor(oPD, iPercent = 0.05) { this.zz = []; // this.nDays = nK ; // this.nDDays = nD ; // this.nMA = nMA ; let fHigh = oPD.getHigh(); let fLow = oPD.getLow(); let fClose = oPD.getClose(); let fDate = oPD.getDate(); let n = fHigh.length; let signal = 0; let inflection = fClose[0]; let iWave = 0; for (var i = 0; i < n; i++) { if (signal == 0) { if (fLow[i] <= (inflection * (1 - iPercent))) { signal = -1; iWave = i; } if (fHigh[i] >= (inflection * (1 + iPercent))) { signal = 1; iWave = i; } if (signal == -1) { if (fLow[i] < inflection) { inflection = fLow[i]; iWave = i; } if (fHigh[i] >= (inflection * (1 + iPercent))) { // Trend Reversal signal = 1; this.zz.push(fDate[iWave]); inflection = fHigh[i]; iWave = i; continue; } } if (signal == 1) { if (fHigh[i] > inflection) { inflection = fHigh[i]; iWave = i; } if (fLow[i] <= (inflection * (1 - iPercent))) { // Trend Reversal signal = 1; this.zz.push(fDate[iWave]); inflection = fLow[i]; iWave = i; continue; } } } } } getWaves() { return this.zz; } } exports.ZigZag = ZigZag;