canvas-trading
Version:
Interactive HTML5 Canvas Trading Chart
65 lines (64 loc) • 3.07 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import { CandleMountPoints } from './MountedClasses';
var Candle2D = /** @class */ (function () {
function Candle2D(originalOpen, originalClose, originalLow, originalHigh, originalIndicators, candleCanvas, originalTrades, xPosition, originalIndex) {
var _this = this;
this.xPosition = xPosition;
this.originalIndex = originalIndex;
this.getAlligatorPoints = function (alligator, candleCanvas) {
var keys = Object.keys(alligator);
var points = {};
keys.forEach(function (key) {
points[key] = alligator[key] !== 0 ? Candle2D.getPoint(alligator[key], candleCanvas) : 0;
});
return points;
};
this.open = Candle2D.getPoint(originalOpen, candleCanvas);
this.close = Candle2D.getPoint(originalClose, candleCanvas);
this.low = Candle2D.getPoint(originalLow, candleCanvas);
this.high = Candle2D.getPoint(originalHigh, candleCanvas);
this.mountPoints = new CandleMountPoints(candleCanvas.candleWidth, originalIndicators, originalTrades, this.low, this.high, (this.low + this.high) / 2 <= (candleCanvas.height - candleCanvas.candleWidth * 4.5) / 2);
this.open === 0 || this.close === 0 || this.low === 0 || this.high === 0
? (this.noDraw = true)
: (this.noDraw = false);
this.alligator = this.getAlligatorPoints(originalIndicators.alligator, candleCanvas);
this.trades = [];
originalTrades.forEach(function (trade) {
var tradeCopy = __assign({}, trade);
if (tradeCopy.isThisCandleStart) {
tradeCopy.buyPrice = Candle2D.getPoint(tradeCopy.buyPrice, candleCanvas);
}
if (tradeCopy.isThisCandleEnd) {
tradeCopy.sellPrice = Candle2D.getPoint(tradeCopy.sellPrice, candleCanvas);
}
_this.trades.push(tradeCopy);
});
}
Candle2D.getPoint = function (originalPoint, candleCanvas) {
var gapSpace = candleCanvas.candleWidth * 4.5;
//? Usual point
// const point =
// ((candleCanvas.minMax.max - originalPoint) /
// (candleCanvas.minMax.max - candleCanvas.minMax.min)) *
// (candleCanvas.height - gapSpace * 2) +
// gapSpace;
//? leave more space for the top for Asset and OCLH labels
var point = ((candleCanvas.minMax.max - originalPoint) /
(candleCanvas.minMax.max - candleCanvas.minMax.min)) *
(candleCanvas.height - candleCanvas.height / 5) +
candleCanvas.height / 10;
return point;
};
return Candle2D;
}());
export { Candle2D };