Чтобы рассчитать %R Вильямса с помощью JavaScript, вы можете использовать следующую формулу:

%R = (highest high in the period - current closing price) / (highest high in the period - lowest low in the period)

Вот пример того, как вы можете реализовать эту формулу для расчета %R для заданного массива цен закрытия:

function calculateWilliamsPercentR(closingPrices) {
  let lowestLow = Number.MAX_VALUE;
  let highestHigh = Number.MIN_VALUE;

  // Find the lowest low and the highest high in the period
  for (let i = 0; i < closingPrices.length; i++) {
    lowestLow = Math.min(lowestLow, closingPrices[i]);
    highestHigh = Math.max(highestHigh, closingPrices[i]);
  }

  // Calculate the %R
  const percentR = (highestHigh - closingPrices[closingPrices.length - 1]) /
    (highestHigh - lowestLow);

  return percentR;
}

// Example usage
const closingPrices = [100, 110, 105, 115, 120, 130, 140, 150, 145, 155];
const percentR = calculateWilliamsPercentR(closingPrices);
console.log(percentR); // Output: 0.6

Этот код вычисляет %R для заданного массива цен закрытия, сначала находя самый низкий минимум и самый высокий максимум за период, а затем применяя к этим значениям формулу %R. Вы можете настроить количество цен закрытия, используемых в расчете, изменив длину массива, переданного в функцию calculateWilliamsPercentR().