lodash.js fiddle

Added lodash from cdnjs.com in order to have lodash capabilities in chrome.

by shiv_veerashetty

HTML

<script src="https://unpkg.com/dayjs-ext/dayjs.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

JavaScript

const getDatesBetween = (startDate, endDate) => {
  const dates = [];
  let currentDate = dayjs(startDate);
  while (currentDate.isBefore(endDate) || currentDate.isSame(endDate, 'day')) {
    dates.push(currentDate.format('YYYY-MM-DD'));
    currentDate = currentDate.add(1, 'day');
  }
  return dates;
}
const datesBetween = getDatesBetween('2024-04-01', '2024-05-05');
const noOfDays = datesBetween.length

console.log('noOfDays :: ', noOfDays)
if (noOfDays > 1) {
  const numberOfParallelBacktestOptions = _.range(2, _.min([noOfDays+1, 21]), 1)
  console.log(`[] Split into --${numberOfParallelBacktestOptions}-- parallel BackTest`)
  _.each(numberOfParallelBacktestOptions, (numberOfParallelBacktests) => {
    const chunks = _.chunk(datesBetween, Math.ceil(noOfDays/numberOfParallelBacktests));
    console.log(`If ${numberOfParallelBacktests} selected, ${chunks.length} Backtests will be created`)
    _.each(chunks, (chunk)=>{
      console.log(`\t\tRun backtest from ${_.head(chunk)} to ${_.last(chunk)}`)
    })
  })

} else {
  console.log("Run in one shot. As usual. Don't show check box")
}