quantitative
Version:
Apply indicators and strategies to time-series price data natively in Javascript.
43 lines (35 loc) • 1.31 kB
JavaScript
export async function williamsFractal(periods, timeseries) {
if (periods < 2) return null
let upflagDownFrontier = true,
upflagUpFrontier0 = true,
upflagUpFrontier1 = true,
upflagUpFrontier2 = true,
upflagUpFrontier3 = true,
upflagUpFrontier4 = true
for (let i = 1; i < periods; i++) {
upflagDownFrontier = upflagDownFrontier && high[n - i] < high[n]
upflagUpFrontier0 = upflagUpFrontier0 && high[n + i] < high[n]
upflagUpFrontier1 =
upflagUpFrontier1 &&
high[n + 1] <= high[n] &&
high[n + i + 1] < high[n]
upflagUpFrontier2 =
upflagUpFrontier2 &&
high[n + 1] <= high[n] &&
high[n + 2] <= high[n] &&
high[n + i + 2] < high[n]
upflagUpFrontier3 =
upflagUpFrontier3 &&
high[n + 1] <= high[n] &&
high[n + 2] <= high[n] &&
high[n + 3] <= high[n] &&
high[n + i + 3] < high[n]
upflagUpFrontier4 =
upflagUpFrontier4 &&
high[n + 1] <= high[n] &&
high[n + 2] <= high[n] &&
high[n + 3] <= high[n] &&
high[n + 4] <= high[n] &&
high[n + i + 4] < high[n]
}
}