Highcharts Stock Demo

author(s): Pawel fus

by joplomacedo

HTML

<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script src="https://code.highcharts.com/stock/modules/data.js"></script>
<script src="https://code.highcharts.com/stock/modules/exporting.js"></script>
<script src="https://code.highcharts.com/stock/indicators/indicators.js"></script>


<div id="container" style="height: 400px; min-width: 310px"></div>

JavaScript

const getSliceValue = (() => {

  const today = new Date();

  const todaysMonth = today.getMonth();
  const todaysYear = today.getFullYear();

  const monthAndYearToSliceSet = {};

  for (let i = 0; i < 24; i++) {
    const m = new Date(today.setMonth(todaysMonth - i)).getMonth();
    const y = i < 12 ? todaysYear : todaysYear - 1

    monthAndYearToSliceSet[`${m}:${y}`] = `month${(i+1)%12}year${ Math.floor(i/12)+1 }`;

    console.log(`${m}:${y}`, `month${(i+1)%12}year${ Math.floor(i/12)+1 }`);
  }

  console.log(monthAndYearToSliceSet)

  return function({
    endDate,
    interval,
    totalBars
  }) {

    const prevDate = new Date(endDate.getTime());
    prevDate.setDate(endDate.getDate() - 1);

    // endDate - min from totalMins until trading hours close (actually open). continue from next trading huors open (actually close - remember wer're looping backwards)

    const dates = [
      endDate,
      prevDate
    ]

    return new Set(...dates.map(date => {
      const endDateMonth = date.getMonth();
      const endDateYear = date.getFullYear();

      return monthToSliceValMap[`${endDateMonth}:${endDateYear}`] || null;
    }))
  }

})()