JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://canvasjs.com/assets/script/jquery-1.11.1.min.js"></script>
<script src="https://canvasjs.com/assets/script/canvasjs.stock.min.js"></script>
<div id="chartContainer" style="height: 450px; width: 100%;"></div>
JavaScript
window.onload = function () {
var dps1 = [], dps2= [];
var stockChart = new CanvasJS.StockChart("chartContainer",{
title:{
text:"Moving High/Low"
},
charts: [{
axisY: {
prefix: "$"
},
legend: {
verticalAlign: "top",
cursor: "pointer",
itemclick: function (e) {
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
e.dataSeries.visible = false;
} else {
e.dataSeries.visible = true;
}
e.chart.render();
}
},
toolTip: {
shared: true
},
data: [{
type: "candlestick",
showInLegend: true,
name: "Stock Price",
yValueFormatString: "$#,###.00",
xValueType: "dateTime",
dataPoints : dps1
}],
}],
navigator: {
data: [{
dataPoints: dps2
}],
slider: {
minimum: new Date(2018, 03, 01),
maximum: new Date(2018, 05, 01)
}
}
});
$.getJSON("https://canvasjs.com/data/docs/ethusd2018.json", function(data) {
for(var i = 0; i < data.length; i++){
dps1.push({x: new Date(data[i].date), y: [Number(data[i].open), Number(data[i].high), Number(data[i].low), Number(data[i].close)]});
dps2.push({x: new Date(data[i].date), y: Number(data[i].close)});
}
stockChart.render();
var highLowDps = calculateLowHighDps(dps1, 9);
stockChart.charts[0].addTo("data", { type: "line", dataPoints: highLowDps.lowDps, showInLegend: true, yValueFormatString: "$#,###.00", name: "Low"})
stockChart.charts[0].addTo("data", { type: "line", dataPoints: highLowDps.highDps, showInLegend: true, yValueFormatString: "$#,###.00", name: "High"})
});
function calculateLowHighDps(dps, count){
var lowDps = []; highDps = [];
var calculate = function(dps){
var sum = 0, count = 0, val;
var low = dps[0].y[2];
var high = dps[0].y[1];
for (var i = 1; i <...