Renko Chart using rangeColumn - CanvasJS JavaScript Charts

Renko Chart using rangeColumn - CanvasJS JavaScript Charts

by johannpickard

HTML

<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<br/><!-- Just so that JSFiddle's Result label doesn't overlap the Chart -->
<div id="chartContainer" style="height: 360px; width: 100%;"></div>

JavaScript

var data = [{
  dataPoints: [
    {x: new Date(2012,01,01),y:[5198, 5629,]},
    {x: new Date(2012,02,01),y:[5366, 5499, 5135, 5295]},
    {x: new Date(2012,03,01),y:[5296, 5378, 5154, 5248]},
    {x: new Date(2012,04,01),y:[5254, 5279, 4788, 5124]},
    {x: new Date(2012,05,01),y:[4910, 5286, 4770, 5278]},
    {x: new Date(2012,06,01),y:[5283, 5348, 5032, 5229]},
    {x: new Date(2012,07,01),y:[5220, 5448, 5164, 5258]},
    {x: new Date(2012,08,01),y:[5276, 5735, 5215, 5703]},
    {x: new Date(2012,09,01),y:[5704, 5815, 4888, 5619]},
    {x: new Date(2012,10,01),y:[5609, 5885, 5548, 5879]},
    {x: new Date(2012,11,01),y:[5878, 5965, 5823, 5905]},
    {x: new Date(2013,00,01),y:[5937, 6111, 5935, 6034]},
    {x: new Date(2013,01,01),y:[6040, 6052, 5671, 5693]},
    {x: new Date(2013,02,01),y:[5702, 5971, 5604, 5682]},
    {x: new Date(2013,03,01),y:[5697, 5962, 5477, 5930]},
    {x: new Date(2013,04,01),y:[5911, 6229, 5910, 5985]},
    {x: new Date(2013,05,01),y:[5997, 6011, 5566, 5842]},
    {x: new Date(2013,06,01),y:[5834, 6093, 5675, 5742]},
    {x: new Date(2013,07,01),y:[5776, 5808, 5118, 5471]},
    {x: new Date(2013,08,01),y:[5480, 6142, 5318, 5735]},
    {x: new Date(2013,09,01),y:[5756, 6309, 5700, 6299]},
    {x: new Date(2013,10,01),y:[6289, 6342, 5972, 6176]},
    {x: new Date(2013,11,01),y:[6171, 6415, 6129, 6304]}
  ]
}];

var chart = new CanvasJS.Chart("chartContainer",
{
  title:{
    text: "Renko Chart",
    fontFamily: "times new roman"
  },
  zoomEnabled: true,
  exportEnabled: true,
  axisY: {
    includeZero:false,
    title: "Prices",
    prefix: "$ "
  },
  axisX: {
  	tickLength: 0,
    labelFormatter: function(e) {
    	return "";
    }
  }
});
chart.options.data = renderRenko(50, data);
chart.render();

function renderRenko(brickSize, data) {
	var newDataPoints = [];
  var oldValue = data[0].dataPoints[0].y[3];
  var difference = 0;
  var newValue, dataPoint, xValue;
	for (var i = 1; i < data[0].dataPoints.length; i++) {
  	dataPoint =...